idnits 2.17.1 draft-ietf-ipp-model-06.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 3064 instances of too long lines in the document, the longest one being 7 characters in excess of 72. ** The abstract seems to contain references ([RFC2069], [RFC2046], [RFC1035], [RFC1179], [IPP-PRO], [RFC2048], [ASCII], [HTPP], [RFC1825], [46], [IANA-CSa], [RFC2119], [IPP-RAT], [ISO10175], [RFC2130], [RFC1514], [ISO10646-1], [RFC1521], [RFC2184], [RFC1759], [SWP], [IPP-REQ], [CS-POL], [IANA-MT], [RFC1766], [ISO8859-1], [RFC1808], [RFC1738], [RFC1903], [52,56], [ISODPA], [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 87 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 490 has weird spacing: '... any indi...' == Line 1334 has weird spacing: '...tribute then ...' == Line 1499 has weird spacing: '...e names and/o...' == Line 1739 has weird spacing: '...cessing the J...' == (13 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: If the client needs to pass or the Printer object needs to return a 'text' attribute in a different natural language than the rest of the 'text' attributes in the request or response as indicated by the "attributes-natural-language" operation attribute (see Section 3.1.3), the client or Printer object SHALL immediately precede that attribute value with a 'naturalLanguage' attribute value that indicates the differing natural language. Thus the attribute becomes multi-valued with two values. This additional values is called an "exception" natural language value. In a create operation, the Printer object SHOULD accept and store an exception natural language value. If the Printer object does not store an exception natural language value, the Printer SHALL ignore it and SHALL store the immediately following 'text' value only. The Printer SHALL not reject the request no matter what value the client supplies as an exception natural language. == 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: Expires April 14, 1998 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: 'other': The printer has detected an error other than one listed in this document. 'unknown': The printer is unable to give additional detail about the state of the printer. 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 printer has a media jam. 'paused': Someone has paused the Printer. 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 from service, and it may be powered down or physical removed. In this state, a Printer SHALL not produce printed output, and unless the Printer is realized by a print server that is still active, the Printer SHALL perform no other operations requested by a client, including returning this value. If a Printer 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 == 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-of-creation", "time-at-processing", and "time-at-completed"). In the second case, the Printer object SHOULD be reset 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. -- 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 (October 14, 1997) is 9663 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 43 looks like a reference -- Missing reference section? 'IPP-REQ' on line 4520 looks like a reference -- Missing reference section? 'IPP-PRO' on line 4887 looks like a reference -- Missing reference section? 'IPP-RAT' on line 4515 looks like a reference -- Missing reference section? 'HTPP' on line 4494 looks like a reference -- Missing reference section? 'LDPA' on line 4537 looks like a reference -- Missing reference section? 'PSIS' on line 4549 looks like a reference -- Missing reference section? 'RFC1179' on line 4556 looks like a reference -- Missing reference section? 'SWP' on line 4639 looks like a reference -- Missing reference section? 'RFC2119' on line 4782 looks like a reference -- Missing reference section? 'RFC1630' on line 4568 looks like a reference -- Missing reference section? 'RFC1738' on line 4574 looks like a reference -- Missing reference section? 'RFC1808' on line 4586 looks like a reference -- Missing reference section? 'RFC2044' on line 4598 looks like a reference -- Missing reference section? 'IANA-CS' on line 4499 looks like a reference -- Missing reference section? 'ISODPA' on line 5364 looks like a reference -- Missing reference section? 'RFC1759' on line 5365 looks like a reference -- Missing reference section? 'ASCII' on line 4482 looks like a reference -- Missing reference section? 'RFC2046' on line 4623 looks like a reference -- Missing reference section? 'IANA-CSa' on line 4503 looks like a reference -- Missing reference section? 'ISO10646-1' on line 4524 looks like a reference -- Missing reference section? '46' on line 2173 looks like a reference -- Missing reference section? 'ISO8859-1' on line 4529 looks like a reference -- Missing reference section? 'RFC1766' on line 4582 looks like a reference -- Missing reference section? 'RFC2048' on line 4628 looks like a reference -- Missing reference section? 'IANA-MT' on line 4507 looks like a reference -- Missing reference section? '52' on line 2213 looks like a reference -- Missing reference section? '56' on line 2213 looks like a reference -- Missing reference section? 'RFC1514' on line 4560 looks like a reference -- Missing reference section? 'RFC1903' on line 4595 looks like a reference -- Missing reference section? 'RFC2068' on line 4602 looks like a reference -- Missing reference section? 'RFC2069' on line 4606 looks like a reference -- Missing reference section? 'RFC1035' on line 4552 looks like a reference -- Missing reference section? 'RFC2045' on line 4618 looks like a reference -- Missing reference section? 'CS-POL' on line 4487 looks like a reference -- Missing reference section? 'RFC1521' on line 4563 looks like a reference -- Missing reference section? 'RFC1825' on line 4589 looks like a reference -- Missing reference section? 'RFC2130' on line 4615 looks like a reference -- Missing reference section? 'RFC2184' on line 4634 looks like a reference Summary: 11 errors (**), 0 flaws (~~), 17 warnings (==), 48 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 3 draft-ietf-ipp-model-06.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 October 14, 1997 16 Internet Printing Protocol/1.0: Model and Semantics 18 Status of this Memo 20 This document is an Internet-Draft. Internet-Drafts are working 21 documents of the Internet Engineering Task Force (IETF), its areas, 22 and its working groups. Note that other groups may also distribute 23 working documents as Internet-Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress". 30 To learn the current status of any Internet-Draft, please check the 31 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 32 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 33 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 34 ftp.isi.edu (US West Coast). 36 Abstract 38 This document is one of a set of documents, which together describe 39 all aspects of a new Internet Printing Protocol (IPP). IPP is an 40 application level protocol that can be used for distributed printing 41 using Internet tools and technology. The protocol is heavily 42 influenced by the printing model introduced in the Document Printing 43 Application (DPA) [ISO10175] standard. Although DPA specifies both 44 end user and administrative features, IPP version 1.0 is focused only 45 on end user functionality. 47 Expires April 14, 1998 48 The full set of IPP documents includes: 50 Requirements for an Internet Printing Protocol [IPP-REQ] 51 Internet Printing Protocol/1.0: Model and Semantics 52 Internet Printing Protocol/1.0: Protocol Specification [IPP-PRO] 53 Rationale for the Structure and Model and Protocol for the Internet 54 Printing Protocol [IPP-RAT] 56 The requirements document, "Requirements for an Internet Printing 57 Protocol", takes a broad look at distributed printing functionality, 58 and it enumerates real-life scenarios that help to clarify the 59 features that need to be included in a printing protocol for the 60 Internet. It identifies requirements for three types of users: end 61 users, operators, and administrators. The requirements document calls 62 out a subset of end user requirements that MUST be satisfied in the 63 first version of IPP. Operator and administrator requirements are out 64 of scope for v1.0. This document, "Internet Printing Protocol/1.0: 65 Model and Semantics", describes a simplified model with abstract 66 objects, their attributes, and their operations. The model introduces 67 a Printer object and a Job object. The Job object supports multiple 68 documents per job. The model document also addresses how security, 69 internationalization, and directory issues are addressed. The protocol 70 specification, " Internet Printing Protocol/1.0: Protocol 71 Specification", is a formal mapping of the abstract operations and 72 attributes defined in the model document onto HTTP/1.1. The protocol 73 specification defines the encoding rules for a new Internet media type 74 called "application/ipp". 76 Expires April 14, 1998 77 Table of Contents 79 1. Simplified Printing Model .......................................8 80 2. IPP Objects ....................................................10 81 2.1 Printer Object................................................10 82 2.2 Job Object....................................................13 83 2.3 Object Relationships..........................................14 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 .........................20 92 3.1.4 Operation Status Codes and Messages......................21 93 3.1.5 Security Concerns for IPP Operations.....................22 94 3.1.5.1 Authenticated Requester Identity ......................22 95 3.1.5.2 Restricted Queries ....................................23 96 3.1.6 Versions.................................................23 97 3.1.7 Job Creation Operations..................................24 98 3.2 Printer Operations............................................26 99 3.2.1 Print-Job Operation......................................26 100 3.2.1.1 Print-Job Request .....................................26 101 3.2.1.2 Print-Job Response ....................................28 102 3.2.2 Print-URI Operation......................................30 103 3.2.3 Validate-Job Operation...................................31 104 3.2.4 Create-Job Operation.....................................31 105 3.2.5 Get-Attributes Operation.................................31 106 3.2.5.1 Get-Attributes Request ................................32 107 3.2.5.2 Get-Attributes Response ...............................33 108 3.2.6 Get-Jobs Operation.......................................34 109 3.2.6.1 Get-Jobs Request ......................................34 110 3.2.6.2 Get-Jobs Response .....................................35 111 3.3 Job Operations................................................36 112 3.3.1 Send-Document Operation..................................37 113 3.3.1.1 Send-Document Request .................................37 114 3.3.1.2 Send-Document Response ................................39 115 3.3.2 Send-URI Operation.......................................39 116 3.3.3 Cancel Job Operation.....................................39 117 3.3.3.1 Cancel-Job Request ....................................40 118 3.3.3.2 Cancel-Job Response ...................................40 119 3.3.4 Get-Attributes Operation.................................41 120 3.3.4.1 Get-Attributes Request ................................41 121 3.3.4.2 Get-Attributes Response ...............................41 122 4. Object Attributes ..............................................42 123 4.1 Attribute Syntaxes............................................42 124 4.1.1 'text'...................................................43 126 Expires April 14, 1998 127 4.1.2 'name'...................................................44 128 4.1.3 'keyword'................................................44 129 4.1.4 'enum'...................................................45 130 4.1.5 'uri'....................................................45 131 4.1.6 'uriScheme'..............................................45 132 4.1.7 'charSet'................................................46 133 4.1.8 'naturalLanguage'........................................46 134 4.1.9 'mimeType'...............................................47 135 4.1.10 'octetString'............................................48 136 4.1.11 'boolean'................................................48 137 4.1.12 'integer'................................................48 138 4.1.13 'rangeOfInteger'.........................................48 139 4.1.14 'dateTime'...............................................48 140 4.1.15 'resolution'.............................................48 141 4.1.16 '1setOf X'..............................................49 142 4.2 Job Template Attributes.......................................49 143 4.2.1 job-sheets (type4 keyword, name).........................53 144 4.2.2 job-priority (integer(1:100))............................54 145 4.2.3 job-hold-until (type4 keyword, name).....................55 146 4.2.4 multiple-document-handling (type2 keyword)...............56 147 4.2.5 media (type4 keyword, name)..............................57 148 4.2.6 number-up (integer)......................................57 149 4.2.7 sides (type2 keyword)....................................58 150 4.2.8 printer-resolution (resolution)..........................59 151 4.2.9 print-quality (type2 enum)...............................59 152 4.2.10 finishings (1setOf type2 enum)...........................59 153 4.2.11 copies (integer(1:2**31 - 1))............................60 154 4.2.12 page-ranges (1setOf rangeOfInteger)......................60 155 4.2.13 orientation (type2 enum).................................61 156 4.2.14 document-format (mimeType)...............................61 157 4.2.15 compression (type3 keyword)..............................62 158 4.2.16 job-k-octets (integer(0:2**31 - 1))......................62 159 4.2.17 job-impressions (integer(0:2**31 - 1))...................62 160 4.2.18 job-media-sheets (integer(0:2**31 - 1))..................63 161 4.3 Job Description Attributes....................................63 162 4.3.1 job-uri (uri)............................................64 163 4.3.2 job-id (integer(1:MAX))..................................65 164 4.3.3 job-more-info (uri)......................................65 165 4.3.4 job-name (name)..........................................65 166 4.3.5 job-originating-user (octetString).......................65 167 4.3.6 job-state (type1 enum)...................................66 168 4.3.7 job-state-reasons (1setOf type2 keyword)................68 169 4.3.8 job-state-message (text).................................70 170 4.3.9 number-of-documents (integer(0:2**31 - 1))...............70 171 4.3.10 output-device-assigned (name)............................71 172 4.3.11 time-of-creation (integer)...............................71 173 4.3.12 time-at-processing (integer).............................71 174 4.3.13 time-at-completed (integer)..............................71 176 Expires April 14, 1998 177 4.3.14 number-of-intervening-jobs (integer(0:2**31 - 1))........71 178 4.3.15 job-message-from-operator (text).........................71 179 4.3.16 job-k-octets-processed (integer(0:2**31 - 1))............72 180 4.3.17 job-impressions-completed (integer(0:2**31 - 1))........72 181 4.3.18 job-media-sheets-completed (integer(0:2**31 - 1))........72 182 4.3.19 attributes-charset (charSet).............................72 183 4.3.20 attributes-natural-language (naturalLanguage)............73 184 4.4 Printer Description Attributes................................73 185 4.4.1 printer-uri (uri)........................................75 186 4.4.2 printer-name (name)......................................75 187 4.4.3 printer-location (text)..................................75 188 4.4.4 printer-info (text)......................................75 189 4.4.5 printer-more-info (uri)..................................75 190 4.4.6 printer-driver-installer (uri)...........................76 191 4.4.7 printer-make-and-model (text)............................76 192 4.4.8 printer-more-info-manufacturer (uri).....................76 193 4.4.9 printer-state (type1 enum)...............................76 194 4.4.10 printer-state-reasons (1setOf type2 keyword).............77 195 4.4.11 printer-state-message (text).............................80 196 4.4.12 operations-supported (1setOf operation)..................80 197 4.4.13 printer-charset (charSet)................................81 198 4.4.14 charsets-supported (1setOf charSet)......................81 199 4.4.15 printer-natural-language (naturalLanguage)...............81 200 4.4.16 natural-languages-supported (1setOf naturalLanguage).....81 201 4.4.17 printer-is-accepting-jobs (boolean)......................82 202 4.4.18 queued-job-count (integer(0:2**31 - 1))..................82 203 4.4.19 printer-message-from-operator (text).....................82 204 4.4.20 color-supported (boolean)................................82 205 4.4.21 reference-uri-schemes-supported (1setOf uriScheme).......83 206 4.4.22 pdl-override (type2 keyword).............................83 207 4.4.23 security-mechanisms-supported (1setOf keyword)...........83 208 4.4.24 printer-up-time (integer(1:MAX)).........................84 209 4.4.25 printer-current-time (dateTime)..........................84 210 4.4.26 multiple-operation-time-out (integer)....................84 211 5. Conformance ....................................................84 212 5.1 Client Conformance Requirements...............................85 213 5.2 Printer Object Conformance Requirements.......................85 214 5.2.1 Objects..................................................86 215 5.2.2 Operations...............................................86 216 5.2.3 Attributes...............................................86 217 5.2.4 Printer extensions.......................................87 218 5.2.5 Attribute Syntaxes.......................................87 219 5.3 Security Conformance Requirements.............................87 220 6. IANA Considerations (registered and private extensions) ........87 221 6.1 Typed Extensions..............................................88 222 6.2 Registration of MIME types/sub-types for document-formats.....89 223 6.3 Attribute Extensibility.......................................89 224 6.4 Attribute Syntax Extensibility................................89 226 Expires April 14, 1998 227 7. Internationalization Considerations ............................89 228 8. Security Considerations ........................................91 229 8.1 Client and Printer in the Same Security Domain................92 230 8.2 Client and Printer in Different Security Domains..............92 231 8.3 Print by Reference............................................93 232 8.3.1 Unprotected Documents....................................93 233 8.3.2 Protected Documents......................................93 234 8.4 Common Security Scenarios.....................................93 235 8.4.1 No Security..............................................93 236 8.4.2 Message Protection During Transmission...................94 237 8.4.3 Client Authentication and Authorization..................94 238 8.4.4 Mutual Authentication, Authorization and Message Protection 239 94 240 8.5 Recommended Security Mechanisms...............................94 241 9. References .....................................................95 242 10.Copyright Notice ...............................................99 243 11.Author's Address ...............................................99 244 12.APPENDIX A: Terminology .......................................102 245 12.1 Conformance Terminology......................................102 246 12.1.1 MUST....................................................102 247 12.1.2 MUST NOT................................................102 248 12.1.3 SHOULD..................................................102 249 12.1.4 SHOULD NOT..............................................102 250 12.1.5 MAY.....................................................102 251 12.1.6 NEED NOT................................................103 252 12.2 Model Terminology............................................103 253 12.2.1 Keyword.................................................103 254 12.2.2 Attributes..............................................103 255 12.2.2.1 Attribute Name .......................................103 256 12.2.2.2 Attribute Group Name .................................104 257 12.2.2.3 Attribute Value ......................................104 258 12.2.2.4 Attribute Syntax .....................................104 259 12.2.3 Supports................................................104 260 12.2.4 print-stream page.......................................106 261 12.2.5 imposed page............................................106 262 13.APPENDIX B: Status Codes .....................................106 263 13.1 Status Codes.................................................107 264 13.1.1 Informational...........................................107 265 13.1.2 Successful Status Codes.................................107 266 13.1.2.1 successful-ok (0x0000) ...............................107 267 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 268 108 269 13.1.3 Redirection Status Codes................................108 270 13.1.4 Client Error Status Codes...............................108 271 13.1.4.1 client-error-bad-request (0x0400) ....................108 272 13.1.4.2 client-error-forbidden (0x0401) ......................108 273 13.1.4.3 client-error-not-authenticated (0x0402) ..............108 274 13.1.4.4 client-error-not-authorized (0x0403) .................109 276 Expires April 14, 1998 277 13.1.4.5 client-error-not-possible (0x0404) ...................109 278 13.1.4.6 client-error-timeout (0x0405) ........................109 279 13.1.4.7 client-error-not-found (0x0406) ......................109 280 13.1.4.8 client-error-gone (0x0407) ...........................110 281 13.1.4.9 client-error-request-entity-too-large (0x0408) .......110 282 13.1.4.10 client-error-request-URI-too-long (0x0409) ...........110 283 13.1.4.11 client-error-unsupported-document-format (0x040A) ....110 284 13.1.4.12 client-error-attribute-not-supported (0x040B) ........111 285 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) .......111 286 13.1.4.14 client-error-charset-not-supported (0x040D) ..........111 287 13.1.4.15 client-error-natural-language-not-supported (0x040E) .111 288 13.1.5 Server Error Status Codes...............................111 289 13.1.5.1 server-error-internal- error (0x0500) ................112 290 13.1.5.2 server-error-operation-not-supported (0x0501) ........112 291 13.1.5.3 server-error-service-unavailable (0x0502) ............112 292 13.1.5.4 server-error-version-not-supported (0x0503) ..........112 293 13.1.5.5 server-error-device-error (0x0504) ...................112 294 13.1.5.6 server-error-temporary-error (0x0505) ................113 295 13.2 Status Codes for IPP Operations..............................114 296 14.APPENDIX C: "media" keyword values ...........................114 297 15.APPENDIX D: Processing IPP Attributes .........................119 298 15.1 Fidelity.....................................................119 299 15.2 Page Description Language (PDL) Override.....................121 300 15.3 Suggested Operation Processing Algorithm.....................122 301 15.4 Using Job Template Attributes During Document Processing.....126 302 16.APPENDIX E: Generic Directory Schema ..........................127 304 Expires April 14, 1998 305 1. Simplified Printing Model 307 In order to achieve its goal of realizing a workable printing protocol 308 for the Internet, the Internet Printing Protocol (IPP) is based on a 309 simplified printing model that abstracts the many components of real 310 world printing solutions. The Internet is a distributed computing 311 environment where requesters of print services (clients, 312 applications, printer drivers, etc.) cooperate and interact with print 313 service providers. This model and semantics document describes a 314 simple, abstract model for IPP even though the underlying 315 configurations may be complex "n-tier" client/server systems. An 316 important simplifying step in the IPP model is to expose only the key 317 objects and interfaces required for printing. The model does not 318 include features, interfaces, and relationships that are beyond the 319 scope of IPP/1.0. IPP incorporates many of the relevant ideas and 320 lessons learned from other specification and development efforts 321 [HTPP] [LDPA] [P1387.4] [PSIS] [RFC1179] [SWP]. 323 The IPP model encapsulates the important components of distributed 324 printing into two object types: 326 - Printer (Section 2.1) 327 - Job (Section 2.2) 329 Each object type has an associated set of operations (see section 3) 330 and attributes (see section 4). 332 The terminology used in the remainder of this document is defined in 333 (section 12). In the remainder of this document, terms such as 334 "attributes", "keywords", and "supports" have special meaning and are 335 defined in the model terminology section. Capitalized terms such as 336 MANDATORY, SHALL, and OPTIONAL have special meaning relating to 337 conformance. These terms are defined in the section on conformance 338 terminology, most of which is taken from RFC 2119 [RFC2119]. 340 It is important, however, to understand that in real system 341 implementations (which lie underneath the abstracted IPP model), there 342 are other components of a print service which are not explicitly 343 defined in the IPP model. The following figure illustrates where IPP 344 fits with respect to these other components. 346 Expires April 14, 1998 347 +--------------+ 348 | Application | 349 o +. . . . . . . | 350 \|/ | Spooler | 351 / \ +. . . . . . . | +---------+ 352 End-User | Print Driver |---| File | 353 +-----------+ +-----+ +------+-------+ +----+----+ 354 | Browser | | GUI | | | 355 +-----+-----+ +--+--+ | | 356 | | | | 357 | +---+------------+---+ | 358 N D S | | IPP Client |------------+ 359 O I E | +---------+----------+ 360 T R C | | 361 I E U | 362 F C R -------------- Transport ------------------ 363 I T I 364 C O T | --+ 365 A R Y +--------+--------+ | 366 T Y | IPP Server | | 367 I +--------+--------+ | 368 O | | 369 N +-----------------+ | IPP Printer 370 | Print Service | | 371 +-----------------+ | 372 | --+ 373 +-----------------+ 374 | Output Device(s)| 375 +-----------------+ 377 An IPP Printer encapsulates the functions normally associated with 378 physical output devices along with the spooling, scheduling and 379 multiple device management functions often associated with a print 380 server. IPP Printers are optionally registered as entries in a 381 directory where end users find and select them based on some sort of 382 filtered and context based searching mechanism. The directory is used 383 to store relatively static information about the Printer, allowing end 384 users to search for and find Printers that match their search 385 criteria, for example: name, context, printer capabilities, etc. (see 386 section 16). The more dynamic information is directly associated with 387 the IPP Printer itself. This information includes state, currently 388 loaded and ready media, number of jobs at the Printer, errors, 389 warnings, and so forth. 391 IPP Clients implement the IPP protocol on the client side, and give 392 end users (or programs) the ability to query an IPP Printer and submit 393 and manage print jobs. An IPP server is just that part of the IPP 395 Expires April 14, 1998 396 Printer that implements the server-side protocol. The rest of the IPP 397 Printer implements the application semantics of the print service 398 itself. The IPP Printer may be embedded in an output device or may be 399 implemented on a host on the network that communicates with the output 400 device. 402 When a job is submitted to the Printer object and the Printer object 403 validates the attributes in the submission request, the Printer object 404 creates a new Job object. The end user then interacts with this new 405 Job object to query its status and monitor the progress of the job. 406 End users may also cancel print job by using the Job object's Cancel- 407 Job operation. The end user is able to register to receive certain 408 events that are then routed using the specified notification 409 service(s). 411 2. IPP Objects 413 The IPP model introduces objects of type Printer and Job. Each type 414 of object models relevant aspects of a real-world entity such as a 415 real printer or print job. Each object type is defined as a set of 416 possible attributes that may be supported by instances of that object 417 type. For each object, the actual set of supported attributes and 418 values describe a specific implementation. The object's attributes 419 and values describe its state, capabilities, realizable features, job 420 processing functions, and default behaviors and characteristics. For 421 example, the object type Printer is defined as a set of attributes 422 that each Printer object potentially supports. In the same manner, 423 the object type Job is defined as a set of attributes that are 424 potentially supported by each Job object. 426 Each attribute included in the set of attributes defining an object 427 type is labeled as: 429 - "MANDATORY": each object SHALL support the attribute. 430 - "OPTIONAL": each object OPTIONALLY supports the attribute. 432 There is no such similar labeling of attribute values. However, if an 433 implementation supports an attribute, it MUST support at least one of 434 the possible values for that attribute. 436 2.1 Printer Object 438 A major component of the IPP model is the Printer object (also called 439 the IPP Printer). A Printer object implements the IPP protocol. 440 Using the protocol, end users may query the attributes of the Printer 441 and submit Jobs to the Printer. The actual implementation components 443 Expires April 14, 1998 444 behind the Printer abstraction may take on different forms and 445 different configurations. However, the model abstraction allows the 446 details of the configuration of real components to remain opaque to 447 the end user. Section 3 describes each of the Printer operations in 448 detail. 450 The capabilities and state of a Printer object are described by its 451 attributes. Printer attributes are grouped into two groups: 453 - "job-template" attributes: These attributes the describe job 454 processing capabilities and defaults for the Printer object. (See 455 section 4.2) 456 - "printer-description" attributes: These attributes describe the 457 Printer object's identification, state, location, references to 458 other sources of information about the Printer object, etc. (see 459 section 4.4) 461 Since a Printer object is an abstraction of a generic document output 462 device and print service provider, a Printer object could be used to 463 represent any real or virtual device with semantics consistent with 464 the Printer object, such as a fax device, an imager, or even a CD 465 writer. 467 Some examples of configurations supporting a Printer object include: 469 1) An output device, with no spooling capabilities 470 2) An output device, with a built-in spooler 471 3) A print server supporting IPP with one or more associated output 472 devices 473 3a) The associated output devices might or might not be capable 474 of spooling jobs 475 3b) The associated output devices might or might not support IPP 477 The following figures show some examples of how Printer objects can be 478 realized on top of various distributed printing configurations. The 479 embedded case below represents configurations 1 and 2. The hosted and 480 fan-out figures below represent configuration 3. 482 Expires April 14, 1998 483 Legend: 485 ##### indicates a Printer object which is 486 either embedded in an output device or is 487 hosted in a server. The implementation 488 might or might not be capable of queuing/spooling. 490 any indicates any network protocol or direct 491 connect, including IPP 493 embedded printer: 494 output device 495 +---------------+ 496 O +--------+ | ########### | 497 /|\ | client |------------IPP------------># Printer # | 498 / \ +--------+ | # Object # | 499 | ########### | 500 +---------------+ 502 hosted printer: 503 +---------------+ 504 O +--------+ ########### | | 505 /|\ | client |--IPP--># Printer #-any->| output device | 506 / \ +--------+ # Object # | | 507 ########### +---------------+ 509 +---------------+ 510 fan out: | | 511 +-->| output device | 512 any/ | | 513 O +--------+ ########### / +---------------+ 514 /|\ | client |-IPP-># Printer #--* 515 / \ +--------+ # Object # \ +---------------+ 516 ########### any\ | | 517 +-->| output device | 518 | | 519 +---------------+ 521 A Printer object is identified with a Uniform Resource Identifier 522 (URI) [RFC1630]. Often, the URI is a Uniform Resource Locator (URL) 523 [RFC1738] [RFC1808].. 525 Expires April 14, 1998 526 Note: The IPP protocol specification [IPP-PRO] defines a mapping of 527 IPP onto HTTP/1.1. Therefore, all conforming Printer objects SHALL 528 support HTTP schemed URIs to identify themselves. For example, a 529 Printer object's URI could be "http://www.some-domain.org/printer- 530 one". A Printer object's URI could not be "ftp://ftp.some- 531 domain.org/printer-one". 533 IPP does not specify how the URI is obtained, but it is RECOMMENDED 534 that a Printer object is registered in a directory service which end 535 users and programs can interrogate. Section 16 defines a generic 536 schema for Printer object entries in the directory service. 538 2.2 Job Object 540 A Job object is used to model a print job. A Job can contain one or 541 more documents. The information required to create a Job object is 542 sent in a create request from the end user via an IPP Client to the 543 Printer object. Section 3 describes each of the Job operations in 544 detail. 546 The characteristics and state of a Job object are described by its 547 attributes. Job attributes are grouped into two groups as follows: 549 - "job-template" attributes: These attributes are optionally 550 supplied by the client or end user and include job processing 551 instructions which are intended to override any Printer object 552 defaults and/or instructions embedded within the document data. 553 (See section 4.2) 554 - "job-description" attributes: These attributes describe the Job 555 object's identification, state, size, etc. The client does not 556 supply values for these attributes, they are set by the Printer 557 object. (See section 4.3) 559 A Job object contains at least one document, but may contain multiple 560 documents. A document consists of either: 562 - a stream of data in a format supported by the Printer object, or 563 - a URI reference to a stream of data in a format supported by the 564 Printer 566 A document is not modeled as an IPP object, therefore it has no object 567 identifier or associated attributes. All job processing instructions 568 are modeled as Job object attributes. These attributes are called Job 569 Template attributes and they apply equally to all documents within a 570 Job. 572 Expires April 14, 1998 573 2.3 Object Relationships 575 IPP objects have relationships that MUST be maintained persistently 576 along with the persistent storage of the object attributes. A Printer 577 object may represent one or more output devices. A Printer object may 578 represent a logical device which "processes" jobs but never actually 579 uses a physical output device to put marks on paper (for example a Web 580 page publisher or an interface into an online document archive or 581 repository). A Printer object contains zero or more Job objects. A 582 Job object is contained by exactly one Printer object, however the 583 identical document data associated with a Job object could be sent to 584 either the same or a different Printer object. In this case, a new 585 Job object would be created which would be almost identical to the 586 existing Job object, however it would have a new (different) Job 587 object identifier. A Job object contains one or more documents. If 588 the contained document is a stream of printer-ready data, that stream 589 can be contained in only one document. However, there can be copies 590 of the stream in other documents in the same or different Job objects. 591 If the contained document is a reference to a stream of printer-ready 592 data, other documents (in the same or different Job object(s)) may 593 reference the same stream. 595 2.4 Object Identity 597 All Printer and Job objects have an identifier so that they can be 598 persistently and unambiguously referenced. The IPP model requires 599 that these identifiers be URIs. Often, the URI is a URL [RFC1738] 600 [RFC1808]. 602 Allowing Job objects to have URIs allows for flexibility and 603 scalability. In some implementations, the Printer object might create 604 Jobs that are processed in the same local environment as the Printer 605 object itself. In this case, the Job URI might just be a composition 606 of the Printer's URI and some unique component for the Job object. In 607 other implementations, the Printer object might be a central clearing- 608 house for validating all Job object creation requests, and the Job 609 object itself might be created in some environment that is remote from 610 the Printer object. In this case, the Job object's URI may have no 611 relationship at all to the Printer object's URI. 613 However, many existing printing systems have local models or interface 614 constraints that force Job objects to be identified using only a 32- 615 bit positive integer rather than a URI. This numeric Job ID is only 616 unique within the context of the Printer object to which the create 617 request was originally submitted. In order to allow both types of 618 client access to Jobs (either Job URI or numeric Job ID), when the 619 Printer object successfully processes a create request and creates a 621 Expires April 14, 1998 622 new Job, the Printer object SHALL generate both a Job URI and a Job ID 623 for the new Job object. This requirement allows all clients to access 624 Printer objects and Job objects no matter the local constraints 625 imposed on the client implementation. 627 In addition to a unique identifier, Printer objects and Job objects 628 may have names. An object name need not be unique across all 629 instances of all objects. A Printer object's name is chosen and set by 630 an administrator through some mechanism outside the scope of IPP. A 631 Job object's name is optionally chosen and supplied by the IPP Client 632 submitting the job. If the client does not supply a Job object name, 633 the Printer object generates a name for the new Job object. In all 634 cases, the name only has local meaning, and it is not constrained to 635 be unique. 637 To summarize: 639 - Each Printer object is uniquely identified with a URI. The 640 Printer's "printer-uri" attribute contains the URI. 641 - Each Job object is uniquely identified with a URI. The Job's 642 "job-uri" attribute contains the URI. 643 - Each Job object is also uniquely identified with a combination of 644 the URI of the Printer object to which the create request was 645 originally submitted along with a Job ID (a 32-bit, positive 646 number) that is unique within the context of that Printer object. 647 The Printer object's "printer-uri" contains the Printer URI. The 648 Job object's "job-id" attribute contains the numeric Job ID. 649 - Each Printer object has a name (which is not necessarily unique). 650 The administrator chooses and sets this name through some 651 mechanism outside the scope of IPP itself. The Printer object's 652 "printer-name" attribute contains the name. 653 - Each Job object has a name (which is not necessarily unique). 654 The client optionally supplies this name in the create request. 655 If the client does not supply this name, the Printer object 656 generates a name for the Job object. The Job object's "job-name" 657 attribute contains the name. 659 3. IPP Operations 661 IPP objects have associated operations. An operation consists of a 662 request and a response. When a client communicates with an IPP 663 object, it issues an operation request to the URI for that object. 664 Operations have attributes that supply information about the operation 665 itself. These attributes are called operation attributes (as compared 666 to object attributes such as Printer attributes or Job attributes). 667 Each request carries along with it any operation attributes and/or 668 document data required by the object to perform the operation. Each 670 Expires April 14, 1998 671 request requires a response from the object. Each response indicates 672 success or failure of the operation with a status code. The response 673 contains any operation attributes, object attributes, and/or status 674 messages generated by the execution of the operation request. 676 This section describes the semantics of the IPP operations, both 677 requests and responses, in terms of the attributes and other data 678 associated with each operation. 680 Note: The IPP protocol specification [IPP-PRO] describes a mapping and 681 encoding of IPP operations onto HTTP/1.1 POST commands. Other 682 mappings for IPP operations to additional transport mechanisms are 683 possible. 685 The Printer operations are: 687 Print-Job (section 3.2.1) 688 Print-URI (section 3.2.2) 689 Validate-Job (section 3.2.3) 690 Create-Job (section 3.2.4) 691 Get-Attributes (section 3.2.5) 692 Get-Jobs (section 3.2.6) 694 The Job operations are: 696 Send-Document (section 3.3.1) 697 Send-URI (section 3.3.2) 698 Cancel-Job (section 3.3.3) 699 Get-Attributes (section 3.3.4) 701 The Send-Document and Send-URI Job operations are used to add a new 702 document to an existing multi-document Job object created with the 703 Create-Job operation. 705 3.1 General Semantics 707 3.1.1 Operation Characteristics 709 Each IPP operation is defined as both a request and a response. Both 710 requests and responses are composed of groups of attributes and/or 711 document data. Attributes are grouped into the following groups: 713 - Operation Attributes: These are attributes that are only passed 714 in the operation itself, and usually do not persist beyond the 715 life of the operation. Operation attributes may also affect 716 other attributes or groups of attributes since values in the 717 operation attributes usually affect the behavior of the object 719 Expires April 14, 1998 720 that processes the operation. All IPP objects that accept IPP 721 operation request MUST support all operation attributes. Some 722 operation attributes are OPTIONAL for the client to supply, but 723 the IPP object MUST support the attribute by being prepare to 724 handle the client supplied operation attribute by realizing the 725 corresponding feature or function. 726 - Job Template Attributes: These attributes affect the processing 727 of a job. They are OPTIONALLY supplied by a client in a create 728 request, and the receiving object MUST be prepared to received 729 all supported attributes. The Job object can later be queried to 730 find out what was originally requested in the create request. 731 The Printer object can be queried to find out what type of job 732 processing capabilities are supported and/or what the default job 733 processing behaviors are. 734 - Job Object Attributes: These attributes are returned in response 735 to query operation directed at a Job object. 736 - Printer Object Attributes: These attributes are returned in 737 response to a query operation directed at a Printer object. 738 - Unsupported Attributes: In a create request, the client supplies 739 an optional set of Job Template attributes. If any of these are 740 unsupported by the Printer object, the Printer object returns 741 them in the response. Section 15 gives a full description of how 742 Job Template attributes supplied by the client in a create 743 request are processed by the Printer object and how unsupported 744 attributes are returned to the client. 746 Later in this section, each operation is formally defined by 747 identifying the allowed and expected groups of attributes for request 748 and response. The model identifies a specific order for each group in 749 each request or response, but the attributes within each group may be 750 in any order. 752 Note: Document data included in the operation is not strictly an 753 attribute, but it is treated as a special attribute group for ordering 754 purposes. The only operations that support supplying the document 755 data within an operation request are Print-Job and Send-Document. 756 There are no operations responses that include document data. 758 Since some operations are MANDATORY and some are OPTIONAL, a client 759 SHOULD first use the MANDATORY Get-Attributes operation to query the 760 Printer's "operations-supported" attribute before using any 761 unsupported operation. A client SHOULD NOT attempt to use an 762 unsupported operation. When a Printer object receives a request to 763 perform an operation it does not support, it returns the error code 764 'server-error-operation-not-supported' (see section 13.1.5.2). 766 Expires April 14, 1998 767 3.1.2 Operation Targets 769 All IPP operations are directed at IPP objects. For Printer 770 operations, the operation is always directed at a Printer object using 771 its URI (the "printer-uri" attribute). 773 For Job operations, the operation is directed at either: 775 - the Job object itself using the Job object's URI ("job-uri") 776 assigned by the Printer object, or 777 - the Printer object to which the job was originally submitted 778 using the URI of the Printer ("printer-uri") in combination with 779 and the 32-bit numeric Job ID ("job-id") assigned by the Printer 780 object. 782 If the operation is directed at the Job object directly using the Job 783 object's URI, the client SHOULD NOT include the redundant "job-id" 784 operation attribute. 786 Note: In the mapping of IPP over HTTP/1.1, the object's URI is 787 actually encoded as the "request-URI" field of the HTTP POST 788 operation. In the case of Printer operations directed at a Printer 789 object, the Printer object's "printer-uri" attribute is mapped to the 790 "request-URI" attribute in the HTTP header. In the case of Job 791 operations directed at the Job object, the Job object's "job-uri" 792 attribute is mapped to the "request-URI" attribute in the HTTP header. 793 In the case of Job operations directed at the Printer object that 794 created the Job, the Printer object's "printer-uri" attribute is sent 795 in the HTTP header, and the "job-id" attribute is sent as an 796 operational attribute in the request body. In other mappings of IPP 797 operations onto some other transport mechanism, the target URI is 798 encoded using some other transport specific addressing mechanism. 800 The following rules apply to the use of port numbers in URIs that 801 identify IPP objects: 803 1. If the protocol scheme for the URI allows the port number to be 804 explicitly included in the URI string, and an explicit port 805 number is specified in the published URI, then that port number 806 MUST be used by the client to contact the IPP server. 808 2. If the protocol scheme for the URI does not allow an explicit 809 port number specification, then the default port number for the 810 protocol should be used. 812 3. Consult the appropriate IPP protocol mapping document to 813 determine alternate port numbers for the protocol specified in 814 the server URI. 816 Expires April 14, 1998 818 3.1.3 Character Set and Natural Language Operation Attributes 820 Some Job and Printer attributes have values that are text strings and 821 names intended for human understanding rather than machine 822 understanding (see the 'text' and 'name' attribute syntax descriptions 823 in section 4.1). The following sections describe two MANDATORY 824 attributes for every IPP operation request and response. These 825 attributes are "attributes-charset" and "attributes-natural-language". 826 For the sake of brevity in this document, these operation attribute 827 descriptions are not repeated with every operation request and 828 response, but have a reference back to this section instead. 830 3.1.3.1 Request Operation Attributes 832 The client SHALL supply and the Printer object SHALL support the 833 following MANDATORY operation attributes in every IPP operation 834 request: 836 "attributes-charset" (charSet): 837 This operation attribute identifies the charset (coded character 838 set and encoding method) used by any 'text' and 'name' attributes 839 that the client is supplying in this request and that the Printer 840 object SHALL return in this operation response. See Sections 841 4.1.1 and 4.1.2 for the specification of the 'text' and 'name' 842 attribute syntaxes. 844 The Printer object SHALL support the 'utf-8' charset [RFC2044] 845 and MAY support additional charsets provided that they are 846 registered with IANA [IANA-CS]. If the Printer object does not 847 support the supplied charset value, the Printer object SHALL 848 reject the request and return status code 'client-error-charset- 849 not-supported'. The Printer object SHALL indicate the charset(s) 850 supported as the values of the "charsets-supported" Printer 851 attribute (see Section 4.4.14), so that the client MAY query 852 which charset(s) are supported. 854 See the 'charSet' attribute syntax description in Section 4.1.7 855 for the syntax and semantic interpretation of the values of this 856 attribute and for example values. 858 "attributes-natural-language" (naturalLanguage): 859 This operation attribute identifies the natural language used by 860 any 'text' and 'name' attributes that the client is supplying in 861 this request. A Printer SHOULD do its best to respond in the 862 same natural language. 864 Expires April 14, 1998 865 There are no MANDATORY natural languages required for the Printer 866 object to support. However, the Printer's "natural-language- 867 supported" attribute SHALL list the natural languages supported, 868 so that the client MAY query which natural language(s) are 869 supported. For any of the attributes for which the Printer 870 generates messages, i.e., for the "job-state-message", "printer- 871 state-message" attributes ", and Status Messages (see Section 872 3.1.4) in operation responses, the Printer object SHALL be able 873 to generate messages in any of its supported natural languages. 874 If the client requests a natural language that is not supported, 875 the Printer object SHALL return these generated messages in the 876 Printer's configured natural language as specified by the 877 Printer's "printer-natural-language " attribute" (see Section 878 4.4.15). 880 For other Printer 'text' and 'name' attributes supplied by the 881 operator, system administrator, or manufacturer, i.e., for 882 "printer-name" (name), "printer-location" (text), "printer-info" 883 (text), and "printer-make-and-model" (text), the Printer object 884 is only required to support the configured natural language of 885 the Printer identified by the Printer's "printer-natural-language 886 " attribute, though support of additional natural languages for 887 these attributes is permitted 889 If the Printer object does not support the natural language value 890 supplied by the client, the Printer object SHALL either (1) 891 reject the request and return status code ' client-error-natural- 892 language-not-supported' or (2) accept the natural language rather 893 than returning an error, depending on implementation. In the 894 latter case, the Printer object SHALL use the method for 895 representing exception natural languages in attribute values as 896 described for the 'text' attribute syntax in Section 4.1.1 for 897 any such 'text' or 'name' attributes that the Printer (1) accepts 898 from or (2) returns to a client. 900 See the 'naturalLanguage' attribute syntax description in Section 901 4.1.8 for the syntax and semantic interpretation of the values of 902 this attribute and for example values. 904 3.1.3.2 Response Operation Attributes 906 The Printer object SHALL supply and the client SHALL support the 907 following MANDATORY operation attributes in every IPP operation 908 response: 910 "attributescharset" (charSet): 911 This operation attribute identifies the charset used by any 912 'text' and 'name' attributes that the Printer object is returning 914 Expires April 14, 1998 915 in this response. The value in this response SHALL be the same 916 value as the "attributes-charset" operation attribute supplied by 917 the client in the request. See "attributes-charset" described in 918 Section 3.1.3.1 above. 920 If the Printer object supports more than just the 'utf-8' 921 charset, the Printer object SHALL be able to code convert between 922 each of the charsets supported on a highest fidelity possible 923 basis in order to return the 'text' and 'name' attributes in the 924 charset requested by the client. However, some information loss 925 MAY occur during the charset conversion depending on the charsets 926 involved. For example, the Printer object may convert from a 927 UTF-8 'a' to a US-ASCII 'a' (with no loss of information), from 928 an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' 929 (losing the accent), or from a UTF-8 Japanese Kanji character to 930 some ISO Latin 1 error character indication such as '?', decimal 931 code equivalent, or to the absence of a character, depending on 932 implementation. 934 "attributes-natural-language" (naturalLanguage): 935 This is a MANDATORY Job Template attribute for the Printer object 936 to return. This attribute specifies the natural language used by 937 'text' and 'name' attributes with empty tags in this response and 938 SHALL be the same value as supplied by the client in the request, 939 whether the Printer object supports that value or not. Any 940 'text' or 'name' values in this response that have a different 941 natural language SHALL have a fully specified natural language 942 tag pre-pended to each such attribute value. 944 In a subsequent query request (Get-Attributes or Get-Jobs), the 945 Printer object NEED NOT convert any 'text' or 'name' attribute 946 values to the natural language of the requester when it is 947 different from that specified (and subsequently stored) in the 948 original create request.. In such cases, the Printer object 949 SHALL return an explicit natural language indicator for each such 950 attribute value. See the 'text' attribute syntax description in 951 Section 4.1.1. 953 3.1.4 Operation Status Codes and Messages 955 Every operation response returns a MANDATORY status code and an 956 OPTIONAL status message. A status code provides information on the 957 processing of a request. A status message provides a short textual 958 description of the status of the operation. The status code is 959 intended for use by automata and the status message is intended for 960 the human user. If a response does include a status message, an IPP 961 client is not required to examine or display the status message, 962 however it SHOULD do so in some implementation specific manner. 964 Expires April 14, 1998 965 Section 13 describes the status codes and suggests a corresponding 966 status message for each status code. In some cases, if the status 967 code indicates an error, there may be additional attributes in the 968 response that are not returned in the successful case. One such 969 example is the set of unsupported attributes in the Print-Job response 970 (see section 3.2.1.2). 972 The status code is a numeric value that has semantic meaning. The 973 status code is similar to a "type2 enum" (see section 4.1 on 974 "Attribute Syntaxes") except that values can range only from 0x0000 to 975 0xFFFF. 977 A client implementation of IPP could convert status code values into 978 any localized string that has semantic meaning to the end user. The 979 Printer object SHALL be able to generate this message in any of the 980 natural languages identified by the Printer's "natural-language- 981 supported" attribute (see the "attributes-natural-language" operation 982 attribute specified in Section 3.1.3.1). If the charset requested by 983 the client in the "attributes-charset" operation attribute is not 984 supported by the Printer object, the Printer object SHALL represent 985 the status message, if returned, in the charset specified by the 986 Printer's "printer-charset" attribute (which the client MAY not be 987 able to interpret). 989 3.1.5 Security Concerns for IPP Operations 991 3.1.5.1 Authenticated Requester Identity 993 IPP is layered on top of security services that supply the requester's 994 identity. It is assumed that the identity supplied by the 995 authentication service is the most authenticated identity required by 996 a given site's configuration and current policy. It is also assumed 997 that the layering allows for a single IPP implementation to be run 998 over a consistent interface that supplies the authenticated identity. 999 The authentication interface should allow for various modular and 1000 extensible authentication service implementations without requiring 1001 changes to the IPP implementation. 1003 Once the authenticated identity of the requester has been supplied to 1004 the IPP implementation, the implementation uses that identity to 1005 enforce any authorization policy(ies) that might be in place. When a 1006 Job is created, the identity of the requester from the create request 1007 is persistently stored in the Job's "job-originating-user" attribute. 1008 This attribute can be used to match the requester's identity of 1009 subsequent operations on that Job in order to enforce the local 1010 authorization policy(ies), if any. For example, a one site's policy 1011 might be that only the job owner is allowed to cancel a job. There 1012 are operation status codes that allow an implementation to return 1014 Expires April 14, 1998 1015 information back to the operation requester about what has been 1016 forbidden, not allowed, or not authorized. The details of and 1017 mechanisms to set up authorization policy(ies) are not part of IPP, 1018 and must be established via some mechanism outside the scope of IPP. 1020 3.1.5.2 Restricted Queries 1022 In many of these IPP operations, a client supplies a list of 1023 attributes to be returned in the response. A Printer may be 1024 configured, for security reasons, not to return all attributes that a 1025 client requests. It may even return none of the requested attributes. 1026 In such cases, the status returned is the same as if the Printer had 1027 returned all requested attributes. The client cannot tell by such a 1028 response whether the requested attribute was present or absent on the 1029 Printer or Job. 1031 3.1.6 Versions 1033 Each operation request carries with it a version number. Each version 1034 number is in the form "X.Y" where X is the major version number and Y 1035 is the minor version number. By including a version number in the 1036 client request, it allows the client (the requester) to identify which 1037 version of IPP it is interested in using. If the Printer does not 1038 support that version, the Printer responds with a status code of 1039 'server-error-version-not-supported'. 1041 There is no version negotiation per se. However, if after receiving a 1042 version not supported status code from the Printer, there is nothing 1043 that prevents a client from trying again with a different version 1044 number. For example, a client might be configured to support IPP 1045 version 3.0, 2.5, 2.0 and 1.0 (hypothetically speaking). A client 1046 might first try to speak version 3.0. If after receiving a version not 1047 supported, it might successively try version 2.5, then 2.0, and then 1048 1.0. All implementations MUST support version 1.0. 1050 There is only one version number that covers both IPP Model and the 1051 IPP Protocol changes. Thus the version number MUST change when 1052 introducing a new version of the Model document or a new version of 1053 the Protocol document. 1055 Changes to the major version number indicate structural or syntactic 1056 changes that make it impossible for older version IPP processors to 1057 correctly parse and interpret the new or changed attributes, 1058 operations and responses. If the major version number changes, the 1059 minor version numbers is set to zero. One example that would have 1060 required a change to the major version number would have been adding 1061 the "ipp-attribute-fidelity" attribute if it had not been part of 1062 version 1.0. Items that might affect the changing of the major version 1064 Expires April 14, 1998 1065 number include any changes to the protocol specification itself such 1066 as: 1068 - reordering of ordered attributes or attribute sets 1069 - changes to the syntax of existing attributes 1070 - changing OPTIONAL to MANDATORY and vice versa 1072 Changes to the minor version number indicate the addition of new 1073 features, attributes and attribute values that may not be understood 1074 by all IPP processors, but which can be ignored if not understood. 1075 Items that might affect the changing of the minor version number 1076 include any changes to the model objects and attributes but not the 1077 protocol specification itself, such as: 1079 - grouping all extensions not included in a previous version into a 1080 new version 1081 - formally adding in new attribute values 1082 - changing any of the type1 attributes 1084 3.1.7 Job Creation Operations 1086 In order to "submit a print job" and create a new Job object, a client 1087 issues a create request. A create request is any one of following 1088 three operation requests: 1090 - The Print-Job Request: A client that wants to submit a print job 1091 with only a single document uses the Print-Job operation. . The 1092 operation allows for the client to "push" the document data to 1093 the Printer by including the document data in the request itself. 1095 - The Print-URI Request: A client that wants to submit a print job 1096 with only a single document where the Printer "pulls" the 1097 document data uses the Print-URI operation. In this case, the 1098 client includes only a URI reference to the document data (not 1099 the document data itself). 1101 - The Create-Job Request: A client that wants to submit a print job 1102 with multiple documents uses the Create-Job operation. . This 1103 operation is followed by an arbitrary number of Send-Document or 1104 Send-URI operations (each creating another document for the newly 1105 create Job object). The Send-Document operation includes the 1106 document data in the request (the client "pushes" the document 1107 data to the printer), and the Send-URI operation includes only a 1108 URI reference to the document data in the request (the Printer 1109 "pulls" the document data from the referenced location). The 1110 last Send-Document or Send-URI request for a given Job object 1111 includes a "last-document" operation attribute set to 'true' 1112 indicating that this is the last document. 1114 Expires April 14, 1998 1116 Throughout this model specification, the term "create request" is used 1117 to refer to any of these three operation requests. 1119 A Create-Job operation followed by only one Send-Document operation is 1120 semantically equivalent to a Print-Job operation, however, for 1121 performance reasons, the client SHOULD use the Print-Job operation for 1122 all single Document Jobs. Also, Print-Job is a MANDATORY operation 1123 (all implementations MUST support it) whereas Create-Job is an 1124 OPTIONAL operation, hence some implementations might not support it. 1126 Section 15 describes the rules and issues surrounding the processing 1127 and either the acceptance or rejection of a create request. 1129 Job submission time is the point in time when a client issues a create 1130 request. The initial state of every Job object is the 'pending' or 1131 'pending-held' state. Later, the Printer object begins processing the 1132 job. At this point in time, the Job object's state moves to 1133 'processing'. This is known as job processing time. There are 1134 validation checks that must be done at job submission time and others 1135 that must be performed at job processing time. 1137 At job submission time and at the time a Validate-Job operation is 1138 received, the Printer MUST do the following: 1140 1. Process the client supplied attributes using the rules supplied 1141 in section 15 and either accept or reject the request 1142 2. Validate the syntax of and support for the scheme of any client 1143 supplied URI 1145 At job submission time the Printer SHOULD NOT perform the validation 1146 checks reserved for job processing time such as: 1148 1. Validate the document data 1149 2. Validate the actual contents of any client supplied URI (resolve 1150 the reference and follow the link to the document data) 1152 At job submission time, these additional job processing time 1153 validation checks are essentially useless, since they require actually 1154 parsing and interpreting the document data, are not guaranteed to be 1155 100% accurate, and must yet be done again at job processing time. 1156 Also, in the case of a URI, checking for availability at job 1157 submission time does not guarantee availability at job processing 1158 time. In addition, at job processing time, the Printer object might 1159 discover any of the following conditions that were not detectable at 1160 job submission time: 1162 - runtime errors in the document data, 1164 Expires April 14, 1998 1165 - nested document data that is in an unsupported format, 1166 - the URI reference is no longer valid (i.e., the server hosting 1167 the document might be down), or 1168 - any other job processing error 1170 At job processing time, since the Printer has already responded with a 1171 successful status code in the response to the create request, if the 1172 Printer object detects an error, the Printer object in unable to 1173 inform the end user of the error with an operational status code. In 1174 this case, the Printer, depending on the error, can set the "job- 1175 state", "job-state-reasons", or "job-state-message" attributes to the 1176 appropriate value(s) so that later queries can report the correct job 1177 status. 1179 3.2 Printer Operations 1181 All Printer operations are directed at Printer objects. A client MUST 1182 always supply the "printer-uri" attribute in order to identify the 1183 correct target of the operation. In HTTP/1.1 mapping of IPP, this 1184 attribute is not supplied in the body of the operation as other 1185 operation attributes are. It is supplied in the "request-URI" field 1186 in the HTTP header. 1188 3.2.1 Print-Job Operation 1190 When an end user desires to submit a print job with only one document 1191 and the client supplies the document data (rather than just a 1192 reference to the data), the client uses a Print-Job operation. 1194 3.2.1.1 Print-Job Request 1196 The following groups of attributes are supplied as part of the Print- 1197 Job Request: 1199 Group1: Operation Attributes 1201 Target: 1202 The "printer-uri" target for this operation as described in 1203 section 3.1.2. 1205 Natural Language and Character Set: 1206 The "attributes-charset" and "attributes-natural-language" 1207 attributes as described in section 3.1.3.1. 1209 "job-name" (name): 1210 This attribute is OPTIONALLY supplied by the client, and it 1211 contains the client supplied Job name. If this attribute is 1213 Expires April 14, 1998 1214 supplied, its value it used for the "job-name" attribute of the 1215 newly created Job object. If this attribute is not supplied by 1216 the client, the Printer generates a name to use in the "job-name" 1217 attribute of the newly created Job object (see Section 4.3.4). 1219 "document-name" (name): 1220 This attribute is OPTIONALLY supplied by the client, and it 1221 contains the client supplied document name. The document name 1222 MAY be different than the Job name. Typically, the client 1223 software automatically supplies the document name on behalf of 1224 the end user by using a file name or an application generated 1225 name. If this attribute is supplied, its value can be used in a 1226 manner defined by each implementation. Examples include: printed 1227 along with the Job (banner page, page adornments, etc.), used by 1228 accounting or resource tracking management tools, or even stored 1229 along with the document as a document level attribute. IPP/1.0 1230 does not support the concept of document level attributes, 1231 however, a vendor specific extension to IPP/1.0 might support the 1232 document level attributes. In this case, the "document-name" 1233 attribute could be persistently stored along with the document 1234 and queried using a Get-Attributes operation on the Job object 1235 that includes a request for document level attributes or some 1236 other private extension mechanism. 1238 "ipp-attribute-fidelity" (boolean): 1239 This attribute is OPTIONALLY supplied by the client. If not 1240 supplied, the Printer object assumes the value is 'false'. The 1241 value 'true' indicates that total fidelity to client supplied 1242 attributes and values is required. The value 'false' indicates 1243 that a reasonable attempt to print the Job is acceptable. All 1244 Printer objects MUST support both types of job processing. See 1245 section 15 for a full description of "ipp-attribute-fidelity" 1246 and its relationship to other attributes, especially the Printer 1247 object's "pdl-override" attribute. 1249 "document-charset" (charSet): 1250 This attribute is OPTIONALLY supplied by the client. A Printer 1251 object SHALL support this attribute if it supports a document- 1252 format that requires a character set to be identified in order to 1253 unambiguously interpret the document, such as 'text/plain'. 1254 There are no particular values required for the Printer object to 1255 support. This attribute specifies the charset of the document 1256 for those document-formats that require a specification of the 1257 charset in order to image the document unambiguously. If the 1258 value of the "document-format" attribute contains a charset 1259 parameter (see 'mimeType' attribute syntax in Section 4.1.9), the 1260 client SHALL also supply the "document-charset" attribute and its 1261 value SHALL be the same. 1263 Expires April 14, 1998 1265 "document-natural-language" (naturalLanguage): 1266 This attribute is OPTIONALLY supplied by the client. There are 1267 no particular values are required for the Printer object to 1268 support. This attribute specifies the natural language of the 1269 document for those document-formats that require a specification 1270 of the natural language in order to image the document 1271 unambiguously. 1273 Group2: Job Template Attributes 1275 The client OPTIONALLY supplies a set of Job Template attributes 1276 as defined in section 4.2. See section 15 for a full description 1277 of Job Template attributes. 1279 Group 3: Document Content 1281 The client MUST supply the document data to be processed. 1283 Note: The simplest Print-Job Request consists of just the Document 1284 Content and nothing else. In this case, the Printer object: 1286 - creates a new Job object (the Job object contains a single 1287 document), 1288 - stores a generated Job name in the "job-name" attribute, 1289 - assumes that the document data is in a supported format, and 1290 - uses its corresponding default value attributes for missing Job 1291 Template attributes and embedded instructions in the document 1292 data. 1294 3.2.1.2 Print-Job Response 1296 The Printer SHALL return to the client the following sets of 1297 attributes as part of the Print-Job Response: 1299 Group 1: Operation Attributes 1301 Status Code and Message: 1302 The response includes the MANDATORY status code and an OPTIONAL 1303 "status-message" (text) operation attribute as described in 1304 section 3.1.4. 1306 Natural Language and Character Set: 1307 The "attributes-charset" and "attributes-natural-language" 1308 attributes as described in section 3.1.3.2. 1310 Expires April 14, 1998 1312 Group 2: Job Object Attributes 1314 "job-uri" (uri): 1315 The Printer object MUST return the Job object's MANDATORY "job- 1316 uri" attribute. 1318 "job-id": 1319 The Printer object MUST return the Job object's MANDATORY "job- 1320 id" attribute. 1322 "job-state": 1323 The Printer object MUST return the Job object's MANDATORY "job- 1324 state" attribute. The value of this attribute (along with the 1325 value of the next attribute "job-state-reasons") is taken from a 1326 "snapshot" of the new Job object at some meaningful point in time 1327 (implementation defined) between when the Printer object receives 1328 the Print-Job Request and when the Printer object returns the 1329 response. 1331 "job-state-reasons": 1332 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1333 "job-state-reasons" attribute. If the Printer object supports 1334 this attribute then it MUST be returned in the response. If 1335 this attribute is not returned in the response, the client can 1336 assume that the "job-state-reasons" attribute is not supported 1337 and will not be returned in a subsequent Job object query. 1339 "job-state-message": 1340 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1341 "job-state-message" attribute. If the Printer object supports 1342 this attribute then it MUST be returned in the response. If this 1343 attribute is not returned in the response, the client can assume 1344 that the "job-state-message" attribute is not supported and will 1345 not be returned in a subsequent Job object query. 1347 "number-of-intervening-jobs": 1348 The Printer object OPTIONALLY returns the Job object's OPTIONAL 1349 "number-of-intervening-jobs" attribute. If the Printer object 1350 supports this attribute then it MUST be returned in the response. 1351 If this attribute is not returned in the response, the client can 1352 assume that the "number-of-intervening-jobs" attribute is not 1353 supported and will not be returned in a subsequent Job object 1354 query. 1356 Note: Since any printer state information which affects a job's 1357 state is reflected in the "job-state" and "job-state-reasons" 1358 attributes, it is sufficient to return only these attributes and 1359 no specific printer status attributes. 1361 Expires April 14, 1998 1363 Group 3: Unsupported Attributes 1365 This is an OPTIONAL set of attributes. It is a set of Job 1366 Template attributes supplied by the client (in the request) that 1367 are not supported by the Printer object. When the Printer object 1368 rejects the request because of more than one unsupported 1369 attribute (see section 15), it SHOULD return all of the 1370 unsupported attributes. Some implementations may choose to only 1371 return the first unsupported attribute that is encountered during 1372 the processing of the attributes, but that may lead to additional 1373 requests with only one "fixed" attribute from the set of problem 1374 attributes. In the case where the Printer object accepts the 1375 request and creates a Job object, the Printer MUST return the set 1376 of unsupported attributes where substitutions were made or the 1377 attribute was completely ignored. 1379 Unsupported attributes fall into two categories: 1381 1. The Printer object does not support the named attribute (no 1382 matter what the value), or 1383 2. The Printer object does supports the attribute, but not the 1384 particular value supplied by the client (i.e., the Printer does 1385 not have that value in the corresponding supported values 1386 attribute). 1388 In the case of an unsupported attribute name, the Printer object 1389 returns the client supplied attribute with a substituted special 1390 value of 'unsupported' indicating no support for the attribute 1391 itself. In the case of a supported attribute with an unsupported 1392 value, the Printer object simply returns the client-supplied 1393 attribute. This indicates support for the attribute, but no 1394 support for that particular value. 1396 Note: The simplest response consists of the just the MANDATORY Job 1397 Attributes and a status code of "successful-ok". 1399 3.2.2 Print-URI Operation 1401 This operation is identical to the Print-Job operation (section 3.2.1) 1402 except that a client supplies a URI reference to the document data 1403 using the "document-uri" (uri) operation attribute rather than 1404 including the document data itself. It is up to the IPP server to 1405 interpret the URI and subsequently "pull" the document from the source 1406 referenced by the URI string. At job submission time, the Printer 1407 MUST validate the fact that it supports the retrieval method (e.g., 1408 http, ftp, etc.) implied by the URI. If the Printer object supports 1410 Expires April 14, 1998 1411 this operation, it MUST support the "reference-uri-schemes-supported" 1412 attribute (see section 4.4.21). 1414 3.2.3 Validate-Job Operation 1416 This operation is similar to the Print-Job operation (section 3.2.1) 1417 except that a client supplies no document data and the Printer 1418 allocates no resources (i.e., it does not create a new Job object). 1419 This operation is used only to verify capabilities of a printer object 1420 against whatever attributes are supplied by the client in the 1421 Validate-Job request. There are no Job Object Attributes returned in 1422 the Validate-Job Response. If the Printer supports either the Print- 1423 URI or Send-URI operations, the client MAY include a "document-uri" 1424 attribute in the request. In this case, the Printer MUST validate 1425 that the Printer supports the retrieval method implied by the URI, and 1426 SHOULD check for validate URI syntax. The Printer NEED NOT follow the 1427 reference and validate the contents of the reference. If all is well, 1428 the Printer returns the status code "successful-ok". Otherwise, the 1429 Printer returns a set of unsupported attributes and/or the appropriate 1430 error status code. If the client supplies the "ipp-attribute- 1431 fidelity" attribute set to false (or does not supply the attribute at 1432 all) and if the Printer object returns a "successful-ok-ignored-or- 1433 substituted-attributes", the Printer object SHOULD return all ignored 1434 or substituted in the Unsupported Attributes group. In such a case, 1435 the Printer object MUST return at least one attribute indicating an 1436 unsupported attribute value or an ignored attribute. 1438 3.2.4 Create-Job Operation 1440 This operation is similar to the Print-Job operation (section 3.2.1) 1441 except that in the Create-Job request , a client does not supply 1442 document data (or any reference to document data). Also, the client 1443 does not supply any of the "document-name", "content-charset", or 1444 "content-natural-language" attributes. This operation is followed by 1445 one or more Send-Document or Send-URI operations. In each of these 1446 operation requests, the client OPTIONALLY supplies the "document- 1447 name", "content-charset", or "content-natural-language" attributes for 1448 each document in the multi-document Job. If a Printer object supports 1449 the Create-Job operation, it MUST also support the Send-Document 1450 operation and also MAY support the Send-URI operation. 1452 3.2.5 Get-Attributes Operation 1454 The Printer Get-Attributes operation allows a client to obtain 1455 information from a Printer object. In the operations attributes in a 1456 request, the client supplies the set of attribute names and/or 1457 attribute group names in which the requester is interested. In the 1458 operation attribute in the response, the Printer returns a 1460 Expires April 14, 1998 1461 corresponding attribute set with the appropriate attribute values 1462 filled in. 1464 For Printers, the possible names of attribute groups are: 1466 - 'job-template': all of the Job Template attributes that apply to 1467 a Printer object (the last two columns of the table in Section 1468 4.2). 1469 - 'printer-description': the attributes specified in Section 4.4. 1471 There is also the special group 'all' that includes all supported 1472 attributes. Since a client MAY request specific attributes or named 1473 groups, there is a potential that there is some overlap. For example, 1474 if a client requests, 'printer-name', 'printer-description', and 1475 'all', client is actually requesting the "printer-group, and once by 1476 inclusion in the 'all' group. In all cases, the Printer SHALL only 1477 return the attribute once in the response. 1479 It is NOT REQUIRED that a Printer support all attributes belonging to 1480 a group, however it is MANDATORY that each Printer implementation 1481 understand all group names. 1483 3.2.5.1 Get-Attributes Request 1485 The following sets of attributes are part of the Get-Attributes 1486 Request when the request is directed to a Printer object: 1488 Group 1: Operation Attributes 1490 Target: 1491 The "printer-uri" target for this operation as described in 1492 section 3.1.2. 1494 Natural Language and Character Set: 1495 The "attributes-charset" and "attributes-natural-language" 1496 attributes as described in section 3.1.3.1. 1498 "requested-attributes" (1setOf keyword) : 1499 The client OPTIONALLY supplies a set of attribute names and/or 1500 attribute group names in whose values the requester is 1501 interested. If the client omits this attribute, the Printer 1502 SHALL respond as if this attribute had been supplied with a value 1503 of 'all'. 1505 "document-format" (mimeType) : 1506 The client OPTIONALLY supplies this attribute. This attribute is 1507 useful for a Printer to determine the set of supported attribute 1508 values that relate to the requested document format. The Printer 1510 Expires April 14, 1998 1511 SHOULD return only (1) those attributes that are supported for 1512 that format and (2) the attribute values that are supported for 1513 the specified document format. By specifying the document 1514 format, the client can get the Printer to eliminate the 1515 attributes and values that are not supported for a specific 1516 document format. For example, a Printer might have multiple 1517 interpreters to support both 'application/postscript' (for 1518 PostScript) and 'text/plain' (for text) documents. However, for 1519 only one of those interpreters might the Printer be able to 1520 support "number-up" with values of '1', '2', and '4'. For the 1521 other interpreter it might be able to only support "number-up" 1522 with a value of '1'. 1524 If the client omits this attribute, the Printer SHALL respond as 1525 if the attribute had been supplied with a value set to the 1526 Printer object's "document-format-default" default value 1527 attribute. It is recommended that the client always supply a 1528 value for "document-format", since the Printer object's 1529 "document-format-default" may be 'application/octet-stream', in 1530 which case the returned attributes and values are for the union 1531 of the document formats that the Printer can automatically sense. 1532 For more details, see the description of the 'mimeType' attribute 1533 syntax in section 4.1.9. 1535 NOTE: The "document-format" operation attribute is a fairly 1536 sophisticated filtering notion that is not supported by many 1537 existing print systems or devices. 1539 3.2.5.2 Get-Attributes Response 1541 The Printer object returns the following sets of attributes as part of 1542 the Get-Attributes Response: 1544 Group 1: Operation Attributes 1546 Status Code and Message: 1547 The response includes the MANDATORY status code and an OPTIONAL 1548 "status-message" (text) operation attribute as described in 1549 section 3.1.4. 1551 Natural Language and Character Set: 1552 The "attributes-charset" and "attributes-natural-language" 1553 attributes as described in section 3.1.3.2. 1555 Group 2: Requested Printer Object Attributes 1557 Expires April 14, 1998 1558 This is the set of requested attributes and their current values. 1559 The Printer object ignores (does not respond with) any requested 1560 attribute which is not supported. 1562 3.2.6 Get-Jobs Operation 1564 The Get-Jobs operation allows a client to retrieve the list of Jobs 1565 belonging to the target Printer object. The client may also supply a 1566 list of Job attribute names or attribute group names. These Job 1567 attributes will be returned for each Job that is returned. 1569 This operation is similar Get-Attributes, except that this Get-Jobs 1570 operation returns attributes from possibly more than one object (see 1571 the description of attribute group names in section 3.3.4). 1573 3.2.6.1 Get-Jobs Request 1575 The client submits the Get-Jobs request to a Printer object. 1577 The following groupsof attributes are part of the Get-Jobs Request: 1579 Group 1: Operation Attributes 1581 Target: 1582 The "printer-uri" target for this operation as described in 1583 section 3.1.2. 1585 Natural Language and Character Set: 1586 The "attributes-charset" and "attributes-natural-language" 1587 attributes as described in section 3.1.3.1. 1589 "limit" (integer): 1590 The client OPTIONALLY supplies this attribute. It is an integer 1591 value that indicates a limit to the number of Job objects 1592 returned. The limit is a "stateless limit" in that if the value 1593 supplied by the client is 'n', then only the first 'n' jobs are 1594 returned in the Get-Jobs Response. There is no mechanism to 1595 allow for the next 'm' jobs after the first 'n' jobs. If the 1596 client does not supply this attribute, the Printer object 1597 responds will all applicable jobs. 1599 "requested-attributes" (1setOf keyword): 1600 The client OPTIONALLY supplies this attribute. It is a set of Job 1601 attribute names or attribute groups names in whose values the 1602 requester is interested. This set of attributes is returned for 1603 each Job that is returned. The allowed attribute group names are 1604 the same as those defined in the Get-Attributes operation for Job 1605 objects. If the client does not supply this attribute, the 1607 Expires April 14, 1998 1608 Printer SHALL respond as if the client had supplied values of 1609 'job-uri' and 'job-id'. 1611 "which-jobs" (keyword): 1612 The client OPTIONALLY supplies this attribute. It indicates which 1613 Jobs should be returned by the Printer object. The values for 1614 this attribute are: 1616 'completed': This includes any Job object whose state is 1617 'completed', 'cancelled', or 'aborted'. 1618 'not-completed': This includes any Job object whose state is 1619 'pending', 'processing', 'processing-stopped', 'pending- 1620 held', 'unknown'. 1622 If the client does not supply the attribute, the Printer object 1623 SHALL respond as if the client had supplied the value of 'not- 1624 completed'. 1626 3.2.6.2 Get-Jobs Response 1628 The Printer object returns all of the Job objects that match the 1629 criteria as defined by the attribute values supplied by the client in 1630 the request. It is possible that no Job objects are returned since 1631 there may literally be no Job objects at the Printer, or there may be 1632 no Job objects that match the criteria supplied by the client. If the 1633 client requests any Job attributes at all, there is a set of Job 1634 Object Attributes returned for each Job object. 1636 Group 1: Operation Attributes 1638 Status Code and Message: 1639 The response includes the MANDATORY status code and an OPTIONAL 1640 "status-message" (text) operation attribute as described in 1641 section 3.1.4. 1643 Natural Language and Character Set: 1644 The "attributes-charset" and "attributes-natural-language" 1645 attributes as described in section 3.1.3.2. 1647 Groups 2 to N: Job Object Attributes 1649 The Printer object responds with one set of Job Object Attributes 1650 for each returned Job object. 1652 For any job submitted in a different natural language than the 1653 natural language that the client is requesting in the Get-Jobs 1654 request, the Printer SHALL indicate the submitted natural 1655 language by returning the "job-natural-language" as the first Job 1657 Expires April 14, 1998 1658 object attribute, which overrides the "attributes-natural- 1659 language" operation attribute value being returned by the 1660 Printer. If any returned 'text' or 'name' attribute includes an 1661 exception natural language as described in the 'text' attribute 1662 syntax (see Section 4.1.1), the exception natural language 1663 overrides the "job-natural-language" value (for the immediately 1664 following attribute value only). 1666 Jobs are returned in the following order: 1668 - If the client requests all 'completed' Jobs (Jobs in the 1669 'completed', 'aborted', or 'cancelled' states), then the Jobs are 1670 returned newest to oldest (with respect to actual completion 1671 time) 1672 - If the client requests all 'non-completed' Jobs (Jobs in the 1673 'pending', 'processing', 'pending-held', 'processing-stopped', 1674 and 'unknown' states), then Jobs are returned in relative 1675 chronological order of expected time to complete (based on 1676 whatever scheduling algorithm is configured for the Printer 1677 object). 1679 3.3 Job Operations 1681 All Job operations are directed at Job objects. A client MUST always 1682 supply some means of identifying the Job object in order to identify 1683 the correct target of the operation. Since Job objects can be 1684 identified with either a single Job URI or a combination of a Printer 1685 URI with a local Job ID, the following rules apply to all Job 1686 operation requests mapped onto HTTP/1.1: 1688 - If the client chooses to identify Job objects with just the Job 1689 URI, this "job-uri" attribute is not supplied in the body of the 1690 operation as other operation attributes are. It is supplied in 1691 the "request-URI" field in the HTTP header. - If the client 1692 chooses to identify Job objects with both a Printer URI and a 1693 local Job ID, the "printer-uri" attribute is not supplied in the 1694 body of the operation, but it is supplied in the "request-URI" 1695 field in the HTTP header. The "job-id" attribute is included as 1696 an operation attribute. 1698 Since the Get-Attributes operation can be both a Printer operation and 1699 a Job operation, if a Printer object receives a Get-Attributes 1700 request, the Printer object must check for the existence of the "job- 1701 id" operation attribute. If present, the operation is intended to be 1702 a Job operation on the corresponding Job object. If absent, the 1703 operation is intended to be a Printer operation. 1705 Expires April 14, 1998 1706 3.3.1 Send-Document Operation 1708 A client uses a Create-Job operation to create a multi-document Job 1709 object that is initially "empty" (contains no documents). In the 1710 Create-Job response, the Printer object returns the Job object's URI 1711 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 1712 "job-id" attribute). For each new document that the client desires to 1713 add, the client uses a Send-Document operation. Each Send-Document 1714 Request contains the entire stream of document data for one document. 1716 Since the Create-Job and the Send-Documents that follow can occur over 1717 arbitrarily long periods of time, each Printer object must decide how 1718 long to "wait" for the next Send-Document operation. The Printer 1719 object OPTIONALLY supports the "multiple-operation-timeout" attribute. 1720 This attribute indicates the maximum number of seconds the Printer 1721 object will wait for the next Send-Document operation. If the Printer 1722 object times-out waiting for the next Send-Document operation, the 1723 Printer object MAY decide on any of the following semantic actions: 1725 1. Assume that the Job is an invalid job, start the process of 1726 changing the job state to 'aborted', and clean up all resources 1727 associated with the Job. In this case, if another Send-Document 1728 operation is finally received, the Printer responds with an 1729 "client-error-not-possible" or "client-error-not-found" depending 1730 on whether or not the Job object is still around when it finally 1731 arrives. 1732 2. Assume that the last Send-Document received was in fact the last 1733 document (as if the "last-document" flag had been set to 'true'), 1734 close the Job, and proceed to process it (i.e., move the Job's 1735 state to 'pending'). 1736 3. Assume that the last Send-Document received was in fact the last 1737 document, close the Job, but move it to the 'pending-held' to 1738 allow an operator to determine whether or not to continue 1739 processing the Job by moving it back to the 'pending' state. 1741 Each implementation is free to decide the "best" action to take 1742 depending on local policy, the value of "ipp-attribute-fidelity", 1743 and/or any other piece of information available to it. If the choice 1744 is to abort the Job, it is possible that the Job may already have been 1745 processed to the point that some pages have been printed. 1747 3.3.1.1 Send-Document Request 1749 The following attribute sets are part of the Send-Document Request: 1751 Group 1: Operation Attributes 1753 Expires April 14, 1998 1754 Target: 1755 Either the "printer-uri" plus "job-id" or "job-uri" target for 1756 this operation as described in section 3.1.2. 1758 Natural Language and Character Set: 1759 The "attributes-charset" and "attributes-natural-language" 1760 attributes as described in section 3.1.3.1. 1762 "document-name" (name): 1763 The client OPTIONALLY supplies this attribute, and it contains 1764 the client supplied document name. The document name MAY be 1765 different than the Job name. It might be helpful, but NEED NOT 1766 be unique across multiple documents in the same Job. Typically, 1767 the client software automatically supplies the document name on 1768 behalf of the end user by using a file name or an application 1769 generated name. See the description of the "document-name" 1770 operation attribute in the Print-Job Request (section 3.2.1.1) 1771 for more information about this attribute. 1773 "last-document" (boolean): 1774 The client MUST supply this attribute. It is a boolean flag that 1775 is set to 'true' if this is the last document for the Job, 1776 'false' otherwise. 1778 "document-charset" (charSet): 1779 This attribute is OPTIONALLY supplied by the client. A Printer 1780 object SHALL support this attribute if it supports a document- 1781 format that requires a character set to be identified in order to 1782 unambiguously interpret the document, such as 'text/plain'. 1783 There are no particular values required for the Printer object to 1784 support. This attribute specifies the charset of the document 1785 for those document-formats that require a specification of the 1786 charset in order to image the document unambiguously. If the 1787 value of the "document-format" attribute contains a charset 1788 parameter (see 'mimeType' attribute syntax in Section 4.1.9), the 1789 client SHALL also supply the "document-charset" attribute and its 1790 value SHALL be the same. 1792 "document-natural-language" (naturalLanguage): 1793 This attribute is OPTIONALLY supplied by the client. There are 1794 no particular values required for the Printer object to support. 1795 This attribute specifies the natural language of the document for 1796 those document-formats that require a specification of the 1797 natural language in order to image the document unambiguously, 1798 such as proper glyph selection.. 1800 Group 2: Document Content 1802 Expires April 14, 1998 1803 The client MUST supply the document data if the "last-document" 1804 flag is set to 'false'. However, since a client might not know 1805 that the previous document sent with a Send-Document operation 1806 was the last document (i.e., the "last-document" attribute was 1807 set to 'false'), it is legal to send a Send-Document request with 1808 no document data where the "last-document" flag is set to 'true'. 1810 3.3.1.2 Send-Document Response 1812 The following sets of attributes are part of the Send-Document 1813 Response: 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 Group 2: Job Object Attributes 1828 This is the same set of attributes as described in the Print-Job 1829 response (see section 3.2.1.2). 1831 3.3.2 Send-URI Operation 1833 This operation is identical to the Send-Document operation (see 1834 section 3.3.1) except that a client supplies a URI reference 1835 ("document-uri" operation attribute) rather than the document data 1836 itself. If a Printer object supports this operation, clients can use 1837 both Send-URI or Send-Document operations to add new documents to an 1838 existing multi-document Job object. 1840 The Printer object MUST validate the syntax of the supplied URI before 1841 returning a response. If the Printer object supports this operation, 1842 it MUST support the URI types defined under the Print-URI operation 1843 (see section 3.2.2) 1845 3.3.3 Cancel Job Operation 1847 This operation allows a client to cancel a Print Job any time after a 1848 create job operation.. Since a Job might already be printing by the 1850 Expires April 14, 1998 1851 time a Cancel-Job is received, some pages may be printed before the 1852 job is actually terminated. 1854 3.3.3.1 Cancel-Job Request 1856 The following groups of attributes are part of the Cancel-Job Request: 1858 Group 1: Operation Attributes 1860 Target: 1861 Either the "printer-uri" plus "job-id" or "job-uri" target for 1862 this operation as described in section 3.1.2. 1864 Natural Language and Character Set: 1865 The "attributes-charset" and "attributes-natural-language" 1866 attributes as described in section 3.1.3.1. 1868 "message" (text): 1869 OPTIONAL message to the operator. This is not the same as the 1870 "job-message-from-operator" attribute. This attribute is used to 1871 send a message along with the operation request. It is an 1872 implementation decision of how or where to display this message 1873 (if at all). 1875 3.3.3.2 Cancel-Job Response 1877 The following sets of attributes are part of the Cancel-Job Response: 1879 Group 1: Operation Attributes 1881 Status Code and Message: 1882 The response includes the MANDATORY status code and an OPTIONAL 1883 "status-message" (text) operation attribute as described in 1884 section 3.1.4. 1886 Natural Language and Character Set: 1887 The "attributes-charset" and "attributes-natural-language" 1888 attributes as described in section 3.1.3.2. 1890 Once a successful response has been sent, the implementation 1891 guarantees that the Job will eventually end up in the 'cancelled' 1892 state. If the implementation is forced to leave the job in the some 1893 other state, the "job-state-reasons" SHOULD contain the ' processing- 1894 to-stop-point ' value which indicates to later queries that although 1895 the Job may still be 'processing', it will eventually end up in the 1896 'cancelled' state, not the 'completed' state. 1898 Expires April 14, 1998 1899 3.3.4 Get-Attributes Operation 1901 The Job Get-Attributes operation allows a client to obtain information 1902 from a Job object and it is almost identical to the Get-Attributes 1903 operation for a Printer object (see section 3.2.5). The only 1904 differences are that the operation is directed at a Job rather than a 1905 Printer and there is no "document-format" operation attribute used 1906 when querying a Job object. 1908 For Jobs, the attribute groups include: 1910 - 'job-template': all of the Job Template attributes that apply to 1911 a Job object (the first column of the table in Section 4.2). 1912 - 'job-description': the attributes specified in Section 4.3. 1914 There is also the special group 'all' that includes all supported 1915 attributes. If for some reason, the client includes an attribute two 1916 or more times in the request (e.g., the client supplies values of 1917 'all', 'job-template', and 'sides' in the "requested-attributes" 1918 attribute), the Printer SHALL only return one occurrence of the 1919 attribute in the response. 1921 3.3.4.1 Get-Attributes Request 1923 The following groups of attributes are part of the Get-Attributes 1924 Request when the request is directed at a Job object: 1926 Group 1: Operation Attributes 1928 Target: 1929 Either the "printer-uri" plus "job-id" or "job-uri" target for 1930 this operation as described in section 3.1.2. 1932 Natural Language and Character Set: 1933 The "attributes-charset" and "attributes-natural-language" 1934 attributes as described in section 3.1.3.1. 1936 "requested-attributes" (1setOf keyword) : 1937 An OPTIONAL set of attribute names and/or attribute group names 1938 in whose values the requester is interested. If the client omits 1939 this attribute, the Printer SHALL respond as if this attribute 1940 had been supplied with a value of 'all'. 1942 3.3.4.2 Get-Attributes Response 1944 The Printer object returns the following sets of attributes as part of 1945 the Get-Attributes Response: 1947 Expires April 14, 1998 1948 Group 1: Operation Attributes 1950 Status Code and Message: 1951 The response includes the MANDATORY status code and an OPTIONAL 1952 "status-message" (text) operation attribute as described in 1953 section 3.1.4. 1955 Natural Language and Character Set: 1956 The "attributes-charset" and "attributes-natural-language" 1957 attributes as described in section 3.1.3.2. 1959 Group 2: Requested Job Object Attributes 1961 This is the set of requested attributes and their current values. 1962 The Printer object ignores (does not respond with) any requested 1963 attribute which is not supported. 1965 4. Object Attributes 1967 This section describes the attributes with their corresponding 1968 syntaxes and values that are part of the IPP model. The sections below 1969 show the objects and their associated attributes which are included 1970 within the scope of this protocol. Many of these attributes are 1971 derived from other relevant specifications: 1973 - Document Printing Application (DPA) [ISODPA] 1974 - RFC 1759 Printer MIB [RFC1759] 1976 Each attribute is uniquely identified in this document using a 1977 "keyword" (see section 12.2.1). The keyword is included in the 1978 section header describing that attribute. All attributes are uniquely 1979 identified with a keyword as its name. In addition, some attributes 1980 are defined having a syntax that is a set of keywords. 1982 4.1 Attribute Syntaxes 1984 This section defines the basic attribute syntax types that a client 1985 and server SHALL be able to handle. Each attribute description in 1986 sections 3 and 4 includes the name of attribute syntax(es) in the 1987 heading (in parentheses). A conforming implementation of an attribute 1988 SHALL include the semantics of the attribute syntax(es) so identified. 1989 Section 6 describes how the protocol can be extended with new 1990 attribute syntaxes. 1992 Most attributes are defined to have a single attribute syntax. 1993 However, a few attributes (e.g., "job-sheet", "media", "job-hold- 1994 until") are defined to have several attribute syntaxes, depending on 1996 Expires April 14, 1998 1997 the value. Since each value SHALL be tagged as to its attribute 1998 syntax in the protocol, a single-valued attribute instance may have 1999 any one of its attribute syntaxes and a multi-valued attribute 2000 instance may have a mixture of its defined attribute syntaxes. 2002 The attribute syntaxes are specified in the following sub-sections, 2003 where the sub-section heading is the name of the attribute syntax 2004 inside the single quotes: 2006 4.1.1 'text' 2008 The 'text' attribute syntax is a sequence of one or more characters 2009 with a limit of 1 to 4095 octets. The Printer object SHALL support 2010 UTF-8 [RFC2044] and MAY support additional charsets provided that they 2011 are registered with IANA [IANA-CS]. See Section 4.1.7 for the 2012 specification of the 'charSet' attribute syntax, including restricted 2013 semantics and examples of charsets. 2015 If the client needs to pass or the Printer object needs to return a 2016 'text' attribute in a different natural language than the rest of the 2017 'text' attributes in the request or response as indicated by the 2018 "attributes-natural-language" operation attribute (see Section 3.1.3), 2019 the client or Printer object SHALL immediately precede that attribute 2020 value with a 'naturalLanguage' attribute value that indicates the 2021 differing natural language. Thus the attribute becomes multi-valued 2022 with two values. This additional values is called an "exception" 2023 natural language value. In a create operation, the Printer object 2024 SHOULD accept and store an exception natural language value. If the 2025 Printer object does not store an exception natural language value, the 2026 Printer SHALL ignore it and SHALL store the immediately following 2027 'text' value only. The Printer SHALL not reject the request no matter 2028 what value the client supplies as an exception natural language. 2030 If the attribute is multi-valued (1setOf text), then the exception 2031 natural language value applies only to the next 'text' value. 2032 Subsequent values in a multi-valued 'text' attribute in a request or a 2033 response revert to the natural language of the operation attribute or 2034 the "job-natural-language" job attribute, if present, in the case of a 2035 Get-Jobs response. 2037 Example: If the client supplies the "attributes-natural-language" 2038 operation attribute with the value: 'en' indicating English, but the 2039 values of the "job-name" attribute is in French, the values of the 2040 normally single-valued "job-name" attribute supplied by the client in 2041 any request or returned by the Printer object in any response would be 2042 the following two values, each tagged with the appropriate attribute 2043 syntax ('naturalLanguage' and 'text') in the protocol: 2045 Expires April 14, 1998 2046 'fr': exception natural language indicating French with attribute 2047 syntax 'naturalLanguage' 2048 'Rapport Mensuel': the job name in French with attribute syntax 2049 'name'. 2051 4.1.2 'name' 2053 The 'name' attribute syntax is the same as 'text', including the 2054 MANDATORY support of UTF-8 and the exception natural language 2055 mechanism, except that the sequence of characters is limited so that 2056 its encoded form is of length 1 to 255 octets. This syntax type is 2057 used for user-friendly strings, such as a Printer name, that, for 2058 humans, are more meaningful than identifiers. 2060 Note: Only the 'text' and 'name attribute syntaxes permit the 2061 exception natural language mechanism. 2063 Example: If the client supplies the "attributes-natural-language" 2064 operation attribute with the value: 'en' indicating English, but the 2065 "printer-name" attribute is in German, the values of the normally 2066 single-valued "printer-name" attribute returned by the Printer in any 2067 operation response would be the following two values, each tagged with 2068 the appropriate attribute syntax ('naturalLanguage' and 'name') in the 2069 protocol: 2071 'de': exception natural language indicating German with the 2072 attribute syntax 'naturalLanguage' 2073 'Farbdrucker': the Printer name in German with attribute syntax 2074 'name' 2076 4.1.3 'keyword' 2078 The 'keyword' attribute syntax is a sequence of characters, length: 1 2079 to 255, containing only the US-ASCII [ASCII] encoded values for 2080 lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot 2081 ("."), and underscore ("_"). The first character MUST be a lowercase 2082 letter. Furthermore, keywords SHALL be in U.S. English. 2084 This syntax type is used for enumerating semantic identifiers of 2085 entities in the abstract protocol, i.e., entities identified in this 2086 document. Keywords are used as attribute names or values of 2087 attributes. Unlike 'text' and 'name' attribute values, 'keyword' 2088 values SHALL NOT use the exception natural language mechanism, since 2089 they SHALL always be US-ASCII and U.S. English. When accepting 2090 keywords from users and displaying keywords to users, clients SHOULD 2091 localize the keywords to the charset and natural language of the user. 2093 Expires April 14, 1998 2094 In the definition for each attribute of this syntax type, the full set 2095 of defined keyword values for that attribute are listed. 2097 When a keyword is used to represent an attribute (its name), it MUST 2098 be unique within the full scope of all IPP objects and attributes. 2099 When a keyword is used to represent a value of an attribute, it MUST 2100 be unique just within the scope of that attribute. That is, the same 2101 keyword SHALL not be used for two different values within the same 2102 attribute to mean two different semantic ideas. However, the same 2103 keyword MAY be used across two or more attributes, representing 2104 different semantic ideas for each attribute. Section 6 describes how 2105 the protocol can be extended with new keyword values. Examples of 2106 attribute name keywords: 2108 "job-name" 2109 "attributes-charset " 2111 4.1.4 'enum' 2113 The 'enum' attribute syntax is an enumerated integer value that is in 2114 the range from -2**31 to 2**31 - 1. Each value has an associated 2115 'keyword' name. In the definition for each attribute of this syntax 2116 type, the full set of possible values for that attribute are listed.. 2117 This syntax type is used for attributes for which there are enum 2118 values assigned by other standards, such as SNMP MIBs. A number of 2119 attribute enum values in this specification are also used for 2120 corresponding attributes in other standards [RFC1759].. This syntax 2121 type is not used for attributes to which the system administrator may 2122 assign values. Section 6 describes how the protocol can be extended 2123 with new enum values. Though this document includes a symbolic name 2124 for each enum value (in U.S. English), when accepting enum names from 2125 users and displaying enum names to users, clients SHOULD localize the 2126 names to the charset and natural language of the user. 2128 4.1.5 'uri' 2130 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 2131 URI [RFC1630]. Most often, URIs are simply Uniform Resource Locators 2132 or URLs [RFC1738] [RFC1808]. 2134 4.1.6 'uriScheme' 2136 The 'uriScheme' attribute syntax is a sequence of characters 2137 representing a URI scheme according to RFC 1738 [RFC1738]. Standard 2138 values for this syntax type are the following keywords: 2140 'http': for HTTP schemed URIs (e.g., "http://...") 2141 'ftp': for FTP schemed URIs (e.g., "ftp://...") 2143 Expires April 14, 1998 2144 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 2145 'file': for file schemed URIs (e.g., "file:...") 2147 4.1.7 'charSet' 2149 The 'charSet' attribute syntax is a standard identifier of a coded 2150 character set and encoding scheme for labeling certain document 2151 contents and 'text' and 'name' attribute values. The syntax and 2152 semantics of this attribute syntax are specified in RFC 2046 [RFC2046] 2153 and contained in the IANA character-set Registry [IANA-CS] according 2154 to the IANA procedures [IANA-CSa]. As specified in RFC 2046, the 2155 values SHALL be case-insensitive and SHALL be in US-ASCII. When a 2156 character-set in the IANA registry has more than one name (alias), the 2157 name labeled as "(preferred MIME name)" SHALL be used. 2159 Some examples are: 2161 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 2162 (UCS) represented as the UTF-8 [RFC2044] transfer encoding scheme 2163 in which US-ASCII is a subset charset. The 'utf-8' charset value 2164 supplied in the "attributes-charset" operation attribute (see 2165 Section 3.1.3), which is used to identify the charset of 'text' 2166 and 'name' attributes, SHALL be restricted to conformance level 2 2167 of ISO 10646 [ISO10646-1], so that accented letters SHALL NOT be 2168 represented with non-spacing accents. This same 'utf-8' value 2169 supplied in the "document-format" operation attribute (see 2170 Sections 3.2.1.1 and 3.3.1.1), MAY include level 3 of ISO 10646. 2171 'US-ASCII': 7-bit American Standard Code for Information 2172 Interchange (ASCII), ANSI X3.4-1986 [ASCII]. This standard 2173 defines US-ASCII, but RFC 2045 [46] eliminates most of the 2174 control characters from conformant usage in MIME and IPP. 2175 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet 2176 Nr 1 [ISO8859-1]. This defines a coded character set that is 2177 used by Latin languages in the Western Hemisphere and Western 2178 Europe. US-ASCII is a subset charset. 2180 Some attribute descriptions MAY place additional requirements on 2181 charset values that may be used, such as MANDATORY values the MUST be 2182 supported or additional restrictions, such as requiring that the 2183 charset have US-ASCII as a subset charset. 2185 4.1.8 'naturalLanguage' 2187 The 'naturalLanguage' attribute syntax is a standard identifier for a 2188 natural language and optionally a country. The values for this syntax 2189 type are taken from RFC 1766 [RFC1766]. As specified in RFC 1766, the 2190 values SHALL be case-insensitive and SHALL be in US-ASCII. Examples 2191 include: 2193 Expires April 14, 1998 2194 'en': for English 2195 'en-us': for US English 2196 'FR': for French 2197 'de': for German 2199 4.1.9 'mimeType' 2201 The 'mimeType' attribute syntax is the standard defined Internet Media 2202 Type (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 2203 registered according to the procedures of RFC 2048 [RFC2048] for 2204 identifying a document format. The value MAY include a charset 2205 parameter, depending on the specification of the Media Type in the 2206 IANA Registry [IANA-MT]. Examples: 2208 'text/html': An HTML document 2209 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 2210 that in the absence of the charset parameter SHALL mean US-ASCII 2211 rather than simply unspecified) [RFC2046]. 2212 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 2213 [52, 56]. 2214 'text/plain; charset=ISO-8859-1': A plain text document in ISO 2215 8859-1 (Latin 1) [ISO8859-1]. 2216 'text/plain; charset=utf-8': A plain text document in ISO 10646 2217 represented as UTF-8 [RFC2044] 2218 'text/plain, charset=iso-10646-ucs-2': A plain text document in 2219 ISO 10646 represented in two octets (UCS-2) [ISO10646-1] 2220 'application/postscript': A PostScript document [RFC2046] 2221 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 2222 sequence embedded in the document data) 2223 'application/octet-stream': Auto-sense - see below 2225 One special type is 'application/octet-stream'. If the Printer 2226 object supports this value, the Printer object or the device SHALL be 2227 capable of auto-sensing the format of the document data. If the 2228 Printer object's default value attribute is set to 'application/octet- 2229 stream' the Printer object not only supports auto-sensing of the 2230 document format, but will depend on the result of applying its auto- 2231 sensing algorithm in the case of missing information not supplied by 2232 the client. If the client supplies a document format value, the 2233 Printer SHOULD rely on the supplied attribute, rather than trust its 2234 auto-sensing algorithm. To summarize: 2236 1. If the client does not supply a document format value, the 2237 Printer MUST rely on its default value setting (which may be 2238 'application/octet-stream' indicating an auto-sensing mechanism). 2239 2. If the client supplies a value other than 'application/octet- 2240 stream', the client is supplying valid information about the 2241 format of the document data and the Printer object SHOULD trust 2243 Expires April 14, 1998 2244 the client supplied value more than the outcome of applying an 2245 automatic format detection mechanism. For example, the client 2246 may be requesting the printing of a PostScript file as a 2247 'text/plain' document. The Printer object SHOULD print a text 2248 representation of the PostScript commands rather than interpret 2249 the stream of PostScript commands and print the result. 2250 3. If the client supplies a value of 'application/octet-stream', 2251 the client is indicating that the Printer object SHOULD use its 2252 auto-sensing mechanism whether auto-sensing is the Printer 2253 object's default or not. 2255 4.1.10 'octetString' 2257 The 'octetString' attribute syntax is a sequence of octets. This 2258 syntax type is used for opaque data 2260 4.1.11 'boolean' 2262 The 'boolean' attribute syntax is like a keyword with only two values 2263 'true' and 'false'. 2265 4.1.12 'integer' 2267 The 'integer' attribute syntax is an integer value that is in the 2268 range from -2**31 to 2**31 - 1. Each individual attribute may specify 2269 the range constraint explicitly if the range is different from the 2270 full range of possible integer values (e.g., 0 - 100 for the "job- 2271 priority" attribute), however, the enforcement of that additional 2272 constraint is up to the IPP objects, not the protocol. 2274 4.1.13 'rangeOfInteger' 2276 The 'rangeOfInteger' attribute syntax is an ordered set of two 2277 integers, the smallest first, followed by the largest. The pair of 2278 integers identifies an inclusive range of integer values. 2280 4.1.14 'dateTime' 2282 The 'dateTime' attribute syntax is a standard, fixed length 2283 representation of the "DateAndTime" syntax as defined in RFC 1514 2284 [RFC1514] and RFC 1903 [RFC1903]. When accepting 'dateTime' values 2285 from users and displaying 'dateTime' values to users, clients SHOULD 2286 localize the values to the charset and natural language of the user. 2288 4.1.15 'resolution' 2290 The 'resolution' attribute syntax specifies a two-dimensional 2291 resolution in the indicated units. It consists of 3 integers: a cross 2293 Expires April 14, 1998 2294 feed direction resolution (positive integer value), a feed direction 2295 resolution (positive integer value), and a units value. The semantics 2296 of these three components are taken from the Printer MIB [RFC1759] 2297 suggested values. That is, the cross feed direction component 2298 resolution component is the same as the 2299 prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed 2300 direction component resolution component is the same as the 2301 prtMarkerAddressabilityFeedDir in the Printer MIB, and the units 2302 component is the same as the prtMarkerAddressabilityUnit object in the 2303 Printer MIB (namely dots per inch and dots per centimeter). All three 2304 values MUST be present even if the first two values are the same. 2305 Example: '300', '600', '3' indicates a 300 dpi cross-feed direction 2306 resolution, a 600 dpi feed direction resolution, since a '3' indicates 2307 dots per inch. 2309 4.1.16 '1setOf X' 2311 The '1setOf X' attribute syntax is 1 or more values of attribute 2312 syntax type X. This syntax type is used for multi-valued attributes. 2313 The syntax type is called '1setOf' rather than just 'setOf' as a 2314 reminder that the set of values SHALL NOT be empty (i.e., a set of 2315 size 0). Sets are normally unordered, however each attribute 2316 description of this type may specify that the values MUST be in a 2317 certain order for that attribute. 2319 4.2 Job Template Attributes 2321 Job Template attributes describe job processing behavior. Support for 2322 Job Template attributes by a Printer object is OPTIONAL (see section 2323 12.2.3 for a description of support for OPTIONAL attributes). Also, 2324 clients OPTIONALLY supply Job Template attributes in create requests. 2326 Job Template attributes conform to the following rules. For each Job 2327 Template attribute called "foo": 2329 1. The Printer object OPTIOINALLY supports a "foo-supported" 2330 attribute that describes which job processing behaviors are 2331 supported by that Printer object. A client can query the Printer 2332 object to find out what foo-related behaviors are supported by 2333 inspecting the returned values of the "foo-supported" attribute. 2335 2. The Printer also OPTIONALLY supports a default value attribute 2336 named "foo-default". This default value attribute describes what 2337 will be done when no other job processing information is supplied 2338 by the client (either explicitly as an IPP attribute in the 2339 create request or implicitly as an embedded instruction within 2340 the document data). If the Printer supports either the "foo- 2342 Expires April 14, 1998 2343 default" default value attribute or the "foo-supported" 2344 attribute, the Printer MUST support both. 2346 3. "foo" is OPTIOINALLY supplied by the client in a create request. 2347 If "foo" is supplied, the client is specifying that the Printer 2348 SHALL apply the corresponding job processing behavior to this Job 2349 while processing the Job. When "foo" is not supplied, the client 2350 is specifying that the Printer apply the default job processing 2351 behavior. 2353 NOTE: Since an administrator MAY change the default value 2354 attribute after a Job has been submitted but before it has been 2355 processed, the default value used by the Printer object at job 2356 processing time may be different that the default value in effect 2357 at job submission time. 2359 If an application wishes to present an end user with a list of 2360 supported values from which to choose, the application SHOULD query 2361 the Printer for the supported values. The application SHOULD also 2362 query the default value attributes. If the application then limits 2363 selectable values to only those value that are supported, the 2364 application can guarantee that the values supplied by the client in 2365 the create request all fall within the set of supported values at the 2366 Printer. When querying the Printer, the client MAY enumerate each 2367 attribute by name in the Get-Attributes Request, or the client MAY 2368 just name the "job-template" group in order to get the complete set of 2369 supported attributes (both supported and default attributes). 2371 The "finishings" attribute is an example of a Job Template attribute. 2372 It can take on a set of values such as 'staple', 'punch', and/or 2373 'cover'. A client can query the Printer object for the "finishings- 2374 supported" attribute and the "finishings-default" attribute. The 2375 supported attribute contains a set of supported values. The default 2376 value attribute contains the finishing value(s) that will be used for 2377 a new Job if the client does not supply a "finishings" attribute in 2378 the create request. If the client does supply the "finishings" 2379 attribute in the create request, the Printer validates the value or 2380 values to make sure that they are a subset of the supported values. 2381 If the client-supplied values are all supported, the Job object is 2382 created with a "finishings" attribute that is populated with the 2383 values supplied by the client. Subsequently, when the Job object is 2384 queried, it returns the values supplied by the client. If the client 2385 does not supply a "finishings" attribute in the create request, the 2386 Job object is created, but no "finishings" attribute is associated 2387 with the new Job object. A subsequent query of the Job object will 2388 return no "finishings" attribute. In this case, the querying client 2389 knows that there were was no client supplied "finishings" attribute. 2390 If the client is interested to know what the default value is that the 2392 Expires April 14, 1998 2393 Printer will use for the missing attribute, the client can query the 2394 Printer object's default value "finishings-default" attribute to find 2395 out how the Job will be finished. 2397 The table below summarizes the names and relationships for all Job 2398 Template attributes. The first column of the table (labeled "Job") 2399 shows the name and syntax for each Job Template attribute in the Job 2400 object. These are the attributes that can optionally be supplied by 2401 the client in a create request. The last two columns (labeled 2402 "Printer: Default Value" and "Printer: Supported Values") shows the 2403 name and syntax for each Job Template attribute in the Printer object 2404 (the default value attribute and the supported values attribute). A 2405 "No" in the table means the Printer SHALL NOT support the attribute 2406 (that is the attribute is simply not applicable). 2408 Expires April 14, 1998 2409 +===================+======================+======================+ 2410 | Job Attribute |Printer: Default Value| Printer: Supported | 2411 | | Attribute | Values Attribute | 2412 +===================+======================+======================+ 2413 | job-sheets | job-sheets-default |job-sheets-supported | 2414 | (type4 keyword, | (type4 keyword, |(1setOf type4 keyword,| 2415 | name) | name) | name) | 2416 | | | | 2417 +-------------------+----------------------+----------------------+ 2418 | job-priority | job-priority-default |job-priority-supported| 2419 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 2420 | | | | 2421 +-------------------+----------------------+----------------------+ 2422 | job-hold-until | job-hold-until- |job-hold-until- | 2423 | (type4 keyword, | default | supported | 2424 | name) | (type4 keyword, |(1setOf type4 keyword,| 2425 | name) | name) | name) | 2426 +-------------------+----------------------+----------------------+ 2427 |multiple-document- |multiple-document- |multiple-document- | 2428 | handling | handling-default |handling-supported | 2429 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 2430 +-------------------+----------------------+----------------------+ 2431 | media | media-default | media-supported | 2432 | (type4 keyword, | (type4 keyword, |(1setOf type4 keyword,| 2433 | name) | name) | name) | 2434 | | | | 2435 | | | media-ready | 2436 | | |(1setOf type4 keyword,| 2437 | | | name) | 2438 | | | | 2439 +-------------------+----------------------+----------------------+ 2440 | number-up | number-up-default | number-up-supported | 2441 | (integer) | (integer) |(1setOf integer) | 2442 | | | | 2443 +-------------------+----------------------+----------------------+ 2444 | sides | sides-default | sides-supported | 2445 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 2446 | | | | 2447 +-------------------+----------------------+----------------------+ 2448 | printer-resolution| printer-resolution- | printer-resolution- | 2449 | (resolution) | default | supported | 2450 | | (resolution) |(1setOf resolution) | 2451 +-------------------+----------------------+----------------------+ 2452 | print-quality | print-quality-default| print-quality- | 2453 | (type2 enum) | (type2 enum) | supported | 2454 | | |(1setOf type2 enum) | 2455 +-------------------+----------------------+----------------------+ 2456 | finishings | finishings-default | finishings-supported | 2458 Expires April 14, 1998 2459 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 2460 | | | | 2461 +-------------------+----------------------+----------------------+ 2462 | copies | copies-default | copies-supported | 2463 | (integer: 1:MAX) | (integer: 1:MAX) | (integer: 1:MAX) | 2464 | | | | 2465 | | | collated-copies- | 2466 | | | supported | 2467 | | | (integer: 1:MAX) | 2468 | | | | 2469 +-------------------+----------------------+----------------------+ 2470 | page-ranges | No | page-ranges- | 2471 | (1setOf | | supported (boolean) | 2472 | rangeOfInteger) | | | 2473 +-------------------+----------------------+----------------------+ 2474 | orientation | orientation-default | orientation- | 2475 | (type2 enum) | (type2 enum) | supported | 2476 | | | (1setOf type2 enum) | 2477 +-------------------+----------------------+----------------------+ 2478 | document-format | document-format- | document-format- | 2479 | (mimeType) | default | supported | 2480 | | (mimeType) |(1setOf mimeType) | 2481 +-------------------+----------------------+----------------------+ 2482 | compression | No | compression-supported| 2483 | (type3 keyword) | |(1setOf type3 keyword)| 2484 | | | | 2485 +-------------------+----------------------+----------------------+ 2486 | job-k-octets | No |job-k-octets-supported| 2487 | (integer) | | (rangeOf integer) | 2488 | | | | 2489 +-------------------+----------------------+----------------------+ 2490 | job- | No | job-impressions- | 2491 | impressions | | supported | 2492 | (integer) | | (rangeOf integer) | 2493 +-------------------+----------------------+----------------------+ 2494 | job-media- | No | job-media-sheets- | 2495 | sheets | | supported | 2496 | (integer) | | (rangeOf integer) | 2497 +-------------------+----------------------+----------------------+ 2499 4.2.1 job-sheets (type4 keyword, name) 2501 This attribute determines which if any banner page(s) SHALL be printed 2502 with a job. 2504 Standard values are: 2506 Expires April 14, 1998 2507 'none': no job sheet is printed 2508 'standard': one or more site specific standard job sheets are 2509 printed, e.g. a single start sheet or both start and end sheet is 2510 printed 2512 An administrator MAY define additional values using the 'name' or 2513 'keyword' attribute syntax, depending on implementation. 2515 Note: The effect of this attribute on jobs with multiple documents is 2516 controlled by the "multiple-document-handling" job attribute (section 2517 4.2.4). 2519 4.2.2 job-priority (integer(1:100)) 2521 This attribute specifies a priority for scheduling the Job. A higher 2522 value specifies a higher priority. The value 1 indicates the lowest 2523 possible priority. The value 100 indicates the highest possible 2524 priority. Among those jobs that are ready to print, a Printer SHALL 2525 print all jobs with a priority value of n before printing those with a 2526 priority value of n-1 for all n. 2528 The syntax for the "job-priority-supported" is an integer(1:100). 2529 This single integer value indicates the number of priority levels 2530 supported. For example, if the value of "job-priority-supported" is 2531 '3', then the Printer object supports 3 levels of job priorities 2532 (let's call them 'high', 'medium', and 'low'). In this case, a client 2533 MUST assume the following: 2535 A client supplied value in the range 1-33 is the same as any other 2536 value in the range 1-33 and any one of those values corresponds 2537 to the 'low' priority. 2538 A client supplied value in the range 34-66 is the same as any other 2539 value in the range 34-66 and any one of those values corresponds 2540 to the 'medium' priority. 2541 A client supplied value in the range 67-100 is the same as any 2542 other value in the range 67-100 and any one of those values 2543 corresponds to the 'high' priority. 2545 For another example, if the value of "job-priority-supported" is '10', 2546 then the Printer object supports 3 levels of job priorities, (let's 2547 call them 'one', 'two', ..., and 'ten' with 'one' being the lowest 2548 priority and 'ten' being the highest). In this case, a client MUST 2549 assume the following: 2551 A client supplied value in the range 1-10 is the same as any other 2552 value in the range 1-10 and any one of those values corresponds 2553 to the 'one' priority. 2555 Expires April 14, 1998 2557 A client supplied value in the range 11-20 is the same as any other 2558 value in the range 11-20 and any one of those values corresponds 2559 to the 'two' priority. 2560 ... 2561 A client supplied value in the range 91-100 is the same as any 2562 other value in the range 91-100 and any one of those values 2563 corresponds to the 'ten' priority. 2565 4.2.3 job-hold-until (type4 keyword, name) 2567 This job attribute specifies the named time period during which the 2568 Job SHALL become a candidate for printing. 2570 Standard values for named time periods are: 2572 'no-hold': immediately, if there are not other reasons to hold the 2573 job. 2574 'day-time': during the day. 2575 'evening': evening 2576 'night': night 2577 'weekend': weekend 2578 'second-shift': second-shift 2579 'third-shift': third-shift (after midnight) 2581 An administrator SHALL associate allowable print times with a named 2582 time period (by means outside IPP 1.0). An administrator is 2583 encouraged to pick names that suggest the type of time period. An 2584 administrator MAY define additional values using the 'name' or 2585 'keyword' attribute syntax, depending on implementation. 2587 If the value of this attribute specifies a time period that is in the 2588 future, the Printer SHALL add the 'job-hold-until-specified' value to 2589 the job's "job-state-reasons" attribute, move the job to the 'pending- 2590 held' state, and SHALL NOT schedule the job for printing until the 2591 specified time-period arrives. When the specified time period 2592 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 2593 from the job's "job-state-reason" attribute and, if no other job 2594 reasons that keep it in the 'pending-held' state remain, the Printer 2595 SHALL consider the job as a candidate for processing by moving the job 2596 to the 'pending' state. 2598 If this job attribute value is the named value 'no-hold', or specified 2599 time period is in effect has already started, the job SHALL be a 2600 candidate for processing immediately. 2602 Expires April 14, 1998 2603 4.2.4 multiple-document-handling (type2 keyword) 2605 This job attribute is relevant only if a job consists of two or more 2606 documents. The attribute controls finishing operations and the 2607 placement of print-stream pages into imposed pages and onto media 2608 sheets. When the value of the "copies" attribute exceeds 1, it also 2609 controls the order in which the copies that result from processing the 2610 documents are produced. For the purposes of this explanations, if "a" 2611 represents an instance of document data, then the result of processing 2612 the data in document "a" is a sequence of media sheets represented by 2613 "a(*)". 2615 Standard values are: 2617 'single-document': If a Job object has multiple documents, say the 2618 document data is called a and b, then the result of processing 2619 all the document data (a and then b) SHALL be treated as a single 2620 sequence of media sheets for finishing operations; that is, 2621 finishing would be performed on the concatenation of the 2622 seqeunces a(*),b(*). The Printer SHALL NOT force the data in 2623 each document instance to be formatted onto a new print-stream 2624 page, nor to start a new imposed page or a new media sheet. If 2625 more than one copy is made, the ordering of the sets of media 2626 sheets resulting from processing the document data SHALL be a(*), 2627 b(*), a(*), b(*),...., and the Printer SHALL force each copy to 2628 start on a new media sheet. 2629 'separate-documents-uncollated-copies': If a Job object has 2630 multiple documents, say the document data is called a and b, then 2631 the result of processing the data in each document instance SHALL 2632 be treated as a single sequence of media sheets for finishing 2633 operations; that is, the sets a(*) and b(*) would each be 2634 finished separately. The Printer SHALL force each copy of the 2635 result of process the data in a single document to start on a new 2636 media sheet. If more than one copy is made, the ordering of the 2637 sets of media sheets resulting from processing the document data 2638 SHALL be a(*), a(*), b(*), b(*) .... 2639 'separate-documents-collated-copies': If a Job object has multiple 2640 documents, say the document data is called a and b, then the 2641 result of processing the data in each document instance SHALL be 2642 treated as a single sequence of media sheets for finishing 2643 operations; that is, the sets a(*) and b(*) would each be 2644 finished separately. If more than one copy is made, the ordering 2645 of the sets of media sheets resulting from processing the 2646 document data SHALL be a(*), b(*), a(*), b(*), ...., and the 2647 Printer SHALL force each document copy to start on a new sheet . 2649 'separate-documents-collated-copies' is the same as 'single-document' 2650 with respect to ordering of pages, but not media sheet generation, 2652 Expires April 14, 1998 2653 since the latter will put the first page of the next document on the 2654 back side of a sheet if an odd number of pages have been produced so 2655 far for the job, while the former case always force the next document 2656 or document copy on to a new sheet. 2658 4.2.5 media (type4 keyword, name) 2660 This job attribute identifies the medium that the Printer uses for all 2661 pages of the Job. 2663 The values for "media" include medium-names, medium-sizes, input-trays 2664 and electronic forms so that one attribute specifies the media. If a 2665 printer allows a client to specify a medium name as the value of this 2666 attribute, such a medium name implicitly selects an input-tray that 2667 contains the specified medium. If a printer allows a client to 2668 specify a medium size as the value of this attribute, such a medium 2669 size implicitly selects a medium name that in turn implicitly selects 2670 an input-tray that contains the medium with the specified size. If a 2671 printer allows a client to specify an input-tray as the value of this 2672 attribute, such an input-tray implicitly selects the medium that is in 2673 that input-tray at the time the job prints. This case includes manual- 2674 feed input-trays. If a printer allows a client to specify an 2675 electronic form as the value of this attribute, such an electronic 2676 form implicitly selects a medium-name that in turn implicitly selects 2677 an input-tray that contains the medium specified by the electronic 2678 form. The electronic form also implicitly selects an image that the 2679 Printer SHALL merge with the document data as its prints each page. 2681 Standard values are (taken from ISO DPA and the Printer MIB) and are 2682 listed in section 14. An administrator MAY define additional values 2683 using the 'name' or 'keyword' attribute syntax, depending on 2684 implementation. 2686 There is also an additional attribute named "media-ready" which 2687 differs from "media-supported" in that legal values only include the 2688 subset of "media-supported" values that are physically loaded and 2689 ready for printing with no operator intervention required. 2691 The relationship of this attribute and the other attributes that 2692 control document processing is described in section 15.4. 2694 4.2.6 number-up (integer) 2696 This job attribute specifies the number of source page-images to 2697 impose upon a single side of an instance of a selected medium. For 2698 example, if the value is 2700 Expires April 14, 1998 2701 '1': The Printer SHALL place one logical page on a single side of 2702 an instance of the selected medium (MAY add some sort of 2703 translation, scaling, or rotation). 2704 '2': The Printer SHALL place two logical pages on a single side of 2705 an instance of the selected medium (MAY add some sort of 2706 translation, scaling, or rotation). 2707 '4': The Printer SHALL place four logical pages on a single side of 2708 an instance of the selected medium (MAY add some sort of 2709 translation, scaling, or rotation). 2711 This attribute primarily controls the translation, scaling and 2712 rotation of page images, but a site may choose to add embellishments, 2713 such as borders to each logical page. 2715 Note: The effect of this attribute on jobs with multiple documents is 2716 controlled by the "multiple-document-handling" job attribute (section 2717 4.2.4) and the relationship of this attribute and the other attributes 2718 that control document processing is described in section 15.4. 2720 ISSUE: Steve Z.: should this section be changed to include "print- 2721 stream page" and "layout page"?? rather than "source page" and 2722 "logical page"? 2724 4.2.7 sides (type2 keyword) 2726 This attribute specifies how source page-images are to be imposed upon 2727 the sides of an instance of a selected medium. 2729 The standard values are: 2731 'one-sided': imposes each consecutive source page-image upon the 2732 same side of consecutive media sheets. 2733 'two-sided-long-edge': imposes each consecutive pair of source 2734 page-image upon front and back sides of consecutive media sheets, 2735 such that the orientation of each pair of source-pages on the 2736 medium would be correct for the reader as if for binding on the 2737 long edge. This imposition is sometimes called 'duplex' or 2738 'head-to-head'. 2739 'two-sided-short-edge': imposes each consecutive pair of source 2740 page-image upon front and back sides of consecutive media sheets, 2741 such that the orientation of each pair of source-pages on the 2742 medium would be correct for the reader as if for binding on the 2743 short edge. This imposition is sometimes called 'tumble' or 2744 'head-to-toe'. 2746 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 2747 all work the same for portrait or landscape. However 'head-to-toe' is 2748 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 2750 Expires April 14, 1998 2751 switches between 'duplex' and 'tumble' when using portrait and 2752 landscape modes. 2754 Note: The effect of this attribute on jobs with multiple documents is 2755 controlled by the "multiple-document-handling" job attribute (section 2756 4.2.4) and the relationship of this attribute and the other attributes 2757 that control document processing is described in section 15.4. 2759 4.2.8 printer-resolution (resolution) 2761 This attribute identifies the resolution that Printer uses for a 2762 certain Job. 2764 4.2.9 print-quality (type2 enum) 2766 This attribute specifies the print quality that the Printer SHALL use 2767 for a certain Job. 2769 The standard values are: 2771 '3' 'draft': lowest quality available on the printer 2772 '4' 'normal': normal or intermediate quality on the printer 2773 '5' 'high': highest quality available on the printer 2775 4.2.10 finishings (1setOf type2 enum) 2777 This attribute identifies the finishing operations that the Printer 2778 uses for each copy of each printed document in a particular Job. For 2779 Jobs with multiple documents, the "multiple-document-handling" 2780 attribute determines what constitutes a _copy_ for purposes of 2781 finishing. 2783 Standard values are: 2785 '3' 'none': Perform no finishing 2786 '4' 'staple': Bind the document(s) with one or more staples. 2787 The exact number and placement of the staples is site- 2788 defined. 2789 '5' 'punch': This value indicates that holes are required in 2790 the finished document. The exact number and placement 2791 of the holes is site-defined The punch specification 2792 MAY be satisfied (in a site- and implementation- 2793 specific manner) either by drilling/punching, or by 2794 substituting pre-drilled media. 2795 '6' 'cover': This value is specified when it is desired to 2796 select a non-printed (or pre-printed) cover for the 2797 document. This does not supplant the specification of a 2799 Expires April 14, 1998 2800 printed cover (on cover stock medium) by the document 2801 itself. 2802 '7' 'bind': This value indicates that a binding is to be 2803 applied to the document; the type and placement of the 2804 binding is site-defined." 2806 Note: The effect of this attribute on jobs with multiple documents is 2807 controlled by the "multiple-document-handling" job attribute (section 2808 4.2.4). 2810 If the client supplies a value of 'none' along with any other 2811 combination of values, it is the same as if only that other 2812 combination of values had been supplied (that is the 'none' value has 2813 no effect). 2815 4.2.11 copies (integer(1:2**31 - 1)) 2817 This attribute specifies the number of copies to be printed. On many 2818 devices the supported number of collated copies will be limited by the 2819 number of physical output bins on the device, and may be different 2820 from the number of uncollated copies which can be supported. The 2821 "copies-supported" attribute is the limit on the number of uncollated 2822 copies supported. The "collated-copies-supported" attribute is the 2823 limit on the number of collated copies supported. The value in the 2824 "copies-default" default value attribute applies to either collated or 2825 uncollated as determined by the value in the "multiple-document- 2826 handling-default" attribute. 2828 Note: The effect of this attribute on jobs with multiple documents is 2829 controlled by the "multiple-document-handling" job attribute (section 2830 4.2.4) and the relationship of this attribute and the other attributes 2831 that control document processing is described in section 15.4. 2833 4.2.12 page-ranges (1setOf rangeOfInteger) 2835 This attribute specifies the pages of a document which are to be 2836 printed. In most cases, the exact pages to be printed will be 2837 generated by a device driver and this attribute would not be required. 2838 However, when printing an archived document which has already been 2839 formatted, the end user may elect to print just a subset of the pages 2840 contained in the document. In this case, if page-range = n.m is 2841 specified, the first page to be printed will be page n. All subsequent 2842 pages of the document will be printed through and including page m. 2844 "page-ranges-supported" is a boolean value indicating whether or not 2845 the printer is capable of supporting the printing of page ranges. 2846 This capability may differ from one PDL to another. There is no "page- 2848 Expires April 14, 1998 2849 ranges-default" attribute. If the "page-ranges" attribute is not 2850 supplied by the client, all pages of the document will be printed. 2852 4.2.13 orientation (type2 enum) 2854 This attribute specifies the orientation of the content on the output 2855 pages to be printed. In most cases, the orientation of the content is 2856 specified within the document format generated by the device driver at 2857 print time. However, some document formats (such as 'text/plain') do 2858 not support the notion of page orientation, and it is possible to bind 2859 the orientation after the document content has been generated. This 2860 attribute provides an end user with the means to specify orientation 2861 for such documents. 2863 Standard values are: 2865 '1' 'portrait': The content will be imaged across the short 2866 edge of the medium. 2867 '2' 'landscape': The content will be imaged across the long 2868 edge of the medium. Landscape is defined to be a 2869 rotation of the logical page to be imaged by +90 2870 degrees with respect to the medium (i.e. anti- 2871 clockwise) from the portrait orientation. Note: The 2872 +90 direction was chosen because simple finishing on 2873 the long edge is the same edge whether portrait or 2874 landscape 2875 '3' 'reverse-landscape': The content will be imaged across the 2876 long edge of the medium. Reverse-landscape is defined 2877 to be a rotation of the logical page to be imaged by - 2878 90 degrees with respect to the medium (i.e. clockwise) 2879 from the portrait orientation. Note: The 'reverse- 2880 landscape' value was added because some applications 2881 rotate landscape -90 degrees from portrait, rather than 2882 +90 degrees. 2884 Note: The effect of this attribute on jobs with multiple documents is 2885 controlled by the "multiple-document-handling" job attribute (section 2886 4.2.4) and the relationship of this attribute and the other attributes 2887 that control document processing is described in section 15.4. 2889 4.2.14 document-format (mimeType) 2891 This attribute identifies the document format of the data to be 2892 printed. The standard values for this attribute are Internet Media 2893 types which are sometimes called MIME types. See the description of 2894 the 'mimeType' attribute syntax in Section 4.1.9. 2896 Expires April 14, 1998 2897 4.2.15 compression (type3 keyword) 2899 This attribute identifies compression algorithms used on compressed 2900 document data. The value of this attribute does not apply the 2901 encoding of the IPP operation itself. 2903 Standard values are : 2905 'none': no compression is used. 2906 'deflate': ZIP public domain inflate/deflate) compression 2907 technology 2908 `gzip' GNU zip compression technology described in RFC 1952. 2909 'compress': UNIX compression technology 2911 4.2.16 job-k-octets (integer(0:2**31 - 1)) 2913 This attribute specifies the total size of the document data in K 2914 octets, i.e., in units of 1024 octets requested to be processed in 2915 the job. The value SHALL be rounded up, so that a job between 1 and 2916 1024 octets SHALL be indicated as being 1, 1025 to 2048 SHALL be 2, 2917 etc. 2919 This value SHALL not include the multiplicative factors contributed by 2920 the number of copies specified by the "copies" attribute, independent 2921 of whether the device can process multiple copies without making 2922 multiple passes over the document data and independent of whether the 2923 output is collated or not. Thus the value is independent of the 2924 implementation. 2926 Note: This attribute and the following two attributes ("job- 2927 impressions" and "job-media-sheets") are not intended to be counters; 2928 they are intended to be useful routing and scheduling information if 2929 known. For these three attributes, the Printer may try to compute the 2930 value if it is not supplied in the create request. Even if the client 2931 does supply a value for this attribute in the create request, the 2932 Printer may choose to change the value if the Printer is able to 2933 compute a value which is more accurate than the client supplied value. 2934 The Printer may be able to determine the correct value for this 2935 attribute either right at job submission time or at any later point in 2936 time. If the value of this attribute is unknown, the Printer may 2937 choose to respond with a value of '-2' (which signifies "unknown") 2938 rather than choose to not support the attribute at all. 2940 4.2.17 job-impressions (integer(0:2**31 - 1)) 2942 This attribute specifies the total number of impressions of the 2943 document(s) being requested by this job to produce. 2945 Expires April 14, 1998 2946 This value SHALL not include the multiplicative factors contributed by 2947 the number of copies specified by the "copies" attribute, independent 2948 of whether the device can process multiple copies without making 2949 multiple passes over the document data and independent of whether the 2950 output is collated or not. Thus the value is independent of the 2951 implementation. 2953 4.2.18 job-media-sheets (integer(0:2**31 - 1)) 2955 This attribute specifies the total number of media sheets to be 2956 processed for this job. 2958 Unlike the "job-k-octets" and the "job-impressions" attributes, this 2959 value SHALL include the multiplicative factors contributes by the 2960 number of copies specified by the "copies" attribute 2962 4.3 Job Description Attributes 2964 The attributes in this section form the attribute group called "job- 2965 description". The following table summarizes these attributes. The 2966 third column indicates whether the attribute is a MANDATORY attribute 2967 that MUST be supported by Printer objects. If it is not MANDATORY, 2968 then it is OPTIONAL. 2970 Expires April 14, 1998 2971 +----------------------------+----------------------+----------------+ 2972 | Attribute | Syntax | MANDATORY? | 2973 +----------------------------+----------------------+----------------+ 2974 | job-uri | uri | MANDATORY | 2975 +----------------------------+----------------------+----------------+ 2976 | job-id | integer(1:MAX) | MANDATORY | 2977 +----------------------------+----------------------+----------------+ 2978 | job-more-info | uri | | 2979 +----------------------------+----------------------+----------------+ 2980 | job-name | name | MANDATORY | 2981 +----------------------------+----------------------+----------------+ 2982 | job-originating-user | octetString | MANDATORY | 2983 +----------------------------+----------------------+----------------+ 2984 | job-state | type1 enum | MANDATORY | 2985 +----------------------------+----------------------+----------------+ 2986 | job-state-reasons | 1setOf type2 keyword | | 2987 +----------------------------+----------------------+----------------+ 2988 | job-state-message | text | | 2989 +----------------------------+----------------------+----------------+ 2990 | number-of-documents | integer | | 2991 +----------------------------+----------------------+----------------+ 2992 | output-device-assigned | name | | 2993 +----------------------------+----------------------+----------------+ 2994 | time-of-creation | integer | | 2995 +----------------------------+----------------------+----------------+ 2996 | time-at-processing | integer | | 2997 +----------------------------+----------------------+----------------+ 2998 | time-at-completed | integer | | 2999 +----------------------------+----------------------+----------------+ 3000 | number-of-intervening-jobs | integer | | 3001 +----------------------------+----------------------+----------------+ 3002 | job-message-from-operator | text | | 3003 +----------------------------+----------------------+----------------+ 3004 | job-k-octets-processed | integer | | 3005 +----------------------------+----------------------+----------------+ 3006 | job-impressions-completed | integer | | 3007 +----------------------------+----------------------+----------------+ 3008 | job-media-sheets-completed | integer | | 3009 +----------------------------+----------------------+----------------+ 3010 | attributes-charset | charSet | MANDATORY | 3011 +----------------------------+----------------------+----------------+ 3012 | attributes-natural-language| naturalLanguage | MANDATORY | 3013 +----------------------------+----------------------+----------------+ 3015 4.3.1 job-uri (uri) 3017 Expires April 14, 1998 3018 This attribute contains the URI for the job. The Printer, on receipt 3019 of a new job, generates a URI which identifies the new Job on that 3020 Printer. The Printer returns the value of the "job-uri" attribute as 3021 part of the response to a create request. This MUST be an HTTP 3022 schemed URI, however the precise format of a Job URI is implementation 3023 dependent. 3025 For a description of this attribute and its relationship to the 3026 following "job-id" attribute, see the discussion in section 2.4 on 3027 "Object Identity". 3029 4.3.2 job-id (integer(1:MAX)) 3031 This attribute contains the ID of the job. The Printer, on receipt of 3032 a new job, generates an ID which identifies the new Job on that 3033 Printer. The Printer returns the value of the "job-id" attribute as 3034 part of the response to a create request. 3036 For a description of this attribute and its relationship to the 3037 previous "job-uri" attribute, see the discussion in section 2.4 on 3038 "Object Identity". 3040 4.3.3 job-more-info (uri) 3042 Similar to "printer-more-info", this attribute contains the URI 3043 referencing some resource with more information about this Job object, 3044 perhaps an HTML page containing information about the Job. 3046 4.3.4 job-name (name) 3048 This attribute is the name of the job. It is a name that is more user 3049 friendly than the "job-uri" attribute value. It does not need to be 3050 unique between Jobs. The Job's "job-name" attribute is set to the 3051 value supplied by the client in the "job-name" operation attribute in 3052 the create request. If, however, if the "job-name" operation 3053 attribute is not supplied by the client in the create request, the 3054 Printer, on creation of the Job, SHALL generate a name. The printer 3055 SHOULD generate the value of the Job's "job-name" attribute from the 3056 first of the following sources that produces a value: 1) the 3057 "document-URI" attribute of the first (or only) document, 2) the 3058 "document-name" operation attribute of the first (or only) document, 3059 or 3) any other piece of Job specific information. 3061 4.3.5 job-originating-user (octetString) 3063 This attribute contains the identity of the end user that submitted 3064 the print job. The Printer object sets this attribute to the most 3066 Expires April 14, 1998 3067 authenticated name that it can obtain from the authentication service 3068 over which the IPP operation was received. 3070 4.3.6 job-state (type1 enum) 3072 This attribute identifies the current state of the job. Even though 3073 the IPP protocol defines eight values for job states, implementations 3074 only need to support those states which are appropriate for the 3075 particular implementation. In other words, a Printer supports only 3076 those job states implemented by the output device and available to the 3077 Printer object implementation. 3079 Standard values are: 3081 'unknown'(2): The job state is not known, or its state is 3082 indeterminate. 3083 'pending'(3): The job is a candidate to start processing, but is 3084 not yet processing. 3085 'pending-held'(4): The job is not a candidate for processing for 3086 any number of reasons but will return to the 'pending' state as 3087 soon as the reasons are no longer present. The job's "job-state- 3088 reason" attribute SHALL indicate why the job is no longer a 3089 candidate for processing. 3090 'processing'(5): One or more of: 3091 1. the job is using, or is attempting to use, one or more purely 3092 software processes that are analyzing, creating, or 3093 interpreting a PDL, etc., 3094 2. the job is using, or is attempting to use, one or more 3095 hardware devices that are interpreting a PDL, making marks on 3096 a medium, and/or performing finishing, such as stapling, etc., 3097 3. the server has made the job ready for printing, but the output 3098 device is not yet printing it, either because the job hasn't 3099 reached the output device or because the job is queued in the 3100 output device or some other spooler, awaiting the output 3101 device to print it. 3103 Implementations MAY, though they NEED NOT, include additional 3104 values in the job's "job-state-reasons" attribute to indicate the 3105 progress of the job, such as adding the 'job-printing' value to 3106 indicate when the device is actually making marks on a medium. 3107 When the job is in the 'processing' state, the entire job state 3108 includes the detailed status represented in the printer's 3109 "printer-state", "printer-state-reasons", and "printer-state- 3110 message" attributes. 3111 Implementations MAY include additional values in the job's "job- 3112 state-reasons" attribute to indicate the progress of the job, 3113 such as adding the 'job-printing' value to indicate when the 3114 output device is actually making marks on paper and/or the 3116 Expires April 14, 1998 3117 'processing-to-stop-point' value to indicate that the server or 3118 device is in the process of canceling or aborting the job. Most 3119 implementations won't bother with this nuance. 3120 'processing-stopped'(6): The job has stopped while processing for 3121 any number of reasons and will return to the 'processing' state 3122 as soon as the reasons are no longer present. 3124 The job's "job-state-reason" attribute MAY indicate why the job 3125 has stopped processing. For example, if the output device is 3126 stopped, the 'printer-stopped' value MAY be included in the job's 3127 "job-state-reasons" attribute. 3129 Note: When an output device is stopped, the device usually 3130 indicates its condition in human readable form locally at the 3131 device. A client can obtain more complete device status remotely 3132 by querying the printer's "printer-state", "printer-state- 3133 reasons" and "printer-state-message" attributes. 3135 'canceled'(7): The job has been canceled by a Cancel-Job operation 3136 and the Printer has completed canceling the job and all job 3137 status attributes have reached their final values for the job. 3138 While the Printer is canceling the job, the job's "job-state- 3139 reasons" attribute SHOULD contain the 'processing-to-stop-point' 3140 value and one of the 'canceled-by-user', 'canceled-by-operator', 3141 or 'canceled-at-device' value. 3142 'aborted'(8): The job has been aborted by the system, usually 3143 while the job was in the 'processing' or 'processing-stopped' 3144 state and the Printer has completed aborting the job and all job 3145 status attributes have reached their final values for the job. 3146 While the server or device is aborting the job, the job's "job- 3147 state-reasons" attribute MAY contain the 'processing-to-stop- 3148 point' and 'aborted-by-system' values. If supported, the 3149 'aborted-by-system' value SHALL remain while the job is in the 3150 'aborted' state. 3151 'completed'(9): The job has completed successfully or with 3152 warnings or errors after processing and all of the job media 3153 sheets have been successfully stacked in the appropriate output 3154 bin(s). The job's "job-state-reasons" attribute SHOULD contain 3155 one of: 'completed-successfully', 'completed-with-warnings', or 3156 'completed-with-errors' values. 3158 The final value for this attribute SHALL be one of: 'completed', 3159 'canceled', or 'aborted' before the Printer removes the job 3160 altogether. The length of time that jobs remain in the 'canceled', 3161 'aborted', and 'completed' states depends on implementation. 3163 The following figure shows the normal job state transitions. 3165 Expires April 14, 1998 3166 +----> canceled 3167 / 3168 +----> pending --------> processing ---------+------> completed 3169 | ^ ^ \ 3170 --->+ | | +----> aborted 3171 | v v / 3172 +----> pending-held processing-stopped ---+ 3174 Normally a job progresses from left to right. Other state transitions 3175 are unlikely, but are not forbidden. Not shown are the transitions to 3176 the 'canceled' state from the 'pending', 'pending-held', and 3177 'processing-stopped' states. 3179 Jobs reach one of the three terminal states: 'completed', 'canceled', 3180 or 'aborted', after the jobs have completed all activity, including 3181 stacking output media, after the jobs have completed all activity, and 3182 all job status attributes have reached their final values for the job. 3184 4.3.7 job-state-reasons (1setOf type2 keyword) 3186 This attribute provides additional information about the job's current 3187 state, i.e., information that augments the value of the job's "job- 3188 state" attribute. 3190 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 3191 implement them, even if (1) the output device supports the 3192 functionality represented by the reason and (2) is available to the 3193 Printer object implementation. These values MAY be used with any job 3194 state or states for which the reason makes sense. Furthermore, when 3195 implemented, the Printer SHALL return these values when the reason 3196 applies and SHALL NOT return them when the reason no longer applies 3197 whether the value of the Job's "job-state" attribute changed or not. 3198 When the Job does not have any reasons for being in its current state, 3199 the Printer MAY set the value of the Job's "job-state-reasons" 3200 attribute to 'none'. 3202 NOTE - While values cannot be added to the 'job-state' attribute 3203 without impacting deployed clients that take actions upon receiving 3204 "job-state" values, it is the intent that additional "job-state- 3205 reasons" values can be defined and registered without impacting such 3206 deployed clients. In other words, the "job-state-reasons" attribute 3207 is intended to be extensible. 3209 The following standard values are defined. For ease of understanding, 3210 the values are presented in the order in which the reasons are likely 3211 to occur (if implemented), starting with the 'job-incoming' value: 3213 'none': There are no reasons for the job's current state. 3215 Expires April 14, 1998 3216 'job-incoming': The CreateJob operation has been accepted by the 3217 Printer, but the Printer is expecting additional Send-Document 3218 and/or Send-URI operations and/or is accessing/accepting document 3219 data. 3220 'submission-interrupted': The job was not completely submitted for 3221 some unforeseen reason, such as: (1) the Printer has crashed 3222 before the job was closed by the client, (2) the Printer or the 3223 document transfer method has crashed in some non-recoverable way 3224 before the document data was entirely transferred to the Printer, 3225 (3) the client crashed or failed to close the job before the 3226 time-out period. 3227 'job-outgoing': The Printer is transmitting the job to the output 3228 device. 3229 'job-hold-until-specified': The value of the job's "job-hold- 3230 until" attribute was specified with a time period that is still 3231 in the future. The job SHALL NOT be a candidate for processing 3232 until this reason is removed and there are no other reasons to 3233 hold the job. 3234 'resources-are-not-ready': At least one of the resources needed by 3235 the job, such as media, fonts, resource objects, etc., is not 3236 ready on any of the physical printer's for which the job is a 3237 candidate. This condition MAY be detected when the job is 3238 accepted, or subsequently while the job is pending or processing, 3239 depending on implementation. 3240 'printer-stopped-partly': The value of the Printer's "printer- 3241 state-reasons" attribute contains the value 'stopped-partly'. 3242 'printer-stopped': The value of the Printer's "printer-state" 3243 attribute is 'stopped'. 3244 'job-interpreting': Job is in the 'processing' state, but more 3245 specifically, the Printer is interpreting the document data. 3246 'job-queued': Job is in the 'processing' state, but more 3247 specifically, the Printer has queued the document data. 3248 'job-transforming': Job is in the 'processing' state, but more 3249 specifically, the Printer is interpreting document data and 3250 producing another electronic representation. 3251 'job-printing': The output device is marking media. This value is 3252 useful for Printers which spend a great deal of time processing 3253 (1) when no marking is happening and then want to show that 3254 marking is now happening or (2) when the job is in the process of 3255 being canceled or aborted while the job remains in the 3256 'processing' state, but the marking has not yet stopped so that 3257 impression or sheet counts are still increasing for the job. 3258 'job-canceled-by-user': The job was canceled by the owner of the 3259 job using the Cancel-Job request, i.e., by a user whose name is 3260 the same as the value of the job's "job-originating-user" 3261 attribute, or by some other authorized end-user, such as a member 3262 of the job owner's security group. 3264 Expires April 14, 1998 3266 'job-canceled-by-operator': The job was canceled by the operator 3267 using the Cancel-Job request, i.e., by a user who has been 3268 authenticated as having operator privileges (whether local or 3269 remote). 3270 'job-canceled-at-device': The job was canceled by an unidentified 3271 local user, i.e., a user at a console at the device. 3272 'aborted-by-system': The job (1) is in the process of being 3273 aborted, (2) has been aborted by the system and placed in the 3274 'aborted' state, or (3) has been aborted by the system and placed 3275 in the 'pending-held' state, so that a user or operator can 3276 manually try the job again. 3277 'processing-to-stop-point': The requester has issued a Cancel-job 3278 operation or the Printer object has aborted the job, but is still 3279 performing some actions on the job until a specified stop point 3280 occurs or job termination/cleanup is completed. 3282 This reason is recommended to be used in conjunction with the 3283 'processing' job state to indicate that the Printer object is 3284 still performing some actions on the job while the job remains in 3285 the 'processing' state. After all the job's job description 3286 attributes have stopped incrementing, the Printer object moves 3287 the job from the 'processing' state to the 'canceled' or 3288 'aborted' job states. 3290 'service-off-line': The Printer is off-line and accepting no jobs. 3291 All 'pending' jobs are put into the 'pending-held' state. This 3292 situation could be true if the service's or document transform's 3293 input is impaired or broken. 3294 'job-completed-successfully': The job completed successfully. 3295 'job-completed-with-warnings': The job completed with warnings. 3296 'job-completed-with-errors': The job completed with errors (and 3297 possibly warnings too). 3299 4.3.8 job-state-message (text) 3301 This attributes specifies supplemental information about the Job State 3302 in human readable text. The Printer object SHALL be able to generate 3303 this message in any of the natural languages identified by the 3304 Printer's "natural-language-supported" attribute (see the "attributes- 3305 natural-language" operation attribute specified in Section 3.1.3.1). 3307 4.3.9 number-of-documents (integer(0:2**31 - 1)) 3309 This attribute indicates the number of documents in the job, i.e, the 3310 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 3311 that the Printer has accepted for this job, regardless of whether the 3312 document data has reached the Printer or not. 3314 Expires April 14, 1998 3315 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 3316 URI operations SHOULD support this attribute. 3318 4.3.10 output-device-assigned (name) 3320 This attribute identifies the Output Device to which the Printer has 3321 assigned this job. If an output device implements an embedded IPP 3322 Printer, the Printer NEED NOT set this attribute. If a Print Server 3323 implements a Printer, the value MAY be empty until the Printer assigns 3324 an output device to the job. 3326 4.3.11 time-of-creation (integer) 3328 This attribute indicates the point in time at which the Job object was 3329 created. In order to populate this attribute, the Printer object uses 3330 the value in its "printer-up-time" attribute at the time the Job 3331 object is created. 3333 4.3.12 time-at-processing (integer) 3335 This attribute indicates the point in time at which the Job object 3336 began processing. In order to populate this attribute, the Printer 3337 object uses the value in its "printer-up-time" attribute at the time 3338 the Job object is moved into the 'processing' state for the first 3339 time. 3341 4.3.13 time-at-completed (integer) 3343 This attribute indicates the point in time at which the Job object 3344 completed (or was cancelled or aborted). In order to populate this 3345 attribute, the Printer object uses the value in its "printer-up-time" 3346 attribute at the time the Job object is moved into the 'completed' or 3347 'canceled' or 'aborted' state. 3349 4.3.14 number-of-intervening-jobs (integer(0:2**31 - 1)) 3351 This attribute indicates the number of jobs that are "ahead" of this 3352 job in the relative chronological order of expected time to complete 3353 (i.e., the current scheduled order). For efficiency, it is only 3354 necessary to calculate this value when an operation is performed that 3355 requests this attribute. 3357 4.3.15 job-message-from-operator (text) 3359 This attribute provides a message from an operator, system 3360 administrator or "intelligent" process to indicate to the end user the 3361 reasons for modification or other management action taken on a job. 3363 Expires April 14, 1998 3364 4.3.16 job-k-octets-processed (integer(0:2**31 - 1)) 3366 This attribute specifies the number of octets processed in K octets, 3367 i.e., in units of 1024 octets. The value SHALL be rounded up, so that 3368 a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 3369 2048 SHALL be 2, etc. 3371 For implementations where multiple copies are produced by the 3372 interpreter with only a single pass over the data, the final value 3373 SHALL be equal to the value of the "job-k-octets" attribute. For 3374 implementations where multiple copies are produced by the interpreter 3375 by processing the data for each copy, the final value SHALL be a 3376 multiple of the value of the "job-k-octets" attribute. 3378 Note: This attribute and the following two attributes ("job- 3379 impressions-completed" and "job-sheets-completed") are intended to be 3380 counters. That is, if the "job-state" is 'processing' or 'processing- 3381 stopped', this value is intended to contain the amount of the job that 3382 has been processed to the time at which the attributes are requested. 3383 For any of these three attributes, the Printer may choose to return 3384 the value '-2' (which represents "unknown") rather than choose to not 3385 support the attribute at all. 3387 4.3.17 job-impressions-completed (integer(0:2**31 - 1)) 3389 This job attribute specifies the number of impressions completed for 3390 the job so far. For printing devices, the impressions completed 3391 includes interpreting, marking, and stacking the output. This 3392 attribute is intended to be a counter as in the Job Monitoring MIB. 3394 For implementations where multiple copies are produced by the 3395 interpreter with only a single pass over the data, the final value 3396 SHALL be equal to the value of the "job-impressions" attribute. For 3397 implementations where multiple copies are produced by the interpreter 3398 by processing the data for each copy, the final value SHALL be a 3399 multiple of the value of the "job-impressions" attribute. 3401 4.3.18 job-media-sheets-completed (integer(0:2**31 - 1)) 3403 This job attribute specifies the media-sheets completed marking and 3404 stacking for the entire job so far whether those sheets have been 3405 processed on one side or on both. This attribute is intended to be a 3406 counter as in the Job Monitoring MIB. 3408 4.3.19 attributes-charset (charSet) 3410 This attribute is populated using the value in the client supplied 3411 "attributes-charset" attribute in the create request. It identifies 3413 Expires April 14, 1998 3414 the charset (coded character set and encoding method) used for any Job 3415 attributes with attribute syntax 'text' and 'name' whether supplied by 3416 the client and/or returned by the Printer object. See Section 3.1.3 3417 for a complete description of the "attributes-charset" operation 3418 attribute. 3420 4.3.20 attributes-natural-language (naturalLanguage) 3422 4.4 This attribute is populated using the value in the client supplied 3423 "attributes-natural-language" attribute in the create request. It 3424 identifies the natural language used for any Job attributes with 3425 attribute syntax 'text' and 'name' whether supplied by the client 3426 and/or returned by the Printer object. See Section 3.1.3 for a 3427 complete description of the "attributes-natural-language" operation 3428 attribute. See Section 4.1.1 for how an exception natural languages 3429 may be supplied explicitly for each 'text' and 'name' attribute value 3430 that differs from the value identified by the "job-natural-language" 3431 attribute.Printer Description Attributes 3433 These attributes form the attribute group called "printer- 3434 description". A Printer object may be realized in either a print 3435 server or output device. Note: How these attributes are set by an 3436 Administrator is outside the scope of this specification. The 3437 following table summarizes these attributes, their syntax, and whether 3438 or not they are MANDATORY for a Printer object to support. If they 3439 are not MANDATORY, they are OPTIONAL. 3441 Expires April 14, 1998 3442 +----------------------------+----------------------+----------------+ 3443 | Attribute | Syntax | MANDATORY? | 3444 +----------------------------+----------------------+----------------+ 3445 | printer-uri | uri | MANDATORY | 3446 +----------------------------+----------------------+----------------+ 3447 | printer-name | name | MANDATORY | 3448 +----------------------------+----------------------+----------------+ 3449 | printer-location | text | | 3450 +----------------------------+----------------------+----------------+ 3451 | printer-info | text | | 3452 +----------------------------+----------------------+----------------+ 3453 | printer-more-info | uri | | 3454 +----------------------------+----------------------+----------------+ 3455 | printer-driver-installer | uri | | 3456 +----------------------------+----------------------+----------------+ 3457 | printer-make-and-model | text | | 3458 +----------------------------+----------------------+----------------+ 3459 | printer-more-info- | uri | | 3460 | manufacturer | | | 3461 +----------------------------+----------------------+----------------+ 3462 | printer-state | type1 enum | MANDATORY | 3463 +----------------------------+----------------------+----------------+ 3464 | printer-state-reasons | 1setOf type2 keyword | | 3465 +----------------------------+----------------------+----------------+ 3466 | printer-state-message | text | | 3467 +----------------------------+----------------------+----------------+ 3468 | operations-supported | 1setOf operation | MANDATORY | 3469 +----------------------------+----------------------+----------------+ 3470 | printer-charset | charSet | MANDATORY | 3471 +----------------------------+----------------------+----------------+ 3472 | charsets-supported | 1setOf charSet | MANDATORY | 3473 +----------------------------+----------------------+----------------+ 3474 | printer-natural-language | naturalLanguage | MANDATORY | 3475 +----------------------------+----------------------+----------------+ 3476 | natural-languages-supported| 1setOf | MANDATORY | 3477 | | naturalLanguage | | 3478 +----------------------------+----------------------+----------------+ 3479 | printer-is-accepting-jobs | boolean | MANDATORY | 3480 +----------------------------+----------------------+----------------+ 3481 | queued-job-count | integer | | 3482 +----------------------------+----------------------+----------------+ 3483 | printer-message-from- | text | | 3484 | operator | | | 3485 +----------------------------+----------------------+----------------+ 3486 | color-supported | boolean | | 3487 +----------------------------+----------------------+----------------+ 3488 | pdl-override | type2 keyword | MANDATORY | 3489 +----------------------------+----------------------+----------------+ 3491 Expires April 14, 1998 3492 | security-mechanisms- | 1setOf keyword | | 3493 | supported | | | 3494 +----------------------------+----------------------+----------------+ 3495 | printer-up-time | integer | MANDATORY | 3496 +----------------------------+----------------------+----------------+ 3497 | printer-current-time | dateTime | | 3498 +----------------------------+----------------------+----------------+ 3499 | multiple-operation-time-out| integer | | 3500 +----------------------------+----------------------+----------------+ 3502 4.4.1 printer-uri (uri) 3504 This attribute contains the URI for the printer. An administrator 3505 determines a printer's URI and sets this attribute to that URI. This 3506 MUST be an HTTP schemed URI, however the precise format of a printer 3507 URI is implementation dependent. 3509 4.4.2 printer-name (name) 3511 This attribute contains the name of the printer. It is a name that is 3512 more user friendly than the printer-URI. An administrator determines a 3513 printer's name and sets this attribute to that name. This name may be 3514 the last part of the printer's URI or it may be unrelated. In non-US- 3515 English locales, a name may contain characters that are not allowed in 3516 a URI. 3518 4.4.3 printer-location (text) 3520 This attribute identifies the location of this printer. This could 3521 include things like: _in Room 123A, second floor of building XYZ_. 3523 4.4.4 printer-info (text) 3525 This attribute identifies the descriptive information about this 3526 Printer. This could include things like: "This printer can be used 3527 for printing color transparencies for HR presentations", or "Out of 3528 courtesy for others, please print only small (1-5 page) jobs at this 3529 printer", or even "This printer is going away on July 1, 1997, please 3530 find a new printer". 3532 4.4.5 printer-more-info (uri) 3534 This attribute contains a URI used to obtain more information about 3535 this specific printer. For example, this could be an HTTP type URI 3536 referencing an HTML page accessible to a Web Browser. The information 3537 obtained from this URI is intended for end user consumption. Features 3538 outside the scope of IPP can be accessed from this URI. The 3539 information is intended to be specific to this printer instance and 3541 Expires April 14, 1998 3542 site specific services (e.g. job pricing, services offered, end user 3543 assistance). The device manufacturer may initially populate this 3544 attribute. 3546 4.4.6 printer-driver-installer (uri) 3548 This attribute contains a URI to use to locate the driver installer 3549 for this printer. This attribute is intended for consumption by 3550 automata. The mechanics of print driver installation is outside the 3551 scope of IPP. The device manufacturer may initially populate this 3552 attribute. 3554 4.4.7 printer-make-and-model (text) 3556 This attribute identifies the make and model of the printer. 3558 4.4.8 printer-more-info-manufacturer (uri) 3560 This attribute contains a URI used to obtain more information about 3561 this type of printer. The information obtained from this URI is 3562 intended for end user consumption. Features outside the scope of IPP 3563 can be accessed from this URI (e.g., latest firmware, upgrades, print 3564 drivers, optional features available). The information is intended to 3565 be germane to this printer without regard to site specific 3566 modifications or services. The device manufacturer may initially 3567 populate this attribute. 3569 4.4.9 printer-state (type1 enum) 3571 This attribute identifies the current state of the printer. The 3572 "printer-state reasons" attribute augments the "printer-state" 3573 attribute to give more detailed information about the Printer in the 3574 given printer state. 3576 A Printer object need only update this attribute before responding to 3577 an operation which requests the attribute; the Printer object NEED NOT 3578 update this attribute continually. A Printer NEED NOT implement all 3579 values if they are not applicable to a given implementation. 3581 The following standard values are defined: 3583 'unknown'(2): The Printer state is not known, or is indeterminate. 3584 A Printer SHALL use this state only if it cannot determine its 3585 actual state. 3587 'idle'(3): If a Printer receives a job (whose required resources 3588 are ready) while in this state, such a job SHALL transit into the 3589 processing state immediately. If the printer-state-reasons 3591 Expires April 14, 1998 3592 attribute contains any reasons, they SHALL be reasons that would 3593 not prevent a job from transiting into the processing state 3594 immediately, e.g., toner-low. Note: if a Printer controls more 3595 than one output device, the above definition implies that a 3596 Printer is idle if at least one output device is idle. 3598 'processing'(4): If a Printer receives a job (whose required 3599 resources are ready) while in this state, such a job SHALL 3600 transit into the pending state immediately. Such a job SHALL 3601 transit into the processing state only after jobs ahead of it 3602 complete. If the printer-state-reasons attribute contains any 3603 reasons, they SHALL be reasons that do not prevent the current 3604 job from printing, e.g. toner-low. Note: if a Printer controls 3605 more than one output device, the above definition implies that a 3606 Printer is processing if at least one output device is 3607 processing, and none is idle. 3609 'stopped'(5): If a Printer receives a job (whose required 3610 resources are ready) while in this state, such a job SHALL 3611 transit into the pending state immediately. Such a job SHALL 3612 transit into the processing state only after some human fixes the 3613 problem that stopped the printer and after jobs ahead of it 3614 complete printing. The "printer-state-reasons" attribute SHALL 3615 contain at least one reason, e.g. media-jam, which prevents it 3616 from either processing the current job or transiting a pending 3617 job to the processing state. 3619 Note: if a Printer controls more than one output device, the 3620 above definition implies that a Printer is stopped only if all 3621 output devices are stopped. Also, it is tempting to define 3622 stopped as when a sufficient number of output devices are stopped 3623 and leave it to an implementation to define the sufficient 3624 number. But such a rule complicates the definition of stopped 3625 and processing. For example, with this alternate definition of 3626 stopped, a job can move from idle to processing without human 3627 intervention, even though the Printer is stopped. 3629 4.4.10 printer-state-reasons (1setOf type2 keyword) 3631 This attribute supplies additional detail about the printer's state. 3633 Each MAY have a suffix to indicate its level of severity. The three 3634 levels are: report (least severe), warning, and error (most severe). 3636 - '-report': This suffix indicates that the reason is a "report". 3637 An implementation may choose to omit some or all reports. Some 3638 reports specify finer granularity about the printer state; others 3640 Expires April 14, 1998 3641 serve as a precursor to a warning. A report SHALL contain nothing 3642 that could affect the printed output. 3643 - '-warning': This suffix indicates that the reason is a "warning". 3644 An implementation may choose to omit some or all warnings. 3645 Warnings serve as a precursor to an error. A warning SHALL 3646 contain nothing that prevents a job from completing, though in 3647 some cases the output may be of lower quality. 3648 - '-error': This suffix indicates that the reason is an "error". 3649 An implementation SHALL include all errors. If this attribute 3650 contains one or more errors, printer SHALL be in the stopped 3651 state. 3653 If the implementation does not add any one of the three suffixes, all 3654 parties SHALL assume that the reason is an "error". 3656 If a Printer object controls more than one output device, each value 3657 of this attribute MAY apply to one or more of the output devices. An 3658 error on one output device that does not stop the Printer object as a 3659 whole MAY appear as a warning in the Printer's "printer-state-reasons 3660 attribute". If the "printer-state" for such a Printer has a value of 3661 'stopped', then there MUST be an error reason among the values in the 3662 "printer-state-reasons" attribute. 3664 The following standard values are defined: 3666 'other': The printer has detected an error other than one listed in 3667 this document. 3668 'unknown': The printer is unable to give additional detail about 3669 the state of the printer. This state reason is semantically 3670 equivalent to printer-state-reasons without any value. 3671 'media-needed': A tray has run out of media. 3672 'media-jam': The printer has a media jam. 3673 'paused': Someone has paused the Printer. In this state, a Printer 3674 SHALL not produce printed output, but it SHALL perform other 3675 operations requested by a client. If a Printer had been printing 3676 a job when the Printer was paused, the Printer SHALL resume 3677 printing that job when the Printer is no longer paused and leave 3678 no evidence in the printed output of such a pause. 3679 'shutdown': Someone has removed a Printer from service, and it may 3680 be powered down or physical removed. In this state, a Printer 3681 SHALL not produce printed output, and unless the Printer is 3682 realized by a print server that is still active, the Printer 3683 SHALL perform no other operations requested by a client, 3684 including returning this value. If a Printer had been printing a 3685 job when it was shutdown, the Printer need not resume printing 3686 that job when the Printer is no longer shutdown. If the Printer 3687 resumes printing such a job, it may leave evidence in the printed 3689 Expires April 14, 1998 3690 output of such a shutdown, e.g. the part printed before the 3691 shutdown may be printed a second time after the shutdown. 3692 'connecting-to-device': The server has scheduled a job on the 3693 Printer and is in the process of connecting to a shared network 3694 output device (and might not be able to actually start printing 3695 the job for an arbitrarily long time depending on the usage of 3696 the output device by other servers on the network). 3697 'timed-out': The server was able to connect to the output device 3698 (or is always connected), but was unable to get a response from 3699 the output device. 3700 'stopping': The printer will be stopping in a while and will change 3701 its reason to printer-stopped. This reason is a non-critical, 3702 even for a Printer with a single output device. When an output- 3703 device ceases accepting jobs, the Printer will have this reason 3704 while the output device completes printing. 3705 'stopped-partly': When a Printer controls more than one output 3706 device, this reason indicates that one or more output devices are 3707 stopped. If the reason is a report, fewer than half of the output 3708 devices are stopped. If the reason is a warning, fewer than all 3709 of the output devices are stopped. 3710 'toner-low': The Printer is low on toner. 3711 'marker-supply-low': The Printer is low on marker supply (ink, 3712 paint, etc.). 3713 'spool-area-full': The limit of persistent storage allocated for 3714 spooling has been reached. 3715 'cover-open': One or more covers on the printer is open. 3716 'interlock-open': One or more interlock devices on the printer is 3717 unlocked. 3718 'door-open': One or more doors on the printer are open. 3719 'input-tray-missing': One or more input trays are not in the 3720 printer. 3721 'media-low': At least one input tray is low on media. 3722 'media-empty': At least one input tray is empty. 3723 'output-tray-missing': One or more output trays are not in the 3724 printer 3725 'output-area-almost-full': One or more output area is almost full 3726 (e.g. tray, stacker, collator). 3727 'output-area-full': One or more output area is full. (e.g. tray, 3728 stacker, collator) 3729 'marker-supply-low': The Printer is low on at least one marker 3730 supply. (e.g. toner, ink, ribbon) 3731 'marker-supply-empty: The Printer is out of at least one marker 3732 supply. (e.g. toner, ink, ribbon) 3733 'marker-waste-almost-full': The Printer marker supply waste 3734 receptacle is almost full. 3735 'marker-waste-full': The Printer marker supply waste receptacle is 3736 full. 3737 'fuser-over-temp': The fuser temperature is above normal. 3739 Expires April 14, 1998 3740 'fuser-under-temp': The fuser temperature is below normal. 3741 'opc-near-eol': The optical photo conductor is near end of life. 3742 'opc-life-over': The optical photo conductor is no longer 3743 functioning. 3744 'developer-low': The Printer is low on developer. 3745 'developer-empty: The Printer is out of developer. 3746 'interpreter-resource-unavailable': An interpreter resource is 3747 unavailable (i.e. font, form) 3749 4.4.11 printer-state-message (text) 3751 This attribute specifies the additional information about the printer 3752 state and printer state reasons in human readable text. The Printer 3753 object SHALL be able to generate this message in any of the natural 3754 languages identified by the Printer's "natural-language-supported" 3755 attribute (see the "attributes-natural-language" operation attribute 3756 specified in Section 3.1.3.1). 3758 4.4.12 operations-supported (1setOf operation) 3760 This attribute specifies the set of supported operations for this 3761 Printer. The syntax of type of "operation" is the same as "type2 3762 enum" except that the range of values is 0x0000 to 0x8FFF. 3764 The following standard values are defined: 3766 0x0000 reserved, not used 3767 0x0001 reserved, not used 3768 0x0002 Print-Job 3769 0x0003 Print-URI 3770 0x0004 Validate-Job 3771 0x0005 Create-Job 3772 0x0006 Send-Document 3773 0x0007 Send-URI 3774 0x0008 Cancel-Job 3775 0x000A Get-Jobs 3776 0x0009 Get-Attributes 3777 0x000A-0x3FFF reserved for future operations 3778 0x4000-0x8FFF reserved for private extensions 3780 This allows for certain vendors to implement private extensions that 3781 are guaranteed to not conflict with future registered extensions. 3782 However, there is no guarantee that two or more private extensions 3783 will not conflict. 3785 Expires April 14, 1998 3786 4.4.13 printer-charset (charSet) 3788 This MANDATORY attribute identifies the charset that the Printer 3789 object has been configured to represent 'text' and 'name' Printer 3790 attributes that are set by the operator, system administrator, or 3791 manufacturer, i.e., for "printer-name" (name), "printer-location" 3792 (text), "printer-info" (text), and "printer-make-and-model" (text). 3793 Therefore, the value of the "printer-charset" attribute SHALL also be 3794 among the values of the Printer's "charset-supported" attribute. 3796 4.4.14 charsets-supported (1setOf charSet) 3798 This MANDATORY attribute identifies the set of charsets that the 3799 Printer object supports in attributes with attribute syntax 'text' and 3800 'name', i.e., that the Printer object SHALL (1) accept in requests, 3801 (2) return in responses, and (3) send in notification messages. At 3802 least the value 'utf-8' SHALL be present, since a Printer object SHALL 3803 support the UTF-8 [RFC2044] charset. 3805 If more charsets than UTF-8 are supported, the Printer object SHALL 3806 perform charset conversion between the charsets as described in 3807 Section 3.1.3.1. 3809 4.4.15 printer-natural-language (naturalLanguage) 3811 This MANDATORY attribute identifies the natural language that the 3812 Printer object has been configured to represent 'text' and 'name' 3813 Printer attributes that are set by the operator, system administrator, 3814 or manufacturer, i.e., for "printer-name" (name), "printer-location" 3815 (text), "printer-info" (text), and "printer-make-and-model" (text). 3816 When returning these Printer attributes, the Printer object MAY return 3817 them in the configured natural language specified by this attribute, 3818 instead of the natural language requested by the client in the 3819 "attributes-natural-language" operation attribute. See Section 3820 3.1.3.1 for the specification of the OPTIONAL multiple natural 3821 language support. Therefore, the value of the "printer-natural- 3822 language" attribute SHALL also be among the values of the Printer's 3823 "natural-language-supported" attribute. 3825 4.4.16 natural-languages-supported (1setOf naturalLanguage) 3827 This MANDATORY attribute identifies the natural language(s) that the 3828 Printer object supports in attributes with attribute syntax 'text' and 3829 'name', i.e., that the Printer object SHALL (1) accept in requests, 3830 (2) return in responses, and (3) send in notification messages. The 3831 natural language(s) supported depends on implementation and/or 3832 configuration. 3834 Expires April 14, 1998 3835 For any of the attributes for which the Printer generates messages, 3836 i.e., for the "job-state-message" and "printer-state-message" 3837 attributes and Operation Messages (see Section 3.1.4) in operation 3838 responses, the Printer object SHALL be able to generate messages in 3839 any of its supported natural languages. See section 3.1.3.1 for the 3840 specification of 'text' and 'name' attributes in operation requests 3841 and responses. 3843 Note: A Printer object that supports multiple natural languages, often 3844 has separate catalogs of messages, one for each natural language 3845 supported. 3847 4.4.17 printer-is-accepting-jobs (boolean) 3849 This attribute indicates whether the printer is currently accepting 3850 job. If the value is true, the printer is accepting jobs. If the 3851 value is false, the printer is currently rejecting any jobs submitted 3852 to it. 3854 Note: This value is independent of the printer state and printer- 3855 state-reasons because its value does not affect the current job; 3856 rather it affects future jobs. This attribute may cause the Printer to 3857 reject jobs when the printer-state is idle or it may cause the Printer 3858 to accepts jobs when the printer-state is stopped. 3860 4.4.18 queued-job-count (integer(0:2**31 - 1)) 3862 This attribute contains a count of the number of jobs that are either 3863 'pending', 'processing', 'pending-held', or 'processing-stopped' and 3864 is set by the Printer. 3866 4.4.19 printer-message-from-operator (text) 3868 This attribute provides a message from an operator, system 3869 administrator or "intelligent" process to indicate to the end user 3870 information or status of the printer, such as why it is unavailable or 3871 when it is expected to be available. 3873 4.4.20 color-supported (boolean) 3875 This attribute identifies whether the Printer is capable of any type 3876 of color printing at all. All document instructions having to do with 3877 color are embedded within the document PDL (none are external IPP 3878 attributes). 3880 Expires April 14, 1998 3881 4.4.21 reference-uri-schemes-supported (1setOf uriScheme) 3883 This attribute specifies which URI schemes are supported for use in 3884 the "document-uri" operation attribute of the Print-URI or Send-URI 3885 operation. If a Printer object supports these optional operations, it 3886 MUST support URIs of the following type: 3888 'http': The Printer object will perform an HTTP/1.1 GET operation 3889 'ftp': The Printer object will use an FTP 'get' operation. If the 3890 URI does not indicate a name or password in the URI itself, the 3891 Printer object will use anonymous FTP generating (if prompted) 3892 some password in the form of an Internet mail address. 3894 The Printer object OPTIONALLY supports other URI schemes (see section 3895 4.1.6). 3897 4.4.22 pdl-override (type2 keyword) 3899 This attribute expresses the ability for a particular Printer 3900 implementation to either attempt to override document data 3901 instructions with IPP attributes or not. 3903 This MANDATORY attribute takes on the following values: 3905 - 'attempted': This value indicates that the Printer attempts to 3906 make sure that IPP attribute values take precedence over embedded 3907 instructions in the document data, however there is no guarantee. 3908 - 'not-attempted': This value indicates that the Printer makes no 3909 attempt to ensure that IPP attribute values take precedence over 3910 embedded instructions in the print data. 3912 Section 15 contains a full description of how this attribute interacts 3913 with and affects other IPP attributes, especially the "ipp-attribute- 3914 fidelity" attribute. 3916 4.4.23 security-mechanisms-supported (1setOf keyword) 3918 This attribute indicates the security mechanisms supported. Standard 3919 values are: 3921 'tls': Transport Layer Security (TLS) 3922 'ssl': Secure Sockets Layer (SSL) 3923 'http-digest': HTTP/1.1 Digest Authentication 3924 'http-basic': HTTP/1.1 Basic Authentication 3926 Expires April 14, 1998 3928 4.4.24 printer-up-time (integer(1:MAX)) 3930 This attribute is a MANDATORY attribute. It indicates the amount of 3931 time (in seconds) that this instance of this Printer implementation 3932 has been up and running. This value is used to populate the Job 3933 attributes "time-of-creation", "time-at-processing", and "time-at- 3934 completed". These time values are all measured in seconds and all 3935 have meaning only relative to this attribute, "printer-up-time". The 3936 value is a monotonically increasing value starting from 1 when the 3937 Printer object is started-up (initialized, booted, etc.). 3939 If the Printer object goes down at some value 'n', and comes back up, 3940 the implementation MAY: 3942 1. Know how long it has been down, and resume at some value greater 3943 than 'n', or 3944 2. Restart from 1. 3946 In the first case, the Printer SHOULD not tweak any existing related 3947 Job attributes ("time-of-creation", "time-at-processing", and "time- 3948 at-completed"). In the second case, the Printer object SHOULD be 3949 reset to 0. If a client queries a time-related Job attribute and 3950 finds the value to be 0, the client MUST assume that the Job was 3951 submitted in some life other than the Printer's current life. 3953 4.4.25 printer-current-time (dateTime) 3955 This attribute is an OPTIONAL attribute. It indicates the current 3956 absolute wall-clock time. If an implementation supports this 3957 attribute, then a client could calculate the absolute wall-clock time 3958 each Job's "time-of-creation", "time-at-processing", and "time-at- 3959 completed" attributes by using both "printer-up-time" and this 3960 attribute, "printer-current-time". If an implementation does not 3961 support this attribute, a client can only calculate the relative time 3962 of certain events based on the MANDATORY "printer-up-time" attribute. 3964 4.4.26 multiple-operation-time-out (integer) 3966 This attributes identifies how long (in seconds) the Printer object 3967 waits for additional Send-Document or Send-URI operations to follow a 3968 still-open multi-document Job object. 3970 5. Conformance 3972 This section describes conformance issues and requirements. This 3973 document introduces model entities such as objects, operations, 3975 Expires April 14, 1998 3976 attributes, and attribute values. These conformance sections describe 3977 the conformance requirements which apply to these model entities. 3979 5.1 Client Conformance Requirements 3981 A conforming client SHALL send operations that conform to the protocol 3982 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 3983 [IPP-PRO]. For each attribute included in an operation request, a 3984 conforming client SHALL send a value whose type and value syntax 3985 conforms to the requirement of this document 3987 Otherwise, there are no conformance requirements placed on the user 3988 interfaces provided by IPP clients or their applications. For 3989 example, one application might not allow an end user to submit 3990 multiple documents per job, while another does. One application might 3991 first query a Printer object in order to supply a graphical user 3992 interface (GUI) dialogue box with supported and default values whereas 3993 a different implementation might not. For presentation purposes, 3994 truncation of long attribute values is not recommended. A recommended 3995 approach would be for the client implementation to allow the user to 3996 scroll through long attribute values. 3998 When sending a Get-Attributes or create request, an IPP client NEED 3999 NOT supply any OPTIONAL attributes. 4001 A client SHALL be able to accept any of the attribute syntaxes defined 4002 in Section 4.1, including their full range, that may be returned to it 4003 in a response from a Printer object. 4005 A query response may contain attributes and values that the client 4006 does not expect. Therefore, a client implementation MUST gracefully 4007 handle such responses and not refuse to inter-operate with a 4008 conforming Printer that is returning extended registered or private 4009 attributes and/or attribute values that conform to Section 6. Clients 4010 may choose to ignore any parameters, attributes, or values that it 4011 does not understand. 4013 5.2 Printer Object Conformance Requirements 4015 This section specifies the conformance requirements for conforming 4016 Printer object implementations with respect to objects, operations, 4017 and attributes. 4019 Expires April 14, 1998 4020 5.2.1 Objects 4022 Conforming Printer implementations SHALL implement all of the model 4023 objects as defined in this specification in the indicated sections: 4025 Section 2.1 Printer Object 4026 Section 2.2 Job Object 4028 5.2.2 Operations 4030 Conforming Printer implementations SHALL implement all of the 4031 MANDATORY model operations, including mandatory responses, as defined 4032 in this specification in the indicated sections: 4034 For a Printer object: 4035 Print-Job (section 3.2.1) MANDATORY 4036 Print-URI (section 3.2.2) OPTIONAL 4037 Validate-Job (section 3.2.3) MANDATORY 4038 Create-Job (section 3.2.4) OPTIONAL 4039 Get-Attributes (section 3.2.5) MANDATORY 4040 Get-Jobs (section 3.2.6) MANDATORY 4042 For a Job object: 4043 Send-Document (section 3.3.1) OPTIONAL 4044 Send-URI (section 3.3.2) OPTIONAL 4045 Cancel-Job (section 3.3.3) MANDATORY 4046 Get-Attributes (section 3.3.4) MANDATORY 4048 Conforming Printer implementations SHALL support all operation 4049 attributes and all values of such attributes, except for attributes 4050 that are collections of attributes. The following section on 4051 attributes specifies the support required for attributes. 4053 5.2.3 Attributes 4055 Conforming Printer implementations SHALL support all of the MANDATORY 4056 attributes, as defined in this specification in the indicated 4057 sections. 4059 If a Printer supports an attribute, it SHALL support only those values 4060 specified in this document or through the extension mechanism 4061 described in the next section. It MAY support any non-empty subset of 4062 these values. That is, it SHALL support at least one of the specified 4063 values and at most all of them. 4065 Expires April 14, 1998 4066 5.2.4 Printer extensions 4068 A conforming Printer may support registered extensions and private 4069 extensions, as long as they meet the requirements specified in Section 4070 6. 4072 A conforming Printer SHALL send responses that conform to the protocol 4073 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 4074 [IPP-PRO]. For each attribute included in an operation response, a 4075 conforming printer SHALL send a value whose type and value syntax 4076 conforms to the requirement of this document 4078 5.2.5 Attribute Syntaxes 4080 A Printer SHALL be able to accept any of the attribute syntaxes 4081 defined in Section 4.1, including their full range, in any operation 4082 in which a client may supply attributes. Furthermore, a Printer SHALL 4083 return attributes to the client in operation responses that conform to 4084 the syntax specified in Section 4.1, including their full range if 4085 supplied previously by a client. 4087 5.3 Security Conformance Requirements 4089 All clients and IPP objects SHALL support the two authentication 4090 mechanisms for HTTP/1.1 as defined in RFC 2068 [RFC2068] and RFC 2069 4091 [RFC2069]. 4093 Clients and IPP objects that need mutual authentication and/or 4094 encryption SHOULD also support a secure connection protocol. For this 4095 purpose it is the intention to define standardization of IPP in 4096 combination with Transport Layer Security (TLS), when the TLS 4097 specifications are agreed and on the IETF standards track. 4099 For a detailed discussion of security considerations, see section 8. 4101 6. IANA Considerations (registered and private extensions) 4103 During the development of this standard, the IPP working group 4104 (working with IANA) will register additional keywords and enums while 4105 the standard is in the proposed and draft states according to the 4106 procedures described in this section. IANA will handle registration 4107 of additional enums after this standard is approved in cooperation 4108 with an IANA-appointed registration editor from the IPP working group 4109 according to the procedures described in this section. 4111 Expires April 14, 1998 4112 6.1 Typed Extensions 4114 This document uses prefixes to the "keyword" and "enum" basic syntax 4115 type in order to communicate extra information to the reader through 4116 its name. This extra information need not be represented in an 4117 implementation because it is unimportant to a client or Printer. The 4118 list below describes the prefixes and their meaning. 4120 "type1": The IPP standard must be revised to add a new keyword or 4121 a new enum. No private keywords or enums are allowed. 4123 "type2": Implementers can, at any time, add new keyword or enum 4124 values by proposing the specification to the IPP working group 4125 for registration (or an IANA-appointed registry advisor after the 4126 IPP working group is no longer certified) where they are reviewed 4127 for approval. IANA keeps the registry and assigned the number 4128 for enum values 4130 "type3": Implementers can, at any time, add new keyword and enum 4131 values by submitting the complete specification directly to IANA, 4132 no IPP working group or IANA-appointed registry advisor review is 4133 required. IANA keeps the registry and assigned the number for 4134 enum values 4136 "type4": Anyone (system administrators, system integrators, site 4137 managers, etc.) can, at any time, add new installation-defined 4138 values (keywords or new enum values) to a local system. Care 4139 SHOULD be taken by the implementers to see that keywords do not 4140 conflict with other keywords defined by the standard or as 4141 defined by the implementing product. There is no registration or 4142 approval procedure for type 4 keywords. 4144 By definition, each of the four types above assert some sort of 4145 registry or review process in order for extensions to be considered 4146 valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less 4147 stringent than the previous level. Therefore, any typeN value MAY be 4148 registered using a process for some typeM where M is less than N, 4149 however such registration is NOT REQUIRED. For example, a type4 value 4150 MAY be registered in a type 1 manner (by being included in a future 4151 version of an IPP specification) however it is NOT REQUIRED. 4153 This specification defines keyword and enum values for all of the 4154 above types, including type4 keywords. 4156 For private (unregistered) keyword extensions, implementers SHOULD use 4157 keywords with a suitable distinguishing prefix, such as "xxx-" where 4158 xxx is the (lowercase) fully qualified company name registered with 4159 IANA for use in domain names [RFC1035]. 4161 Expires April 14, 1998 4162 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 4163 letters are allowed in domain names, no significance is attached to 4164 the case. That is, two names with the same spelling but different 4165 case are to be treated as if identical. Also, the labels in a domain 4166 name must follow the rules for ARPANET host names: They must start 4167 with a letter, end with a letter or digit, and have as interior 4168 characters only letters, digits, and hyphen. Labels must be 63 4169 characters or less. Labels are separated by the "." character. 4171 For private (unregistered) enum extension, implementers SHOULD use 4172 values in the reserved integer range which is 2**30 to 2**31-1. 4174 6.2 Registration of MIME types/sub-types for document-formats 4176 The "document-format" attribute's syntax is "mimeType". This means 4177 that valid values are Internet media types. RFC 2045 [RFC2045] 4178 defines the syntax for valid Internet media types. Also, IANA is the 4179 registry for all Internet media types. 4181 6.3 Attribute Extensibility 4183 Attribute names are considered to be set of type2 keywords. 4184 Therefore, new attributes may be registered and have the same status 4185 as attributes in this document by following the type2 extension rules. 4187 6.4 Attribute Syntax Extensibility 4189 Attribute syntaxes are considered to be set of type2 enums. 4190 Therefore, new attribute syntaxes may be registered and have the same 4191 status as attribute syntaxes in this document by following the type2 4192 extension rules. 4194 7. Internationalization Considerations 4196 Some of the attributes have values that are text strings and names 4197 intended for human understanding rather than machine understanding. 4198 See the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 4199 4.1.2. 4201 In each operation request, the client SHALL identify the charset and 4202 natural language of the request which affects each supplied 'text' and 4203 'name' attribute value and requests the charset and natural language 4204 for attributes returned by the Printer object in operation responses 4205 and notifications as described in Section 3.1.3.1. In addition, the 4207 Expires April 14, 1998 4208 client MAY separately and individually identify the "exception" 4209 natural language of a supplied 'text' or 'name' attribute using the 4210 technique described for the 'text' attribute syntax in Section 4.1.1. 4212 The Printer object SHALL support the UTF-8 [RFC2044] charset in all 4213 'text' and 'name' attributes supported. If the Printer object 4214 supports more than the UTF-8 charset, the Printer object SHALL convert 4215 between them in order to return the requested charset to the client 4216 according to Section 3.1.3.2. If the Printer object supports more 4217 than one natural language, the Printer object SHOULD return 'text' and 4218 'name' values in the natural language requested for those that are 4219 generated by the Printer (see Section 3.1.3.1). 4221 For Printers that support multiple charsets and/or multiple natural 4222 languages in 'text' and 'name' attributes, different jobs may have 4223 been submitted in differing charsets and/or natural languages. All 4224 responses SHALL be returned in the charset requested by the client. 4225 However, the Get-Jobs operation provides for a mechanism to identify 4226 the differing natural languages with each job returned. 4228 The Printer object also has a configured charset and natural language 4229 attribute that it uses when the requested charset or natural language 4230 are not supported. The client can query the Printer object to 4231 determine the list of charsets and natural languages supported by the 4232 Printer object and what the Printer object's configured values are. 4233 See the "printer-charset", "charset-supported", "printer-natural- 4234 language", and "natural-language-supported" Printer description 4235 attributes. 4237 The 'text' and 'name' attributes specified in this version of this 4238 document (additional ones will be registered according to the 4239 procedures in Section 6) are: 4241 Operation Attributes: 4242 job-name (name) 4243 document-name (name) 4245 Job Attributes: 4246 job-name (name) 4247 job-originating-user (name) 4248 job-state-message (text) 4249 job-message-from-operator (text) 4251 Printer Attributes: 4252 printer-name (name) 4253 printer-location (text) 4255 Expires April 14, 1998 4256 printer-info (text) 4257 printer-make-and-model (text) 4258 printer-state-message (text) 4259 printer-message-from-operator (text) 4261 8. Security Considerations 4263 It is required that the IPP be able to operate within a secure 4264 environment. IPP attempts to make use of existing security protocols 4265 and services, wherever possible. Examples of such services include the 4266 Digest Access Authentication in HTTP 1.1 [RFC2069] and the Transport 4267 Layer Security (TLS) services, currently under development in the 4268 IETF. 4270 It is difficult to anticipate the security risks that might exist in 4271 any given IPP environment. For example, if IPP is used within a given 4272 corporation over a private network, the risks of exposing document 4273 data may be low enough that the corporation will choose not to use 4274 encryption on that data. However, if the connection between the 4275 client and the IPP object is over a public network, the client may 4276 wish to protect the content of the information during transmission 4277 through the network with encryption. 4279 Furthermore, the value of the information being printed may vary from 4280 one use of the protocol to the next. Printing payroll checks, for 4281 example, would have a different value than printing public information 4282 from a file. In addition, there is always the threat of a virus 4283 attack. However, there are no known viruses or potential for viruses 4284 that are self-propagated throughout distributed printing environments. 4285 Therefore, IPP implementations may choose to implement protection 4286 against printer-damaging print jobs. 4288 Since the security levels or the specific threats that any given IPP 4289 print administrator may be concerned with cannot be anticipated, IPP 4290 MUST be capable of operating with different security mechanisms and 4291 security policies as required by the individual installation. Security 4292 policies might vary from very strong, to very weak, to none at all, 4293 and corresponding security mechanisms will be required. 4295 The initial security needs of IPP are derived from two primary 4296 considerations: 4298 - First, the printing environments envisioned for IPP include 4299 configurations where the client, the Printer, and the document(s) 4300 to be printed may all exist in different security domains. When 4301 objects are in different security domains the requirements for 4303 Expires April 14, 1998 4304 authentication and message protection are much stronger than when 4305 they are in the same domain. 4307 - Second, the sensitivity and value of the content being printed 4308 will vary. For example, a publicly available document does not 4309 require the same level of privacy that a payroll document 4310 requires. There are at least two parties that have an interest in 4311 the value of the information being printed, the person asking to 4312 have the information printed and the person who originated the 4313 information. This brings into the picture the need to worry about 4314 copyrights and protection of the content. 4316 The following sections describe specific security attacks for IPP 4317 environments. Where examples are provided they should be considered 4318 illustrative of the environment and not an exhaustive set. Not all of 4319 these environments will necessarily be addressed in initial 4320 implementations of IPP. 4322 8.1 Client and Printer in the Same Security Domain 4324 This environment is typical of internal networks where traditional 4325 office workers print the output of personal productivity applications 4326 on shared work-group printers, or where batch applications print their 4327 output on large production printers. Although the identity of the user 4328 may be trusted in this environment, a user might want to protect the 4329 content of a document against such attacks as eavesdropping, replaying 4330 or tampering. 4332 8.2 Client and Printer in Different Security Domains 4334 Examples of this environment include printing a document created by 4335 the client on a publicly available printer, such as at a commercial 4336 print shop; or printing a document remotely on a business partner's 4337 printer. This latter operation is functionally equivalent to sending 4338 the document to the business partner as a facsimile. Printing 4339 sensitive information on a Printer in a different security domain 4340 requires strong security measures. In this environment authentication 4341 of the printer is required as well as protection against unauthorized 4342 use of print resources. Since the document crosses security domains, 4343 protection against eavesdropping and document tampering are also 4344 required. It will also be important in this environment to protect 4345 Printers against "spamming" and malicious document content code. 4347 Expires April 14, 1998 4348 8.3 Print by Reference 4350 When the document is not stored on the client, printing can be done by 4351 reference. That is, the print request can contain a reference, or 4352 pointer, to the document instead of the actual document itself. If the 4353 client physically gets the document before it prints it, then this 4354 defaults to one of the previous cases. 4356 8.3.1 Unprotected Documents 4358 In many cases, documents to be printed are literally available to 4359 anyone. Documents, such as this Internet Draft which are stored on 4360 anonymous FTP sites, are good examples of this. No security mechanisms 4361 are required to protect access to these documents. 4363 8.3.2 Protected Documents 4365 Clearly, there are cases where the nature of a document requires that 4366 access to it be protected by some authentication and/or authorization 4367 mechanism, or where the right to print the document must be paid for. 4368 This would be the case for sensitive or confidential information, or 4369 where documents are copyrighted or sold for profit. Unauthorized 4370 access to content is a major concern in this environment. Protection 4371 against eavesdropping, document tampering and unauthorized access to 4372 the document are also concerns if the content is sensitive. 4374 8.4 Common Security Scenarios 4376 As discussed earlier, we cannot anticipate the security levels or the 4377 specific threats that any given IPP print administrator may be 4378 concerned with. Security policies might vary from very strong, to 4379 very weak, to none at all. In this section we will describe what we 4380 believe to be four common usage scenarios. 4382 1) No security at all 4383 2) Message protection during transmission 4384 3) Client authentication and authorization 4385 4) Mutual authentication, authorization, and message protection 4387 8.4.1 No Security 4389 If the server requires no authorization and the client wants no 4390 message protection the client can send the print job, i.e., the job 4391 content and the job attributes without invoking any security 4392 mechanisms. The printer will print the job for the client. Print by 4394 Expires April 14, 1998 4395 reference also works well in this environment as long as no security 4396 mechanisms are required to access the documents to be printed. 4398 8.4.2 Message Protection During Transmission 4400 There are two types of security that could be used to provide message 4401 protection. These are channel security and object security. In the 4402 first case, the channel can be made secure using the Transport Layer 4403 Security (TLS) protocol, currently under development in the IETF. In 4404 the case of object security, each object is encrypted and sent over 4405 either a secure or insecure channel. The recipient has the 4406 corresponding key to decrypt the object and get the content. Several 4407 object security mechanisms are currently under study in the IETF. IPP 4408 neither mandates the use of these object security mechanisms nor does 4409 it prohibit the use of them. IPP will define a recommended mechanism 4410 for channel security, which is deemed more suitable to meet the IPP 4411 requirements. 4413 8.4.3 Client Authentication and Authorization 4415 This scenario requires client authentication. The authenticated user 4416 ID may be used for authorization purposes, and may be encrypted by the 4417 lower security layer. TLS supports both one sided and mutual 4418 authentication. IPP does not mandate the use of any specific 4419 authorization mechanism (see section 3.1.5.1). 4421 8.4.4 Mutual Authentication, Authorization and Message Protection 4423 This scenario requires mutual authentication and message protection. 4424 TLS can be used for this security feature in these configurations. 4426 8.5 Recommended Security Mechanisms 4428 IPP requires all IPP clients and Printers to support the 4429 authentication features in HTP 1.1 and intends to mandate TLS for 4430 scenarios requiring channel security, once these specifications have 4431 become stabilized. 4433 IPP implementations should provide a range of security options to meet 4434 the needs of different installations and user populations. Many of 4435 the security services that are enabled at a given site will be done so 4436 by a site administrator. The mechanisms used to establish these 4437 services and to define user IDs and passwords to the system are 4438 implementation defined and outside the scope of IPP. 4440 The security protocol used by a particular IPP operation will depend 4441 upon the security services implemented on the Printer, the security 4443 Expires April 14, 1998 4444 policy established by a site administrator, and the selection made by 4445 the client. This requires that the right handshake messages be passed 4446 to invoke the selected security service. These are described in the 4447 references for each security mechanism and are normally invoked by the 4448 client. The "security-mechanisms-supported" and "printer-more-info" 4449 attributes can be queried to help the end user know what to expect in 4450 terms of security. These attributes should also appear in the 4451 directory entry for each Printer. 4453 Note: When utilizing HTTP/1.1 as a transport for IPP [IPP-PRO], the 4454 security considerations outlined in HTTP/1.1 apply. When set by an 4455 administrator, IPP servers MUST generate a 401 (Unauthorized) response 4456 code to request client authentication and IPP clients should correctly 4457 respond with the proper Authorization header. Both basic 4458 authentication and digest authentication flavors of authentication 4459 should be supported. The administrator chooses which type(s) of 4460 authentication to accept. Digest authentication is a more secure 4461 method and is always preferred to basic authentication. 4463 For secure communication (privacy in particular), IPP should be run 4464 using a secure communications channel. TLS provides secure 4465 communications channels and provides for mutual authentication. The 4466 secure communications channel must be initiated prior to running the 4467 IPP protocol. There is no mechanism for bootstrapping a secure 4468 communication channel from within the IPP protocol itself. 4470 It is possible to combine a secure communication channel with either 4471 Basic or Digest Authentication. 4473 For a Printer object that supports only non-secure access, the Printer 4474 object supports only the "printer-uri" attribute. For a Printer 4475 object that supports only secure access, the Printer object supports 4476 only the "printer-tls-uri". For a Printer object that supports both 4477 secure and non-secure access, the Printer object supports both the 4478 "printer-uri" and the "printer-tls-uri" attributes. 4480 9. References 4482 [ASCII] 4483 Coded Character Set - 7-bit American Standard Code for 4484 Information Interchange (ASCII), ANSI X3.4-1986. This standard is 4485 the specification of the 'US-ASCII' charset. 4487 [CS-POL] 4488 H. Alvestrand, "IETF Policy on Character Sets and Languages, work 4489 in progress , August 29, 4490 1997. 4492 Expires April 14, 1998 4494 [HTPP] 4495 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 4496 Printing Protocol - HTPP/1.0", October 1996, 4497 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ overview.ps.gz 4499 [IANA-CS] 4500 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 4501 notes/iana/assignments/character-sets 4503 [IANA-CSa] 4504 N. Freed, J. Postel: IANA CharSet Registration Procedures, Work 4505 in Progress (draft-freed-charset-reg-02.txt). 4507 [IANA-MT] 4508 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 4509 notes/iana/assignments/media-types/ 4511 [IPP-PRO] 4512 Herriot, R. (et al), " Internet Printing Protocol/1.0: Protocol 4513 Specifications", draft-ipp-pro-03.txt, November, 1997. 4515 [IPP-RAT] 4516 Zilles, S., "Rationale for the Structure and Model and Protocol 4517 for the Internet Printing Protocol", draft-ipp-rat-01.txt, 4518 November, 1997. 4520 [IPP-REQ] 4521 Wright, D., "Requirements for an Internet Printing Protocol", 4522 draft-ipp-req-01.txt, November, 1997. 4524 [ISO10646-1] 4525 ISO/IEC 10646-1:1993, "Information technology -- Universal 4526 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture 4527 and Basic Multilingual Plane, JTC1/SC2." 4529 [ISO8859-1] 4530 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 4531 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, 4532 JTC1/SC2. 4534 [ISODPA] 4535 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 4537 [LDPA] 4538 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 4539 Zehler, "LDPA - Lightweight Document Printing Application", 4540 October 1996, 4541 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 4543 Expires April 14, 1998 4545 [P1387.4] 4546 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 4547 Interfaces, POSIX 1387.4 D8, 1994. 4549 [PSIS] Herriot, R. (editor), X/Open A Printing System 4550 Interoperability Specification (PSIS), August 1995. 4552 [RFC1035] 4553 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 4554 SPECIFICATION", RFC 1035, November 1987. 4556 [RFC1179] 4557 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 4558 1179, August 1990. 4560 [RFC1514] 4561 ?, " ", RFC 1514, ?. 4563 [RFC1521] 4564 Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 4565 Extensions) Part One: Mechanism for Specifying and Describing the 4566 Format of Internet Message Bodies", RFC 1521, September, 1993. 4568 [RFC1630] 4569 T. Berners-Lee, "Universal Resource Identifiers in WWW: A 4570 Unifying Syntax for the Expression of Names and Addresses of 4571 Objects on the Network as used in the World-Wide Web", RFC 1630, 4572 June 1994. 4574 [RFC1738] 4575 Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 4576 Locators (URL)", RFC 1738, December, 1994. 4578 [RFC1759] 4579 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 4580 J., "Printer MIB", RFC 1759, March 1995. 4582 [RFC1766] 4583 H. Alvestrand, " Tags for the Identification of Languages", RFC 4584 1766, March 1995. 4586 [RFC1808] 4587 ?, " ", RFC 1808, ?. 4589 [RFC1825] 4590 R. Atkinson, "Security Architecture for the Internet Protocol", 4591 RFC 1825, August 1995 4593 Expires April 14, 1998 4595 [RFC1903] 4596 ?, " ", RFC 1903, ?. 4598 [RFC2044] 4599 F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 4600 10646", RFC 2044, October 1996. 4602 [RFC2068] 4603 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, 4604 "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 4606 [RFC2069] 4607 J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, 4608 E. Sink, L. Stewart, "An Extension to HTTP: Digest Access 4609 Authentication", RFC-2069, Jan 1997. 4611 [RFC2119] 4612 S. Bradner, "Key words for use in RFCs to Indicate Requirement 4613 Levels", RFC 2119 , March 1997 4615 [RFC2130] 4616 ?, " ", RFC 2130, ?. 4618 [RFC2045] 4619 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 4620 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 4621 November 1996. 4623 [RFC2046] 4624 Multipurpose Internet Mail Extensions (MIME) Part Two: Media 4625 Types. N. Freed & N. Borenstein. November 1996. (Obsoletes 4626 RFC1521, RFC1522, RFC1590), RFC 2046. 4628 [RFC2048] 4629 Multipurpose Internet Mail Extension (MIME) Part Four: 4630 Registration Procedures. N. Freed, J. Klensin & J. Postel. 4631 November 1996. (Format: TXT=45033 bytes) (Obsoletes RFC1521, 4632 RFC1522, RFC1590) (Also BCP0013), RFC 2048. 4634 [RFC2184] 4635 N. Fried, K. Moore, "MIME Parameter Value and Encoded Word 4636 Extensions: Character Sets, Languages, and Continuations", RFC 4637 2184, August 1997 4639 [SWP] 4640 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", 4641 May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 4643 Expires April 14, 1998 4645 10. Copyright Notice 4647 Copyright (C) The Internet Society (date). All Rights Reserved. 4649 This document and translations of it may be copied and furnished to 4650 others, and derivative works that comment on or otherwise explain it 4651 or assist in its implementation may be prepared, copied, published and 4652 distributed, in whole or in part, without restriction of any kind, 4653 provided that the above copyright notice and this paragraph are 4654 included on all such copies and derivative works. However, this 4655 document itself may not be modified in any way, such as by removing 4656 the copyright notice or references to the Internet Society or other 4657 Internet organizations, except as needed for the purpose of 4658 developing Internet standards in which case the procedures for 4659 copyrights defined in the Internet Standards process must be followed, 4660 or as required to translate it into languages other than English. 4662 The limited permissions granted above are perpetual and will not be 4663 revoked by the Internet Society or its successors or assigns. 4665 This document and the information contained herein is provided on an 4666 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING 4667 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT 4668 NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN 4669 WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 4670 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 4672 11. Author's Address 4674 Scott A. Isaacson (Editor) 4675 Novell, Inc. 4676 122 E 1700 S 4677 Provo, UT 84606 4679 Phone: 801-861-7366 4680 Fax: 801-861-4025 4681 EMail: scott_isaacson@novell.com 4683 Tom Hastings 4684 Xerox Corporation 4685 701 S. Aviation Blvd. 4686 El Segundo, CA 90245 4688 Expires April 14, 1998 4689 Phone: 310-333-6413 4690 Fax: 310-333-5514 4691 EMail: hastings@cp10.es.xerox.com 4693 Robert Herriot 4694 Sun Microsystems Inc. 4695 901 San Antonio.Road, MPK-17 4696 Palo Alto, CA 94303 4698 Phone: 415-786-8995 (Area code change to 650 in August 1997) 4699 Fax: 415-786-7077 (Area code change to 650 in August 1997) 4700 Email: robert.herriot@eng.sun.com 4702 Roger deBry 4703 HUC/003G 4704 IBM Corporation 4705 P.O. Box 1900 4706 Boulder, CO 80301-9191 4708 Phone: (303) 924-4080 4709 Fax: (303) 924-9889 4710 Email: debry@vnet.ibm.com 4712 Patrick Powell 4713 San Diego State University 4714 9475 Chesapeake Dr., Suite D 4715 San Diego, CA 95123 4717 Phone: (619) 874-6543 4718 Fax: (619) 279-8424 4719 Email: papowell@sdsu.edu 4721 IPP Mailing List: ipp@pwg.org 4722 IPP Mailing List Subscription: ipp-request@pwg.org 4723 IPP Web Page: http://www.pwg.org/ipp/ 4725 Other Participants: 4727 Chuck Adams - Tektronix 4728 Jeff Barnett - IBM 4729 Ron Bergman - Dataproducts Corp. 4730 Sylvan Butler, HP 4731 Keith Carter, IBM Corporation 4732 Jeff Copeland - QMS 4733 Andy Davidson - Tektronix 4734 Mabry Dozier - QMS 4735 Lee Farrell - Canon Information Systems 4736 Steve Gebert - IBM 4738 Expires April 14, 1998 4739 Babek Jahromi, Microsoft 4740 David Kellerman - Northlake Software 4741 Rick Landau - Digital 4742 Harry Lewis - IBM 4743 Pete Loya - HP 4744 Ray Lutz - Cognisys Mike MacKay, Novell, Inc. 4745 Carl-Uno Manros, Xerox, Corp. 4746 Jay Martin - Underscore 4747 Stan McConnell - Xerox 4748 Ira McDonald, High North Inc. Paul Moore, Microsoft 4749 Pat Nogay - IBM 4750 Bob Pentecost - HP 4751 Rob Rhoads - Intel 4752 David Roach - Unisys 4753 Stuart Rowley, Kyocera 4754 Hiroyuki Sato - Canon 4755 Bob Setterbo - Adobe 4756 Devon Taylor, Novell, Inc. 4757 Mike Timperman - Lexmark 4758 Randy Turner - Sharp 4759 Atsushi Yuki - Kyocera 4760 Lloyd Young - Lexmark 4761 Bill Wagner - DPI 4762 Jim Walker - DAZEL 4763 Chris Wellens - Interworking Labs 4764 Rob Whittle - Novell 4765 Don Wright - Lexmark 4766 Peter Zehler, Xerox, Corp. 4767 Steve Zilles, Adobe 4769 Expires April 14, 1998 4771 12. APPENDIX A: Terminology 4773 This specification uses the terminology defined in this section. 4775 12.1 Conformance Terminology 4777 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 4778 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 4779 document are to be interpreted as described in RFC 2119 [RFC2119]. The 4780 sections below reiterate these definitions and include some additional 4781 ones. 4783 12.1.1 MUST 4785 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 4786 that the definition is an absolute requirement of the specification. 4788 12.1.2 MUST NOT 4790 This phrase, or the phrase "SHALL NOT", means that the definition is 4791 an absolute prohibition of the specification. 4793 12.1.3 SHOULD 4795 This word, or the adjective "RECOMMENDED", means that there may exist 4796 valid reasons in particular circumstances to ignore a particular item, 4797 but the full implications must be understood and carefully weighed 4798 before choosing a different course. 4800 12.1.4 SHOULD NOT 4802 This phrase, or the phrase "NOT RECOMMENDED" means that there may 4803 exist valid reasons in particular circumstances when the particular 4804 behavior is acceptable or even useful, but the full implications 4805 should be understood and the case carefully weighed before 4806 implementing any behavior described with this label. 4808 12.1.5 MAY 4810 This word, or the adjective "OPTIONAL", means that an item is truly 4811 optional. One vendor may choose to include the item because a 4812 particular marketplace requires it or because the vendor feels that it 4813 enhances the product while another vendor may omit the same item. An 4814 implementation which does not include a particular option MUST be 4815 prepared to interoperate with another implementation which does 4816 include the option, though perhaps with reduced functionality. In the 4818 Expires April 14, 1998 4819 same vein an implementation which does include a particular option 4820 MUST be prepared to interoperate with another implementation which 4821 does not include the option (except, of course, for the feature the 4822 option provides.) 4824 12.1.6 NEED NOT 4826 The verb "NEED NOT" indicates an action that the subject of the 4827 sentence does not have to implement in order to claim conformance to 4828 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 4829 "MAY NOT" sounds like a prohibition. 4831 12.2 Model Terminology 4833 12.2.1 Keyword 4835 Keywords are used within this document as identifiers of semantic 4836 entities within the abstract model. Attribute names, some attribute 4837 values, attribute syntaxes, and attribute group names are represented 4838 as keywords. In this document, a keyword is a sequence of characters 4839 (length of 1 to 255) which consists of the following ASCII characters: 4840 lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), 4841 period ("."), and underscore ("_"). A keyword starts with a lower- 4842 case letter. 4844 12.2.2 Attributes 4846 An attribute is an item of information that is associated with an 4847 instance of an IPP object. An attribute consists of an attribute name 4848 and an attribute value(s). Each attribute has a specific syntax. All 4849 attributes are defined in section 4. 4851 Job Template Attributes described in section 4.2. The client 4852 optionally supplies Job Template attributes in a create request 4853 (operation requests that create Job objects). The Printer object has 4854 associated attributes which define supported and default values for 4855 the Printer. 4857 12.2.2.1 Attribute Name 4859 Each attribute is uniquely identified in this document by its 4860 attribute name. An attribute name is a keyword. The keyword 4861 attribute name is given in the section header describing that 4862 attribute. In running text in this document, attribute names are 4863 indicated inside double quotation marks (") where the quotation marks 4864 are not part of the keyword itself. 4866 Expires April 14, 1998 4867 12.2.2.2 Attribute Group Name 4869 Related attributes are grouped into named groups. The name of the 4870 group is a keyword. The group name may be used in place of naming all 4871 the attributes in the group explicitly. Attribute groups are defined 4872 in section 3. 4874 12.2.2.3 Attribute Value 4876 Each attribute has one or more values. Attribute values are 4877 represented in the syntax type specified for that attribute. In 4878 running text in this document, attribute values are indicated inside 4879 single quotation marks ('), whether their attribute syntax is keyword, 4880 integer, text, etc. where the quotation marks are not part of the 4881 value itself. 4883 12.2.2.4 Attribute Syntax 4885 Each attribute is defined using an explicit syntax type. In this 4886 document, each syntax type is defined as a keyword with specific 4887 meaning. The protocol specification document [IPP-PRO] indicates the 4888 actual "on-the-wire" encoding rules for each syntax type. Attribute 4889 syntax types are defined in section 4.1. 4891 12.2.3 Supports 4893 By definition, a Printer object supports an attribute only if that 4894 Printer object responds with the corresponding attribute populated 4895 with some value(s) in a response to a query for that attribute. A 4896 Printer object supports an attribute value if the value is one of 4897 Printer object's "supported values" attributes. The device behind a 4898 Printer object may exhibit a behavior that corresponds to some IPP 4899 attribute, but if the Printer object, when queried for that attribute, 4900 doesn't respond with the attribute, then as far as IPP is concerned, 4901 that implementation does not support that feature. If the Printer 4902 object supports Job Template attribute "foo" then it supports both a 4903 "foo-default" default value attribute and a "foo-supported" supported 4904 values attribute. If the Printer object's "foo-supported" attribute 4905 is not populated with some value (even if that value is a legal value 4906 for that attribute), then that Printer object does not support that 4907 value. 4909 A conforming implementation SHALL support all MANDATORY attributes. 4910 However, even for MANDATORY attributes, conformance to IPP does not 4911 mandate that all implementations support all possible values 4912 representing all possible job processing behaviors and features. For 4913 example, if a given instance of a Printer supports only certain 4914 document formats, then that Printer responds with the "document- 4916 Expires April 14, 1998 4917 format-supported" attribute populated with a set of values, possibly 4918 only one, taken from the entire set of possible values defined for 4919 that attribute. This limited set of values represents the Printer's 4920 set of supported document formats. Supporting an attribute and some 4921 set of values for that attribute enables IPP end users to be aware of 4922 and make use of those features associated with that attribute and 4923 those values. If an implementation chooses to not support an 4924 attribute or some specific value, then IPP end users would have no 4925 ability to make use of that feature within the context of IPP itself. 4926 However, due to existing practice and legacy systems which are not IPP 4927 aware, there might be some other mechanism outside the scope of IPP to 4928 control or request the "unsupported" feature (such as embedded 4929 instructions within the document data itself). 4931 For example, consider the "finishings-supported" attribute. If a 4932 Printer is not physically capable of stapling, the "finishings- 4933 supported" attribute MUST NOT be populated with the value of 'staple'. 4934 If a Printer is physically capable of stapling, an implementation MAY 4935 choose to support the "finishings-supported" attribute and the value 4936 of 'staple'. Doing so, would enable end users to be aware of and make 4937 use of the stapling feature. Without support for the value 'staple', 4938 an IPP end user would have no means within the protocol itself to 4939 request that a Job be stapled. However an existing document data 4940 formatter might be able to request that the document be stapled 4941 directly within the document data itself. In this case, the IPP 4942 implementation does not "support" stapling, however the end user is 4943 still able to have some control over the stapling of the completed 4944 job. 4946 Even though support for Job Template attributes by a Printer object is 4947 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 4948 is capable of realizing any feature or function that corresponds to an 4949 IPP attribute and some associated value, then that implementation 4950 support that IPP attribute and value. 4952 The set of values in any of the supported value attributes is set 4953 (populated) by some administrative process or automatic sensing 4954 mechanism that is outside the scope of IPP. For administrative policy 4955 and control reasons, an administrator may choose to make only a subset 4956 of possible values visible to the end user. In this case, the real 4957 output device behind the IPP Printer abstraction may be capable of a 4958 certain feature, however an administrator is specifying that access to 4959 that feature not flow back to the end user through the IPP protocol. 4960 Also, since a Printer object may represent a logical print device (not 4961 just a physical devices) the actual process for supporting a value is 4962 undefined and left up to the implementation. However, if a Printer 4963 object supports a value, some manual human action may be needed to 4964 realize the semantic action associated with the value, but no end user 4966 Expires April 14, 1998 4967 action is required. For example, if one of the values in the 4968 "finishings-supported" attribute is 'staple', the actual process might 4969 be an automatic staple action by a physical device controlled by some 4970 command sent to the device. Or, the actual process of stapling might 4971 be a manual action by an operator at an operator attended Printer 4972 object. For another example of how supported attributes function, 4973 consider an system administrator that desire to control all print jobs 4974 so that no cover sheets are printed in order to conserve paper. To 4975 force no job sheets, the system administrator sets the only supported 4976 value for the "job-sheets-supported" attribute to 'none'. In this 4977 case, if a client requests anything except 'none', the create request 4978 is rejected (depending on the value of "ipp-attribute-fidelity" of 4979 course). To force the use of banner pages on all jobs, the 4980 administrator does not include the value 'none' in the "job-sheets- 4981 supported" attribute. In this case, if a client requests 'none', the 4982 create request is rejected (again depending on the value of "ipp- 4983 attribute-fidelity"). 4985 12.2.4 print-stream page 4987 A "print-stream page" is a page according to the definition of pages 4988 in the language used to express the document data. 4990 12.2.5 imposed page 4992 An "imposed page" is a page created by placing N print-stream pages 4993 onto a single media page. 4995 13. APPENDIX B: Status Codes 4997 This section defines status code keywords that are used to provide 4998 semantic information on the results of an operation request. Each 4999 operation response MUST include a status code. For error type status 5000 codes, the response MAY also contain a status message that provides a 5001 short textual description of the status. The status code is intended 5002 for use by automata, and the status message is intended for the human 5003 end user. Since the status message is an OPTIONAL component of the 5004 operation response, an IPP application (i.e. a browser, GUI, print 5005 driver or gateway) is NOT REQUIRED to examine or display the status 5006 message. 5008 The prefix of the status keyword defines the class of response as 5009 follows: 5011 "informational" - Request received, continuing process 5012 "successful" - The action was successfully received, understood, 5013 and accepted 5015 Expires April 14, 1998 5017 "redirection" - Further action must be taken in order to complete 5018 the request 5019 "client-error" - The request contains bad syntax or cannot be 5020 fulfilled 5021 "server-error" - The server failed to fulfill an apparently valid 5022 request 5024 Since IPP status codes are type2 enums, they are extensible. IPP 5025 applications are NOT REQUIRED to understand the meaning of all 5026 registered status codes, though such understanding is obviously 5027 desirable. However, applications SHALL understand the class of any 5028 status code, as indicated by the prefix, and treat any unrecognized 5029 response as being equivalent to the first status code of that class, 5030 with the exception that an unrecognized response shall not be cached. 5031 For example, if an unrecognized status code of "client-error-foo-bar" 5032 is received by the client, it can safely assume that there was 5033 something wrong with its request and treat the response as if it had 5034 received a "client-error-bad-request" status code. In such cases, IPP 5035 applications SHOULD present the OPTIONAL message (if present) to the 5036 end user since the message is likely to contain human readable 5037 information which will help to explain the unusual status. 5039 13.1 Status Codes 5041 Each status code is described below. Section 13.2 contains a table 5042 that indicates which status codes apply to which operations. 5044 13.1.1 Informational 5046 This class of status code indicates a provisional response and is to 5047 be used for informational purposes only. 5049 There are no status codes defined in IPP 1.0 for this class of status 5050 code. 5052 13.1.2 Successful Status Codes 5054 This class of status code indicates that the client's request was 5055 successfully received, understood, and accepted. 5057 13.1.2.1 successful-ok (0x0000) 5059 The request has succeeded. 5061 Expires April 14, 1998 5062 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 5064 The request has succeeded, but since ignoring or substituting of 5065 values was requested ("ipp-attribute-fidelity" set to 'false' in the 5066 create request), some attributes were ignored or unsupported values 5067 were substituted with supported values in order to process the job 5068 without rejecting it. 5070 13.1.3 Redirection Status Codes 5072 This class of status code indicates that further action needs to be 5073 taken to fulfill the request. 5075 There are no status codes defined in IPP 1.0 for this class of status 5076 code. 5078 13.1.4 Client Error Status Codes 5080 This class of status code is intended for cases in which the client 5081 seems to have erred. The server SHOULD return a message containing an 5082 explanation of the error situation and whether it is a temporary or 5083 permanent condition. 5085 13.1.4.1 client-error-bad-request (0x0400) 5087 The request could not be understood by the server due to malformed 5088 syntax. The IPP application SHOULD NOT repeat the request without 5089 modifications. 5091 13.1.4.2 client-error-forbidden (0x0401) 5093 The server understood the request, but is refusing to fulfill it. 5094 Additional authentication information or authorization credentials 5095 will not help and the request SHOULD NOT be repeated. This status 5096 code is commonly used when the server does not wish to reveal exactly 5097 why the request has been refused or when no other response is 5098 applicable. 5100 13.1.4.3 client-error-not-authenticated (0x0402) 5102 The request requires user authentication. The IPP client may repeat 5103 the request with suitable authentication information. If the request 5104 already included authentication information, then this status code 5105 indicates that authorization has been refused for those credentials. 5106 If this response contains the same challenge as the prior response, 5107 and the user agent has already attempted authentication at least once, 5108 then the response message may contain relevant diagnostic information. 5110 Expires April 14, 1998 5111 This status codes reveals more information than "client-error- 5112 forbidden" and "client-error-not-authenticated". 5114 13.1.4.4 client-error-not-authorized (0x0403) 5116 The requester is not authorized to perform the request. Additional 5117 authentication information or authorization credentials will not help 5118 and the request SHOULD NOT be repeated. This status code is used when 5119 the server wishes to reveal that the authentication information is 5120 understandable, however, the requester is explicitly not authorized to 5121 perform the request. This status codes reveals more information than 5122 "client-error-forbidden" and "client-error-not-authenticated". 5124 13.1.4.5 client-error-not-possible (0x0404) 5126 This status code is used when the request is for something that can 5127 not happen. For example, there might be a request to cancel a job 5128 that has already been canceled or aborted by the system. The IPP 5129 client SHOULD NOT repeat the request. 5131 13.1.4.6 client-error-timeout (0x0405) 5133 The client did not produce a request within the time that the server 5134 was prepared to wait. For example, a client issued a Create-Job 5135 operation and then, after a long period of time, issued a Send- 5136 Document operation and this error status code was returned in response 5137 to the Send-Document request. The server might have been forced to 5138 clean up resources that had been held for the waiting additional 5139 Documents. The server was forced to close the Job since the client 5140 took too long. The client SHOULD NOT repeat the request without 5141 modifications. 5143 13.1.4.7 client-error-not-found (0x0406) 5145 The server has not found anything matching the request URI. No 5146 indication is given of whether the condition is temporary or 5147 permanent. For example, a client with an old reference to a Job (a 5148 URI) tries to cancel the Job, however in the mean time the Job might 5149 have been completed and all record of it at the Printer has been 5150 deleted. This status code, 'client-error-not-found' is returned 5151 indicating that the referenced Job can not be found. This error 5152 status code is also used when a client supplies a URI as a reference 5153 to the document data in either a Print-URI or Send-URI operation 5154 however the document can not be found. 5156 In practice, an IPP application should avoid a not found situation by 5157 first querying and presenting a list of valid Printer URIs and Job 5158 URIs to the end-user. 5160 Expires April 14, 1998 5161 13.1.4.8 client-error-gone (0x0407) 5163 The requested object is no longer available at the server and no 5164 forwarding address is known. This condition should be considered 5165 permanent. Clients with link editing capabilities should delete 5166 references to the request URI after user approval. If the server does 5167 not know or has no facility to determine, whether or not the condition 5168 is permanent, the status code "client-error-not-found" should be used 5169 instead. 5171 This response is primarily intended to assist the task of web 5172 maintenance by notifying the recipient that the resource is 5173 intentionally unavailable and that the server owners desire that 5174 remote links to that resource be removed. It is not necessary to mark 5175 all permanently unavailable resources as "gone" or to keep the mark 5176 for any length of time -- that is left to the discretion of the server 5177 owner. 5179 13.1.4.9 client-error-request-entity-too-large (0x0408) 5181 The server is refusing to process a request because the request entity 5182 is larger than the server is willing or able to process. An IPP 5183 Printer returns this status code when it limits the size of print jobs 5184 and it receives a print job that exceeds that limit or when the 5185 attributes are so many that their encoding causes the request entity 5186 to exceed server capacity. 5188 13.1.4.10 client-error-request-URI-too-long (0x0409) 5190 The server is refusing to service the request because the request URI 5191 is longer than the server is willing to interpret. This rare 5192 condition is only likely to occur when a client has improperly 5193 submitted a request with long query information (e.g. an IPP 5194 application allows an end-user to enter an invalid URI), when the 5195 client has descended into a URI "black hole" of redirection (e.g., a 5196 redirected URI prefix that points to a suffix of itself), or when the 5197 server is under attack by a client attempting to exploit security 5198 holes present in some servers using fixed-length buffers for reading 5199 or manipulating the Request-URI. 5201 13.1.4.11 client-error-unsupported-document-format (0x040A) 5203 The server is refusing to service the request because the document 5204 data is in a format, as specified in the "document-format" input 5205 attribute, that is not supported by the Printer object. 5207 Expires April 14, 1998 5208 13.1.4.12 client-error-attribute-not-supported (0x040B) 5210 For a Create-Job, Print-Job or Validate-Job operation, if the IPP 5211 Printer does not support one or more attributes or attribute values 5212 supplied in the request, the Printer shall return this status. For 5213 example, if the request indicates 'iso-a4' media, but that media type 5214 is not supported by the Printer. Or, if the client supplies an 5215 optional attribute and the attribute itself is not even supported by 5216 the Printer. If "ipp-attribute-fidelity" is set to false, the Printer 5217 can ignore or substitute values for unsupported attributes and values 5218 rather than reject the request and return this status code. 5220 For a Get-Jobs operation, if the IPP Printer does not support one of 5221 the requested attributes, the Printer shall return this status. 5223 In practice, an IPP application should avoid this situation by 5224 querying an IPP Printer for its valid attributes and values before 5225 performing an operation on the Printer. 5227 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 5229 The type of the client supplied URI in a Print-URI or a Send-URI 5230 operation is not supported. 5232 13.1.4.14 client-error-charset-not-supported (0x040D) 5234 For any operation, if the IPP Printer does not support the charset 5235 supplied by the client in the "attributes-charset" operation 5236 attribute, the Printer SHALL reject the operation and return this 5237 status (see Section 3.1.3.1). 5239 13.1.4.15 client-error-natural-language-not-supported (0x040E) 5241 For any operation, if the IPP Printer does not support the natural 5242 language supplied by the client in the "attributes-natural-language" 5243 operation attribute and the implementation has chosen to reject the 5244 operation, the Printer SHALL return this status (see Section 3.1.3.1). 5246 13.1.5 Server Error Status Codes 5248 This class of status codes indicates cases in which the server is 5249 aware that it has erred or is incapable of performing the request. 5250 The server SHOULD include a message containing an explanation of the 5251 error situation, and whether it is a temporary or permanent condition. 5253 Expires April 14, 1998 5254 13.1.5.1 server-error-internal- error (0x0500) 5256 The server encountered an unexpected condition that prevented it from 5257 fulfilling the request. This error status code differs from "server- 5258 error-temporary-error" in that it implies a more permanent type of 5259 internal error. It also differs from "server-error-device-error" in 5260 that it implies an unexpected condition (unlike a paper-jam or out-of- 5261 toner problem which is undesirable but expected). This error status 5262 code indicates that probably some knowledgeable human intervention is 5263 required. 5265 13.1.5.2 server-error-operation-not-supported (0x0501) 5267 The server does not support the functionality required to fulfill the 5268 request. This is the appropriate response when the server does not 5269 recognize an operation or is not capable of supporting it. 5271 13.1.5.3 server-error-service-unavailable (0x0502) 5273 The server is currently unable to handle the request due to a 5274 temporary overloading or maintenance of the server. The implication 5275 is that this is a temporary condition which will be alleviated after 5276 some delay. If known, the length of the delay may be indicated in the 5277 message. If no delay is given, the IPP application should handle the 5278 response as it would for a "server-error-temporary-internal-error" 5279 response. If the condition is more permanent, the error status codes 5280 "client-error-gone" or "client-error-not-found" could be used. 5282 13.1.5.4 server-error-version-not-supported (0x0503) 5284 The server does not support, or refuses to support, the IPP protocol 5285 version that was used in the request message. The server is 5286 indicating that it is unable or unwilling to complete the request 5287 using the same version as supplied in the request other than with this 5288 error message. The response should contain a Message describing why 5289 that version is not supported and what other versions are supported by 5290 that server. 5292 A conforming IPP client shall specify the valid version (IPP 1.0)on 5293 each request. A conforming IPP server (IPP 1.0) SHALL NOT return this 5294 status code to a conforming IPP 1.0 client. An IPP server shall 5295 return this status code to a non-conforming IPP client. 5297 13.1.5.5 server-error-device-error (0x0504) 5299 A printer error, such as a paper jam, occurs while the IPP Printer 5300 processes a Print or Send operation. The response contains the true 5301 Job Status (the values of the "job-state" and "job-state-reasons" 5303 Expires April 14, 1998 5304 attributes). Additional information can be returned in the optional 5305 "job-state-message" attribute value or in the OPTIONAL status message 5306 that describes the error in more detail. This error status code is 5307 only returned in situations where the Printer is unable to accept the 5308 create request because of such a device error. For example, if the 5309 Printer is unable to spool, and can only accept one job at a time, the 5310 reason it might reject a create request is that the printer currently 5311 has a paper jam. In many cases however, where the Printer object can 5312 accept the request even though the Printer has some error condition, 5313 the 'successful-ok' status code will be returned. In such a case, the 5314 client would look at the returned Job Object Attributes or later query 5315 the Printer to determine its state and state reasons. 5317 13.1.5.6 server-error-temporary-error (0x0505) 5319 A temporary error such as a buffer full write error, a memory overflow 5320 (i.e. the document data exceeds the memory of the Printer), or a disk 5321 full condition, occurs while the IPP Printer processes an operation. 5322 The client MAY try the unmodified request again at some later point in 5323 time with an expectation that the temporary internal error condition 5324 may have been cleared. 5326 Expires April 14, 1998 5327 13.2 Status Codes for IPP Operations 5329 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 5330 SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs 5331 C = Cancel-Job 5333 IPP Operations 5334 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 5335 ------------------ -- -- -- -- -- - -- -- - 5336 successful-OK x x x x x x x x x 5337 successful-ok-ignored-or-substituted- x x x x x x 5338 attributes 5339 client-error-bad-request x x x x x x x x x 5340 client-error-not-authenticated x x x x x x x x x 5341 client-error-not-authorized x x x x x x x x x 5342 client-error-forbidden x x x x x x x x x 5343 client-error-not-possible x x x x x x x x x 5344 client-error-not-found x x x x x x x x x 5345 client-error-timeout x x x x x x x x x 5346 client-error-gone x x x x x x x x x 5347 client-error-request-entity-too-large x X X X X X X X X 5348 client-error-request-URI-too-long x x x x x x x x x 5349 client-error-unsupported-document-format x x x x 5350 client-error-attribute-value-not- x x x x 5351 supported 5352 server-error-internal-error x x x x x x x x x 5353 server-error-service-unavailable x x x x x x x x x 5354 server-error-timeout x x x x x x x x x 5355 server-error-HTTP-version-not-supported x x x x x x x x x 5356 server-error-IPP-version-not-supported x x x x x x x x x 5357 server-error-device-error x x x x x 5358 server-error-temporary-error x x x x x 5360 14. APPENDIX C: "media" keyword values 5362 Standard keyword values are taken from several sources. 5364 Standard values are defined (taken from DPA[ISODPA] and the Printer 5365 MIB[RFC1759]): 5367 'default': The default medium for the output device 5368 'iso-a4-white': Specifies the ISO A4 white medium 5369 'iso-a4-colored': Specifies the ISO A4 colored medium 5370 'iso-a4-transparent' Specifies the ISO A4 transparent medium 5371 'iso-a3-white': Specifies the ISO A3 white medium 5372 'iso-a3-colored': Specifies the ISO A3 colored medium 5373 'iso-a5-white': Specifies the ISO A5 white medium 5375 Expires April 14, 1998 5376 'iso-a5-colored': Specifies the ISO A5 colored medium 5377 'iso-b4-white': Specifies the ISO B4 white medium 5378 'iso-b4-colored': Specifies the ISO B4 colored medium 5379 'iso-b5-white': Specifies the ISO B5 white medium 5380 'iso-b5-colored': Specifies the ISO B5 colored medium 5381 'jis-b4-white': Specifies the JIS B4 white medium 5382 'jis-b4-colored': Specifies the JIS B4 colored medium 5383 'jis-b5-white': Specifies the JIS B5 white medium 5384 'jis-b5-colored': Specifies the JIS B5 colored medium 5386 The following standard values are defined for North American media: 5388 'na-letter-white': Specifies the North American letter white medium 5389 'na-letter-colored': Specifies the North American letter colored 5390 medium 5391 'na-letter-transparent': Specifies the North American letter 5392 transparent medium 5393 'na-legal-white': Specifies the North American legal white medium 5394 'na-legal-colored': Specifies the North American legal colored 5395 medium 5397 The following standard values are defined for envelopes: 5399 'iso-b4-envelope': Specifies the ISO B4 envelope medium 5400 'iso-b5-envelope': Specifies the ISO B5 envelope medium 5401 'iso-c3-envelope': Specifies the ISO C3 envelope medium 5402 'iso-c4-envelope': Specifies the ISO C4 envelope medium 5403 'iso-c5-envelope': Specifies the ISO C5 envelope medium 5404 'iso-c6-envelope': Specifies the ISO C6 envelope medium 5405 'iso-designated-long-envelope': Specifies the ISO Designated Long 5406 envelope medium 5407 'na-10x13-envelope': Specifies the North American 10x13 envelope 5408 medium 5409 'na-9x12-envelope': Specifies the North American 9x12 envelope 5410 medium 5411 'monarch-envelope': Specifies the Monarch envelope 5412 'na-number-10-envelope': Specifies the North American number 10 5413 business envelope medium 5414 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 5415 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 5416 'na-10x14-envelope': Specifies the North American 10x14 inch 5417 envelope 5418 'na-number-9-envelope': Specifies the North American number 9 5419 business envelope 5420 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 5422 Expires April 14, 1998 5423 'na-10x15-envelope': Specifies the North American 10x15 inch 5424 envelope 5426 The following standard values are defined for the less commonly used 5427 media (white-only): 5429 'executive-white': Specifies the white executive medium 5430 'folio-white': Specifies the folio white medium 5431 'invoice-white': Specifies the white invoice medium 5432 'ledger-white': Specifies the white ledger medium 5433 'quarto-white': Specified the white quarto medium 5434 'iso-a0-white': Specifies the ISO A0 white medium 5435 'iso-a1-white': Specifies the ISO A1 white medium 5436 'iso-a2-white': Specifies the ISO A2 white medium 5437 'iso-a6-white': Specifies the ISO A6 white medium 5438 'iso-a7-white': Specifies the ISO A7 white medium 5439 'iso-a8-white': Specifies the ISO A8 white medium 5440 'iso-a9-white': Specifies the ISO A9 white medium 5441 'iso-10-white': Specifies the ISO A10 white medium 5442 'iso-b0-white': Specifies the ISO B0 white medium 5443 'iso-b1-white': Specifies the ISO B1 white medium 5444 'iso-b2-white': Specifies the ISO B2 white medium 5445 'iso-b3-white': Specifies the ISO B3 white medium 5446 'iso-b6-white': Specifies the ISO B6 white medium 5447 'iso-b7-white': Specifies the ISO B7 white medium 5448 'iso-b8-white': Specifies the ISO B8 white medium 5449 'iso-b9-white': Specifies the ISO B9 white medium 5450 'iso-b10-white': Specifies the ISO B10 white medium 5451 'jis-b0-white': Specifies the JIS B0 white medium 5452 'jis-b1-white': Specifies the JIS B1 white medium 5453 'jis-b2-white': Specifies the JIS B2 white medium 5454 'jis-b3-white': Specifies the JIS B3 white medium 5455 'jis-b6-white': Specifies the JIS B6 white medium 5456 'jis-b7-white': Specifies the JIS B7 white medium 5457 'jis-b8-white': Specifies the JIS B8 white medium 5458 'jis-b9-white': Specifies the JIS B9 white medium 5459 'jis-b10-white': Specifies the JIS B10 white medium 5461 The following standard values are defined for engineering media: 5463 'a': Specifies the engineering A size medium 5464 'b': Specifies the engineering B size medium 5465 'c': Specifies the engineering C size medium 5466 'd': Specifies the engineering D size medium 5467 'e': Specifies the engineering E size medium 5469 Expires April 14, 1998 5471 The following standard values are defined for input-trays (from ISO 5472 DPA and the Printer MIB): 5474 'top': The top input tray in the printer. 5475 'middle': The middle input tray in the printer. 5476 'bottom': The bottom input tray in the printer. 5477 'envelope': The envelope input tray in the printer. 5478 'manual': The manual feed input tray in the printer. 5479 'large-capacity': The large capacity input tray in the printer. 5480 'main': The main input tray 5481 'side': The side input tray 5483 The following standard values are defined for media sizes (from ISO 5484 DPA): 5486 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 5487 in ISO 216 5488 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 5489 ISO 216 5490 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 5491 ISO 216 5492 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 5493 ISO 216 5494 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 5495 ISO 216 5496 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 5497 ISO 216 5498 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 5499 ISO 216 5500 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 5501 ISO 216 5502 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 5503 ISO 216 5504 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 5505 ISO 216 5506 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 5507 ISO 216 5508 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 5509 in ISO 216 5510 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 5511 in ISO 216 5512 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 5513 ISO 216 5514 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 5515 ISO 216 5516 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 5517 ISO 216 5519 Expires April 14, 1998 5521 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 5522 ISO 216 5523 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 5524 ISO 216 5525 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 5526 ISO 216 5527 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 5528 ISO 216 5529 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 5530 ISO 216 5531 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 5532 ISO 216 5533 'na-letter': Specifies the North American letter size: 8.5 inches 5534 by 11 inches 5535 'na-legal': Specifies the North American legal size: 8.5 inches by 5536 14 inches 5537 'executive': Specifies the executive size (7.25 X 10.5 in) 5538 'folio': Specifies the folio size (8.5 X 13 in) 5539 'invoice': Specifies the invoice size (5.5 X 8.5 in) 5540 'ledger': Specifies the ledger size (11 X 17 in) 5541 'quarto': Specifies the quarto size (8.5 X 10.83 in) 5542 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 5543 ISO 269 5544 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 5545 ISO 269 5546 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 5547 ISO 269 5548 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 5549 ISO 269 5550 'iso-designated-long': Specifies the ISO Designated Long size: 110 5551 mm by 220 mm as defined in ISO 269 5552 'na-10x13-envelope': Specifies the North American 10x13 size: 10 5553 inches by 13 inches 5554 'na-9x12-envelope': Specifies the North American 9x12 size: 9 5555 inches by 12 inches 5556 'na-number-10-envelope': Specifies the North American number 10 5557 business envelope size: 4.125 inches by 9.5 inches 5558 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 5559 size 5560 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 5561 size 5562 'na-10x14-envelope': Specifies the North American 10x14 inch 5563 envelope size 5564 'na-number-9-envelope': Specifies the North American number 9 5565 business envelope size 5566 'na-6x9-envelope': Specifies the North American 6x9 envelope size 5567 'na-10x15-envelope': Specifies the North American 10x15 envelope 5568 size 5570 Expires April 14, 1998 5572 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 5573 in) 5574 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 5575 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 5576 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 5577 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 5578 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 5579 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 5580 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 5581 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 5582 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 5583 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 5584 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 5586 15. APPENDIX D: Processing IPP Attributes 5588 When submitting a print job to a Printer object, the IPP model allows 5589 a client to supply operation and Job Template attributes along with 5590 the document data. These Job Template attributes in the create 5591 request affect the rendering, production and finishing of the 5592 documents in the job. Similar types of instructions may also be 5593 contained in the document to be printed, that is, embedded within the 5594 print data itself. In addition, the Printer has a set of attributes 5595 that describe what rendering and finishing options which are supported 5596 by that Printer. This model, which allows for flexibility and power, 5597 also introduces the potential that at job submission time, these 5598 client-supplied attributes may conflict with either: 5600 - what the implementation is capable of realizing (i.e., what the 5601 Printer supports), as well as 5602 - the instructions embedded within the print data itself. 5604 The following sections describe how these two types of conflicts are 5605 handled in the IPP model. 5607 15.1 Fidelity 5609 If there is a conflict between what the client requests and what a 5610 Printer supports, the client may request one of two possible conflict 5611 handling mechanisms: 5613 1) either reject the job since the job can not be processed exactly 5614 as specified, or 5615 2) allow the Printer to make any changes necessary to proceed with 5616 processing the Job the best it can. 5618 Expires April 14, 1998 5620 In the first case the client is indicating to the Printer: "Print the 5621 job exactly as specified with no exceptions, and if that can't be 5622 done, don't even bother printing the job at all." In the second case, 5623 the client is indicating to the Printer: "It is more important to make 5624 sure the job is printed rather than be processed exactly as specified; 5625 just make sure the job is printed even if client supplied attributes 5626 need to be changed or ignored." 5628 The IPP model accounts for this situation by introducing an "ipp- 5629 attribute-fidelity" attribute. 5631 In a create request, "ipp-attribute-fidelity" is a boolean attribute 5632 that is OPTIONALLY supplied by the client. The value 'true' indicates 5633 that total fidelity to client supplied attributes and values is 5634 required. The client is requesting that the Job be printed exactly as 5635 specified, and if that is not possible then the job must be rejected 5636 rather than processed incorrectly. The value 'false' indicates that a 5637 reasonable attempt to print the Job is acceptable. If a Printer does 5638 not support some of the client supplied Job Template attributes or 5639 values, the Printer may ignore them or substitute any supported value 5640 for unsupported values. The Printer may choose to substitute the 5641 default value associated with that attribute, or use some other 5642 supported value that is similar to the unsupported requested value. 5643 For example, if a client supplies a "media" value of 'na-letter', the 5644 Printer may choose to substitute 'iso-a4' rather than a default value 5645 of 'envelope'. Since this is an OPTIONAL attribute, if the client 5646 does not supply a value, the Printer assumes a value of 'false'. 5648 Each Printer implementation MUST support both types of "fidelity" 5649 printing (that is whether the client supplies a value of 'true' or 5650 'false'). This is possible across all types of implementations, since 5651 there is a broad range of acceptable actions when substituting or 5652 ignoring unsupported attributes and values. Also, even if the client 5653 supplies a value of 'false', a Printer might still reject the Job for 5654 any reason including an unsupported attributes and/or values. In the 5655 other case, where the client requests a value of 'true', it is 5656 expected that the Printer support this type of printing since the 5657 Printer is already indicating functional support corresponding to all 5658 advertised supported attributes and values. 5660 Since a client can always query a Printer to find out exactly what is 5661 and is not supported, "ipp-attribute-fidelity" set to 'false' is 5662 useful when: 5664 1) The End-User uses a command line interface to request attributes 5665 that might not be supported. 5667 Expires April 14, 1998 5669 2) In a GUI context, if the End User expects the job might be moved 5670 to another printer and prefers a sub-optimal result to nothing at 5671 all. 5672 3) The End User just wants something reasonable in lieu of nothing 5673 at all. 5675 15.2 Page Description Language (PDL) Override 5677 If there is a conflict between the value of an IPP Job Template 5678 attribute and a corresponding instruction in the document data, the 5679 value of the IPP attribute SHOULD take precedence over the document 5680 instruction. Consider the case where a previously formatted file of 5681 document data is sent to an IPP Printer. In this case, if the client 5682 supplies any attributes at job submission time, the client desires 5683 that those attributes override the embedded instructions. Consider 5684 the case were a previously formatted document has embedded in it 5685 commands to load 'iso-a4' media. However, the document is passed to 5686 an end user that only has access to a printer with 'na-letter' media 5687 loaded. That end user most likely wants to submit that document to an 5688 that IPP Printer with the "media" Job Template attribute set to 'na- 5689 letter'. The job submission attribute should take precedence over the 5690 embedded PDL instruction. However, until companies that supply 5691 document data interpreters allow a way for external IPP attributes to 5692 take precedence over embedded job production instructions, a Printer 5693 might not be able to support the semantics that IPP attributes 5694 override the embedded instructions. 5696 The IPP model accounts for this situation by introducing a "pdl- 5697 override-supported" attribute. 5699 This MANDATORY attribute takes on the following values: 5701 - 'attempted': This value indicates that the Printer attempts to 5702 make sure that IPP attribute values take precedence over embedded 5703 instructions in the document data, however there is no guarantee. 5704 - 'not-attempted': This value indicates that the Printer makes not 5705 attempt to ensure that IPP attribute values take precedence over 5706 embedded instructions in the document data. 5708 At job processing time, an implementation that supports the value of 5709 'attempted' might try to do one of several different actions: 5711 1) generate an output device specific command sequence to realize 5712 the feature represented by the IPP attribute value 5713 2) parse the document data itself and replace the conflicting 5714 embedded instruction with a new embedded instruction that matches 5715 the intent of the IPP attribute value 5717 Expires April 14, 1998 5719 3) indicate to the Printer that external supplied attributes take 5720 precedence over embedded instructions and then pass the external 5721 IPP attribute values to the document data interpreter 5722 4) anything else that allows for the semantics that IPP attributes 5723 override embedded document data instructions. 5725 Since 'attempted' does not offer any type of guarantee, even though a 5726 given implementation might not do a very "good" job of attempting to 5727 ensure that IPP attributes take a higher precedence over instructions 5728 embedded in the document data, it would still be a conforming 5729 implementation. 5731 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 5732 ability to either accept or reject other unsupported attributes. In 5733 other words, if "ipp-attribute-fidelity" is set to 'true', a Job is 5734 accepted if and only if the client supplied attributes and values are 5735 supported by the Printer. Whether these attributes actually affect 5736 the processing of the Job depends on the ability of the Printer to 5737 override the instructions embedded in the document data with the 5738 semantics of the IPP attributes. If the document data attributes can 5739 be overridden ("pdl-override-supported" set to 'attempted'), the 5740 Printer makes an attempt to use the IPP attributes when processing the 5741 Job. If the document data attributes can not be overridden ("pdl- 5742 override-supported" set to 'not-attempted'), the Printer makes no 5743 attempt to use the IPP attributes when processing the Job, and hence, 5744 the IPP attributes may fail to affect the Job processing and output in 5745 any manner whatsoever. 5747 15.3 Suggested Operation Processing Algorithm 5749 When a Printer receives a create request, the Printer either accepts 5750 or rejects the request. The Printer accepts the create request and 5751 creates a Job object if it is able to accept all Job Template and 5752 Document attributes in the request. The Printer rejects the request 5753 and does not create a Job object if the Printer rejects any Job 5754 Template or Document attribute in the request. In order to determine 5755 whether or not to accept or reject the request, the Printer SHOULD use 5756 the following algorithm: 5758 1. The implementation checks to see if the operation is supported. 5759 If not, the Printer rejects the request and sets the appropriate 5760 status code in the response. 5762 2. The implementation checks to see if the requested major version 5763 number is supported. If not, the Printer rejects the request and 5764 sets the appropriate status code in the response. Differences in 5765 the minor version number requested versus what is supported is OK 5767 Expires April 14, 1998 5768 if a.) the requested version number has the same Major version 5769 number and the minor version number is higher than supported by 5770 the Printer object, and b.) any attributes that are not known to 5771 the recipient of the operation can be ignored (i.e., if the "ipp- 5772 attribute-fidelity" attribute has the value 'false'.) 5774 3. The implementation checks to see if the client supplied an "ipp- 5775 attribute-fidelity" attribute. If the attribute is missing (not 5776 supplied by the client), the Printer assumes that the value is 5777 'false'. 5779 4. The Printer loops through all other attributes, checking to see 5780 if the requested values are supported (e.g., the value of "foo" 5781 in the request is one of the values in the Printer's "foo- 5782 supported" attribute). If the attribute or its value is 5783 unsupported, the Printer flags it as unsupported. 5785 5. Once all attributes have been checked individually, the Printer 5786 checks for any inconsistent values among all the supported 5787 values. For example a Printer might be able to staple and to 5788 print on transparencies, however due to physical stapling 5789 limitations, the Printer might not be able to staple 5790 transparencies. Any inconsistent values are flagged as 5791 unsupported. 5793 6. Once all attributes have been checked and validated, if "ipp- 5794 attribute-fidelity" is set to true and there are any attributes 5795 flagged as unsupported, the Printer rejects the request and 5796 returns all unsupported attributes and values in the response and 5797 sets the appropriate status code. 5799 7. If "ipp-attribute-fidelity" is set to 'false' (or it was not 5800 supplied by the client) and there are any attributes that are 5801 flagged as unsupported, the Printer, chooses to either ignore the 5802 unsupported attributes or change the requested value to some 5803 supported value. If, for some reason, it is not possible for the 5804 implementation to ignore or substitute values and is unable to 5805 "just print the job", the Printer is still able to reject the 5806 request and return all unsupported attributes and values in the 5807 response. In doing so, the Printer sets the appropriate status 5808 code. 5810 8a. If the requested operation is the Validate-Job operation and a 5811 "document-uri" attribute is supplied in the request, then the 5812 "document-uri" is validated as specified in section 3.2.3, 5813 Validate-Job Operation. If the Printer is able to accept the 5814 request and the validation of any "document-uri" succeeded, then 5815 the Printer object returns the status code "successful-ok". 5817 Expires April 14, 1998 5818 Otherwise, it returns a set of unsupported attributes and/or the 5819 appropriate error status code. In either case the processing of 5820 the operation is completed and no objects are created. 5822 8b. The operation is a create request. If the Printer is able to 5823 accept the create request (either as is or the "ipp-attribute- 5824 fidelity" attribute is set to 'false' and some of the requested 5825 attributes can be ignored or have their values substituted), then 5826 the Printer creates a new Job object . The Job object is 5827 populated with those Job Template attributes from the create 5828 request that the Printer object can honor. If the "ipp-attribute- 5829 fidelity" attribute is set to 'true', the Job Template attributes 5830 associated with the new Job object are necessarily all the Job 5831 Template attributes in the accepted create request. If the "ipp- 5832 attribute-fidelity" attribute is set to 'false', the Job Template 5833 attributes associated with the new Job object are all the client 5834 supplied Job Template attributes that are not ignored and/or have 5835 no value substitution. Thus, some of the requested Job Template 5836 attributes may not appear in the Job object because the IPP 5837 processor was not able to honor those attributes. The attributes 5838 that were honored are persistently stored with the Job object for 5839 that Job. A Get-Attributes operation on that Job object will 5840 return only those attributes that a persistently stored with the 5841 Job object. 5843 Note: All Job Template attributes that are persistently stored with 5844 the Job object are intended to be "override values"; that is, 5845 they that take precedence over whatever other embedded 5846 instructions might be in the document data itself. However, it 5847 is not possible for all implementations to realize the semantics 5848 of "override". End users may query the Printer's "pdl-override" 5849 attribute to determine if the Printer either attempts or does not 5850 attempt to override document data instructions with IPP 5851 attributes. 5853 9. There are some cases, where a Printer supports a Job Template 5854 attribute and has an associated default value set for that 5855 attribute. In the case where a client does not supply the 5856 corresponding attribute, the Printer does not use its default 5857 values to populate Job attributes when creating the new Job 5858 object; only Job Template attributes actually in the create 5859 request are used to populate the Job object. The Printer's 5860 default values are only used at Job processing time if no other 5861 IPP attribute or instruction embedded in the document data is 5862 present. 5864 Note: If the default values associated with un-requested Job 5865 Template attributes were used to populate the Job object, then 5867 Expires April 14, 1998 5868 these values would become "override values" rather than defaults. 5869 If the Printer supports the 'attempted' value of the "pdl- 5870 override" attribute, then these override values could replace 5871 values specified within the document data. This is not the intent 5872 of the default value mechanism. A default value for an attrbute 5873 SHALL be used only if the create request did not specify that 5874 attribute (or it was ignored when allowed by "ipp-attribute- 5875 fidelity" being 'false') and no value was provided within the 5876 content of the document data. 5878 10. If the client does not supply a value for some Job Template 5879 attribute, and the Printer does not support that attribute, as 5880 far as IPP is concerned, the result of processing that Job (with 5881 respect to the missing attribute) is undefined. 5883 11. Once the Job object has been created, the Printer responds back 5884 to the client with a successful response including Job status 5885 attributes that indicate the initial state of the Job ('pending', 5886 'processing', etc.). The Printer uses its own configuration and 5887 implementation specific algorithms for scheduling the Job in the 5888 correct processing order. Once the Printer begins processing the 5889 Job, the Printer changes the Job's state to 'processing'. If the 5890 Printer supports PDL override (the "pdl-override" attribute set 5891 to 'attempted'), the implementation does its best to see that IPP 5892 attributes take precedence over embedded instructions in the 5893 document data. 5895 12. The implementation of the Printer object continues to process 5896 the Job until it can move the Job into the 'completed' state. If 5897 an Cancel-Job operation is received, the implementation 5898 eventually moves the Job into the 'cancelled' state. If the 5899 system encounters errors during processing that do not allow it 5900 to progress the Job into a completed state, the implementation 5901 halts all processing, cleans up any resources, and moves the Job 5902 into the 'aborted' state. 5904 13. Once the Job moves to the 'completed', 'aborted', or 'canceled' 5905 state, it is an implementation decision as to when to destroy the 5906 Job object and release all associated resources. Once the Job 5907 has been destroyed, the Printer would return either the "not- 5908 found" or "gone" status codes for operations directed at that 5909 Job. 5911 Some Printer implementations may support "ipp-attribute-fidelity" set 5912 to 'true' and "pdl-override" set to 'attempted' and yet still not be 5913 able to realize exactly what the client specifies in the create 5914 request. This is due to legacy decisions and assumptions that have 5915 been made about the role of job instructions embedded within the 5917 Expires April 14, 1998 5918 document data and external job instructions that accompany the 5919 document data and how to handle conflicts between such instructions. 5920 The inability to be 100% precise about how a given implementation will 5921 behave is also compounded by the fact that the two special attributes, 5922 "ipp-attribute-fidelity" and "pdl-override", apply to the whole job 5923 rather than specific values for each attribute. For example, some 5924 implementations may be able to override almost all Job Template 5925 attributes except for "number-up". 5927 15.4 Using Job Template Attributes During Document Processing. 5929 The Printer object uses some of the Job object's Job Template 5930 attributes during the processing of the document data associated with 5931 that job. These include, but are not limited to, "orientation", 5932 "number-up", "sides", "media", and "copies". The processing of each 5933 document in a Job Object SHALL follow the algorithm below. This 5934 algorithm is intended only to identify when and how attributes are to 5935 be used in processing document data and any algorithm that 5936 accomplishes the same effect can be used to implement this 5937 specification. 5939 1. Using the "document-format" attribute or some form of format 5940 detection algorithm (if the value of "document-format" is not 5941 specific enough), determine whether or not the document data has 5942 already been formatted for printing. If the document data has 5943 been formatted, then goto step 2. Otherwise, the document data 5944 SHALL be formatted. The formatting algorithm is implementation 5945 defined and is not specified by this specification. The 5946 formatting of the document data uses the "orientation" attribute 5947 to determine how the formatted print data is place on a print- 5948 stream page, see section 4.2.15 for the details. 5950 2. The document data is in the form of a print-stream in a known 5951 media type. The "page-range" attribute is used to select, as 5952 specified in section 4.2.14, a sub-sequence of the pages in the 5953 print-stream that are to be processed and images. 5955 3. The input to this step is sequence of print-stream pages. This 5956 step is controlled by the "number-up" attribute. If value of 5957 "number-up" is N, then during the processing of the print-stream 5958 pages, each N print-stream pages are positioned, as specified in 5959 section 4.2.8, to create a single imposed page. If a given 5960 Document Object does not have N more print-stream pages, then the 5961 completion of the imposed page is controlled by the "multiple- 5962 document-handling" attribute as described in section 4.2.6; when 5963 the value of this attribute is 'separate-documents-collated- 5965 Expires April 14, 1998 5966 copies', the document data from subsequent Document Objects is 5967 used to complete the imposed page. 5969 The size(scaling), position(translation) and rotation of the print- 5970 stream pages on the imposed page is implementation defined. Note 5971 that during this process the print-stream pages may be rendered 5972 to a form suitable for placing on the imposed page; this 5973 rendering is controlled by the values of the "printer-resolution" 5974 and "print-quality" attributes as described in sections 4.2.10 5975 and 4.2.11. In the case N=1, the imposed pages are nearly the 5976 same as the print-stream pages; the differences would only be in 5977 the size, position and rotation of the print-stream page and/or 5978 any decoration, such as a frame to the page, that is added by the 5979 implementation. 5981 4. The collection of imposed pages is placed, in sequence, onto 5982 sides of the print media. This placement is controlled by the 5983 "sides" attribute and the orientation of the page, as described 5984 in section 4.2.9. The orientation of the page is defined by the 5985 orientation of the imposed pages; for example, if "number-up" 5986 equals 2, then, typically, two portrait print-stream pages become 5987 one landscape imposed page. Note that the placement of imposed 5988 pages onto media instances is also controlled by the "multiple- 5989 document-handling" attribute as described in section 4.2.6. 5991 5. The "copies" and "multiple-document-handling" attributes are 5992 used to determine how many copies of each media instance are 5993 created and in what order. See sections 4.2.6 and 4.2.13 for the 5994 details. 5996 6. When the correct number of copies are created, the media 5997 instances are finished according to the values of the 5998 "finishings" attribute as described in 4.2.12. Note that 5999 sometimes finishing operations may require manual intervention to 6000 perform the finishing operations on the copies, especially 6001 uncollated copies. This specification allows any or all of the 6002 processing steps to be performed automatically or manually at the 6003 discretion of the Printer object. 6005 16. APPENDIX E: Generic Directory Schema 6007 This section defines a generic schema for an entry in a directory 6008 service. A directory service is a means by which service users can 6009 locate service providers. In IPP environments, this means that IPP 6010 Printers can be registered (either automatically or with the help of 6011 an administrator) as entries of type printer in the directory. IPP 6012 clients can search or browse for entries of type printer. Clients use 6013 the directory service to find entries based on naming, organizational 6015 Expires April 14, 1998 6016 contexts, or filtered searches on attribute values of entries. For 6017 example, a client can find all printers in the "Local Department" 6018 context. Authentication and authorization are also often part of a 6019 directory service so that an administrator can place limits on end 6020 users so that they are only allowed to find entries to which they have 6021 certain access rights. IPP itself does not require any specific 6022 directory service protocol or provider. 6024 The generic schema is a subset of IPP Printer attributes (section 6025 4.4). These attributes are identified as either MANDATORY or OPTIONAL 6026 for the entry itself. This conformance labeling is NOT the same 6027 conformance labeling applied to the attributes of IPP Printers 6028 themselves. MANDATORY attributes MUST be associated with each 6029 directory entry. OPTIONAL attributes SHOULD be associated with the 6030 directory entry (if known or supported). In addition, all directory 6031 entry attributes SHOULD reflect the current attribute values for the 6032 corresponding Printer object. 6034 In order to bridge between the directory service protocol and IPP, one 6035 of the MANDATORY attributes is the "printer-uri" attribute. The IPP 6036 client addresses an IPP Printer using its URI and so the directory 6037 entry's "printer-uri" becomes the link between the directory entry and 6038 the corresponding IPP Printer. 6040 The following attributes define the generic schema for directory 6041 entries of type printer: 6043 printer-uri MANDATORY Section 4.4.1 6044 printer-tls-uri OPTIONAL Section 6045 printer-name OPTIONAL Section 4.4.2 6046 printer-location OPTIONAL Section 4.4.3 6047 printer-info OPTIONAL Section 4.4.4 6048 printer-more-info OPTIONAL Section 4.4.5 6049 printer-make-and-model OPTIONAL Section 4.4.7 6050 security-mechanisms-supported MANDATORY Section 4.4.23 6051 media-supported OPTIONAL Section 4.2.5 6052 number-up-supported OPTIONAL Section 4.2.6 6053 sides-supported OPTIONAL Section 4.2.7 6054 printer-resolution-supported OPTIONAL Section 4.2.8 6055 print-quality-supported OPTIONAL Section 4.2.9 6056 color-supported OPTIONAL Section 4.4.20 6057 finishings-supported OPTIONAL Section 4.2.10 6058 document-formats-supported OPTAIONL Section 4.2.14 6060 Expires April 14, 1998