idnits 2.17.1 draft-ietf-ipp-model-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-04-24) according to https://trustee.ietf.org/license-info : IETF Trust Legal Provisions of 28-dec-2009, Section 6.a: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 2: Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved. IETF Trust Legal Provisions of 28-dec-2009, Section 6.b(i), paragraph 3: This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. 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. == 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 a Security Considerations section. (A line matching the expected section header was found, but with an unexpected indentation: ' 8. Security Considerations' ) ** 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 2237 instances of too long lines in the document, the longest one being 7 characters in excess of 72. ** The abstract seems to contain references ([2], [20], [21], [3], [4], [22], [5], [23], [6], [24], [7], [30], [25], [31], [8], [26], [9], [32], [27], [10], [33], [28], [29], [34], [11], [1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 41 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 159 has weird spacing: '...(1setOf type2...' == Line 455 has weird spacing: '... any indi...' == Line 649 has weird spacing: '...ributes and a...' == Line 737 has weird spacing: '...esponse that ...' == Line 879 has weird spacing: '...nt data is in...' == (14 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: To force no job sheets, the system administrator SHALL set the supported value to only 'none'. To force the use of banner pages, the supported values SHALL not include 'none'. In this case, if a client requests 'none', the create request is rejected. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: 'none': the Printer SHALL not notify. 'all': the Printer SHALL notify when any of the events occur. 'job-completion': the Printer SHALL notify when the job containing this value completes (i.e., enters the 'completed', 'canceled', or 'aborted' state) with or without errors. 'job-problems': the Printer SHALL notify when this job has a problem (i.e., when the job leaves the 'processing' state and enters the 'processing-stopped' state). 'job-started-processing': the Printer SHALL notify when the Printer starts processing the Job (i.e., when the job leaves the 'pending' state and enters the 'processing' state). 'printer-problems': the Printer SHALL notify when this job is affected by a Printer problem. This happens when the printer enters the 'stopped' state while this job is in the 'pending', 'pending-held', 'processing', or 'processing-stopped' state. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: 'none': The Printer SHALL not include any embellishments and SHALL place one logical page on a single side of an instance of the selected medium without any translation, scaling, or rotation. 'one': The Printer SHALL place one logical page on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). 'two': The Printer SHALL place two logical pages on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). 'four': The Printer SHALL place four logical pages on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). == 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: '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 output of such a shutdown, e.g. the part printed before the shutdown may be printed a second time after the shutdown. 'connecting-to-device': The server has scheduled a job on the Printer and is in the process of connecting to a shared network output device (and might not be able to actually start printing the job for an arbitrarily long time depending on the usage of the output device by other servers on the network). == 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 (September 3, 1997) is 9730 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? '20' on line 3394 looks like a reference -- Missing reference section? '25' on line 3546 looks like a reference -- Missing reference section? '11' on line 3391 looks like a reference -- Missing reference section? '34' on line 3432 looks like a reference -- Missing reference section? '23' on line 3653 looks like a reference -- Missing reference section? '5' on line 4227 looks like a reference -- Missing reference section? '1' on line 4228 looks like a reference -- Missing reference section? '29' on line 3420 looks like a reference -- Missing reference section? '27' on line 3411 looks like a reference -- Missing reference section? '28' on line 3417 looks like a reference -- Missing reference section? '26' on line 3408 looks like a reference -- Missing reference section? '32' on line 3428 looks like a reference -- Missing reference section? '33' on line 3430 looks like a reference -- Missing reference section? '22' on line 3399 looks like a reference -- Missing reference section? '24' on line 3403 looks like a reference -- Missing reference section? '30' on line 3423 looks like a reference -- Missing reference section? '2' on line 3361 looks like a reference -- Missing reference section? '3' on line 3367 looks like a reference -- Missing reference section? '4' on line 3370 looks like a reference -- Missing reference section? '6' on line 3375 looks like a reference -- Missing reference section? '7' on line 3378 looks like a reference -- Missing reference section? '8' on line 3381 looks like a reference -- Missing reference section? '9' on line 3385 looks like a reference -- Missing reference section? '10' on line 3388 looks like a reference -- Missing reference section? '21' on line 3396 looks like a reference -- Missing reference section? '31' on line 3426 looks like a reference Summary: 11 errors (**), 0 flaws (~~), 14 warnings (==), 30 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 draft-ietf-ipp-model-05.txt 3 R. deBry 4 IBM Corporation 5 T. Hastings 6 Xerox Corporation 7 R. Herriot 8 Sun Microsystems 9 S. Isaacson 10 Novell, Inc. 11 P. Powell 12 San Diego State University 13 September 3, 1997 15 Internet Printing Protocol/1.0: Model and Semantics 17 Status of this Memo 19 This document is an Internet-Draft. Internet-Drafts are working 20 documents of the Internet Engineering Task Force (IETF), its areas, 21 and its working groups. Note that other groups may also distribute 22 working documents as Internet-Drafts. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference 27 material or to cite them other than as "work in progress". 29 To learn the current status of any Internet-Draft, please check the 30 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 31 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 32 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 33 ftp.isi.edu (US West Coast). 35 Abstract 37 This document is one of a set of documents, which together describe 38 all aspects of a new Internet Printing Protocol (IPP). IPP is an 39 application level protocol that can be used for distributed printing 40 using Internet tools and technology. The protocol is heavily 41 influenced by the printing model introduced in the Document Printing 42 Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both 43 end user and administrative features, IPP version 1.0 is focused only 44 on end user functionality. 46 The full set of IPP documents includes: 48 deBry, Hastings, Herriot, Isaacson, Powell 49 Expires March3, 1998 50 Internet Printing Protocol: Requirements 51 Internet Printing Protocol/1.0: Model and Semantics 52 Internet Printing Protocol/1.0: Security 53 Internet Printing Protocol/1.0: Protocol Specification 54 Internet Printing Protocol/1.0: Directory Schema 56 The requirements document takes a broad look at distributed printing 57 functionality, and it enumerates real-life scenarios that help to 58 clarify the features that need to be included in a printing protocol 59 for the Internet. It identifies requirements for three types of 60 users: end users, operators, and administrators. The requirements 61 document calls out a subset of end user requirements that MUST be 62 satisfied in the first version of IPP. Operator and administrator 63 requirements are out of scope for v1.0. The model and semantics 64 document describes a simplified model with abstract objects, their 65 attributes, and their operations. The model introduces a Printer 66 object and a Job object. The Job object supports multiple documents 67 per job. The security document covers potential threats and proposed 68 counters to those threats. The protocol specification is formal 69 document which incorporates the ideas in all the other documents into 70 a concrete mapping using clearly defined data representations and 71 transport protocol mappings that real implementers can use to develop 72 interoperable client and server side components. Finally, the 73 directory schema document shows a generic schema for directory service 74 entries that represent instances of IPP Printers. 76 This document is the "Internet Printing Protocol/1.0: Model and 77 Semantics" document. 79 deBry, Hastings, Herriot, Isaacson, Powell 80 Expires February xx, 1998 81 Table of Contents 83 1. Simplified Printing Model .......................................7 84 2. IPP Objects .....................................................9 85 2.1 Printer Object..................................................9 86 2.2 Job Object.....................................................12 87 2.3 Document Object................................................12 88 2.4 Object Relationships...........................................12 89 2.5 Object Identity................................................13 90 3. IPP Operations .................................................15 91 3.1 General Semantics..............................................16 92 3.1.1 Operation Targets........................................16 93 3.1.2 Operation Status Codes and Messages......................16 94 3.1.3 Security Concerns for IPPOperations......................17 95 3.1.3.1 Authenticated Requester Identity .......................17 96 3.1.3.2 Restricted Queries .....................................17 97 3.1.4 Versions.................................................18 98 3.1.5 Job Creation Operations..................................18 99 3.2 Printer Operations.............................................20 100 3.2.1 Print-Job Operation......................................20 101 3.2.1.1 Print-Job Request ......................................20 102 3.2.1.2 Print-Job Response .....................................22 103 3.2.2 Print-URI Operation......................................23 104 3.2.3 Validate-Job Operation...................................23 105 3.2.4 Create-Job Operation.....................................23 106 3.2.5 Get-Attributes Operation.................................24 107 3.2.5.1 Get-Attributes Request .................................24 108 3.2.5.2 Get-Attributes Response ................................25 109 3.2.6 Get-Jobs Operation.......................................25 110 3.2.6.1 Get-Jobs Request .......................................25 111 3.2.6.2 Get-Jobs Response ......................................26 112 3.3 Job Operations.................................................27 113 3.3.1 Send-Document Operation..................................27 114 3.3.1.1 Send-Document Request ..................................27 115 3.3.1.2 Send-Document Response .................................28 116 3.3.2 Send-URI Operation.......................................29 117 3.3.3 Cancel Job Operation.....................................29 118 3.3.3.1 Cancel-Job Request .....................................29 119 3.3.3.2 Cancel-Job Response ....................................29 120 3.3.4 Get-Attributes Operation.................................29 121 3.3.4.1 Get-Attributes Request .................................30 122 3.3.4.2 Get-Attributes Response ................................30 123 4. Object Attributes ..............................................31 124 4.1 Attribute Syntaxes.............................................31 125 4.2 Job Template Attributes........................................33 126 4.2.1 job-sheets (type4 keyword)...............................37 127 4.2.2 notify-events (1setOf type2 keyword).....................38 128 4.2.2.1 Event Notification Content .............................38 130 deBry, Hastings, Herriot, Isaacson, Powell 131 Expires February xx, 1998 132 4.2.3 notify-addresses (1setOf uri)............................39 133 4.2.4 job-priority (integer(1:100))............................39 134 4.2.5 job-hold-until (type4 keyword)...........................40 135 4.2.6 multiple-document-handling (type2 keyword)...............40 136 4.2.7 media (type4 keyword)....................................41 137 4.2.8 number-up (type3 keyword)................................42 138 4.2.9 sides (type2 keyword)....................................42 139 4.2.10 printer-resolution (resoultion)..........................43 140 4.2.11 print-quality (type2 enum)...............................43 141 4.2.12 finishings (1setOf type2 enum)...........................43 142 4.2.13 copies (integer(1:2**31 - 1))............................44 143 4.2.14 page-range (rangeOf integer).............................44 144 4.2.15 orientation (type2 enum).................................45 145 4.2.16 document-format (mimeType)...............................45 146 4.2.17 compression (type3 keyword)..............................45 147 4.2.18 job-k-octets (integer(0:2**31 - 1))......................46 148 4.2.19 job-impressions (integer(0:2**31 - 1))...................46 149 4.2.20 job-media-sheets (integer(0:2**31 - 1))..................46 150 4.3 Job Description Attributes.....................................46 151 4.3.1 job-uri (uri)............................................47 152 4.3.2 job-id (32bit unsigned integer)..........................48 153 4.3.3 job-uri-user (uri).......................................48 154 4.3.4 job-name (name)..........................................48 155 4.3.5 job-originating-user (name)..............................48 156 4.3.6 job-originating-host (name)..............................48 157 4.3.7 user-human-language (human-language).....................49 158 4.3.8 job-state (type1 enum)...................................49 159 4.3.9 job-state-reasons (1setOf type2 keyword)................51 160 4.3.10 job-state-message (text).................................53 161 4.3.11 output-device-assigned (name)............................53 162 4.3.12 time-since-pending (integer).............................53 163 4.3.13 time-since-processing (integer)..........................53 164 4.3.14 time-since-completed (integer)...........................53 165 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))........53 166 4.3.16 job-message-from-operator (text).........................54 167 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))............54 168 4.3.18 job-impressions-completed (integer(0:2**31 - 1))........54 169 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))........54 170 4.4 Document Attributes............................................54 171 4.4.1 document-name (name).....................................55 172 4.4.2 document-uri (uri).......................................55 173 4.5 Printer Description Attributes.................................56 174 4.5.1 printer-uri (uri)........................................58 175 4.5.2 printer-name (name)......................................58 176 4.5.3 printer-location (text)..................................58 177 4.5.4 printer-description (text)...............................58 178 4.5.5 printer-more-info (uri)..................................58 179 4.5.6 printer-driver-installer (uri)...........................59 181 deBry, Hastings, Herriot, Isaacson, Powell 182 Expires February xx, 1998 183 4.5.7 printer-make-and-model (text)............................59 184 4.5.8 printer-more-info-manufacturer (uri).....................59 185 4.5.9 printer-state (type1 enum)...............................59 186 4.5.10 printer-state-reasons (1setOf type2 keyword).............60 187 4.5.11 printer-state-message (text).............................62 188 4.5.12 operations-supported (1setOf type2 enum).................62 189 4.5.13 printer-is-accepting-jobs (boolean)......................63 190 4.5.14 queued-job-count (integer(0:2**31 - 1))..................63 191 4.5.15 printer-message-from-operator (text).....................63 192 4.5.16 printer-human-language (human-language)..................63 193 4.5.17 printer-human-language-supported (1setOf human-language).63 194 4.5.18 color-supported (boolean)................................64 195 4.5.19 pdl-override (type2 keyword).............................64 196 4.5.20 Security Related Attributes..............................64 197 4.5.20.1 message-protection-supported (keyword) .................65 198 4.5.20.2 authentication-authorization-supported (keyword) .......65 199 4.5.21 printer-up-time (seconds)................................65 200 4.5.22 printer-current-time (dateTime)..........................65 201 5. Conformance ....................................................66 202 5.1 Client Conformance Requirements................................66 203 5.2 Printer Object Conformance Requirements........................67 204 5.2.1 Objects..................................................67 205 5.2.2 Operations...............................................67 206 5.2.3 Attributes...............................................67 207 5.2.4 Printer extensions.......................................68 208 5.2.5 Attribute Syntaxes.......................................68 209 5.3 Security Conformance Requirements..............................68 210 6. IANA Considerations (registered and private extensions) ........68 211 6.1 Typed Extensions...............................................68 212 6.2 Registration of MIME types/sub-types for document-formats......70 213 6.3 Attribute Extensibility........................................70 214 6.4 Attribute Syntax Extensibility.................................70 215 7. Internationalization Considerations ............................70 216 8. Security Considerations ........................................71 217 9. References .....................................................71 218 10.Author's Address ...............................................73 219 11.APPENDIX A: Terminology ........................................76 220 11.1 Conformance Terminology........................................76 221 11.1.1 MUST.....................................................76 222 11.1.2 MUST NOT.................................................76 223 11.1.3 SHOULD...................................................76 224 11.1.4 SHOULD NOT...............................................76 225 11.1.5 MAY......................................................76 226 11.1.6 NEED NOT.................................................77 227 11.2 Model Terminology..............................................77 228 11.2.1 Keyword..................................................77 229 11.2.2 Attributes...............................................77 230 11.2.2.1 Attribute Name .........................................77 232 deBry, Hastings, Herriot, Isaacson, Powell 233 Expires February xx, 1998 234 11.2.2.2 Attribute Group Name ...................................78 235 11.2.2.3 Attribute Value ........................................78 236 11.2.2.4 Attribute Syntax .......................................78 237 11.2.3 Supports.................................................78 238 12.APPENDIX B: Status Codes ......................................80 239 12.1 Status Codes (type2 keyword)...................................80 240 12.1.1 Informational............................................81 241 12.1.2 Successful Status Codes..................................81 242 12.1.2.1 successful-ok (0x00) ...................................81 243 12.1.2.2 successful-ok-ignored-or-substituted-attributes (0x01) .81 244 12.1.3 Redirection Status Codes.................................81 245 12.1.4 Client Error Status Codes................................81 246 12.1.4.1 client-error-bad-request (0x400) .......................81 247 12.1.4.2 client-error-forbidden (0x401) .........................82 248 12.1.4.3 client-error-not-authenticated (0x402) .................82 249 12.1.4.4 client-error-not-authorized (0x403) ....................82 250 12.1.4.5 client-error-not-possible (0x404) ......................82 251 12.1.4.6 client-error-timeout (0x405) ...........................82 252 12.1.4.7 client-error-not-found (0x406) .........................83 253 12.1.4.8 client-error-gone (0x407) ..............................83 254 12.1.4.9 client-error-request-entity-too-large (0x408) ..........83 255 12.1.4.10 client-error-request-URI-too-long (0x409) ..............84 256 12.1.4.11 client-error-unsupported-document-format (0x40A) .......84 257 12.1.4.12 client-error-attribute-not-supported (0x40B) ...........84 258 12.1.5 Server Error Status Codes................................84 259 12.1.5.1 server-error-internal- error (0x500) ...................85 260 12.1.5.2 server-error-operation-not-supported (0x501) ...........85 261 12.1.5.3 server-error-service-unavailable (0x502) ...............85 262 12.1.5.4 server-error-version-not-supported (0x503) .............85 263 12.1.5.5 server-error-device-error (0x504) ......................85 264 12.1.5.6 server-error-temporary-error (0x505) ...................86 265 12.2 Status Keywords for IPP Operations.............................87 266 13.APPENDIX C: "document-format" values ...........................87 267 14.APPENDIX D: "media" keyword values ............................90 268 15.APPENDIX E: Processing IPP Attributes ..........................95 269 15.1 Fidelity.......................................................95 270 15.2 Page Description Language (PDL) Override.......................97 271 15.3 Suggested Attribute Processing Algorithm.......................98 272 16.APPENDIX F: Relationship to SNMP MIBs .........................101 274 deBry, Hastings, Herriot, Isaacson, Powell 275 Expires February xx, 1998 276 1. Simplified Printing Model 278 In order to a achieve its goal of realizing a workable printing 279 protocol for the Internet, the Internet Printing Protocol (IPP) is 280 based on a simplified printing model which abstracts the many 281 components of real world printing solutions. The Internet is a 282 distributed computing environment where requesters of print services 283 (clients, applications, printer drivers, etc.) cooperate and interact 284 with print service providers. This model and semantics document 285 describes a simple, abstract model for IPP even though the underlying 286 configurations may be complex "n-tier" client/server systems. An 287 important simplifying step in the IPP model is to expose only the key 288 objects and interfaces required for printing. The model does not 289 include features, interfaces, and relationships that are beyond the 290 scope of IPP [20]. 292 The IPP model encapsulates the important components of distributed 293 printing into three object types: 295 - Printer (Section 2.1) 296 - Job (Section 2.2) 297 - Document (Section 2.3) 299 Each object type has an associated set of operations (see section 3) 300 and attributes (see section 4). 302 The terminology used in the remainder of this document is defined in 303 Appendix A (section 11) . Terms such as "attributes", "keywords", and 304 "supports" have special meaning in this document and are defined in 305 the model terminology section. . Terms such as "MANDATORY", "MUST", 306 and "OPTIONAL" have special meaning relating to conformance. These 307 terms are defined in the section on conformance terminology, most of 308 which is taken from RFC 2119 [25]. 310 It is important, however, to understand that in real system 311 implementations (which lie underneath the abstracted IPP model), there 312 are other components of a print service which are not explicitly 313 defined in the IPP model. The following figure illustrates where IPP 314 fits with respect to these other components. 316 deBry, Hastings, Herriot, Isaacson, Powell 317 Expires February xx, 1998 318 +--------------+ 319 | Application | 320 o +. . . . . . . | 321 \|/ | Spooler | 322 / \ +. . . . . . . | +---------+ 323 End-User | Print Driver |---| File | 324 +-----------+ +-----+ +------+-------+ +----+----+ 325 | Browser | | GUI | | | 326 +-----+-----+ +--+--+ | | 327 | | | | 328 | +---+------------+---+ | 329 N D S | | IPP Client |------------+ 330 O I E | +---------+----------+ 331 T R C | | 332 I E U | 333 F C R -------------- Transport ------------------ 334 I T I 335 C O T | --+ 336 A R Y +--------+--------+ | 337 T Y | IPP Server | | 338 I +--------+--------+ | 339 O | | 340 N +-----------------+ | IPP Printer 341 | Print Service | | 342 +-----------------+ | 343 | --+ 344 +-----------------+ 345 | Output Device(s)| 346 +-----------------+ 348 An IPP Printer encapsulates the functions normally associated with 349 physical output devices along with the spooling, scheduling and 350 multiple device management functions often associated with a print 351 server. IPP Printers are optionally registered as entries in a 352 directory where end users find and select them based on some sort of 353 filtered and context based searching mechanism. The directory is used 354 to store relatively static information about the Printer, allowing end 355 users to search for and find Printers that match their search criteria 356 (name, context, printer capabilities, etc.). The more dynamic 357 information associated with a Printer includes state, currently loaded 358 and ready media, number of jobs at the Printer, errors, warnings, and 359 so forth. 361 IPP clients implement the IPP protocol on the client side, and give 362 end users (or programs) the ability to query an IPP Printer and submit 363 and manage print jobs. An IPP server is just that part of the IPP 364 Printer that implements the server-side protocol. The rest of the IPP 366 deBry, Hastings, Herriot, Isaacson, Powell 367 Expires February xx, 1998 368 Printer implements the application semantics of the print service 369 itself. The IPP Printer may be embedded in an output device or may be 370 implemented on a host on the network that communicates with the output 371 device. 373 When a job is submitted to the Printer and the Printer validates the 374 data in the submission request, the Printer creates a Job object. The 375 end user then interacts with this new Job to query its status and 376 monitor the progress of the job. End users may also cancel the Job. 377 The end user is able to register to receive certain events that are 378 then routed using the specified notification service(s). 380 2. IPP Objects 382 The IPP model introduces objects of type Printer, Job, and Document. 383 Each object type is defined as a set of possible attributes that may 384 be supported by each instance of an object of that type. For each 385 object instance, the actual set of supported attributes and values 386 describe the specific implementation. The object's attributes and 387 values describe its capabilities, realizable features, job processing 388 functions, and default behaviors and characteristics. For example, the 389 object type "Printer" is defined as a set of attributes that each 390 instance of a Printer object might potentially support. In the same 391 manner, the object type "Job" is defined as a set of attributes that 392 are potentially supported by each instance of a Job object. 394 Each attribute included in the set of attributes defining an object 395 type is labeled as: 397 - "MANDATORY": each object instance MUST support the attribute. 398 - "OPTIONAL": each object instance MAY support the attribute. 400 There is no such similar labeling of attribute values. However, if an 401 implementation supports an attribute, it must support at least one 402 (and possibly all) of the possible values for that attribute. 404 2.1 Printer Object 406 A major component of the IPP model is the Printer object. An instance 407 of a Printer object implements the IPP protocol. Using the protocol, 408 end users may query the attributes of the Printer and submit Jobs to 409 the Printer (section 3 describes each of the Printer specific 410 operations in detail). The actual implementation components behind 411 the Printer abstraction may take on different forms and different 412 configurations. However, the model abstraction allows the details of 414 deBry, Hastings, Herriot, Isaacson, Powell 415 Expires February xx, 1998 416 the configuration of real components to remain transparent to the end 417 user. 419 The capabilities and state of an IPP Printer are described by its 420 attributes. Printer attributes are grouped as follows: 422 "job-template" attributes (section 4.2) 423 "printer-description" attributes (section 4.5) 425 Since a Printer object is an abstraction of a generic document output 426 device and print service provider, an IPP Printer object could be used 427 to represent any real or virtual device with semantics consistent with 428 the Printer object, such as a fax-out device, an imager, or even a CD 429 writer. 431 Some examples of configurations supporting a Printer object include: 433 1) An output device, with no spooling capabilities 434 2) An output device, with a built-in spooler 435 3) A print server supporting IPP with one or more associated output 436 devices 437 3a) The associated output devices might or might not be capable 438 of spooling jobs 439 3b) The associated output devices might or might not support IPP 441 See the following figures for some examples on how to view IPP Printer 442 objects implemented on top of various print system configurations. 443 The embedded case below represents configurations 1 and 2. The hosted 444 and fan-out figures below represent configuration 3. 446 deBry, Hastings, Herriot, Isaacson, Powell 447 Expires February xx, 1998 448 Legend: 450 ##### indicates a Printer object which is 451 either embedded in an output device or is 452 hosted in a server. The implementation 453 might or might not be capable of queuing/spooling. 455 any indicates any network protocol or direct 456 connect, including IPP 458 embedded printer: 459 output device 460 +---------------+ 461 O +--------+ | ########### | 462 /|\ | client |------------IPP------------># Printer # | 463 / \ +--------+ | # Object # | 464 | ########### | 465 +---------------+ 467 hosted printer: 468 +---------------+ 469 O +--------+ ########### | | 470 /|\ | client |--IPP--># Printer #-any->| output device | 471 / \ +--------+ # Object # | | 472 ########### +---------------+ 474 +---------------+ 475 fan out: | | 476 +-->| output device | 477 any/ | | 478 O +--------+ ########### / +---------------+ 479 /|\ | client |-IPP-># Printer #--* 480 / \ +--------+ # Object # \ +---------------+ 481 ########### any\ | | 482 +-->| output device | 483 | | 484 +---------------+ 486 It is assumed that URIs for IPP Printers are available to end users or 487 programs that wish to interact with the Printer. Although NOT 488 MANDATORY, it is RECOMMENDED that Printers be registered in a 489 directory service which end users and programs can interrogate. 490 "Internet Printing Protocol: Directory Schema"[24] defines the 492 deBry, Hastings, Herriot, Isaacson, Powell 493 Expires February xx, 1998 494 attributes to be associated with a Printer entry in a directory 495 service. 497 2.2 Job Object 499 A Job object is used to model a job. A Job can contain one or more 500 Documents. The information required to create a Job object is sent in 501 a create request from the end user via an IPP client to an IPP 502 Printer. Section 3 describes each of the Job specific operations in 503 detail. 505 The characteristics and state of an IPP Job are described by its 506 attributes. Job attributes are grouped as follows: 508 "job-template" attributes (optionally supplied by the client/end 509 user, section 4.2) 510 "job-description" attributes (set by the Printer, section 4.3) 512 2.3 Document Object 514 A Document object is used to model a document. A Document consists of 515 either printable data or a URI reference to printable data An 516 instance of a Document object is a set of attributes which describe 517 the document data. Document Attributes (see section 4.4). Document 518 attributes only describe the data to be printed; they do not include 519 any specialized document processing instructions. All processing 520 instructions are at the Job level and are called called Job Template 521 attributes and they apply equally to all Documents within a Job. 523 2.4 Object Relationships 525 Instances of objects within the system have relationships that MUST be 526 maintained persistently along with the persistent storage of the 527 object attributes. An instance of a Printer object usually represents 528 one or more output devices. A Printer object may represent a logical 529 device which "processes" jobs but never actually uses a physical 530 output device to put marks on paper (for example a Web page publisher 531 or an interface into an online document archive or repository). A 532 Printer can contain zero or more Job objects. An instance of a Job 533 object is contained in exactly one Printer object, however the 534 identical Job data could be sent to either the same or a different 535 Printer. In this case, the new Job would be an identical, but 536 different Jobsince it each would have a different Job identifier. A 538 deBry, Hastings, Herriot, Isaacson, Powell 539 Expires February xx, 1998 540 Job object contains one or more Documents. If the Document is simply 541 a reference to some print data stream, the referenced document may be 542 used in multiple Documents in the same Job or even in different Jobs, 543 though each Document contains its own copy of the reference. If the 544 Document is not just a reference, but an actual stream of print data, 545 the stream is contained in only one Document, although there can be 546 copies of the same document data in other Documents in the same or 547 different Jobs. 549 2.5 Object Identity 551 All instances of Printer and Job objects have a URI so that they can 552 persistently and unambiguously referenced. The IPP model requires 553 that these values be URIs as defined by RFC 1738 [11] and RFC 1808 554 [34]. In addition to an identifier, instances of Printers, Jobs, and 555 Documents may have a name. An object name need not be unique across 556 all instances of all objects. The Printer name is chosen and set by an 557 administrator through some mechanism outside the scope of IPP itself. 558 If the client does not supply Job name or a Document name, the Printer 559 generates a name. In all cases, the name only has local meaning, and 560 it is not constrained to be unique. 562 To summarize: 564 - Each Printer will be uniquely identified with a URI. The 565 Printer's "printer-uri" attribute contains the URI. 566 - Each Job will be uniquely identified with a URI. The Job's "job- 567 uri" attribute contains the URI. 568 - Each Printer has name (which is not necessarily unique). The 569 administrator chooses and sets this name through some mechanism 570 outside the scope of IPP itself. The Printer's "printer-name" 571 attribute contains the name. 572 - Each Job has name (which is not necessarily unique). The client 573 optionally supplies this name in the create request. If the 574 client does not supply this name, the Printer generates a name 575 for the Job. The Job's "job-name" attribute contains the name. 576 - Each Document has name (which is not necessarily unique). The 577 client optionally supplies this name in the request which creates 578 the Document. If the client does not supply this name, the 579 Printer generates a name for the Document. The Document's 580 "document-name" attribute contains the name. 582 Note: If Documents are printed by reference, the corresponding 583 Document object contains a "document-uri" attribute. The value of 584 this attribute is a reference to the document data to be printed; it 585 is not a unique identifier of the Document object itself. 587 deBry, Hastings, Herriot, Isaacson, Powell 588 Expires February xx, 1998 589 Proposal: 591 All instances of Printer objects have a URI so that they can 592 persistently and unambiguously referenced. The IPP model requires 593 that these values be URIs as defined by RFC 1738 [11] and RFC 1808. 594 All Printer operations are directed to the Printer's URI. All 595 instances of Job objects have an opaque identifier that when used in 596 combination with its Printer URI, allow it to be persistently and 597 unambiguously referenced. Instances of Document objects have no 598 identifier since they are always created and queried using Job 599 operations; that is the model does not define semantics for querying 600 the attributes of just one Document within a multi-Document Job. 602 In addition to these identifier attributes, instances of Printer, Job, 603 and Document objects may have a name. An object name need not be 604 unique across all instances of all objects. The Printer name is chosen 605 and set by an administrator. A client optionally supplies Job and 606 Document names in the operations that create Jobs and Documents. If a 607 client does not supply a name, the Printer generates a name. In all 608 cases, the name only has local meaning, and it is not in any way 609 constrained to be unique. 611 To summarize: 613 - Each Printer will be uniquely identified with a URI. The 614 Printer's "printer-uri" attribute contains this URI. 615 - Each Job will be uniquely identified with a Job ID and a Printer 616 URI. The Job's "job-id" attribute contains the Job ID. The 617 Printer's "printer-uri" attribute contains the Printer's URI. 618 - Each Printer has name (which is not necessarily unique). The 619 administrator chooses and sets this name through some mechanism 620 outside the scope of IPP itself. The Printer's "printer-name" 621 attribute contains the name. 622 - Each Job has name (which is not necessarily unique). The client 623 optionally supplies this name in the create request. If the 624 client does not supply this name, the Printer generates a name 625 for the Job. The Job's "job-name" attribute contains the name. 626 - Each Document has name (which is not necessarily unique). The 627 client optionally supplies this name in the request that creates 628 the Document. If the client does not supply this name, the 629 Printer generates a name for the Document. The Document's 630 "document-name" attribute contains the name. 632 Note: If Documents are printed by reference, the corresponding 633 Document object contains a "document-uri" attribute. The value of 635 deBry, Hastings, Herriot, Isaacson, Powell 636 Expires February xx, 1998 637 this attribute is a reference to the document data to be printed; it 638 is not a unique identifier of the Document object itself. 640 3. IPP Operations 642 Jobs and Printers each have a set of associated operations. 643 Operations consist of requests and responses. When a client 644 communicates with an IPP object, it issues an operation request to the 645 URI for that object. Each request carries along with it any operation 646 attributes and data required by the object to perform the operation. 647 Each request requires a response from the object. Each response 648 indicates success or failure of the operation with a status code, and 649 may include operation attributes and an optional status message. The 650 representation and encoding of IPP operations is described in 651 "Internet Printing Protocol: Protocol Specification" [23]. This 652 section describes the IPP operations in terms of their semantics and 653 contents, including both the request and the response for each 654 operation. 656 The Printer operations are fully defined in section 3.2: 658 Print-Job (section 3.2.1) 659 Print-URI (section 3.2.2) 660 Validate-Job (section 3.2.3) 661 Create-Job (section 3.2.4) 662 Get-Attributes (section 3.2.5) 663 Get-Jobs (section 3.2.6) 665 The Job operations are fully defined in section 3.3: 667 Send-Document (section 3.3.1) 668 Send-URI (section 3.3.2) 669 Cancel-Job (section 3.3.3) 670 Get-Attributes (section 3.3.4) 672 There are no explicit Document operations. However, there are Job 673 operations that are used to create and query Document objects 674 contained within a Job object. The Send-Document and Send-URI Job 675 operations are used to add a new Document to an existing multi- 676 Document Job. If requested, the Get-Attribute operation used for a 677 Job also returns any Document object attributes. If the Job is a 678 single Document Job, only a single set of Document attributes is 679 returned. If however, the Job contains multiple Documents, the Get- 680 Attribute Response contains multiple sets of Document attributes, one 681 set for each Document. 683 deBry, Hastings, Herriot, Isaacson, Powell 684 Expires February xx, 1998 685 3.1 General Semantics 687 3.1.1 Operation Targets 689 All IPP operations are directed at an instance of an IPP object. For 690 Printer operations, the operation is directed at an IPP Printer using 691 its URI. That is, all Printer operations must somehow contain the 692 target attribute "printer-uri" indicating the target of the operation. 693 In the mapping of IPP over HTTP, the "printer-uri" attribute is 694 actually encoded as the "request-URI" component of the HTTP operation. 695 In other mappings, the target URI might be encoded using some other 696 transport specific mechanism. 698 For Job operations, the operation is directed at an IPP Job using its 699 URI. Like Printer operations, all Job operations must somehow contain 700 the target attribute "job-uri" indicating the target of the operation. 701 Also, like Printer operations, in the mapping of IPP over HTTP, the 702 "job-uri" attribute is actually encoded as the "request-URI" component 703 of the HTTP operation. In other mappings, the target URI might be 704 encoded using some other transport specific mechanism. 706 Propsal: 708 For Job operations, the the operation is directed at the Printer's URI 709 and it is accompanied by the Job ID . This allows the IPP Printer 710 implementation to find the correct Job object. That is, both the 711 "printer-uri" attribute and the "job-id" attribute must both be 712 supplied as the target of every Job operation. Like Printer 713 operations, in the mapping of IPP over HTTP, the "printer-uri" 714 attribute is encoded in the "request-URI" component of the HTTP 715 operation. However, the "job-id" attribute is supplied as an 716 operation attribute within the operation data itself. If a Printer 717 receives an IPP operation, it must check to see if the "job-id" 718 attribute is included among the operation attributes. If it is there, 719 the operation is being directed at the Job identified by the value of 720 "job-id". If it is not there, the operation is being directed at the 721 Printer itself. 723 3.1.2 Operation Status Codes and Messages 725 Every operation response returns a MANDATORY status code and an 726 OPTIONAL status message. A status code provides information on the 727 processing of a request. A status message provides a short textual 728 description of the status of the operation. The status code is 729 intended for use by automata and the status message is intended for 730 the human user. If a response does include a status message,an IPP 731 application is not required to examine or display the status message. 732 Status codes and suggested corresponding status messages are described 734 deBry, Hastings, Herriot, Isaacson, Powell 735 Expires February xx, 1998 736 in section 12. In most cases, if the status code indicates an error, 737 there are additional attributes in the response that are not returned 738 in the successful case. One such example is the group of unsupported 739 attributes and values. This set of attributes is returned in response 740 to an operation request that includes attributes that are not 741 supported by the object. 743 3.1.3 Security Concerns for IPPOperations 745 3.1.3.1 Authenticated Requester Identity 747 IPP is layered on top of security services that supply the requester's 748 identity. It is assumed that identity supplied by the authentication 749 service is the most authenticated identity required by a given site's 750 configuration and current policy. It is also assumed that the 751 layering allows for a single IPP implementation to be run over a 752 consistent interface that supplies the authenticated identity. The 753 authentication interface should allow for various modular and 754 extensible authentication service implementations without requiring 755 changes to the IPP implementation. 757 Once the authenticated identity of the requester has been supplied to 758 the IPP implementation, the implementation uses that identity to 759 enforce any authorization policy(ies) that might be in place. When a 760 Job is created, the identity of the requester of the create operation 761 is persistently stored in the Job's "job-originating-user" attribute. 762 This attribute can be used to match the requester's identity of 763 subsequent operations on that Job in order to enforce the local 764 authorization policy(ies), if any. There are operation status codes 765 that allow an implementation to return information back to the 766 operation requester about what has been forbidden, not allowed, or not 767 authorized. 769 For example, a site security policy might be that only the job owner 770 is allowed to cancel a job using the Cancel-Job operation. 772 3.1.3.2 Restricted Queries 774 In many of these IPP operations, a client supplies a list of 775 attributes to be returned in the response. A Printer may be 776 configured, for security reasons, not to return all attributes that a 777 client requests. It may even return none of the requested attributes. 778 In such cases, the status returned is the same as if the Printer had 779 returned all requested attributes. The client cannot tell by such a 780 response whether the requested attribute was present or absent on the 781 Printer. 783 deBry, Hastings, Herriot, Isaacson, Powell 784 Expires February xx, 1998 785 3.1.4 Versions 787 Each operation request carries with it a version number. Each version 788 number is in the form X.Y where X is the major version number and Y is 789 the minor version number. 791 By including a version number in the client request, it allows the 792 client (the requester) to identify which version of IPP it is 793 interested in using. If the Printer does not support that version, 794 the Printer responds with a status code of 'server-error-version-not- 795 supported'. There is no version negotiation per se. However, if 796 after receiving a version not supported status code from the Printer, 797 there is nothing that prevents a client from trying again with a 798 different version number. For example, a client might be configured 799 to support IPP version 3.0, 2.5, 2.0 and 1.0 (hypothetically 800 speaking). A client might first try to speak version 3.0. If after 801 receiving a version not supported, it might successively try version 802 2.5, then 2.0, then 1.0. All implementations MUST support version 803 1.0. 805 Items that might affect the changing of the major version number 806 include any changes to the protocol specification itself such as: 808 - reordering of ordered attributes or attribute sets 809 - changes to the syntax of existing attributes 810 - changing OPTIONAL to MANDATORY and vice versa 812 Items that might affect the changing of the minor version number 813 include any changes to the model objects and attributes but not the 814 protocol specification itself, such as: 816 - grouping all extensions not included in a previous version into a 817 new version 818 - formally adding in new attribute values 819 - changing any of the type1 attributes 821 3.1.5 Job Creation Operations 823 In order to create a new Job object, a client issues a create request. 824 A create request is any one of following three operation requests: 826 - The Print-Job Request: A client that wants to create a Job with 827 only a single Document uses the Print-Job operation. . The 828 operation allows for the client to "push" the document data to 829 the Printer by including the document data in the request itself. 831 deBry, Hastings, Herriot, Isaacson, Powell 832 Expires February xx, 1998 833 - The Print-URI Request: A client that wants to create a Job with 834 only a single Document where the Printer "pulls" the document 835 data uses the Print-URI operation. In this case, the client 836 includes only a URI reference to the document data (not the 837 document data itself). 839 - The Create-Job Request: A client that wants to create a Job with 840 multiple Documents uses the Create-Job operation. . This 841 operation is followed by an arbitrary number of Send-Document or 842 Send-URI operations (each creating another Document for this 843 Job). The Send-Document operation includes the document data in 844 the request (the client "pushes" the document data to the 845 printer), and the Send-URI operation includes only a URI 846 reference to the document data in the request (the Printer 847 "pulls" the document data from the referenced location). The 848 last Send-Document or Send-URI request includes a "last-document" 849 attribute set to 'true' indicating that this is the last 850 Document for this Job. 852 Throughout this model specification, the term "create request" is used 853 to refer to any of these three operation requests. 855 A Create-Job operation followed by only one Send-Document operation is 856 semantically equivalent to a Print-Job operation, however, for 857 performance reasons, the client SHOULD use the Print-Job operation for 858 all single Document Jobs. Also, Print-Job is a MANDATORY operation 859 (all implementations MUST support it) whereas Create-Job is an 860 OPTIONAL operation, hence some implemations might not support it. 862 Appendix E: Processing IPP Attributes (see Section 15) describes the 863 rules and issues surrounding either the acceptance or rejection of a 864 create request. 866 At job submission time, the Printer does not need to validate the 867 document data or the actual contents of the URI reference to document 868 data (in the case of a Print-URI). The Printer SHOULD check the 869 syntax of the URI to make sure that it appears to be a valid URI. 870 However, other checks are essentially useless,since they require 871 actually parsing and interpreting all of the print data, or in the 872 case of a URI, checking for availability at Job submission time does 873 not guarantee availability at Job processing time. In other words, 874 even if the checks were made a Job submission time, they MUST also be 875 done later at Job processing time, since at job processing time, the 876 Printer might discover any of the following conditions: 878 - additional runtime errors in the document data, 879 - some nested document data is in an unsupported format, 881 deBry, Hastings, Herriot, Isaacson, Powell 882 Expires February xx, 1998 883 - the URI reference is no longer valid (i.e., the server hosting 884 the data might be down), or 885 - any other run-time job processing error 887 At this point, the Printer is unable to return an error status code in 888 the create response, since it had already sent the create response 889 with a successful status code. In this case, the Printer, depending 890 on the error, can set the "job-state", "job-state-reasons", or "job- 891 state-message" attributes to the appropriate value(s) so that later 892 queries can report the correct job status. Also, if the client has 893 requested notification for 'job-problems', the Printer could notify 894 the client via the address(es) in the "notify-addresses" attribute. 896 3.2 Printer Operations 898 3.2.1 Print-Job Operation 900 When an end user desires to submit a print job with only one Document, 901 the client uses a Print-Job operation. A Print-Job operation differs 902 from a Print-URI operation in that a Print-Job operation contains the 903 document data to be printed and a Print-URI operation only contains a 904 reference to the document data. A Validate-Job operation contains no 905 data, only a set of Job Template and Document attributes whose values 906 can be validated for consistency. A Create-Job operation is similar 907 as well, however the Create-Job Request is used to create a multi- 908 Document Job. 910 3.2.1.1 Print-Job Request 912 The following sets of attributes are supplied as as part of the 913 Print-Job Request: 915 Operation Attributes 917 "job-name" (name): 918 This OPTIONAL attribute identifies the client supplied Job name. 919 If this attribute is supplied, its value it used for the "job- 920 name" attribute of the newly created Job object. If this 921 attribute is not supplied by the client, the Printer generates a 922 name to use in the "job-name" attribute of the newly created Job 923 object (see Section 4.3.4). 925 "ipp-attribute-fidelity" (boolean): 926 This is an OPTIONAL attribute. If not supplied, the Printer 927 assumes the value is 'false'. The value 'true' indicates that 928 total fidelity to client supplied attributes and values is 929 required. The value 'false' indicates that a reasonable attempt 931 deBry, Hastings, Herriot, Isaacson, Powell 932 Expires February xx, 1998 933 to print the Job is acceptable. All implementations support both 934 types of job processing. See section 15 for a full description 935 of "ipp-attribute-fidelity" and its relationship to other 936 attributes, especially the Printer's "pdl-override" attribute. 938 "document-name" (name): 939 This OPTIONAL attribute identifies the client supplied Document 940 name. If this attribute is supplied, its value it used for the 941 "document-name" attribute of the newly created Document object. 942 If this attribute is not supplied by the client, the Printer 943 optionally generates a name to use in the "document-name" 944 attribute of the newly created Document object (see Section 4.4). 946 ISSUE: Since this is part of a Print-Job that creates only a 947 single Document, should we 948 not allow this attribute? 950 Job Template Attributes 952 An optional set of Job Template attributes as defined in section 953 4.2. If the client supplies no Job Template attributes in the 954 Print-Job Request, the Printer uses the values set in its default 955 value attributes at job processing time (not job submission 956 time). 958 Document Attributes: 960 An optional set of Document Attributes as defined in section 4.4. 961 If "document-format" is not supplied, the Printer assumes that 962 the document data is in a format that this acceptable to the 963 Printer. If the "document-format" is unknown for a certain 964 document, the client SHALL NOT supply the attribute in the create 965 request or the Send-Document Request. 967 Document Content 969 The client MUST supply the document data to be processed. 971 Note: Since all Print-Job Request attributes are OPTIONAL, the 972 simplest Print-Job Request consists of just the Document Content and 973 nothing else. In this case, the Printer creates a new Job object and 974 stores a generated Job name in the "job-name" attribute. The Job 975 contains a single Document. The Printer optionally generates a name 977 deBry, Hastings, Herriot, Isaacson, Powell 978 Expires February xx, 1998 979 the Document and stores it in the "document-name" attribute. The 980 Printer assumes that the document data is in a format supported by the 981 Printer. When the Printer processes the Job, it uses all of its 982 default values for the missing Job Template attributes. 984 3.2.1.2 Print-Job Response 986 The Printer SHALL return to the client the following sets of 987 attributes as part of the Print-Job Response: 989 Operation Attributes 991 "job-uri" (uri): 992 A URI which the client SHALL use for all other operations on this 993 Job. This is the MANDATORY "job-uri" attribute. 995 ISSUE: Can this just be a "Job Status Attribute"? 997 Job Status Attributes 999 "job-name": 1000 This is the Job's "job-name" attribute. 1002 "job-state": 1003 This is the Job's "job-state" attribute. The value of this 1004 attribute is taken from a "snapshot" of the new Job object 1005 sometime after the time the Printer receives the print request 1006 until just prior to returning the response to the client. 1008 "job-state-reasons": 1009 This is the Job's "job-state-reasons" attribute. The value of 1010 this attribute is taken from a "snapshot" of the new Job object 1011 sometime after the time the Printer receives the print request 1012 until just prior to returning the response to the client. 1014 "job-state-message": 1015 This is the Job's "job-state-message" attribute. Since the "job- 1016 state-message" attribute is OPTIONAL Job attribute, itis 1017 OPTIONALLY included in the response. 1019 Note: Since any printer state information which affects a job's 1020 state is reflected in the "job-state" and "job-state-reasons" 1021 attributes, it is sufficient to return only these attributes and 1022 no specific printer status attributes. 1024 deBry, Hastings, Herriot, Isaacson, Powell 1025 Expires February xx, 1998 1026 Unsupported Attributes: 1028 This is a set of attributes and attribute values that are 1029 unsupported. This output parameter is only returned in the 1030 response if the status code indicates that there was such an 1031 error. 1033 Note: The simplest response consists of the just the job URI ("job- 1034 uri") and the Job Status attributes with a status code of "successful- 1035 ok". 1037 3.2.2 Print-URI Operation 1039 This operation is identical to the Print-Job operation (section 3.2.1) 1040 except that a client supplies a URI reference to the document data 1041 using the "document-uri" (uri) operation attribute rather than 1042 including the document data itself. It is up to the IPP server to 1043 interpret the URI and subsequently "pull" the document from the source 1044 referenced by the URI string. 1046 3.2.3 Validate-Job Operation 1048 This operation is similar to the Print-Job operation (section 3.2.1) 1049 except that a client supplies no document data and the Printer 1050 allocates no resources (i.e., it does not create a new Job object). 1051 This operation is used only to verify capabilities of a printer object 1052 against whatever attributes are supplied by the client in the 1053 Validate-Job request. There is no "job-uri" attribute returned in the 1054 Validate-Job Response neither are there any Job Status attributes 1055 returned in the response. The client MAY include a "document-uri" 1056 attribute in the request. In this case, the Printer SHOULD only 1057 validate the syntax of the URI rather than follow the reference and 1058 validate the contents of the reference. If all is well, the Printer 1059 returns the status code "successful-ok". Otherwise, the Printer 1060 returns a set of unsupported attributes and the appropriate error 1061 status code. 1063 3.2.4 Create-Job Operation 1065 This operation is similar to the Print-Job operation (section 3.2.1) 1066 except that a client supplies no document data or any reference to 1067 document data in the Create-Job request. This operation is followed 1068 by one or more Send-Document or Send-URI operations. If a Printer 1069 object supports the Create-Job operation, it MUST also support either 1070 the Send-Document operation or the Send-URI operation or both. Since 1071 a client can query the Printer's "operations-supported" attribute, a 1072 client SHOULD NOT attempt to use an unsupported optional operation. 1074 deBry, Hastings, Herriot, Isaacson, Powell 1075 Expires February xx, 1998 1076 3.2.5 Get-Attributes Operation 1078 The Printer Get-Attributes operation allows a client to obtain 1079 information from a Printer object. In the operations attributes in a 1080 request, the client supplies the set of attribute names and/or 1081 attribute group names in which the requester is interested. In the 1082 operation attribute in the response, the Printer returns a 1083 corresponding attribute set with the appropriate attribute values 1084 filled in. 1086 For Printers, the attribute groups include: 1088 - 'job-template': all of the Job Template attributes that apply to 1089 a Printer object (the last two columns of the table in Section 1090 4.2). 1091 - 'printer-description': the attributes specified in Section 4.5. 1093 There is also the special group 'all' which includes all supported 1094 attributes. 1096 It is NOT REQUIRED that a Printer support all attributes belonging to 1097 a group, however it is MANDATORY that each Printer implementation 1098 understand all group names. 1100 3.2.5.1 Get-Attributes Request 1102 The following sets of attributes are part of the Get-Attributes 1103 Request when the request is directed to a Printer object: 1105 Operation Attributes"requested-attributes" (1setOf keyword) : 1106 An optional set of attribute names (without values) or attribute 1107 group names in whose values the requester is interested. If the 1108 client omits this input parameter, the Printer SHALL respond as 1109 if this input parameter had been supplied with a value of 'all'. 1111 "document-format" (mimeType) : 1112 This input parameter is useful for determining the set of 1113 supported attribute values which relate to the requested document 1114 format. The Printer SHALL return only (1) those attributes that 1115 are supported and (2) the attribute values that are supported for 1116 the specified document format. By specifying the document 1117 format, the client can get the Printer to eliminate the 1118 attributes and values that are not supported for a specific 1119 document format. For example, a Printer might have multiple 1120 interpreters to support both 'application/postscript' (for 1121 PostScript) and 'text/plain' (for text) documents. However, for 1122 only one of those interpreters might the Printer be able to 1123 support "number-up" with values of 'one', 'two', and 'four'. For 1125 deBry, Hastings, Herriot, Isaacson, Powell 1126 Expires February xx, 1998 1127 the other interpreter it might be able to only support "number- 1128 up" with a value of 'one'. 1130 If the client omits this input parameter, the Printer SHALL 1131 respond as if the input parameter had been set to the value of 1132 the Printer's default value "document-format" attribute were 1133 supplied. It is recommended that the client always supply a 1134 value for document-format, since the Printer's default value for 1135 document-format may be 'langAutomatic', in which case the 1136 returned attributes and values are for the union of the document 1137 formats that the Printer can automatically sense. 1139 ISSUE: What about MIME types. 1141 3.2.5.2 Get-Attributes Response 1143 The Printer returns the following sets of attributes as part of the 1144 Get-Attributes Response: 1146 Requested Attributes 1148 This is the set of requested attributes and their current values. 1149 The Printer ignores (does not respond with) any requested 1150 attribute which is not supported. 1152 3.2.6 Get-Jobs Operation 1154 The Get-Jobs operation allows a client to retrieve the list of Jobs 1155 belonging to the target Printer object. The client may also supply a 1156 list of Job attribute names or attribute group names. These Job 1157 attributes will be returned for each Job that is returned. 1159 This operation is like Get-Attributes, except that Get-Jobs operation 1160 returns attributes from possibly more than one object (see the 1161 description of attribute groups in section 3.3.4). 1163 3.2.6.1 Get-Jobs Request 1165 The client submits the Get-Jobs request to a Printer URI. 1167 The following sets of attributes are part of the Get-Jobs Request: 1169 Operation Attributes 1171 "limit" (integer): 1172 This is an integer value that indicates a limit to the number of 1173 Jobs returned. The limit is a "stateless limit" in that if the 1175 deBry, Hastings, Herriot, Isaacson, Powell 1176 Expires February xx, 1998 1177 limit is n then only the first n jobs are returned in the Get- 1178 Jobs Response; there is no mechanism to allow for the "next" n 1179 jobs. The limit applies across all Job States requested. For 1180 example, if the limit if 50, and there are 75 spooled jobs, only 1181 the first 50 jobs are returned; the other 25 jobs are not 1182 returned. 1184 "requested-attributes" (1setOf keyword): 1185 An optional set of Job attribute names or attribute groups names 1186 in whose values the requester is interested. This set of 1187 attributes is returned for each Job that is returned.. The 1188 attribute group names are the same as for the Get-Attributes 1189 operation for the Job object. If the client omits this input 1190 parameter, the Printer SHALL respond as if this input parameter 1191 had been supplied with a value of " 'job-uri'. 1193 3.2.6.2 Get-Jobs Response 1195 The Printer returns zero or more Job objects each with zero or more 1196 attributes. There is a set of requested attributes for each Job. 1197 After each Job, there is a set of requested attributes for each 1198 Document in the Job. For example: 1200 Job 1 1201 Document 1A 1202 Job 2 1203 Document 2A 1204 Document 2B 1205 Document 2C 1206 Job 3 1207 Document 3A 1208 Job 4 1209 Job 5 1210 Document 5A 1211 Document 5B 1213 Jobs are returned in the following order: First all active Jobs (Jobs 1214 in the 'pending', 'processing', 'pending-held', and 'processing- 1215 stopped' states) are returned oldest to newest (with respect to 1216 expected completion time). Next, all completed Jobs (Jobs in the 1217 'completed', 'aborted', or 'canceled' states) newest to oldest (with 1218 respect to actual completion time). Jobs that are in the 'pending- 1219 held' state SHALL appear in their position as if they were 'pending' 1220 (otherwise, a user might be confused by Jobs that move from 'pending- 1221 held' to 'pending' as seeming to jump ahead in the queue). Note: Jobs 1222 are returned in the following order: 1224 deBry, Hastings, Herriot, Isaacson, Powell 1225 Expires February xx, 1998 1226 First, all active Jobs (Jobs in the 'pending', 'processing', 1227 'pending-held', and 'processing-stopped' states) are returned 1228 oldest to newest (with respect to expected completion time), 1229 followed by 1230 Second, all completed Jobs (Jobs in the 'completed', 'aborted', or 1231 'canceled' states) newest to oldest (with respect to actual 1232 completion time). Jobs that are in the 'pending-held' state 1233 SHALL appear in their position as if they were 'pending' 1234 (otherwise, a user might be confused by Jobs that move from 1235 'pending-held' to 'pending' as seeming to jump ahead in the 1236 queue). 1238 3.3 Job Operations 1240 The target of Job operations are Job objects. Since Job objects are 1241 identified with both the Printer's URI and the "job-id" attribute, the 1242 following applies rules apply to all Job operations: 1244 - The Printer's URI is encoded at the transport level the same as 1245 all Printer operations 1246 - The "job-id" attribute is included as an operation attribute for 1247 all Job operations. 1248 3.3.1 Send-Document Operation 1250 Once a Job object has been created using a Create-Job operation 1251 (returning a "job-uri"), a client directs a Send-Document operation to 1252 the newly create Job object. The operation adds a new Document to the 1253 Job object. An entire document MUST be sent in a single Send-Document 1254 Request. 1256 3.3.1.1 Send-Document Request 1258 The client submits the request to a Job URI. 1260 The following attribute sets are part of the Send-Document Request: 1262 Operation Attributes: 1264 "document-name" (name): 1265 This OPTIONAL attribute identifies the client supplied Document 1266 name. If this attribute is supplied, its value it used for the 1267 "document-name" attribute of the newly created Document object. 1268 If this attribute is not supplied by the client, the Printer 1269 optionally generates a name to use in the "document-name" 1270 attribute of the newly created Document object (see Section ??). 1272 "last-document" (boolean): 1274 deBry, Hastings, Herriot, Isaacson, Powell 1275 Expires February xx, 1998 1276 This is a boolean flag that is set to 'true' if this is the last 1277 Document for the Job. 1278 Document Attributes: 1280 An optional set of Document Attributes as defined in section 4.4. 1281 If "document-format" is not supplied, the Printer assumes that 1282 the document data is in a format that this acceptable to the 1283 Printer. If the "document-format" is unknown for a certain 1284 document, the client SHALL NOT supply the attribute in the create 1285 request or the Send-Document Request. 1287 Document Content 1289 The client MUST supply the document data to be processed. 1291 3.3.1.2 Send-Document Response 1293 The following sets of attributes are part of the Send-Document 1294 Response: 1296 Job Status Attributes 1298 "job-name": 1299 This is the Job's "job-name" attribute. 1301 "job-state": 1302 This is the Job's "job-state" attribute. The value of this 1303 attribute is taken from a "snapshot" of the new Job object 1304 sometime after the time the Printer receives the print request 1305 until just prior to returning the response to the client. 1307 "job-state-reasons": 1308 This is the Job's "job-state-reasons" attribute. The value of 1309 this attribute is taken from a "snapshot" of the new Job object 1310 sometime after the time the Printer receives the print request 1311 until just prior to returning the response to the client. 1313 "job-state-message": 1314 This is the Job's "job-state-message" attribute. Since the "job- 1315 state-message" attribute is OPTIONAL Job attribute, itis 1316 OPTIONALLY included in the response. 1318 Unsupported Attributes: 1320 This is a set of attributes and attribute values that are 1321 unsupported. This output parameter is only returned in the 1323 deBry, Hastings, Herriot, Isaacson, Powell 1324 Expires February xx, 1998 1325 response if the status code indicates that there was such an 1326 error. 1328 3.3.2 Send-URI Operation 1330 This operation is identical to the Send-Document operation (see 1331 section 3.3.1) except that a client supplies a URI reference 1332 ("document-uri" operation attribute) rather than the document data 1333 itself. It is up to the IPP server to interpret the URI and 1334 subsequently "pull" the document from the source referenced by the URI 1335 string. 1337 3.3.3 Cancel Job Operation 1339 This operation allows a client to cancel a Print Job any time after 1340 the print job has been submitted to the Printer. Since a Job might 1341 already be printing by the time a Cancel-Job is received, some pages 1342 may be printed before the job is actually terminated. 1344 3.3.3.1 Cancel-Job Request 1346 The client submits the request to a Job URI. 1348 The following attribute sets are part of the Cancel Job Request: 1350 Operation Attributes 1352 "message" (text): 1353 Optional message to the operator 1355 3.3.3.2 Cancel-Job Response 1357 There are no attributes in the Cancel Job Response other than the 1358 Status Code and optional Status Message. Once a successful response 1359 has been sent, the implementation guarantees that the Job will 1360 eventually end up in the 'cancelled' state. If the implementation is 1361 forced to leave the job in the some other state, the "job-state- 1362 reasons" SHOULD contain the 'processing-to-stop-point' value which 1363 indicates to later queries that although the Job may still be 1364 'processing', it will eventually end up in the 'cancelled' state, not 1365 the 'completed' state. 1367 3.3.4 Get-Attributes Operation 1369 The Job Get-Attributes operation allows a client to obtain information 1370 from a Job object and it is almost identical to the Get-Attributes 1372 deBry, Hastings, Herriot, Isaacson, Powell 1373 Expires February xx, 1998 1374 operation for a Printer object (see section 3.2.5). The only 1375 differences are that the operation is directed at a Job rather than a 1376 Printer and there is no "document-format" operation attribute used 1377 when querying a Job object. 1379 For Jobs, the attribute groups include: 1381 - 'job-template': all of the Job Template attributes that apply to 1382 a Job object (the first column of the table in Section 4.2). 1383 - 'job-description': the attributes specified in Section 4.3. 1385 There is also the special group 'all' which includes all supported 1386 attributes. 1388 There is another special group named 'document-attributes' which 1389 consists of the Document Attributes described in section 4.4. If any 1390 Document Attributes are requested, the response contains a separate 1391 set of Document attributes for each Document in the Job. 1393 3.3.4.1 Get-Attributes Request 1395 The following attribute sets are part of the Get-Attributes Request 1396 when the request is directed to a Job object: 1398 Operation Attributes: 1400 "requested-attributes" (1setOf keyword) : 1401 An optional set of attribute names (without values) or attribute 1402 group names in whose values the requester is interested. If the 1403 client omits this attribute, the Printer SHALL respond as if this 1404 input parameter had been supplied with a value of 'all'. 1406 3.3.4.2 Get-Attributes Response 1408 The implementation returns the following response attributes as part 1409 of the Get-Attributes Response: 1411 Job Attributes: 1413 This is the set of requested attributes and their current values. 1414 The implementation ignores (does not respond with) any requested 1415 attribute which is not supported. 1417 Document Attributes: 1419 deBry, Hastings, Herriot, Isaacson, Powell 1420 Expires February xx, 1998 1421 This is the set of requested attributes and their current values. 1422 The implementation ignores (does not respond with) any requested 1423 attribute which is not supported. One set is returned for each 1424 Document in the Job. 1426 4. Object Attributes 1428 This section describes the attributes with their corresponding 1429 syntaxes and values that are part of the IPP model. The sections below 1430 show the objects and their associated attributes which are included 1431 within the scope of this protocol. Many of these attributes are 1432 derived from other relevant specifications: 1434 - ISO/IEC 10175 DPA (Final, June 1996) [5] 1435 - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1] 1436 - Internet-Draft: Printer MIB (Draft Standard in progress, July 1437 1997) [29] 1438 - Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997) 1439 [27] 1441 Each attribute is uniquely identified in this document using a 1442 "keyword" (see section 11.2.1). The keyword is included in the 1443 section header describing that attribute. Not only are attributes 1444 uniquely identified with keywords, some attributes are defined to have 1445 a syntax which is a set of keywords. 1447 4.1 Attribute Syntaxes 1449 This section defines the basic syntax types that a client and server 1450 SHALL be able to handle. These are considered to be a set of type2 1451 enum values. The values are: 1453 '1' 'text': a sequence of characters, length: 0 to 4095, where 1454 each character is a member of the ISO 10646 [??] coded 1455 character set using the UTF-8 character encoding scheme 1456 [28].. This syntax type is used for free form human 1457 readable text intended for human consumption. 1458 '2' 'name': this is the same a "text" except that the sequence 1459 of characters is of length 1 to 255 This syntax type 1460 is used for referencing some object or entity via a 1461 user-friendly string, such as a Printer name, a 1462 document name, a user name, or a host name. 1463 '3' 'keyword': a sequence of characters, length: 1 to 255, 1464 containing only the characters ASCII lowercase letters 1465 ("a" - "z"), ASCII digits ("0" - "9"), hyphen ("-"), 1466 dot ("."), and underscore ("_"). The first character 1468 deBry, Hastings, Herriot, Isaacson, Powell 1469 Expires February xx, 1998 1470 MUST be an ASCII lowercase letter. This syntax type is 1471 used for enumerating semantic identifiers of entities 1472 in the abstract protocol (specified in this document). 1473 These entities can be attribute names or values of 1474 attributes. When a keyword is used to represent an 1475 attribute (its name), it MUST be unique within the full 1476 scope of IPP objects and attributes. When a keyword is 1477 used to represent a value of an attribute, it MUST be 1478 unique just within the scope of that attribute. That 1479 is, the same keyword can not be used for two different 1480 values within the same attribute to mean two different 1481 semantic ideas. However, the same keyword can be used 1482 across two or more attributes, representing different 1483 semantic ideas for each attribute. 1484 '4' 'enum': an enumerated integer value that is in the range 1485 from -2**31 to 2**31 - 1. Each value has an 1486 associated keyword name. Each attribute (whose syntax 1487 is enum) enumerates the values that are defined for the 1488 attribute. The enum type is used for attributes for 1489 which there are enum values assigned by other 1490 standards, such as SNMP MIBs. A number of attribute 1491 enum values in this specification are also used for 1492 corresponding attributes in the IETF Printer MIB [1] 1493 and the Job Monitoring MIB [27]. Enums are not used 1494 for attributes to which the system administrator may 1495 assign values. Values in the range 2**30 to 2**31 - 1 1496 are reserved for private or experimental use. 1497 Implementers are warned that use of such values may 1498 conflict with other implementations. Implementers are 1499 encouraged to request registration of enum values 1500 following the procedures in Section 6. 1501 '5' 'uri': a sequence of characters as defined in rfc1738 and 1502 rfc1808. This syntax type is used for carrying 1503 Universal Resource Identifiers. 1504 '6' 'uriScheme': a sequence of characters representing the URI 1505 Scheme. These include 'http' for HTTP schemed URIs 1506 (e.g., http://...), and 'ftp' for FTP schemed URIs 1507 (e.g., ftp://...). 1508 '7' 'human-language': a standard identifier for human language 1509 and optionally a country. The values for this syntax 1510 type are taken from RFC 1766 [26]. Independent of the 1511 human language, all text strings are strings of 1512 characters where each character is a member of the ISO 1513 10646 [??] coded character set. Text strings are 1514 encoded using the UTF-8 character encoding scheme [28] 1515 '8' 'octetString:' a sequence of octets. This syntax type is 1516 used for opaque data, such as the document-content. 1518 deBry, Hastings, Herriot, Isaacson, Powell 1519 Expires February xx, 1998 1520 '9' 'boolean': two values of 'true' and 'false'. This syntax 1521 type is like a keywordSet, but there are only two 1522 values. Note: An application might use a checkbox for 1523 an attribute with this syntax type. 1524 '10' 'integer': an integer value that is in the range from - 1525 2**31 to 2**31 - 1. Each attribute specifies the range 1526 constraint explicitly if the range is different from 1527 the full range of possible integer values (e.g., 0 - 1528 100 for the "job-priority" attribute). 1529 '11' 'dateTime': a standard, fixed length representation of date 1530 and time as defined in RFC 1514 [32] and RFC 1903 [33]. 1531 '12' 'resolution': a special syntax used only for "printer- 1532 resolution" and "printer-resolution-supported" It 1533 consists of 3 parts: a cross feed direction resolution 1534 (positive integer value), a feed direction resolution 1535 (positive integer value) and a units value. All these 1536 are taken from the Printer MIB [1] suggested values. 1537 '13' 'mimeType': MIME type values as defined by RFC 2045 [??]. 1538 '14' '1setOf X': 1 or more values of type X. This syntax type 1539 is used for multi-valued attributes, whose value is a 1540 set of values. Note: The syntax type is called 1541 "1setOf" to indicate that set of values SHALL NOT be 1542 empty (a set of size 0). 1544 '15' 'rangeOf X': a range of value of type X. This syntax type 1545 is used for ordered values (numeric, lexical, etc.) 1546 such as integers. 1548 4.2 Job Template Attributes 1550 Job Template attributes describe job processing behavior. Job 1551 Template attributes are OPTIONAL (see section 11.2.3 for a description 1552 of support for OPTIONAL attributes). 1554 Job Template attributes conform to the following rules. For each Job 1555 Template attribute called "foo": 1557 1. The Printer supports a "foo-supported" attribute that describes 1558 which job processing behaviors are supported by a Printer. A 1559 client can query the Printer and find out what behaviors are 1560 supported by inspecting the values of the "foo-supported" 1561 attribute. 1563 2. The Printer also supports a default value attribute named "foo". 1564 This default value attribute describes what will be done when no 1565 other job processing information is supplied by the client 1567 deBry, Hastings, Herriot, Isaacson, Powell 1568 Expires February xx, 1998 1569 (either explicitly as an IPP attribute in the create request or 1570 implicitly as an embedded instruction within the job data). 1571 However, if the Printer supports either the "foo" default value 1572 attribute or the "foo-supported" attribute, the Printer MUST 1573 support both. 1575 3. "foo" is also optionally supplied by the client in a create 1576 request. If "foo" is supplied, the client is specifying that the 1577 Printer SHALL apply thecorresponding job processing behavior to 1578 this Job while processing the Job. When "foo" is not supplied, 1579 the client is specifying that the Printer apply the default job 1580 processing behavior. Since an administrator could change the 1581 default value after the Job has been submitted (while it is 1582 waiting to be processed), the default value in affect a job 1583 processing time is used for processing a Job with no client 1584 supplied attribute. 1586 If an application wishes to present an end user with a list of 1587 supported values from which to choose, the application SHOULD query 1588 the Printer for the supported values. The application SHOULD also 1589 query the default value attributes. If the application then limits 1590 selectable values to only those value that are supported, application 1591 guarantees that the values supplied by the client in the create 1592 request all fall within the set of supported values at the Printer. 1593 When querying the Printer, the client MAY enumerate each attribute by 1594 name in the Get-Attributes Request, or the client MAY just name the 1595 "job-template" group in order to get the complete set supported 1596 attributes (both supported value and default value attributes). 1598 The "job-priority" attribute is an example of a Job Template 1599 attribute. It is an integer in the range from 1 to 100. A client can 1600 query the Printer for the "job-priority-supported" attribute and the 1601 "job-priority" default value attribute. The supported attribute 1602 contains a range of supported priority values which is equal to or 1603 smaller than the maximum range of 1 to 100. The default value 1604 attribute contains the job priority value that will be used for a new 1605 job if the client does not supply a value in the create request. If 1606 the client does supply the "job-priority" attribute, the Printer 1607 validates the value to make sure that it falls within the range of 1608 supported values. If the client-supplied value is supported, the Job 1609 object is created and the "job-priority" attribute is populated with 1610 that value. The Job object, when queried, returns the value supplied 1611 by the client. If the client does not supply a "job-priority" value 1612 in the create request, the Job object is created, but no "job- 1613 priority" attribute is associated with the Job. The client queries 1614 the Printer's default value "job-priority" value to find out at what 1615 priority the job will be processed. 1617 deBry, Hastings, Herriot, Isaacson, Powell 1618 Expires February xx, 1998 1619 The table below summarizes the names and relationships for all Job 1620 Template attributes. The first column of the table (labled "Job") 1621 shows the name and syntax for each Job Template attribute in the Job 1622 object. These are the attributes that can optionally be supplied by 1623 the client in a create request. The last two columns (labled 1624 "Printer: Default Value" and "Printer: Supported Values") shows the 1625 name and syntax for each Job Template attribute in the Printer object 1626 (the default value attribute and the supported values attribute). A 1627 "No" in the table means the Printer SHALL NOT support the attribute 1628 (the attribute is simply not applicable). The second part of the 1629 table lists Document level attributes. Document level attributes have 1630 the same semantics as Job Template 1632 deBry, Hastings, Herriot, Isaacson, Powell 1633 Expires February xx, 1998 1634 +===================+======================+======================+ 1635 | Job Attribute |Printer: Default Value| Printer: Supported | 1636 | | Attribute | Values Attribute | 1637 +===================+======================+======================+ 1638 | job-sheets | job-sheets |job-sheets-supported | 1639 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1640 | | | | 1641 +-------------------+----------------------+----------------------+ 1642 | notify-events | notify-events | notify-events- | 1643 |(1setOf |(1setOf type2 keyword)| supported | 1644 | type2 keyword) | |(1setOf type2 keyword)| 1645 +-------------------+----------------------+----------------------+ 1646 |notify-addresses | No |notify-addresses | 1647 |(1setOf uri) | |-supported | 1648 | | |(1setOf uriScheme) | 1649 +-------------------+----------------------+----------------------+ 1650 | job-priority | job-priority |job-priority-supported| 1651 | (integer 1-100) | (integer 1-100) |(rangeOf integer | 1652 | | | 1-100) | 1653 +-------------------+----------------------+----------------------+ 1654 | job-hold-until | job-hold-until | job-hold-until- | 1655 | (type4 keyword) | (type4 keyword) | supported | 1656 | | |(1setOf type4 keyword)| 1657 +-------------------+----------------------+----------------------+ 1658 |multiple-document- |multiple-document- |multiple-document- | 1659 | handling | handling |handling-supported | 1660 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1661 +-------------------+----------------------+----------------------+ 1662 | media | media | media-supported | 1663 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1664 | | | | 1665 +-------------------+----------------------+----------------------+ 1666 | number-up | number-up | number-up-supported | 1667 | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| 1668 | | | | 1669 +-------------------+----------------------+----------------------+ 1670 | sides | sides | sides-supported | 1671 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1672 | | | | 1673 +-------------------+----------------------+----------------------+ 1674 | printer-resolution| printer-resolution | printer-resolution- | 1675 | (type2 enum) | (type2 enum) | supported | 1676 | | |(1setOf type2 enum) | 1677 +-------------------+----------------------+----------------------+ 1678 | print-quality | print-quality | print-quality- | 1679 | (type2 enum) | (type2 enum) | supported | 1680 | | |(1setOf type2 enum) | 1682 deBry, Hastings, Herriot, Isaacson, Powell 1683 Expires February xx, 1998 1684 +-------------------+----------------------+----------------------+ 1685 | finishings | finishings | finishings-supported | 1686 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 1687 | | | | 1688 +-------------------+----------------------+----------------------+ 1689 | copies | copies | copies-supported | 1690 | (integer: 1 - MAX)| (2setOf integer | (2rangeOf integer | 1691 | | 1 - MAX) | 1- MAX) | 1692 +-------------------+----------------------+----------------------+ 1693 | page-range | No | page-range- | 1694 | (rangeOf integer) | | supported (boolean) | 1695 | | | | 1696 +===================+======================+======================+ 1697 | | 1698 | Note: The following attributes are Document attributes, they | 1699 | have the same semantics a Job Template attributes, | 1700 | however they apply to each Document object rather than | 1701 | at the Job level as Job object attributes. | 1702 | | 1703 +===================+======================+======================+ 1704 | Document |Printer: Default Value| Printer: Supported | 1705 | Attribute | Attribute | Values Attribute | 1706 +===================+======================+======================+ 1707 | document-format | document-format | document-format- | 1708 | (mimeType) | (mimeType) | supported | 1709 | | |(1setOf mimeType) | 1710 +-------------------+----------------------+----------------------+ 1711 | compression | No | compression-supported| 1712 | (type3 keyword) | |(1setOf type3 keyword)| 1713 | | | | 1714 +-------------------+----------------------+----------------------+ 1715 | document-k-octets | No |job-k-octets-supported| 1716 | (integer) | | (rangeOf integer) | 1717 | | | | 1718 +-------------------+----------------------+----------------------+ 1719 | document- | No | job-impressions- | 1720 | impressions | | supported | 1721 | (integer) | | (rangeOf integer) | 1722 +-------------------+----------------------+----------------------+ 1723 | document-media- | No | job-media-sheets- | 1724 | sheets | | supported | 1725 | (integer) | | (rangeOf integer) | 1726 +-------------------+----------------------+----------------------+ 1728 4.2.1 job-sheets (type4 keyword) 1730 This attribute determines which if any banner page(s) SHALL be printed 1731 with a job. 1733 deBry, Hastings, Herriot, Isaacson, Powell 1734 Expires February xx, 1998 1735 Standard values are: 1737 'none': no job sheet is printed 1738 'standard': one or more site specific standard job sheets are 1739 printed, e.g. a single start sheet or both start and end sheet is 1740 printed 1742 To force no job sheets, the system administrator SHALL set the 1743 supported value to only 'none'. To force the use of banner pages, the 1744 supported values SHALL not include 'none'. In this case, if a client 1745 requests 'none', the create request is rejected. 1747 Note: The effect of this attribute on jobs with multiple documents is 1748 controlled by the "multiple-document-handling" job attribute (section 1749 4.2.6). 1751 4.2.2 notify-events (1setOf type2 keyword) 1753 This attribute specifies the events for which the end user desires 1754 some sort of notification. The "notify-addresses" attribute is used 1755 to describe the destination addresses for these events. 1757 Standard values are: 1759 'none': the Printer SHALL not notify. 1760 'all': the Printer SHALL notify when any of the events occur. 1761 'job-completion': the Printer SHALL notify when the job containing 1762 this value completes (i.e., enters the 'completed', 'canceled', 1763 or 'aborted' state) with or without errors. 1764 'job-problems': the Printer SHALL notify when this job has a 1765 problem (i.e., when the job leaves the 'processing' state and 1766 enters the 'processing-stopped' state). 1767 'job-started-processing': the Printer SHALL notify when the 1768 Printer starts processing the Job (i.e., when the job leaves the 1769 'pending' state and enters the 'processing' state). 1770 'printer-problems': the Printer SHALL notify when this job is 1771 affected by a Printer problem. This happens when the printer 1772 enters the 'stopped' state while this job is in the 'pending', 1773 'pending-held', 'processing', or 'processing-stopped' state. 1775 ISSUE: Need to add generic alerts from the Printer MIB. 1777 4.2.2.1 Event Notification Content 1779 The content of each event notification is: 1781 deBry, Hastings, Herriot, Isaacson, Powell 1782 Expires February xx, 1998 1783 *time: CRLF 1785 event: CRLF 1786 printer-uri: CRLF 1787 printer-state: CRLF 1788 *printer-state-reason: CRLF 1789 *job-id: CRLF 1790 *job-state: CRLF 1791 *job-state-reason: CRLF 1792 *message: CRLF 1794 The contents of the event notification are intended for machine 1795 consumption more than human consumption, however the use of US ASCII 1796 enables humans to retrieve some semantics from the event report 1797 itself. Items above marked with and asterisk ('*') are optional. If 1798 the implementation does not support any notion of time, then field is 1799 not present in the notification body. If the event is Printer 1800 related, only the Printer related fields are included. If the event 1801 is Job related, all of the Job fields SHOULD be included. 1803 4.2.3 notify-addresses (1setOf uri) 1805 This attribute describes both where (the address) and how (the 1806 mechanism for delivery ) events are to be delivered. The Printer SHALL 1807 use this attribute as the set of addresses and methods for sending 1808 messages when an event occurs that the end user (job submitter) has 1809 registered an interest in. 1811 Standard uriScheme values are: 1813 'mailto': the Printer sends a text message via email to the 1814 specified email address 1815 'http': the Printer sends an HTML formatted message via an HTTP 1816 POST method to the specified URI 1817 'ftp': the Printer sends a text message via an FTP `append' command 1818 to the specified remote file. 1820 4.2.4 job-priority (integer(1:100)) 1822 This attribute specifies a priority for scheduling the Job. A higher 1823 value specifies a higher priority. The value 1 indicates the lowest 1824 possible priority. The value 100 indicates the highest possible 1825 priority. Among those jobs that are ready to print, a Printer SHALL 1826 print all jobs with a priority value of n before printing those with a 1827 priority value of n-1 for all n. The mapping of vendor-defined 1828 priority over this range is implementation-specific. 1830 deBry, Hastings, Herriot, Isaacson, Powell 1831 Expires February xx, 1998 1832 4.2.5 job-hold-until (type4 keyword) 1834 This job attribute specifies the named time period during which the 1835 Job print job SHALL become a candidate for printing. 1837 Standard values for named time periods are: 1839 'no-hold': immediately, if there are not other reasons to hold the 1840 job. 1841 'day-time': during the day. 1842 'evening': evening 1843 'night': night 1844 'weekend': weekend 1845 'second-shift': second-shift 1846 'third-shift': third-shift (after midnight) 1848 An administrator SHALL associate allowable print times with a named 1849 time period (by means outside IPP 1.0). An administrator is 1850 encouraged to pick names that suggest the type of time period. 1852 If the value of this attribute specifies a time period that is in the 1853 future, the Printer SHALL add the 'job-hold-until-specified' value to 1854 the job's "job-state-reasons" attribute, move the job to the 'pending- 1855 held' state, and SHALL NOT schedule the job for printing until the 1856 specified time-period arrives. When the specified time period 1857 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 1858 from the job's "job-state-reason" attribute and, if no other job 1859 reasons that keep it in the 'pending-held' state remain, the Printer 1860 SHALL consider the job as a candidate for processing by moving the job 1861 to the 'pending' state. 1863 If this job attribute value is the named value 'no-hold', or specified 1864 time period is in effect has already started , the job SHALL be a 1865 candidate for processing immediately. 1867 4.2.6 multiple-document-handling (type2 keyword) 1869 This job attribute is relevant only if a job consists of two or more 1870 documents. It controls finishing operations, and job-sheet placement. 1871 When the copies attribute exceeds 1, it also controls the order of 1872 documents.. 1874 Standard values are: 1876 'single-document': If the files for the job are a and b, then files 1877 a and b SHALL be treated as a single document for finishing 1878 operations. Also, there SHALL be no slip sheets between files a 1880 deBry, Hastings, Herriot, Isaacson, Powell 1881 Expires February xx, 1998 1882 and b and the Printer SHALL NOT force each document to start on a 1883 new page or new media sheet. If more than one copy is made, the 1884 ordering SHALL be a, b, a, b, ...., and the Printer SHALL force 1885 each copy to start on a new sheet. 1886 'separate-documents-uncollated-copies': If the files for the job 1887 are a and b, then each file SHALL be treated as a single document 1888 for finishing operations. Also, a client may specify that a slip 1889 sheet be placed between files a and b and the Printer shall force 1890 each document copy to start on a new sheet. If more than one 1891 copy is made, the ordering SHALL be a, a, b, b, .... 1892 'separate-documents-collated-copies': If the files for the job are 1893 a and b, then each file SHALL be treated as a single document for 1894 finishing operations. Also, a client may specify that a slip 1895 sheet be placed between files a and b. If more than one copy is 1896 made, the ordering SHALL be a, b, a, b, ...., and the Printer 1897 shall force each document copy to start on a new sheet 1899 4.2.7 media (type4 keyword) 1901 This job attribute identifies the medium that the Printer uses for all 1902 pages of the Job. 1904 The values for "media" include medium-names, medium-sizes, input-trays 1905 and electronic forms so that one attribute specifies the media. If a 1906 printer allows a client to specify a medium name as the value of this 1907 attribute, such a medium name implicitly selects an input-tray that 1908 contains the specified medium. If a printer allows a client to 1909 specify a medium size as the value of this attribute, such a medium 1910 size implicitly selects a medium name that in turn implicitly selects 1911 an input-tray that contains the medium with the specified size. If a 1912 printer allows a client to specify an input-tray as the value of this 1913 attribute, such an input-tray implicitly selects the medium that is in 1914 that input-tray at the time the job prints. This case includes manual- 1915 feed input-trays. If a printer allows a client to specify an 1916 electronic form as the value of this attribute, such an electronic 1917 form implicitly selects a medium-name that in turn implicitly selects 1918 an input-tray that contains the medium specified by the electronic 1919 form. The electronic form also implicitly selects an image that the 1920 Printer SHALL merge with the data from the document as its prints each 1921 page. 1923 ISSUE: What should we do about "media-ready"? 1925 Standard values are (taken from ISO DPA and the Printer MIB) and are 1926 listed in section 14. 1928 deBry, Hastings, Herriot, Isaacson, Powell 1929 Expires February xx, 1998 1930 4.2.8 number-up (type3 keyword) 1932 This job attribute specifies the number of source page-images to 1933 impose upon a single side of an instance of a selected medium. 1935 Standard values are: 1937 'none': The Printer SHALL not include any embellishments and SHALL 1938 place one logical page on a single side of an instance of the 1939 selected medium without any translation, scaling, or rotation. 1940 'one': The Printer SHALL place one logical page on a single side of 1941 an instance of the selected medium (MAY add some sort of 1942 translation, scaling, or rotation). 1943 'two': The Printer SHALL place two logical pages on a single side 1944 of an instance of the selected medium (MAY add some sort of 1945 translation, scaling, or rotation). 1946 'four': The Printer SHALL place four logical pages on a single side 1947 of an instance of the selected medium (MAY add some sort of 1948 translation, scaling, or rotation). 1950 This attribute primarily controls the translation, scaling and 1951 rotation of page images, but a site may choose to add embellishments, 1952 such as borders to each logical page. 1954 4.2.9 sides (type2 keyword) 1956 This attribute specifies how source page-images are to be imposed upon 1957 the sides of an instance of a selected medium. 1959 The standard values are: 1961 'one-sided': imposes each consecutive source page-image upon the 1962 same side of consecutive media sheets. 1963 'two-sided-long-edge': imposes each consecutive pair of source 1964 page-image upon front and back sides of consecutive media sheets, 1965 such that the orientation of each pair of source-pages on the 1966 medium would be correct for the reader as if for binding on the 1967 long edge. This imposition is sometimes called 'duplex'. 1968 'two-sided-short-edge': imposes each consecutive pair of source 1969 page-image upon front and back sides of consecutive media sheets, 1970 such that the orientation of each pair of source-pages on the 1971 medium would be correct for the reader as if for binding on the 1972 short edge. This imposition is sometimes called 'tumble' or 1973 'head-to-toe'. 1975 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 1976 all work the same for portrait or landscape. However 'head-to-toe' is 1977 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 1979 deBry, Hastings, Herriot, Isaacson, Powell 1980 Expires February xx, 1998 1981 switches between 'duplex' and 'tumble' when using portrait and 1982 landscape modes. 1984 4.2.10 printer-resolution (resoultion) 1986 This attribute identifies the resolution that Printer uses for a 1987 certain Job. 1989 The value is a special type consisting of a pair of integers and a 1990 value which specifies the units for the two integers. The three 1991 values are the same as those specified in the draft-ietf- 1992 printmib-mib-info-02.txt as prtMarkerAddressabilityFeedDir (the 1993 resolution in the feed direction), 1994 prtMarkerAddressabilityXFeedDir (the resolution in the cross feed 1995 direction), and prtMarkerAddressabilityUnit (the units of the 1996 first two values, namely dots per inch and dots per centimeter). 1997 4.2.11 print-quality (type2 enum) 1999 This attribute specifies the print quality that the Printer uses for a 2000 certain Job. 2002 The standard values are: 2004 '3' 'draft': lowest quality available on the printer 2005 '4' 'normal': normal or intermediate quality on the printer 2006 '5' 'high': highest quality available on the printer 2008 4.2.12 finishings (1setOf type2 enum) 2010 This attribute identifies the finishing operations that the Printer 2011 uses for each copy of each printed document in a particular Job. For 2012 Jobs with multiple documents, the "multiple-document-handling" 2013 attribute determines what constitutes a _copy_ for purposes of 2014 finishing. 2016 Standard values are: 2018 '3' 'none': Perform no finishing 2019 '4' 'staple': Bind the document(s) with one or more staples. 2020 The exact number and placement of the staples is site- 2021 defined. 2022 '5' 'staple-top-left': Place one or more staples on the top 2023 left corner of the document(s). 2024 '6' 'staple-bottom-left': Place one or more staples on the 2025 bottom left corner of the document(s). 2026 '7' 'staple-top-right': Place one or more staples on the top 2027 right corner of the document(s). 2029 deBry, Hastings, Herriot, Isaacson, Powell 2030 Expires February xx, 1998 2031 '8' 'staple-bottom-right': Place one or more staples on the 2032 bottom right corner of the document(s). 2033 '9' 'saddle-stitch': Bind the document(s) with one or more 2034 staples (wire stitches) along the middle fold. The 2035 exact number and placement of the stitches is site- 2036 defined. 2037 '10' 'edge-stitch': Bind the document(s) with one or more 2038 staples (wire stitches) along one edge. The exact 2039 number and placement of the staples is site-defined. 2040 '11' 'punch': This value indicates that holes are required in 2041 the finished document. The exact number and placement 2042 of the holes is site-defined The punch specification 2043 MAY be satisfied (in a site- and implementation- 2044 specific manner) either by drilling/punching, or by 2045 substituting pre-drilled media. 2046 '12' 'cover': This value is specified when it is desired to 2047 select a non-printed (or pre-printed) cover for the 2048 document. This does not supplant the specification of a 2049 printed cover (on cover stock medium) by the document 2050 itself. 2051 '13' 'bind': This value indicates that a binding is to be 2052 applied to the document; the type and placement of the 2053 binding is site-defined." 2055 4.2.13 copies (integer(1:2**31 - 1)) 2057 This attribute specifies the number of copies to be printed. On many 2058 devices the supported number of collated copies will be limited by the 2059 number of physical output bins on the device, and may be different 2060 from the number of uncollated copies which can be supported. Therefore 2061 the copies-supported attribute specifies a set of ranges; the first 2062 defines the supported range of values for uncollated copies, and the 2063 second the supported range of values for collated printing. The set 2064 of default values for copies specify the default number of uncollated 2065 copies followed by the default number of collated copies. 2067 The effect of this attribute is controlled by the "multiple-documents- 2068 handling" attribute (section 4.2.6).This attribute specifies the 2069 number of copies of the job to be printed. 2071 4.2.14 page-range (rangeOf integer) 2073 This attribute specifies the pages of a document which are to be 2074 printed. In most cases, the exact pages to be printed will be 2075 generated by a device driver and this attribute would not be required. 2076 However, when printing an archived document which has already been 2077 formatted, the end user may elect to print just a subset of the pages 2078 contained in the document. In this case, if page-range = n.m is 2080 deBry, Hastings, Herriot, Isaacson, Powell 2081 Expires February xx, 1998 2082 specified, the first page to be printed will be page n. All subsequent 2083 pages of the document will be printed through and including page m. 2085 Page-range supported is a boolean value indicating whether or not the 2086 printer is capable of supporting the printing of page ranges. This 2087 capability may differ from one PDL to another. The page-range default 2088 value is always zero (0) and indicates that all pages of the document 2089 will be printed if a page-range is not specified. 2091 4.2.15 orientation (type2 enum) 2093 This attribute specifies the orientation of the content on the output 2094 pages to be printed. In most cases, the orientation of the content is 2095 specified within the document format generated by the device driver at 2096 print time. However, some document formats (such as "text") do not 2097 support the notion of page orientation, and it is possible to bind the 2098 orientation after the document content has been generated. This 2099 attribute provides an end user with the means to specify orientation 2100 for such documents. 2102 Standard values are: 2104 '1' 'portrait': The content will be printed across the short 2105 edge of the media. 2106 '2' 'landscape': The content will be printed across the long 2107 edge of the media. 2109 4.2.16 document-format (mimeType) 2111 This attribute defines the document format of the data to be printed. 2112 The standard values for this attribute are MIME types. Since the 2113 complete list is rather long, the full enumeration of standard values 2114 is found in section 13 APPENDIX C: "document-format" values. 2116 If the "document-format" is unknown for a certain document, the client 2117 does not supply the attribute in the create request or the Send- 2118 Document Request. 2120 4.2.17 compression (type3 keyword) 2122 This attribute identifies compression algorithms used for compressed 2123 document data (not the operation data). 2125 Standard values are : 2127 'none': no compression is used. 2128 'zip':ZIP (inflate/deflate) compression technology 2129 `gzip' GNU zip compression technology described in RFC 1952. 2131 deBry, Hastings, Herriot, Isaacson, Powell 2132 Expires February xx, 1998 2133 'compress': UNIX compression technology 2135 ISSUE: Look what HTTP defines. 2137 4.2.18 job-k-octets (integer(0:2**31 - 1)) 2139 This attribute specifies the total size of the job in K octets, i.e., 2140 in units of 1024 octets. The value SHALL be rounded up, so that a job 2141 between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048 2142 SHALL be 2, etc. 2144 Note: This attribute and the following two attributes ("job- 2145 impressions" and "job-media-sheets") are not intended to be counters; 2146 they are intended to be useful routing and scheduling information if 2147 known. For these three attributes, the Printer may try to compute the 2148 value if it is not supplied in the create request. Even if the client 2149 does supply a value for this attribute in the create request, the 2150 Printer may choose to change the value if the Printer is able to 2151 compute a value which is more accurate than the client supplied value. 2152 The Printer may be able to determine the correct value for this 2153 attribute either right at job submission time or at any later point in 2154 time. If the value of this attribute is unknown, the Printer may 2155 choose to respond with a value of '-2' (which signifies "unknown") 2156 rather than choose to not support the attribute at all. 2158 4.2.19 job-impressions (integer(0:2**31 - 1)) 2160 This attribute specifies the total number of impressions for this job. 2162 4.2.20 job-media-sheets (integer(0:2**31 - 1)) 2164 This attribute specifies the total number of media sheets used by this 2165 job. 2167 4.3 Job Description Attributes 2169 The attributes in this section form the attribute group called "job- 2170 description". The following table summarizes these attributes. The 2171 third column indicates whether the attribute is a MANDATORY attribute. 2172 If it is not MANDATORY, then it is OPTIONAL. 2174 deBry, Hastings, Herriot, Isaacson, Powell 2175 Expires February xx, 1998 2176 +----------------------------+----------------------+----------------+ 2177 | Attribute | Syntax | MANDATORY? | 2178 +----------------------------+----------------------+----------------+ 2179 | job-uri | uri | MANDATORY | 2180 +----------------------------+----------------------+----------------+ 2181 | job-id | 32bit unsigned | MANDATORY | 2182 | (this or job-uri) | | | 2183 +----------------------------+----------------------+----------------+ 2184 | job-more-info | uri | | 2185 +----------------------------+----------------------+----------------+ 2186 | job-name | name | MANDATORY | 2187 +----------------------------+----------------------+----------------+ 2188 | job-originating-user | name | MANDATORY | 2189 +----------------------------+----------------------+----------------+ 2190 | job-originating-host | name | | 2191 +----------------------------+----------------------+----------------+ 2192 | user-human-language | human-language | | 2193 +----------------------------+----------------------+----------------+ 2194 | job-state | type1 enum | MANDATORY | 2195 +----------------------------+----------------------+----------------+ 2196 | job-state-reasons | 1setOf type2 keyword | | 2197 +----------------------------+----------------------+----------------+ 2198 | job-state-message | text | | 2199 +----------------------------+----------------------+----------------+ 2200 | output-device-assigned | name | | 2201 +----------------------------+----------------------+----------------+ 2202 | time-at-pending | seconds | | 2203 +----------------------------+----------------------+----------------+ 2204 | time-at-processing | seconds | | 2205 +----------------------------+----------------------+----------------+ 2206 | time-at-completed | seconds | | 2207 +----------------------------+----------------------+----------------+ 2208 | number-of-intervening-jobs | integer | | 2209 +----------------------------+----------------------+----------------+ 2210 | job-message-from-operator | text | | 2211 +----------------------------+----------------------+----------------+ 2212 | job-k-octets-processed | integer | | 2213 +----------------------------+----------------------+----------------+ 2214 | job-impressions-completed | integer | | 2215 +----------------------------+----------------------+----------------+ 2216 | job-media-sheets-completed | integer | | 2217 +----------------------------+----------------------+----------------+ 2219 4.3.1 job-uri (uri) 2221 This attribute contains the URI for the job. The Printer, on receipt 2222 of a new job, generates a URI which identifies the new Job on that 2223 Printer. The Printer returns the value of the "job-uri" attribute as 2225 deBry, Hastings, Herriot, Isaacson, Powell 2226 Expires February xx, 1998 2227 part of the response to a create request. The precise format of a 2228 job URI is implementation dependent. 2230 4.3.2 job-id (32bit unsigned integer) 2232 This attribute contains the ID of the job. The Printer, on receipt of 2233 a new job, generates an ID which identifies the new Job on that 2234 Printer. The Printer returns the value of the "job-id" attribute as 2235 part of the response to a create request. 2237 ISSUE: job-uri or job-id? 2239 4.3.3 job-uri-user (uri) 2241 Similar to "job-uri", this attribute contains the URI referencing an 2242 HTML page containing information about the Job. 2244 4.3.4 job-name (name) 2246 This attribute is the name of the job. It is a name that is more user 2247 friendly than the "job-uri" attribute value. It does not need to be 2248 unique. The Job's "job-name" attribute is set to the value supplied 2249 by the client in the "job-name" operation attribute in the create 2250 request. If, however, if it is not supplied by the client in the 2251 create request, the Printer, on creation of the Job, SHALL generate a 2252 name. The Printer can generate the name using any method convenient 2253 to the application. The Printer MAY choose to use the value of the 2254 "document-name" attribute of the first (or only) Document (or any 2255 other piece of Job specific information) as a basis for generating a 2256 Job name. 2258 ISSUE: There has been some suggestion to add a "job-user-label". The 2259 idea for this attribute was to allow a client to supply some 2260 meaningful label to be applied to the Job independent of the Job URI 2261 or the Job ID. However, after reviewing the semantics of "job-name", 2262 the two sound identical. 2264 4.3.5 job-originating-user (name) 2266 This attribute specifies the user name of the person submitting the 2267 print job. The Printer sets this attribute to the most authenticated 2268 name that it can obtain from the protocol over which the operation was 2269 received from the client. 2271 4.3.6 job-originating-host (name) 2273 This attribute identifies the originating host of the job. The Printer 2274 sets this attribute to the most authenticated host name it can obtain 2276 deBry, Hastings, Herriot, Isaacson, Powell 2277 Expires February xx, 1998 2278 from the protocol over which the operation was received from the 2279 client. 2281 4.3.7 user-human-language (human-language) 2283 This attribute identifies the human language and optionally the 2284 country of the end user. The Printer sets this attribute to the most 2285 reliable value it can obtain from the protocol over which the Print 2286 operation was received from the client. 2288 The Printer uses this attribute to determine the human language it 2289 SHOULD use for translating ALL text strings that it sends back to the 2290 end user. The Printer has a "human-languages-supported" supported 2291 values attribute and a "human-language" default value attribute. 2293 ISSUE: This should be a Job Template attribute. 2295 4.3.8 job-state (type1 enum) 2297 This attribute identifies the current state of the job. Even though 2298 the IPP protocol defines eight values for job states, implementations 2299 only need to support those states which are appropriate for the 2300 particular implementation. In other words, a Printer supports only 2301 those job states implemented by the output device and available to the 2302 Printer object implementation. 2304 Standard values are: 2306 'unknown'(2): The job state is not known, or its state is 2307 indeterminate. 2308 'pending'(3): The job is a candidate to start processing, but is 2309 not yet processing. 2310 'pending-held'(4): The job is not a candidate for processing for 2311 any number of reasons but will return to the 'pending' state as 2312 soon as the reasons are no longer present. The job's "job-state- 2313 reason" attribute SHALL indicate why the job is no longer a 2314 candidate for processing. 2315 'processing'(5): Either: 2316 1. the job is using, or is attempting to use, one or more 2317 document transforms which include (1) purely software 2318 processes that are interpreting a PDL, and (2) hardware 2319 devices that are interpreting a PDL, making marks on a medium, 2320 and/or performing finishing, such as stapling OR 2321 2. the server has made the job ready for printing, but the 2322 output device is not yet printing it, either because the job 2323 hasn't reached the output device or because the job is queued 2324 in the output device or some other spooler, awaiting the 2325 output device to print it. 2327 deBry, Hastings, Herriot, Isaacson, Powell 2328 Expires February xx, 1998 2329 ISSUE: Suggested change to (but this must be synchronized with JMP) 2331 'processing'(5): One of: 2332 1. the job is using, or is attempting to use hardware devices 2333 that are making marks on a medium, and/or performing 2334 finishing, such as stapling OR 2335 2. the job is using, or is attempting to use software processes 2336 that are analyzing or interpreting a PDL without making marks 2337 on a medium. 2338 3. the server has made the job ready for printing, but the output 2339 device is not yet printing it, either because the job hasn't 2340 reached the output device or because the job is queued in the 2341 output device or some other spooler, awaiting the output 2342 device to print it. 2344 When the job is in the 'processing' state, the entire job state 2345 includes the detailed status represented in the printer's 2346 "printer-state", "printer-state-reasons", and "printer-state- 2347 message" attributes. 2348 Implementations MAY include additional values in the job's "job- 2349 state-reasons" attribute to indicate the progress of the job, 2350 such as adding the 'job-printing' value to indicate when the 2351 output device is actually making marks on paper. Most 2352 implementations won't bother with this nuance. 2354 'processing-stopped'(6): The job has stopped while processing for 2355 any number of reasons and will return to the 'processing' state 2356 as soon as the reasons are no longer present. 2357 The job's "job-state-reason" attribute MAY indicate why the job 2358 has stopped processing. For example, if the output device is 2359 stopped, the 'printer-stopped' value MAY be included in the job's 2360 "job-state-reasons" attribute. 2361 NOTE - When an output device is stopped, the device usually 2362 indicates its condition in human readable form locally at the 2363 device. A client can obtain more complete device status remotely 2364 by querying the printer's "printer-state", "printer-state- 2365 reasons" and "printer-state-message" attributes. 2366 'canceled'(7): The job has been canceled by a Cancel-Job operation 2367 and is either (1) in the process of terminating or (2) has 2368 completed terminating. The job's "job-state-reasons" attribute 2369 SHOULD contain either the 'canceled-by-user' or 'canceled-by- 2370 operator' value. 2371 'aborted'(8): The job has been aborted by the system, usually 2372 while the job was in the 'processing' or 'processing-stopped' 2373 state. 2375 deBry, Hastings, Herriot, Isaacson, Powell 2376 Expires February xx, 1998 2377 'completed'(9): The job has completed successfully or with 2378 warnings or errors after processing and all of the job media 2379 sheets have been successfully stacked in the appropriate output 2380 bin(s). The job's "job-state-reasons" attribute SHOULD contain 2381 one of: 'completed-successfully', 'completed-with-warnings', or 2382 'completed-with-errors' values. 2384 The final value for this attribute SHALL be one of: 'completed', 2385 'canceled', or 'aborted' before the Printer removes the job 2386 altogether. The length of time that jobs remain in the 'canceled', 2387 'aborted', and 'completed' states depends on implementation. 2389 The following figure shows the normal job state transitions. 2391 +----> canceled 2392 / 2393 +----> pending --------> processing ---------+------> completed 2394 | ^ ^ \ 2395 --->+ | | +----> aborted 2396 | v v / 2397 +----> pending-held processing-stopped ----+ 2399 Normally a job progresses from left to right. Other state transitions 2400 are unlikely, but are not forbidden. Not shown are the transitions to 2401 the 'canceled' state from the 'pending', 'pending-held', 'processing', 2402 and 'processing-stopped' states. 2404 4.3.9 job-state-reasons (1setOf type2 keyword) 2406 This attribute provides additional information about the job's current 2407 state, i.e., information that augments the value of the job's "job- 2408 state" attribute. 2410 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 2411 implement them, even if (1) the output device supports the 2412 functionality represented by the reason and (2) is available to the 2413 Printer object implementation. These values MAY be used with any job 2414 state or states for which the reason makes sense. Furthermore, when 2415 implemented, the Printer SHALL return these values when the reason 2416 applies and SHALL NOT return them when the reason no longer applies 2417 whether the value of the job's "job-state" attribute changed or not. 2418 When the job does not have any reasons for being in its current state, 2419 the Printer shall set the value of the job's "job-state-reasons" 2420 attribute to 'none'. 2422 NOTE - While values cannot be added to the 'job-state' attribute 2423 without impacting deployed clients that take actions upon receiving 2425 deBry, Hastings, Herriot, Isaacson, Powell 2426 Expires February xx, 1998 2427 "job-state" values, it is the intent that additional "job-state- 2428 reasons" values can be defined and registered without impacting such 2429 deployed clients. In other words, the "job-state-reasons" attribute 2430 is intended to be extensible. 2432 The following standard values are defined: 2434 'none': There are no reasons for the job's current state. 2435 'job-incoming': The CreateJob operation has been accepted by the 2436 Printer, but the Printer is expecting additional SendDocument 2437 operations and/or is accessing/accepting document data. 2438 'job-outgoing': The Printer is transmitting the job to the output 2439 device. 2440 'job-hold-until-specified-time': The value of the job's "job-hold- 2441 until" attribute specifies a time period that is still in the 2442 future. The job SHALL NOT be a candidate for processing until 2443 this reason is removed and there are no other reasons to hold the 2444 job. 2445 'job-hold-until-resources-are -ready': At least one of the 2446 resources needed by the job, such as media, fonts, resource 2447 objects, etc., is not ready on any of the physical printer's for 2448 which the job is a candidate. This condition MAY be detected 2449 when the job is accepted, or subsequently while the job is 2450 pending or processing, depending on implementation. 2451 'printer-stopped-partly': The value of the Printer's "printer- 2452 state-reasons" attribute contains the value 'stopped-partly'. 2453 'printer-stopped': The value of the Printer's "printer-state" 2454 attribute is 'stopped'. 2455 'job-printing': The output device is marking media. This value is 2456 useful for Printers which spend a great deal of time processing 2457 when no marking is happening and then want to show that marking 2458 is now happening. 2459 'job-cancelled-by-user': The job was cancelled by the user using 2460 the CancelJob request, i.e., by a user whose name is the same as 2461 the value of the job's "job-originating-user" attribute. 2462 'job-cancelled-by-operator': The job was cancelled by the operator 2463 using the CancelJob request, i.e., by a user whose name is 2464 different than the value of the job's "job-originating-user" 2465 attribute. 2466 'job-completed-successfully': The job completed successfully. 2467 'job-completed-with-warnings': The job completed with warnings. 2468 'job-completed-with-errors': The job completed with errors (and 2469 possibly warnings too). 2470 'job-interpreting': Job is in the 'processing' state, but more 2471 specifically, the Printer is interpreting the data. 2472 'job-printing': Job is in the 'processing' state, but more 2473 specifically, the Printer is actually printing (making marks on 2474 the media). 2476 deBry, Hastings, Herriot, Isaacson, Powell 2477 Expires February xx, 1998 2478 'job-queued': Job is in the 'processing' state, but more 2479 specifically, the Printer is queuing the data. 2480 'job-transforming': Job is in the 'processing' state, but more 2481 specifically, the Printer is transforming the data. 2483 ISSUE: Show a partitioning of which "job-state-reasons" are valid or 2484 expected for each "job-state" value. 2486 4.3.10 job-state-message (text) 2488 This attributes specifies supplemental information about the Job State 2489 in human readable text. 2491 4.3.11 output-device-assigned (name) 2493 This attribute identifies the Output Device to which the Printer has 2494 assigned this job. If an output device implements an embedded IPP 2495 Printer, the Printer NEED NOT set this attribute. If a Print Server 2496 implements a Printer, the value MAY be empty until the Printer assigns 2497 an output device to the job. 2499 4.3.12 time-since-pending (integer) 2501 This attribute indicates the amount of time in milliseconds that has 2502 passed since the Job was first put into the pending state.. 2504 4.3.13 time-since-processing (integer) 2506 This attribute indicates the amount of time in milliseconds that has 2507 passed since the Job first entered the processing state. 2509 4.3.14 time-since-completed (integer) 2511 This attribute indicates the amount of time in milliseconds that has 2512 passed since the Job was completed. 2514 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1)) 2516 This attribute indicates the number of jobs that are "ahead" of this 2517 job in the current scheduled order. For efficiency, it is only 2518 necessary to calculate this value when an operation is performed that 2519 requests this attribute. 2521 Note: This attribute is necessary since an end user may request just 2522 their own jobs and they need some relative position indicator if there 2523 are other jobs interspersed in the waiting list which are not returned 2525 deBry, Hastings, Herriot, Isaacson, Powell 2526 Expires February xx, 1998 2527 in the response or cannot be because of site security policy 2528 restrictions. 2530 4.3.16 job-message-from-operator (text) 2532 This attribute provides a message from an operator, system 2533 administrator or "intelligent" process to indicate to the end user the 2534 reasons for modification or other management action taken on a job. 2536 4.3.17 job-k-octets-processed (integer(0:2**31 - 1)) 2538 This attribute specifies the number of octets completed in K octets, 2539 i.e., in units of 1024 octets. The value SHALL be rounded up, so that 2540 a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2541 2048 SHALL be 2, etc. 2543 Note: This attribute and the following two attributes ("job- 2544 impressions-completed" and "job-sheets-completed") are intended to be 2545 counters (as described in the Job Monitoring MIB [27]). That is, if 2546 the "job-state" is 'processing' or 'processing-stopped', this value is 2547 intended to contain the amount of the job that has been processed to 2548 the time at which the attributes are requested. For any of these 2549 three attributes, the Printer may choose to return the value '-2' 2550 (which represents "unknown") rather than choose to not support the 2551 attribute at all. 2553 4.3.18 job-impressions-completed (integer(0:2**31 - 1)) 2555 This job attribute specifies the number of impressions completed. This 2556 attribute is intended to be a counter as in the Job Monitoring MIB. 2558 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1)) 2560 This job attribute specifies the media-sheets completed. This 2561 attribute is intended to be a counter as in the Job Monitoring MIB. 2563 4.4 Document Attributes 2565 This group of attributes applies to Document objects. If there are 2566 multiple Documents in a Job, then there is a different set of Document 2567 attributes associated with Document in the Job. 2569 When using the Get-Attributes or Get-Jobs operations, the group named 2570 "document-attributes" includes all of the attributes in this section, 2571 including the Document level Job Template attributes (attributes that 2572 have the same characteristics as Job Template attribute, yet apply to 2574 deBry, Hastings, Herriot, Isaacson, Powell 2575 Expires February xx, 1998 2576 Documents, not Jobs). These are identified in the second part of the 2577 table in section 4.2. Specifically they are: 2579 "document-format" 2580 "compression" 2581 "document-k-octets" 2582 "document-impressions" 2583 "document-media-sheets" 2585 Other Document attributes include: 2587 +-----------------+-------------+----------------+ 2588 | Document | Syntax | MANDATORY? | 2589 | Attribute | | | 2590 +-----------------+-------------+----------------+ 2591 | document-name | name | NO | 2592 +-----------------+-------------+----------------+ 2593 | document-uri | uri | NO | 2594 +-----------------+-------------+----------------+ 2596 4.4.1 document-name (name) 2598 This attribute contains the name of the document. The name is 2599 optionally supplied by the client in the "document-name" operation 2600 attribute in the create request. If it is not supplied by the client 2601 in the create request, the Printer MAY generate a Document name. The 2602 "document-name" attribute contains the name whether supplied or 2603 generated. 2605 4.4.2 document-uri (uri) 2607 If a "pull" operations is used to create the Document object (such as 2608 the Print-URI or Send-URI operations which include only a URI 2609 reference to the document data, not the document data itself), then 2610 this "document-uri" attribute contains the URI reference. This 2611 attribute is populated from the "document-uri" operation attribute 2612 supplied by the client in the Print-URI or Send-URI operation. 2614 If a "push" operation is used to create the Document object (such as 2615 the Print-Job or Send-Document operations which include the document 2616 data rather than just a reference to the data) then this "document- 2617 uri" attribute is not associated with the Document object. 2619 deBry, Hastings, Herriot, Isaacson, Powell 2620 Expires February xx, 1998 2621 4.5 Printer Description Attributes 2623 These attributes form the attribute group called "printer- 2624 description". A Printer object may be realized in either a print 2625 server or output device. Note: How these attributes are set by an 2626 Administrator is outside the scope of this specification. The 2627 following table summarizes these attributes, their syntax, and whether 2628 or not they are MANDATORY. If they are not MANDATORY, they are 2629 OPTIONAL. 2631 deBry, Hastings, Herriot, Isaacson, Powell 2632 Expires February xx, 1998 2633 +----------------------------+----------------------+----------------+ 2634 | Attribute | Syntax | MANDATORY? | 2635 +----------------------------+----------------------+----------------+ 2636 | printer-uri | uri | MANDATORY | 2637 +----------------------------+----------------------+----------------+ 2638 | printer-name | name | MANDATORY | 2639 +----------------------------+----------------------+----------------+ 2640 | printer-location | text | | 2641 +----------------------------+----------------------+----------------+ 2642 | printer-description | text | | 2643 +----------------------------+----------------------+----------------+ 2644 | printer-more-info | uri | | 2645 +----------------------------+----------------------+----------------+ 2646 | printer-driver-installer | uri | | 2647 +----------------------------+----------------------+----------------+ 2648 | printer-make-and-model | text | | 2649 +----------------------------+----------------------+----------------+ 2650 | printer-more-info- | uri | | 2651 | manufacturer | | | 2652 +----------------------------+----------------------+----------------+ 2653 | printer-state | type1 enum | MANDATORY | 2654 +----------------------------+----------------------+----------------+ 2655 | printer-state-reasons | 1setOf type2 keyword | | 2656 +----------------------------+----------------------+----------------+ 2657 | printer-state-message | text | | 2658 +----------------------------+----------------------+----------------+ 2659 | operations-supported | 1setOf type2 enum | MANDATORY | 2660 +----------------------------+----------------------+----------------+ 2661 | printer-is-accepting-jobs | boolean | MANDATORY | 2662 +----------------------------+----------------------+----------------+ 2663 | queued-job-count | integer | | 2664 +----------------------------+----------------------+----------------+ 2665 | printer-message-from- | text | | 2666 | operator | | | 2667 +----------------------------+----------------------+----------------+ 2668 | printer-language | human-language | MANDATORY | 2669 +----------------------------+----------------------+----------------+ 2670 | printer-language-supported | 1setOf human-language| MANDATORY | 2671 +----------------------------+----------------------+----------------+ 2672 | color-supported | boolean | | 2673 +----------------------------+----------------------+----------------+ 2674 | pdl-override | type2 keyword | | 2675 +----------------------------+----------------------+----------------+ 2676 | message-protection- | keyword | | 2677 | supported | | | 2678 +----------------------------+----------------------+----------------+ 2679 | authentication-author | keyword | | 2680 | ization-supported | | | 2682 deBry, Hastings, Herriot, Isaacson, Powell 2683 Expires February xx, 1998 2684 +----------------------------+----------------------+----------------+ 2685 | printer-up-time | seconds | MANDATORY | 2686 +----------------------------+----------------------+----------------+ 2687 | printer-current-time | dateTime | | 2688 +----------------------------+----------------------+----------------+ 2690 4.5.1 printer-uri (uri) 2692 This attribute contains the URI for the printer. An administrator 2693 determines a printer's URI and sets this attribute to that URI. The 2694 precise format of a printer URI is implementation dependent. 2696 4.5.2 printer-name (name) 2698 This attribute contains the name of the printer. It is a name that is 2699 more user friendly than the printer-URI. An administrator determines a 2700 printer's name and sets this attribute to that name. This name may be 2701 the last part of the printer's URI or it may be unrelated. In non-US- 2702 English locales, a name may contain characters that are not allowed in 2703 a URI. 2705 4.5.3 printer-location (text) 2707 This attribute identifies the location of this printer. This could 2708 include things like: _in Room 123A, second floor of building XYZ_. 2710 4.5.4 printer-description (text) 2712 This attribute identifies the descriptive information about this 2713 Printer. This could include things like: "This printer can be used 2714 for printing color transparencies for HR presentations", or "Out of 2715 courtesy for others, please print only small (1-5 page) jobs at this 2716 printer", or even "This printer is going away on July 1, 1997, please 2717 find a new printer". 2719 4.5.5 printer-more-info (uri) 2721 This attribute contains a URI used to obtain more information about 2722 this specific printer. For example, this could be an HTTP type URI 2723 referencing an HTML page accessible to a Web Browser. The information 2724 obtained from this URI is intended for end user consumption. Features 2725 outside the scope of IPP can be accessed from this URI. The 2726 information is intended to be specific to this printer instance and 2727 site specific services (e.g. job pricing, services offered, end user 2728 assistance). 2730 deBry, Hastings, Herriot, Isaacson, Powell 2731 Expires February xx, 1998 2732 4.5.6 printer-driver-installer (uri) 2734 This attribute contains a URI to use to locate the driver installer 2735 for this printer. This attribute is intended for consumption by 2736 automata. The mechanics of print driver installation is outside the 2737 scope of IPP. The printer manufacturer may initially populate this 2738 attribute. 2740 4.5.7 printer-make-and-model (text) 2742 This attribute identifies the make and model of the printer. 2744 4.5.8 printer-more-info-manufacturer (uri) 2746 This attribute contains a URI used to obtain more information about 2747 this type of printer. The information obtained from this URI is 2748 intended for end user consumption. Features outside the scope of IPP 2749 can be accessed from this URI (e.g., latest firmware, upgrades, print 2750 drivers, optional features available). The information is intended to 2751 be germane to this printer without regard to site specific 2752 modifications or services. 2754 4.5.9 printer-state (type1 enum) 2756 This attribute identifies the current state of the printer. The 2757 "printer-state reasons" attribute augments the "printer-state" 2758 attribute to give more detailed information about the Printer in the 2759 given printer state. 2761 A Printer SHALL keep this attribute set in a timely manner to the 2762 value in the table below which most accurately reflects the state of 2763 the Printer. If the printer has jobs that are requesting notification 2764 of printer-problems or job-problems, then _timely manner_ means 2765 continually.. Otherwise, _timely manner_ means whether the Printer 2766 receives a query for this attribute. A Printer NEED NOT implement all 2767 values if they are not applicable to a given implementation. 2769 The following standard values are defined: 2771 'unknown'(2): The Printer state is not known, or is indeterminate. 2772 A Printer SHALL use this state only if it cannot determine its 2773 actual state. 2775 'idle'(3): If a Printer receives a job (whose required resources 2776 are ready) while in this state, such a job SHALL transit into the 2777 processing state immediately. If the printer-state-reasons 2778 attribute contains any reasons, they SHALL be reasons that would 2779 not prevent a job from transiting into the processing state 2781 deBry, Hastings, Herriot, Isaacson, Powell 2782 Expires February xx, 1998 2783 immediately, e.g., toner-low. Note: if a Printer controls more 2784 than one output device, the above definition implies that a 2785 Printer is idle if at least one output device is idle. 2787 'processing'(4): If a Printer receives a job (whose required 2788 resources are ready) while in this state, such a job SHALL 2789 transit into the pending state immediately. Such a job SHALL 2790 transit into the processing state only after jobs ahead of it 2791 complete. If the printer-state-reasons attribute contains any 2792 reasons, they SHALL be reasons that do not prevent the current 2793 job from printing, e.g. toner-low. Note: if a Printer controls 2794 more than one output device, the above definition implies that a 2795 Printer is processing if at least one output device is 2796 processing, and none is idle. 2798 'stopped'(5): If a Printer receives a job (whose required 2799 resources are ready) while in this state, such a job SHALL 2800 transit into the pending state immediately. Such a job SHALL 2801 transit into the processing state only after some human fixes the 2802 problem that stopped the printer and after jobs ahead of it 2803 complete printing. The "printer-state-reasons" attribute SHALL 2804 contain at least one reason, e.g. media-jam, which prevents it 2805 from either processing the current job or transiting a pending 2806 job to the processing state. 2808 Note: if a Printer controls more than one output device, the 2809 above definition implies that a Printer is stopped only if all 2810 output devices are stopped. Also, it is tempting to define 2811 stopped as when a sufficient number of output devices are stopped 2812 and leave it to an implementation to define the sufficient 2813 number. But such a rule complicates the definition of stopped 2814 and processing. For example, with this alternate definition of 2815 stopped, a job can move from idle to processing without human 2816 intervention, even though the Printer is stopped. 2818 4.5.10 printer-state-reasons (1setOf type2 keyword) 2820 This attribute supplies additional detail about the printer's state. 2822 Each MAY have asuffix to indicate its level of severity. The three 2823 levels are: report (least severe), warning, and error (most severe). 2825 - '-report': This suffix indicates that the reason is a "report". 2826 An implementation may choose to omit some or all reports. Some 2827 reports specify finer granularity about the printer state; others 2828 serve as a precursor to a warning. A report SHALL contain nothing 2829 that could affect the printed output. 2831 deBry, Hastings, Herriot, Isaacson, Powell 2832 Expires February xx, 1998 2833 - '-warning': This suffix indicates that the reason is a "warning". 2834 An implementation may choose to omit some or all warnings. 2835 Warnings serve as a precursor to an error. A warning SHALL 2836 contain nothing that prevents a job from completing, though in 2837 some cases the output may be of lower quality. 2838 - '-error': This suffix indicates that the reason is an "error". . 2839 An implementation SHALL include all errors. If this attribute 2840 contains one or more errors, printer SHALL be in the stopped 2841 state. 2843 If the implementation does not add any one of the three suffixes, all 2844 parties SHALL assume that the reason is an "error". 2846 If a logical Printer controls more than one output device, each value 2847 of this attribute MAY apply to one or more of the output devices. An 2848 error on one output device that does not stop the logical Printer as a 2849 whole MAY appear as a warning in the Printer's "printer-state-reasons 2850 attribute". The "printer-state" for such a Printer may have a value 2851 of 'stopped' even though there are with no "printer-state-reasons" 2852 values that are "errors". 2854 The following standard values are defined: 2856 'media-needed': A tray has run out of media. 2857 'media-jam': The printer has a media jam. 2858 'paused': Someone has paused the Printer. In this state, a Printer 2859 SHALL not produce printed output, but it SHALL perform other 2860 operations requested by a client. If a Printer had been printing 2861 a job when the Printer was paused, the Printer SHALL resume 2862 printing that job when the Printer is no longer paused and leave 2863 no evidence in the printed output of such a pause. 2864 'shutdown': Someone has removed a Printer from service, and it may 2865 be powered down or physical removed. In this state, a Printer 2866 SHALL not produce printed output, and unless the Printer is 2867 realized by a print server that is still active, the Printer 2868 SHALL perform no other operations requested by a client, 2869 including returning this value. If a Printer had been printing a 2870 job when it was shutdown, the Printer need not resume printing 2871 that job when the Printer is no longer shutdown. If the Printer 2872 resumes printing such a job, it may leave evidence in the printed 2873 output of such a shutdown, e.g. the part printed before the 2874 shutdown may be printed a second time after the shutdown. 2875 'connecting-to-device': The server has scheduled a job on the 2876 Printer and is in the process of connecting to a shared network 2877 output device (and might not be able to actually start printing 2878 the job for an arbitrarily long time depending on the usage of 2879 the output device by other servers on the network). 2881 deBry, Hastings, Herriot, Isaacson, Powell 2882 Expires February xx, 1998 2883 'timed-out': The server was able to connect to the output device 2884 (or is always connected), but was unable to get a response from 2885 the output device. 2886 'stopping': The printer will be stopping in a while and will change 2887 its reason to printer-stopped. This reason is a non-critical, 2888 even for a Printer with a single output device. When an output- 2889 device ceases accepting jobs, the Printer will have this state 2890 while the output device completes printing. 2891 'stopped-partly': When a Printer controls more than one output 2892 device, this reason indicates that one or more output devices are 2893 stopped. If the reason is a report, fewer than half of the output 2894 devices are stopped. If the reason is a warning, fewer than all 2895 of the output devices are stopped. 2896 'toner-low': The Printer is low on toner. 2897 'marker-supply-low': The Printer is low on marker supply. 2898 'spool-area-full': The limit of persistent storage allocated for 2899 spooling has been reached. 2901 ISSUE: Show a partitioning of which "printer-state-reasons" are valid 2902 or expected for each "printer-state" value. 2904 4.5.11 printer-state-message (text) 2906 This attribute specifies the additional information about the printer 2907 state and printer state reasons in human readable text. 2909 4.5.12 operations-supported (1setOf type2 enum) 2911 This attribute specifies the set of supported operations for this 2912 Printer. 2914 The following standard values are defined: 2916 0x00 reserved, not used 2917 0x01 Print-Job 2918 0x02 Print-URI 2919 0x03 Validate-Job 2920 0x04 Create-Job 2921 0x05 Get-Jobs 2922 0x06 Get-Attributes 2923 0x07 Send-Document 2924 0x08 Send-URI 2925 0x09 Cancel-Job 2926 0x0A-0x3FFF reserved for future operations 2928 deBry, Hastings, Herriot, Isaacson, Powell 2929 Expires February xx, 1998 2930 0x4000-0xFFFF reserved for private extensions 2932 In order for IPP to be extensible, this set of operations is defined 2933 to be a 1setOf type2 enum (see section 6.1 for a description of typed 2934 extensions). Since the base type is enum, the possible full range of 2935 values is 0x0000-0xFFFF, however a special range of 0x4000-0xFFFF has 2936 been reserved for private extensions. This allows for certain vendors 2937 to implement private extensions that are guaranteed to not conflict 2938 with future registered extensions. However, there is no guarantee 2939 that two or more private extensions will not conflict. 2941 4.5.13 printer-is-accepting-jobs (boolean) 2943 This attribute determines whether the printer is currently accepting 2944 job. If the value is true, the printer is accepting jobs. If the 2945 value is false, the printer is currently rejecting any jobs submitted 2946 to it. 2948 Note: This value is independent of the printer state and printer- 2949 state-reasons because its value does not affect the current job; 2950 rather it affects future jobs. This attribute may cause the Printer to 2951 reject jobs when the printer-state is idle or it may cause the Printer 2952 to accepts jobs when the printer-state is stopped. 2954 4.5.14 queued-job-count (integer(0:2**31 - 1)) 2956 This attribute contains a count of the number of jobs that are either 2957 pending and/or processing and is set by the Printer. 2959 4.5.15 printer-message-from-operator (text) 2961 This attribute provides a message from an operator, system 2962 administrator or "intelligent" process to indicate to the end user 2963 information or status of the printer, such as why it is unavailable or 2964 when it is expected to be available. 2966 4.5.16 printer-human-language (human-language) 2968 This attribute specifies the current human-language that the Printer 2969 is operating in. 2971 4.5.17 printer-human-language-supported (1setOf human-language) 2973 This attribute specifies the supported human languages that the 2974 Printer operates in. 2976 deBry, Hastings, Herriot, Isaacson, Powell 2977 Expires February xx, 1998 2978 4.5.18 color-supported (boolean) 2980 This attribute identifies whether the Printer is capable of any type 2981 of color printing at all. All document instructions having to do with 2982 color are embedded within the document PDL (none are external IPP 2983 attributes). 2985 4.5.19 pdl-override (type2 keyword) 2987 This attribute expresses the ability for a particular Printer 2988 implementation to either attempt to override print data instructions 2989 with IPP attributes or not. 2991 This attribute takes on the following values: 2993 - 'attempted': This value indicates that the Printer attempts to 2994 make sure that IPP attribute values take precedence over embedded 2995 instructions in the Print data, however there is no guarantee. 2996 - 'not-attempted': This value indicates that the Printer makes not 2997 attempt to ensure that IPP attribute values take precedence over 2998 embedded instructions in the print data. 3000 This is a MANDATORY attribute. 3002 Appendix E: Processing IPP Attributes (see Section 15) contains a full 3003 description of how this attribute interacts with and affects other IPP 3004 attributes, especially the "ipp-attribute-fidelity" attribute. 3006 4.5.20 Security Related Attributes 3008 The security document [22] describes four common usage scenarios: 3010 - no security 3011 - message protection 3012 - client authentication and authorization 3013 - mutual authentication, authorization, and message protection 3015 In order to let an end user know what to expect in terms of security, 3016 there are two attributes described below. Since by definition an end 3017 user, because of security reasons, might not be allowed to query these 3018 two attributes, therefore, it is important that if these two 3019 attributes are supported, then they are also populated in the 3020 directory entry (see [24]). 3022 These attributes allow for minimal client/server negotiation regarding 3023 security features. If the Printer requires the feature, the client 3024 can decide whether or not to participate. If the client does not 3026 deBry, Hastings, Herriot, Isaacson, Powell 3027 Expires February xx, 1998 3028 support the feature, and the Printer requires it, then the client 3029 knows before hand that such an interaction would fail. 3031 Standard values for these two attributes include: 3033 'supported' - means that the Printer is capable of supporting the 3034 security feature (somehow), but it is does not require the client 3035 to use it. 3036 'required' - means that the Printer is capable of supporting the 3037 security feature (somehow) and the client is required to use it. 3038 'none' - means that the Printer is not capable of supporting 3039 message protection at all. 3041 Note: This is a single-valued attribute, not a multi-valued 3042 attribute, i.e., an implementation can not support 'none' and 3043 'required' or any other combination of values. 3045 4.5.20.1 message-protection-supported (keyword) 3047 This attribute is used to determine whether or not a printer supports 3048 or requires message protection (whether it be through encryption or 3049 some other privacy mechanism). 3051 4.5.20.2 authentication-authorization-supported (keyword) 3053 This attribute is used to determine whether or not a printer supports 3054 or requires authentication and authorization. 3056 4.5.21 printer-up-time (seconds) 3058 This attribute is a MANDATORY attribute. It indicates the amount of 3059 time (in seconds) that this instance of this Printer implementation 3060 has been up and running. This value is used to populate the Job 3061 attributes "time-at-pending", "time-at-processing", and "time-at- 3062 completed". These time values are all measured in seconds and all 3063 have meaning only relative to this attribute, "printer-up-time". 3065 ISSUE: Does this need to be MANDATORY? 3067 4.5.22 printer-current-time (dateTime) 3069 This attribute is an OPTIONAL attribute. It indicates the current 3070 absolute wall-clock time. If an implementation supports this 3071 attribute, the a client could calculate the absolute wall-clock time 3072 each Job's "time-at-pending", "time-at-processing", and "time-at- 3074 deBry, Hastings, Herriot, Isaacson, Powell 3075 Expires February xx, 1998 3076 completed" attributes by using both "printer-up-time" and this 3077 attribute, "printer-current-time". If an implementation does not 3078 support this attribute, a client can only calculate the relative time 3079 of certain events based on the MANDATORY "printer-up-time" attribute. 3081 5. Conformance 3083 This section describes conformance issues and requirements. This 3084 document introduces model entities such as objects, operations, 3085 attributes, and attribute values. These conformance sections describe 3086 the conformance requirements which apply to these model entities. 3088 5.1 Client Conformance Requirements 3090 A conforming client SHALL send operations that conform to the protocol 3091 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 3092 [23]. For each parameter or attribute included in an operation 3093 request, a conforming client SHALL send a value whose type and value 3094 syntax conforms to the requirement of this document 3096 Otherwise, there are no conformance requirements placed on the user 3097 interfaces provided by IPP clients or their applications. For 3098 example, one application might not allow an end user to submit 3099 multiple documents per job, while another does. One application might 3100 first query a Printer object in order to supply a graphical user 3101 interface (GUI) dialogue box with supported and default values whereas 3102 a different implementation might not. 3104 When sending a Get-Attributes or create request, an IPP client need 3105 not supply any attributes. 3107 A client SHALL be able to accept any of the attribute syntaxes defined 3108 in Section 4.1 that may be returned to it in a response from a Printer 3110 A query response may contain parameters, attributes, and values that 3111 the client does not expect. Therefore, a client implementation MUST 3112 gracefully handle such responses and not refuse to interoperate with a 3113 conforming Printer that is returning extended registered or private 3114 attributes and/or attribute values that conform to Section 6. Clients 3115 may choose to ignore any parametes, attributes, or values that it does 3116 not understand. 3118 deBry, Hastings, Herriot, Isaacson, Powell 3119 Expires February xx, 1998 3120 5.2 Printer Object Conformance Requirements 3122 This section specifies the conformance requirements for conforming 3123 Printer object implementations with respect to objects, operations, 3124 and attributes. 3126 5.2.1 Objects 3128 Conforming Printer implementations SHALL implement all of the model 3129 objects as defined in this specification in the indicated sections: 3131 Section 2.1 Printer Object 3132 Section 2.2 Job Object 3133 Section 2.3 Document Object 3135 5.2.2 Operations 3137 Conforming Printer implementations SHALL implement all of the 3138 MANDATORY model operations, including mandatory responses, as defined 3139 in this specification in the indicated sections: 3141 For a Printer object: 3142 Print-Job (section 3.2.1) MANDATORY 3143 Print-URI (section 3.2.2) OPTIONAL 3144 Validate-Job (section 3.2.3) MANDATORY 3145 Create-Job (section 3.2.4) OPTIONAL 3146 Get-Jobs (section 3.2.6) MANDATORY 3147 Get-Attributes (section3.2.5) MANDATORY 3149 For a Job object: 3150 Send-Document (section 3.3.1) OPTIONAL 3151 Send-URI (section 3.3.2) OPTIONAL 3152 Cancel-Job (section 3.3.3) MANDATORY 3153 Get-Attributes (section 3.3.4) MANDATORY 3155 Conforming Printer implementations SHALL support all request and 3156 response parameters and all values of such parameters, except for 3157 parameters which are collections of attributes. The following section 3158 on attributes specifies the support required for attributes. 3160 5.2.3 Attributes 3162 Conforming Printer implementations SHALL support all of the MANDATORY 3163 attributes, as defined in this specification in the indicated 3164 sections. 3166 If a Printer supports an attribute, it SHALL support only those values 3167 specified in this document or through the extension mechanism 3169 deBry, Hastings, Herriot, Isaacson, Powell 3170 Expires February xx, 1998 3171 described in the next section. It MAY support any non-empty subset of 3172 these values. That is, it SHALL support at least one of the specified 3173 values and at most all of them. 3175 5.2.4 Printer extensions 3177 A conforming Printer may support registered extensions and private 3178 extensions, as long as they meet the requirements specified in Section 3179 6. 3181 A conforming Printer SHALL send responses that conform to the protocol 3182 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 3183 [23]. For each parameter or attribute included in an operation 3184 response, a conforming printer SHALL send a value whose type and value 3185 syntax conforms to the requirement of this document 3187 5.2.5 Attribute Syntaxes 3189 A Printer SHALL be able to accept any of the attribute syntaxes 3190 defined in Section 4.1 in any operation in which a client may supply 3191 attributes or parameters. Furthermore, a Printer SHALL return 3192 attributes to the client in operation responses that conform to the 3193 syntax specified in Section 4.1. 3195 5.3 Security Conformance Requirements 3197 ISSUE: The "why" and "what" needs to be moved from the Security 3198 document to this document. The "how" from the Security document needs 3199 to be moved to the Protocol Specification document. 3201 6. IANA Considerations (registered and private extensions) 3203 During the development of this standard, the IPP working group 3204 (working with IANA) will register additional keywords and enums while 3205 the standard is in the proposed and draft states according to the 3206 procedures described in this section. IANA will handle registration 3207 of additional enums after this standard is approved in cooperation 3208 with an IANA-appointed registration editor from the IPP working group 3209 according to the procedures described in this section. 3211 6.1 Typed Extensions 3213 This document uses prefixes to the "keyword" and "enum" basic syntax 3214 type in order to communicate extra information to the reader through 3215 its name. This extra information need not be represented in an 3217 deBry, Hastings, Herriot, Isaacson, Powell 3218 Expires February xx, 1998 3219 implementation because it is unimportant to a client or Printer. The 3220 list below describes the prefixes and their meaning. 3222 "type1": The IPP standard must be revised to add a new keyword or 3223 a new enum. No private keywords or enums are allowed. 3225 "type2": Implementers can, at any time, add new keyword or enum 3226 values by proposing them to the IPP working group for 3227 registration (or an IANA-appointed registry advisor after the IPP 3228 working group is no longer certified) where they are reviewed for 3229 approval. IANA keeps the registry. 3231 "type3": Implementers can, at any time, add new keyword and enum 3232 values by submitting a registration request directly to IANA, no 3233 IPP working group or IANA-appointed registry advisor review is 3234 required. 3236 "type4": Anyone (system administrators, system integrators, site 3237 managers, etc.) can, at any time, add new installation-defined 3238 values (keywords or new enum values) to a local system. Care 3239 SHOULD be taken by the implementers to see that keywords do not 3240 conflict with other keywords defined by the standard or as 3241 defined by the implementing product. There is no registration or 3242 approval procedure for type 4 keywords. 3244 By definition, each of the four types above assert some sort of 3245 registry or review process in order for extensions to be considered 3246 valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less 3247 stringent than the previous level. Therefore, any typeN value MAY be 3248 registered using a process for some typeM where M is less than N, 3249 however such registration is NOT REQUIRED. For example, a type4 value 3250 MAY be registered in a type 1 manner (by being included in a future 3251 version of an IPP specification) however it is NOT REQUIRED. 3253 This specification defines keyword and enum values for all of the 3254 above types, including type4 keywords. 3256 For private (unregistered) keyword extensions, implementers SHOULD use 3257 keywords with a suitable distinguishing prefix, such as "xxx-" where 3258 xxx is the (lowercase) fully qualified company name registered with 3259 IANA for use in domain names [30]. 3261 Note: RFC 1035 [30] indicates that while upper and lower case letters 3262 are allowed in domain names, no significance is attached to the case. 3263 That is, two names with the same spelling but different case are to be 3264 treated as if identical. Also, the labels in a domain name must 3265 follow the rules for ARPANET host names: They must start with a 3266 letter, end with a letter or digit, and have as interior characters 3268 deBry, Hastings, Herriot, Isaacson, Powell 3269 Expires February xx, 1998 3270 only letters, digits, and hyphen. Labels must be 63 characters or 3271 less. Labels are separated by the "." character. 3273 For private (unregistered) enum extension, implementers SHOULD use 3274 values in the reserved integer range (see "enum"). 3276 6.2 Registration of MIME types/sub-types for document-formats 3278 The "document-format" attribute's syntax is "mimeType". This means 3279 that valid values are MIME types. RFC 2045 [??] defines the syntax 3280 for valid MIME types. Also, IANA is the registry for all MIME types. 3282 6.3 Attribute Extensibility 3284 Attribute names are considered to be set of type2 keywords. In order 3285 to be extended, the same rules as type2 keywords apply. 3287 6.4 Attribute Syntax Extensibility 3289 Attribute syntaxes are considered to be set of type2 enums. In order 3290 to be extended, the same rules as type2 enums apply. 3292 7. Internationalization Considerations 3294 This model describes attributes whose values can be text strings 3295 intended for human understanding rather than machine understanding. 3296 These attributes are: 3298 Printer Attributes: 3300 printer-name 3301 printer-location 3302 printer-description 3303 printer-make-and-model 3304 printer-state-message 3305 printer-message-from-operator 3307 Job Attributes 3309 job-name 3310 job-state-message 3311 job-message-from-operator 3313 Document Attributes 3315 deBry, Hastings, Herriot, Isaacson, Powell 3316 Expires February xx, 1998 3317 document-name 3319 These attributes MUST contain characters for the coded character set 3320 defined in ISO 10646 [??] and be encoded using the UTF-8 character 3321 encoding rules [28]. No other coded character sets or encoding rules 3322 are allowed. 3324 However, since these strings are intended for human understanding, the 3325 strings can be in any human language identifiable with tags defined in 3326 RFC 1766 [??]. A client that queries the above mentioned text 3327 attributes needs to know what human language is being used for these 3328 text attributes. A Printer optionally supports a "human-languages- 3329 supported" supported values attribute and a "human-language" default 3330 value attribute. Since these are optional, if the printer does not 3331 support these attributes, the client can assume that the text strings 3332 are either US English "en-US" or any other language that is specific 3333 to a given site. Whatever the value, the same value applies to ALL 3334 text based attributes for a given Printer and its contained Jobs. 3336 In the HTTP mapping for IPP/1.0, these attributes are mapped in to the 3337 HTTP headers that control negotiation of human language between client 3338 and server. 3340 8. Security Considerations 3342 There is another Internet-Draft called "Internet Printing 3343 Protocol/1.0: Security" [22]. That document is being drafted and 3344 reviewed in parallel with this document. The mapping of IPP on top of 3345 appropriate security protocols will be described in that document. 3346 IPP does not introduce any new, general purpose security mechanisms 3347 for authentication and encryption. 3349 A Printer may choose, for security reasons, not to return all 3350 attributes that a client requests. It may even return none of the 3351 requested attributes. In such cases, the status returned is the same 3352 as if the Printer had returned all requested attributes. The client 3353 cannot tell by such a response whether the requested attribute was 3354 present or absent on the Printer. 3356 9. References 3358 [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 3359 J., "Printer MIB", RFC 1759, March 1995. 3361 [2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC 3362 2068, January 1997 3364 deBry, Hastings, Herriot, Isaacson, Powell 3365 Expires February xx, 1998 3367 [3] Crocker, D., "Standard for the Format of ARPA Internet Text 3368 Messages", RFC 822, August 1982. 3370 [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 3371 1993. 3373 [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. 3375 [6] Herriot, R. (editor), X/Open A Printing System Interoperability 3376 Specification (PSIS), August 1995. 3378 [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing 3379 Interfaces, POSIX 1387.4 D8, 1994. 3381 [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 3382 Extensions) Part One: Mechanism for Specifying and Describing the 3383 Format of Internet Message Bodies", RFC 1521, September, 1993. 3385 [9] Braden, S., "Requirements for Internet Hosts - Application and 3386 Support", RFC 1123, October, 1989, 3388 [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 3389 1179, August 1990. 3391 [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 3392 Locators (URL)", RFC 1738, December, 1994. 3394 [20] Internet Printing Protocol: Requirements 3396 [21] Internet Printing Protocol/1.0: Model and Semantics (This 3397 document) 3399 [22] Internet Printing Protocol/1.0: Security 3401 [23] Internet Printing Protocol/1.0: Protocol Specification 3403 [24] Internet Printing Protocol/1.0: Directory Schema 3405 [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3406 Levels", RFC 2119 , March 1997 3408 [26] H. Alvestrand, " Tags for the Identification of Languages", RFC 3409 1766, March 1995. 3411 [27] T. Hastings, "Job Monitoring MIB", , June 1997. 3414 deBry, Hastings, Herriot, Isaacson, Powell 3415 Expires February xx, 1998 3417 [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 3418 10646, RFC 2044, October 1996. 3420 [29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt, 3421 July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1]. 3423 [30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 3424 SPECIFICATION", RFC 1035, November 1987. 3426 [31] ?, " ", RFC 2130, ?. 3428 [32] ?, " ", RFC 1514, ?. 3430 [33] ?, " ", RFC 1903, ?. 3432 [34] ?, " ", RFC 1808, ?. 3434 10. Author's Address 3436 Scott A. Isaacson (Editor) 3437 Novell, Inc. 3438 122 E 1700 S 3439 Provo, UT 84606 3441 Phone: 801-861-7366 3442 Fax: 801-861-4025 3443 EMail: scott_isaacson@novell.com 3445 Tom Hastings 3446 Xerox Corporation 3447 701 S. Aviation Blvd. 3448 El Segundo, CA 90245 3450 Phone: 310-333-6413 3451 Fax: 310-333-5514 3452 EMail: hastings@cp10.es.xerox.com 3454 Robert Herriot 3455 Sun Microsystems Inc. 3456 901 San Antonio.Road, MPK-17 3457 Palo Alto, CA 94303 3459 Phone: 415-786-8995 (Area code change to 650 in August 1997) 3460 Fax: 415-786-7077 (Area code change to 650 in August 1997) 3461 Email: robert.herriot@eng.sun.com 3463 Roger deBry 3465 deBry, Hastings, Herriot, Isaacson, Powell 3466 Expires February xx, 1998 3467 HUC/003G 3468 IBM Corporation 3469 P.O. Box 1900 3470 Boulder, CO 80301-9191 3472 Phone: (303) 924-4080 3473 Fax: (303) 924-9889 3474 Email: debry@vnet.ibm.com 3476 Patrick Powell 3477 San Diego State University 3478 9475 Chesapeake Dr., Suite D 3479 San Diego, CA 95123 3481 Phone: (619) 874-6543 3482 Fax: (619) 279-8424 3483 Email: papowell@sdsu.edu 3485 IPP Mailing List: ipp@pwg.org 3486 IPP Mailing List Subscription: ipp-request@pwg.org 3487 IPP Web Page: http://www.pwg.org/ipp/ 3489 Other Participants: 3491 Chuck Adams - Tektronix 3492 Jeff Barnett - IBM 3493 Ron Bergman - Dataproducts Corp. 3494 Sylvan Butler, HP 3495 Keith Carter, IBM Corporation 3496 Jeff Copeland - QMS 3497 Andy Davidson - Tektronix 3498 Mabry Dozier - QMS 3499 Lee Farrell - Canon Information Systems 3500 Steve Gebert - IBM 3501 Babek Jahromi, Microsoft 3502 David Kellerman - Northlake Software 3503 Rick Landau - Digital 3504 Harry Lewis - IBM 3505 Pete Loya - HP 3506 Ray Lutz - Cognisys 3507 Mike MacKay, Novell, Inc. 3508 Carl-Uno Manros, Xerox, Corp. 3509 Jay Martin - Underscore 3510 Stan McConnell - Xerox 3511 Paul Moore, Microsoft 3512 Pat Nogay - IBM 3513 Bob Pentecost - HP 3514 Rob Rhoads - Intel 3516 deBry, Hastings, Herriot, Isaacson, Powell 3517 Expires February xx, 1998 3518 David Roach - Unisys 3519 Stuart Rowley, Kyocera Hiroyuki Sato - Canon 3520 Bob Setterbo - Adobe 3521 Devon Taylor, Novell, Inc. 3522 Mike Timperman - Lexmark 3523 Randy Turner - Sharp 3524 Atsushi Yuki - Kyocera 3525 Lloyd Young - Lexmark 3526 Bill Wagner - DPI 3527 Jim Walker - DAZEL 3528 Chris Wellens - Interworking Labs 3529 Rob Whittle - Novell 3530 Don Wright - Lexmark 3531 Peter Zehler, Xerox, Corp. 3533 deBry, Hastings, Herriot, Isaacson, Powell 3534 Expires February xx, 1998 3535 11. APPENDIX A: Terminology 3537 This specification uses the terminology defined in this section. 3539 11.1 Conformance Terminology 3541 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 3542 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 3543 document are to be interpreted as described in RFC 2119 [25]. The 3544 sections below reiterate these definitions and include some additional 3545 ones. 3547 11.1.1 MUST 3549 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 3550 that the definition is an absolute requirement of the specification. 3552 11.1.2 MUST NOT 3554 This phrase, or the phrase "SHALL NOT", means that the definition is 3555 an absolute prohibition of the specification. 3557 11.1.3 SHOULD 3559 This word, or the adjective "RECOMMENDED", means that there may exist 3560 valid reasons in particular circumstances to ignore a particular item, 3561 but the full implications must be understood and carefully weighed 3562 before choosing a different course. 3564 11.1.4 SHOULD NOT 3566 This phrase, or the phrase "NOT RECOMMENDED" means that there may 3567 exist valid reasons in particular circumstances when the particular 3568 behavior is acceptable or even useful, but the full implications 3569 should be understood and the case carefully weighed before 3570 implementing any behavior described with this label. 3572 11.1.5 MAY 3574 This word, or the adjective "OPTIONAL", means that an item is truly 3575 optional. One vendor may choose to include the item because a 3576 particular marketplace requires it or because the vendor feels that it 3577 enhances the product while another vendor may omit the same item. An 3578 implementation which does not include a particular option MUST be 3579 prepared to interoperate with another implementation which does 3580 include the option, though perhaps with reduced functionality. In the 3582 deBry, Hastings, Herriot, Isaacson, Powell 3583 Expires February xx, 1998 3584 same vein an implementation which does include a particular option 3585 MUST be prepared to interoperate with another implementation which 3586 does not include the option (except, of course, for the feature the 3587 option provides.) 3589 11.1.6 NEED NOT 3591 The verb "NEED NOT" indicates an action that the subject of the 3592 sentence does not have to implement in order to claim conformance to 3593 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 3594 "MAY NOT" sounds like a prohibition. 3596 11.2 Model Terminology 3598 11.2.1 Keyword 3600 Keywords are used within this document as identifiers of semantic 3601 entities within the abstract model. Attribute names, some attribute 3602 values, attribute syntaxes, and attribute group names are represented 3603 as keywords. In this document, a keyword is a sequence of characters 3604 (length of 1 to 255) which consists of the following ASCII characters: 3605 lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), 3606 period ("."), and underscore ("_"). A keyword starts with a lower- 3607 case letter. 3609 11.2.2 Attributes 3611 An attribute is an item of information that is associated with an 3612 instance of an IPP object. An attribute consists of an attribute name 3613 and an attribute value(s). Each attribute has a specific syntax. All 3614 attributes are defined in section 4. 3616 An interesting set of attributes is called Job Template Attributes 3617 (these attributes are described in detail in section 4.2.) The client 3618 optionally supplies Job Template attributes as input parameters in a 3619 create request (operation requests that create Job objects). The 3620 Printer object has associated attributes which define supported and 3621 default values for the Printer. 3623 11.2.2.1 Attribute Name 3625 Each attribute is uniquely identified in this document by its 3626 attribute name. An attribute name is a keyword. The keyword 3627 attribute name is given in the section header describing that 3629 deBry, Hastings, Herriot, Isaacson, Powell 3630 Expires February xx, 1998 3631 attribute. In running text in this document, attribute names are 3632 indicated inside double quotation marks ("). 3634 11.2.2.2 Attribute Group Name 3636 Related attributes are grouped into named groups. The name of the 3637 group is a keyword. The group name may be used in an input parameter 3638 in place of naming all the attributes in the group explicitly. 3639 Attribute groups are defined in section 3. 3641 11.2.2.3 Attribute Value 3643 Each attribute has one or more values. Attribute values are 3644 represented in the syntax type specified for that attribute. In 3645 running text in this document, attribute values are indicated inside 3646 single quotation marks ('), whether their attribute syntax is keyword, 3647 integer, text, etc. 3649 11.2.2.4 Attribute Syntax 3651 Each attribute is defined using an explicit syntax type. In this 3652 document, each syntax type is defined as a keyword with specific 3653 meaning. The protocol specification document [23] indicates the 3654 actual "on-the-wire" encoding rules for each syntax type. Attribute 3655 syntax types are defined in section 4.1. 3657 11.2.3 Supports 3659 By definition, an implementation (an instance of an IPP object) 3660 supports an attribute only if that implementation responds with the 3661 corresponding attribute and value in a response to a query for that 3662 attribute. A given implementation may exhibit a behavior that 3663 corresponds to the value of some attribute, but if the implementation, 3664 when queried for that attribute, doesn't respond with the supported 3665 attribute populated with that specific value, then as far as IPP is 3666 concerned, that implementation does not support that feature. 3668 A conforming implementation SHALL support all MANDATORY attributes. 3669 However, even for MANDATORY attributes, conformance to IPP does not 3670 mandate that all implementations support all possible values 3671 representing all possible job processing behaviors and features. For 3672 example, if a given instance of a Printer supports only certain 3673 document formats, then that Printer responds with the "document- 3674 format-supported" attribute populated with a set of values, possibly 3675 only one, taken from the entire set of possible values defined for 3676 that attribute. This limited set of values represents the Printer's 3677 set of supported document formats. Supporting an attribute and some 3678 set of values for that attribute enables IPP end users to be aware of 3680 deBry, Hastings, Herriot, Isaacson, Powell 3681 Expires February xx, 1998 3682 and make use of those features associated with that attribute and 3683 those values. If an implementation chooses to not support an 3684 attribute or some specific value, then IPP end users would have no 3685 ability to make use of that feature within the context of IPP itself. 3686 However, due to existing practice and legacy systems which are not IPP 3687 aware, there might be some other mechanism outside the scope of IPP to 3688 control or request the "unsupported" feature (such as embedded 3689 instructions within the print data itself, for example). 3691 For example, consider the "finishings-supported" attribute. If a 3692 Printer is not physically capable of stapling, the "finishings- 3693 supported" attribute MUST NOT be populated with the value of 'staple'. 3694 If a Printer is physically capable of stapling, an implementation MAY 3695 choose to support the "finishings-supported" attribute and the value 3696 of 'staple'. Doing so, would enable end users to be aware of and make 3697 use of the stapling feature. Without support for the value 'staple', 3698 an IPP end user would have no means within the protocol itself to 3699 request that a Job be stapled. However an existing print data 3700 formatter might be able to request that the document be stapled 3701 directly within the print data itself. In this case, the IPP 3702 implementation does not "support" stapling, however the end user is 3703 still able to have some control over the stapling of the completed 3704 job. 3706 In order to ease the implementation burden, many IPP attributes are 3707 OPTIONAL. Therefore, it is an implementation choice whether or not to 3708 support OPTIONAL attributes and values, even if those attributes and 3709 values correspond to features and functions that are realizable in the 3710 implementation. However, it is RECOMMENDED that if an IPP 3711 implementation that is capable of realizing any feature or function 3712 that corresponds to an IPP attribute and some associated value, then 3713 that implementation support that IPP attribute and value. 3715 Note: The set of values in any of the supported value attributes is 3716 set (populated) by some administrative process or automatic sensing 3717 mechanism that is outside the scope of IPP. For administrative policy 3718 and control reasons, an administrator may choose to make only a subset 3719 of possible values visible to the end user. In this case, the real 3720 output device behind the IPP Printer abstraction may be capable of a 3721 certain feature, however an administrator is specifying that access to 3722 that feature not flow back to the end user through the IPP protocol. 3724 deBry, Hastings, Herriot, Isaacson, Powell 3725 Expires February xx, 1998 3726 12. APPENDIX B: Status Codes 3728 This section defines status code keywords that are used to provide 3729 semantic information on the results of an operation request. Each 3730 operation response MUST include a status code. For error type status 3731 codes, the response MAY also contain a status message that provides a 3732 short textual description of the status. The status code is intended 3733 for use by automata, and the status message is intended for the human 3734 end user. Since the status message is an OPTIONAL component of the 3735 operation response, an IPP application (i.e. a browser, GUI, print 3736 driver or gateway) is NOT REQUIRED to examine or display the status 3737 message. 3739 The prefix of the status keyword defines the class of response as 3740 follows: 3742 "informational" - Request received, continuing process 3743 "successful" - The action was successfully received, understood, 3744 and accepted 3745 "redirection" - Further action must be taken in order to complete 3746 the request 3747 "client-error" - The request contains bad syntax or cannot be 3748 fulfilled 3749 "server-error" - The server failed to fulfill an apparently valid 3750 request 3752 Since IPP status codes are type2 enums, they are extensible. IPP 3753 applications are NOT REQUIRED to understand the meaning of all 3754 registered status codes, though such understanding is obviously 3755 desirable. However, applications SHALL understand the class of any 3756 status code, as indicated by the prefix, and treat any unrecognized 3757 response as being equivalent to the first status code of that class, 3758 with the exception that an unrecognized response shall not be cached. 3759 For example, if an unrecognized status code of "client-error-foo-bar" 3760 is received by the client, it can safely assume that there was 3761 something wrong with its request and treat the response as if it had 3762 received a "client-error-bad-request" status code. In such cases, IPP 3763 applications could present the OPTIONAL message (if present) to the 3764 end user since the message is likely to contain human readable 3765 information which will help to explain the unusual status. 3767 12.1 Status Codes (type2 keyword) 3769 Each status code is described below. Section 12.2 contains a table 3770 that indicates which status codes apply to which operations. 3772 deBry, Hastings, Herriot, Isaacson, Powell 3773 Expires February xx, 1998 3774 12.1.1 Informational 3776 This class of status code indicates a provisional response and is to 3777 be used for informational purposes only. 3779 There are no status codes defined in IPP 1.0 for this class of status 3780 code. 3782 12.1.2 Successful Status Codes 3784 This class of status code indicates that the client's request was 3785 successfully received, understood, and accepted. 3787 12.1.2.1 successful-ok (0x00) 3789 The request has succeeded. 3791 12.1.2.2 successful-ok-ignored-or-substituted-attributes (0x01) 3793 The request has succeeded, but since ignoring or substituting of 3794 values was requested ("ipp-attribute-fidelity" set to 'false' in the 3795 create request), some attributes were ignored or unsupported values 3796 were substituted with supported values in order to process the job 3797 without rejecting it. 3799 12.1.3 Redirection Status Codes 3801 This class of status code indicates that further action needs to be 3802 taken to fulfill the request. 3804 There are no status codes defined in IPP 1.0 for this class of status 3805 code. 3807 12.1.4 Client Error Status Codes 3809 This class of status code is intended for cases in which the client 3810 seems to have erred. The server SHOULD return a message containing an 3811 explanation of the error situation and whether it is a temporary or 3812 permanent condition. 3814 12.1.4.1 client-error-bad-request (0x400) 3816 The request could not be understood by the server due to malformed 3817 syntax. The IPP application SHOULD NOT repeat the request without 3818 modifications. 3820 deBry, Hastings, Herriot, Isaacson, Powell 3821 Expires February xx, 1998 3822 12.1.4.2 client-error-forbidden (0x401) 3824 The server understood the request, but is refusing to fulfill it. 3825 Additional authentication information or authorization credentials 3826 will not help and the request SHOULD NOT be repeated. This status 3827 code is commonly used when the server does not wish to reveal exactly 3828 why the request has been refused or when no other response is 3829 applicable. 3831 12.1.4.3 client-error-not-authenticated (0x402) 3833 The request requires user authentication. The IPP client may repeat 3834 the request with suitable authentication information. If the request 3835 already included authentication information, then this status code 3836 indicates that authorization has been refused for those credentials. 3837 If this response contains the same challenge as the prior response, 3838 and the user agent has already attempted authentication at least once, 3839 then the response message may contain relevant diagnostic information. 3840 This status codes reveals more information than "client-error- 3841 forbidden". 3843 12.1.4.4 client-error-not-authorized (0x403) 3845 The requester is not authorized to perform the request. Additional 3846 authentication information or authorization credentials will not help 3847 and the request SHOULD be repeated. This status code is used when the 3848 server wishes to reveal that the authentication information is 3849 understandable, however, the requester is explicitly not authorized to 3850 perform the request. This status codes reveals more information than 3851 "client-error-forbidden". 3853 12.1.4.5 client-error-not-possible (0x404) 3855 This status code is used when the request is for something that can 3856 not happen. For example, there might be a request to cancel a job 3857 that has already been aborted by the system. The IPP client SHOULD 3858 NOT repeat the request. 3860 12.1.4.6 client-error-timeout (0x405) 3862 The client did not produce a request within the time that the server 3863 was prepared to wait. For example, a client issued a Create-Job 3864 operation and then, after a long period of time, issued a Send- 3865 Document operation and this error status code was returned in response 3866 to the Send-Document request. The server might have been forced to 3867 clean up resources that had been held for the waiting additional 3868 Documents. The server was forced to close the Job since the client 3870 deBry, Hastings, Herriot, Isaacson, Powell 3871 Expires February xx, 1998 3872 took too long. The client SHOULD NOT repeat the request without 3873 modifications. 3875 12.1.4.7 client-error-not-found (0x406) 3877 The server has not found anything matching the request URI. No 3878 indication is given of whether the condition is temporary or 3879 permanent. For example, a client with an old reference to a Job (a 3880 URI) tries to cancel the Job, however in the mean time the Job might 3881 have been completed and all record of it at the Printer has been 3882 deleted. This status code, 'client-error-not-found' is returned 3883 indicating that the referenced Job can not be found. This error 3884 status code is also used when a client supplies a URI as a reference 3885 to the document data in either a Print-URI or Send-URI operation 3886 however the document can not be found. 3888 In practice, an IPP application should avoid a not found situation by 3889 first querying and presenting a list of valid Printer URIs and Job 3890 URIs to the end-user. 3892 12.1.4.8 client-error-gone (0x407) 3894 The requested object is no longer available at the server and no 3895 forwarding address is known. This condition should be considered 3896 permanent. Clients with link editing capabilities should delete 3897 references to the request URI after user approval. If the server does 3898 not know or has no facility to determine, whether or not the condition 3899 is permanent, the status code "client-error-not-found" should be used 3900 instead. 3902 This response is primarily intended to assist the task of web 3903 maintenance by notifying the recipient that the resource is 3904 intentionally unavailable and that the server owners desire that 3905 remote links to that resource be removed. It is not necessary to mark 3906 all permanently unavailable resources as "gone" or to keep the mark 3907 for any length of time -- that is left to the discretion of the server 3908 owner. 3910 12.1.4.9 client-error-request-entity-too-large (0x408) 3912 The server is refusing to process a request because the request entity 3913 is larger than the server is willing or able to process. An IPP 3914 Printer returns this status code when it limits the size of print jobs 3915 and it receives a print job that exceeds that limit or when the 3916 operation parameters are so many that their encoding causes the 3917 request entity to exceed server capacity. 3919 deBry, Hastings, Herriot, Isaacson, Powell 3920 Expires February xx, 1998 3921 12.1.4.10 client-error-request-URI-too-long (0x409) 3923 The server is refusing to service the request because the request URI 3924 is longer than the server is willing to interpret. This rare 3925 condition is only likely to occur when a client has improperly 3926 submitted a request with long query information (e.g. an IPP 3927 application allows an end-user to enter an invalid URI), when the 3928 client has descended into a URI "black hole" of redirection (e.g., a 3929 redirected URI prefix that points to a suffix of itself), or when the 3930 server is under attack by a client attempting to exploit security 3931 holes present in some servers using fixed-length buffers for reading 3932 or manipulating the Request-URI. 3934 12.1.4.11 client-error-unsupported-document-format (0x40A) 3936 The server is refusing to service the request because the print data 3937 is in a format, as specified in the "document-format" input attribute, 3938 that is not supported by the IPP Printer. 3940 12.1.4.12 client-error-attribute-not-supported (0x40B) 3942 For a Create-Job, Print-Job or Validate-Job operation, if the IPP 3943 Printer does not support one or more attributes or attribute values 3944 supplied in the request, the Printer shall return this status. For 3945 example, if the request indicates 'iso-a4' media, but that media type 3946 is not supported by the Printer. Or, if the client supplies an 3947 optional attribute and the attribute itself is not even supported by 3948 the Printer. If "ipp-attribute-fidelity" it set to false, the Printer 3949 can ignore or substitute values for unsupported attributes and values 3950 rather than reject the request and return this status code. . 3952 For a Get-Jobs operation, if the IPP Printer does not support one of 3953 the requested attributes, the Printer shall return this status. 3955 In practice, an IPP application should avoid this situation by 3956 querying an IPP Printer for its valid attributes and values before 3957 performing an operation on the Printer. 3959 12.1.5 Server Error Status Codes 3961 This class of status codes indicates cases in which the server is 3962 aware that it has erred or is incapable of performing the request. 3963 The server SHOULD include a message containing an explanation of the 3964 error situation, and whether it is a temporary or permanent condition. 3966 deBry, Hastings, Herriot, Isaacson, Powell 3967 Expires February xx, 1998 3968 12.1.5.1 server-error-internal- error (0x500) 3970 The server encountered an unexpected condition that prevented it from 3971 fulfilling the request. This error status code differs from "server- 3972 error-temporary-error" in that it implies a more permanent type of 3973 internal error. It also differs from "server-error-device-error" in 3974 that it implies an unexpected condition (unlike a paper-jam or out-of- 3975 toner problem which is undesirable but expected). This error status 3976 code indicates that probably some knowledgeable human intervention is 3977 required. 3979 12.1.5.2 server-error-operation-not-supported (0x501) 3981 The server does not support the functionality required to fulfill the 3982 request. This is the appropriate response when the server does not 3983 recognize an operation or is not capable of supporting it. 3985 12.1.5.3 server-error-service-unavailable (0x502) 3987 The server is currently unable to handle the request due to a 3988 temporary overloading or maintenance of the server. The implication 3989 is that this is a temporary condition which will be alleviated after 3990 some delay. If known, the length of the delay may be indicated in the 3991 message. If no delay is given, the IPP application should handle the 3992 response as it would for a "server-error-temporary-internal-error" 3993 response. If the condition is more permanent, the error status codes 3994 "client-error-gone" or "client-error-not-found" could be used. 3996 12.1.5.4 server-error-version-not-supported (0x503) 3998 The server does not support, or refuses to support, the IPP protocol 3999 version that was used in the request message. The server is 4000 indicating that it is unable or unwilling to complete the request 4001 using the same version as supplied in the request other than with this 4002 error message. The response should contain a Message describing why 4003 that version is not supported and what other versions are supported by 4004 that server. 4006 A conforming IPP client shall specify the valid version (IPP 1.0)on 4007 each request. A conforming IPP server (IPP 1.0) SHALL NOT return this 4008 status code to a conforming IPP 1.0 client. An IPP server shall 4009 return this status code to a non-conforming IPP client. 4011 12.1.5.5 server-error-device-error (0x504) 4013 A printer error, such as a paper jam, occurs while the IPP Printer 4014 processes a Print or Send operation. The response contains the true 4015 Job Status (the values of the "job-state" and "job-state-reasons" 4017 deBry, Hastings, Herriot, Isaacson, Powell 4018 Expires February xx, 1998 4019 attributes). Additional information can be returned in the optional 4020 "job-state-message" attribute value or in the OPTIONAL status code 4021 message that describes the error in more detail. This error status 4022 code MAY be returned even though the operation was successful (the Job 4023 was submitted and is now in the 'pending' state waiting to be 4024 processed). 4026 ISSUE: This doesn't seem like a good error. If the create request 4027 succeeded, an OK should be returned. The job-status of printer-stopped 4028 gives information about the printer being stopped. 4030 12.1.5.6 server-error-temporary-error (0x505) 4032 A temporary error such as a buffer full write error, a memory overflow 4033 (i.e. the document data exceeds the memory of the Printer), or a disk 4034 full condition, occurs while the IPP Printer processes an operation. 4035 The client MAY try the unmodified request again at some later point in 4036 time with an expectation that the temporary internal error condition 4037 may have been cleared. 4039 deBry, Hastings, Herriot, Isaacson, Powell 4040 Expires February xx, 1998 4041 12.2 Status Keywords for IPP Operations 4043 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 4044 SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs 4045 C = Cancel-Job 4047 IPP Operations 4048 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 4049 ------------------ -- -- -- -- -- - -- -- - 4050 successful-OK x x x x x x x x x 4051 client-error-bad-request x x x x x x x x x 4052 client-error-not-authenticated x x x x x x x x x 4053 client-error-not-authorized x x x x x x x x x 4054 client-error-forbidden x x x x x x x x x 4055 client-error-not-possible x x x x x x x x x 4056 client-error-not-found x x x x x x x x x 4057 client-error-timeout x x x x x x x x x 4058 client-error-gone x x x x x x x x x 4059 client-error-request-entity-too-large x X X X X X X X X 4060 client-error-request-URI-too-long x x x x x x x x x 4061 client-error-unsupported-document-format x x x x 4062 client-error-attribute-value-not- x x x x 4063 supported 4064 server-error-internal-error x x x x x x x x x 4065 server-error-service-unavailable x x x x x x x x x 4066 server-error-timeout x x x x x x x x x 4067 server-error-HTTP-version-not-supported x x x x x x x x x 4068 server-error-IPP-version-not-supported x x x x x x x x x 4069 server-error-device-error x x x x x 4070 server-error-temporary-error x x x x x 4072 13. APPENDIX C: "document-format" values 4074 The Printer Working Group has registered a set of type2 enum values 4075 with IANA as part of the IETF Printer MIB [1] project. The symbols 4076 for each value assigned by the PWG starts with the four letters: 4077 "lang", in order to follow SNMP ASN.1 rules that all enum symbols 4078 SHALL start with a lower case letter. MIME types corresponding to the 4079 integer enum value is used as the value the IPP "document-format" 4080 attribute. 4082 This APPENDIX lists the document formats that are currently registered 4083 with IANA. 4085 The standard values registered as of the data of this document are: 4087 deBry, Hastings, Herriot, Isaacson, Powell 4088 Expires February xx, 1998 4089 'other': 1 - 4090 'langPCL': 3 - PCL. Starting with PCL version 5, HP-GL/2 is 4091 included as part of the PCL language. PCL and HP-GL/2 are 4092 registered trademarks of Hewlett-Packard Company. 4093 'langHPGL': 4 - Hewlett-Packard Graphics Language. HP-GL is a 4094 registered trademark of Hewlett-Packard Company. 4095 'langPJL': 5 - Peripheral Job Language. Appears in the data stream 4096 between data intended for a page description language. Hewlett- 4097 Packard Co. 4098 'langPS': 6 - PostScript Language (tm) Postscript - a trademark of 4099 Adobe Systems Incorporated which may be registered in certain 4100 jurisdictions 4101 'langIPDS': 7 - Intelligent Printer Data Stream Bi-directional 4102 print data stream for documents consisting of data objects (text, 4103 image, graphics, bar codes), resources (fonts, overlays) and 4104 page, form and finishing instructions. Facilitates system level 4105 device control, document tracking and error recovery throughout 4106 the print process. Pennant Systems, IBM 4107 'langPPDS': 8 - IBM Personal Printer Data Stream. Originally 4108 called IBM ASCII, the name was changed to PPDS when the Laser 4109 Printer was introduced in 1989. Lexmark International, Inc. 4110 'langEscapeP': 9 - Epson Corp. 4111 'langEpson': 10 - 4112 'langDDIF': 11 - Digital Document Interchange Format Digital 4113 Equipment Corp., Maynard MA 4114 'langInterpress': 12 - Xerox Corp. 4115 'langISO6429': 13 - ISO 6429. Control functions for Coded 4116 Character Sets (has ASCII control characters, plus additional 4117 controls for character imaging devices.) ISO Standard, Geneva, 4118 Switzerland 4119 'langLineData': 14 - line-data: Lines of data as separate ASCII or 4120 EBCDIC records and containing no control functions (no CR, LF, 4121 HT, FF, etc.). For use with traditional line printers. May use 4122 CR and/or LF to delimit lines, instead of records. See ISO 10175 4123 Document Printing Application (DPA) ISO standard, Geneva, 4124 Switzerland 4125 'langMODCA': 15 - Mixed Object Document Content Architecture 4126 Definitions that allow the composition, interchange, and 4127 presentation of final form documents as a collection of data 4128 objects (text, image, graphics, bar codes), resources (fonts, 4129 overlays) and page, form and finishing instructions. Pennant 4130 Systems, IBM 4131 'langREGIS': 16 - Remote Graphics Instruction Set, Digital 4132 Equipment Corp., Maynard MA 4133 'SCS': 17 - SNA Character String Bi-directional print data stream 4134 for SNA LU-1 mode of communications IBM 4135 'langSPDL': 18 - ISO 10180 Standard Page Description Language ISO 4136 Standard 4138 deBry, Hastings, Herriot, Isaacson, Powell 4139 Expires February xx, 1998 4140 'langTEK4014': 19 - Tektronix Corp. 4141 'langPDS': 20 - 4142 'langIGP': 21 - Printronix Corp. 4143 'langCodeV': 22 - Magnum Code-V, Image and printer control language 4144 used to control impact/dot- matrix printers. QMS, Inc., Mobile 4145 AL 4146 'langDSCDSE': 23 - DSC-DSE: Data Stream Compatible and Emulation 4147 Bi-directional print data stream for non-SNA (DSC) and SNA LU-3 4148 3270 controller (DSE) communications IBM 4149 'langWPS': 24 - Windows Printing System, Resource based 4150 command/data stream used by Microsoft At Work Peripherals. 4151 Developed by the Microsoft Corporation. 4152 'langLN03': 25 - Early DEC-PPL3, Digital Equipment Corp. 4153 'langCCITT': 26 - 4154 'langQUIC': 27 - QUIC (Quality Information Code), Page Description 4155 Language for laser printers. Included graphics, printer control 4156 capability and emulation of other well- known printer . QMS, 4157 Inc. 4158 'langCPAP': 28 - Common Printer Access Protocol Digital Equipment 4159 Corp 4160 'langDecPPL': 29 - Digital ANSI-Compliant Printing Protocol (DEC- 4161 PPL) Digital Equipment Corp 4162 'langSimpleText': 30 - simple-text: character coded data, including 4163 NUL, CR , LF, HT, and FF control characters. See ISO 10175 4164 Document Printing Application (DPA) ISO standard, Geneva, 4165 Switzerlan 4166 'langNPAP': 31 - Network Printer Alliance Protocol (NPAP). This 4167 protocol has been superseded by the IEEE 1284.1 TIPSI standard. 4168 (ref. LangTIPSI(49)). 4169 'langDOC': 32 - Document Option Commands, Appears in the data 4170 stream between data intended for a page description . QMS, Inc 4171 'langimPress': 33 - imPRESS, Page description language originally 4172 developed for the ImageServer line of systems. A binary language 4173 providing representations for text, simple graphics (rules, 4174 lines, conic sections), and some large forms (simple bit-map and 4175 CCITT group 3/4 encoded).The language was intended to be sent 4176 over an 8-bit channel and supported early document preparation 4177 languages (e.g. TeX and TROFF). QMS, Inc. 4178 'langPinwriter': 34 - 24 wire dot matrix printer for USA, Europe, 4179 and Asia except Japan. More widely used in Germany, and some 4180 Asian countries than in US. NEC 4181 'langNPDL': 35 - Page printer for Japanese market. NEC 4182 'langNEC201PL': 36 - Serial printer language used in the Japanese 4183 market. NEC 4184 'langAutomatic': 37 - Automatic PDL sensing. Automatic sensing of 4185 the interpreter language family by the printer examining the 4186 document content. Which actual interpreter language families are 4187 sensed depends on the printer implementation. 4189 deBry, Hastings, Herriot, Isaacson, Powell 4190 Expires February xx, 1998 4191 'langPages': 38 - Page printer Advanced Graphic Escape Set IBM 4192 Japan 4193 'langLIPS': 39 - LBP Image Processing System 4194 'langTIFF': 40 - Tagged Image File Format (Aldus) 4195 'langDiagnostic': 41 - A hex dump of the input to the interpreter 4196 'langPSPrinter': 42 - The PostScript Language used for control 4197 (with any PDLs) Adobe Systems Incorporated 4198 'langCaPSL': 43 - Canon Print Systems Language 4199 'langEXCL': 44 - Extended Command Language Talaris Systems Inc 4200 'langLCDS': 45 - Line Conditioned Data Stream Xerox Corporatio 4201 'langXES': 46 - Xerox Escape Sequences Xerox Corporation 4202 'langPCLXL': 47 - Printer Control Language. Extended language 4203 features for printing, and printer control. Technical reference 4204 manual # TBD. Hewlett-Packard Co. 4205 'langART': 48 - Advanced Rendering Tools (ART). Page Description 4206 language originally developed for the Laser Press printers. 4207 Tehnical reference manual: "ART IV Reference Manual", No F33M. 4208 Fuji Xerox Co., Ltd. 4209 'langTIPSI': 49 - Transport Independent Printer System Interface 4210 (ref. IEEE Std. 1284.1) 4211 'langPrescribe': 50 - Page description and printer control 4212 language. It can be described with ordinary ASCII characters. 4213 Technical reference manual: "PRESCRIBE II Programming Manual" 4214 'langLinePrinter': 51 - A simple-text character stream which 4215 supports the control codes LF, VT, FF and CR plus Centronics or 4216 Dataproducts Vertical Format Unit (VFU). language is commonly 4217 used on many older model line and matrix printers. 4218 'langIDP': 52 - Imaging Device Protocol Apple Computer. 4219 'langXJCL': 53 - Xerox Corp. 4221 ISSUE: What are we going to do with 'langAutomatic (37)'?. 4223 14. APPENDIX D: "media" keyword values 4225 Standard keyword values are taken from several sources. 4227 Standard values are defined (taken from ISO DPA[5] and the Printer 4228 MIB[1]): 4230 'default': The default medium for the output device 4231 'iso-a4-white': Specifies the ISO A4 white medium 4232 'iso-a4-colored': Specifies the ISO A4 coloured medium 4233 'iso-a4-transparent' Specifies the ISO A4 transparent medium 4234 'iso-a3-white': Specifies the ISO A3 white medium 4235 'iso-a3-colored': Specifies the ISO A3 coloured medium 4236 'iso-a5-white': Specifies the ISO A5 white medium 4238 deBry, Hastings, Herriot, Isaacson, Powell 4239 Expires February xx, 1998 4240 'iso-a5-colored': Specifies the ISO A5 coloured medium 4241 'iso-b4-white': Specifies the ISO B4 white medium 4242 'iso-b4-colored': Specifies the ISO B4 coloured medium 4243 'iso-b5-white': Specifies the ISO B5 white medium 4244 'iso-b5-colored': Specifies the ISO B5 coloured medium 4245 'jis-b4-white': Specifies the JIS B4 white medium 4246 'jis-b4-colored': Specifies the JIS B4 coloured medium 4247 'jis-b5-white': Specifies the JIS B5 white medium 4248 'jis-b5-colored': Specifies the JIS B5 coloured medium 4250 The following standard values are defined for North American media: 4252 'na-letter-white': Specifies the North American letter white medium 4253 'na-letter-colored': Specifies the North American letter coloured 4254 medium 4255 'na-letter-transparent': Specifies the North American letter 4256 transparent medium 4257 'na-legal-white': Specifies the North American legal white medium 4258 'na-legal-colored': Specifies the North American legal coloured 4259 medium 4261 The following standard values are defined for envelopes: 4263 'iso-b4-envelope': Specifies the ISO B4 envelope medium 4264 'iso-b5-envelope': Specifies the ISO B5 envelope medium 4265 'iso-c3-envelope': Specifies the ISO C3 envelope medium 4266 'iso-c4-envelope': Specifies the ISO C4 envelope medium 4267 'iso-c5-envelope': Specifies the ISO C5 envelope medium 4268 'iso-c6-envelope': Specifies the ISO C6 envelope medium 4269 'iso-designated-long-envelope': Specifies the ISO Designated Long 4270 envelope medium 4271 'na-10x13-envelope': Specifies the North American 10x13 envelope 4272 medium 4273 'na-9x12-envelope': Specifies the North American 9x12 envelope 4274 medium 4275 'monarch-envelope': Specifies the Monarch envelope 4276 'na-number-10-envelope': Specifies the North American number 10 4277 business envelope medium 4278 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 4279 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 4280 'na-10x14-envelope': Specifies the North American 10x14 inch 4281 envelope 4282 'na-number-9-envelope': Specifies the North American number 9 4283 business envelope 4284 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 4286 deBry, Hastings, Herriot, Isaacson, Powell 4287 Expires February xx, 1998 4288 'na-10x15-envelope': Specifies the North American 10x15 inch 4289 envelope 4291 The following standard values are defined for the less commonly used 4292 media (white-only): 4294 'executive-white': Specifies the white executive medium 4295 'folio-white': Specifies the folio white medium 4296 'invoice-white': Specifies the white invoice medium 4297 'ledger-white': Specifies the white ledger medium 4298 'quarto-white': Specified the white quarto medium 4299 'iso-a0-white': Specifies the ISO A0 white medium 4300 'iso-a1-white': Specifies the ISO A1 white medium 4301 'iso-a2-white': Specifies the ISO A2 white medium 4302 'iso-a6-white': Specifies the ISO A6 white medium 4303 'iso-a7-white': Specifies the ISO A7 white medium 4304 'iso-a8-white': Specifies the ISO A8 white medium 4305 'iso-a9-white': Specifies the ISO A9 white medium 4306 'iso-10-white': Specifies the ISO A10 white medium 4307 'iso-b0-white': Specifies the ISO B0 white medium 4308 'iso-b1-white': Specifies the ISO B1 white medium 4309 'iso-b2-white': Specifies the ISO B2 white medium 4310 'iso-b3-white': Specifies the ISO B3 white medium 4311 'iso-b6-white': Specifies the ISO B6 white medium 4312 'iso-b7-white': Specifies the ISO B7 white medium 4313 'iso-b8-white': Specifies the ISO B8 white medium 4314 'iso-b9-white': Specifies the ISO B9 white medium 4315 'iso-b10-white': Specifies the ISO B10 white medium 4316 'jis-b0-white': Specifies the JIS B0 white medium 4317 'jis-b1-white': Specifies the JIS B1 white medium 4318 'jis-b2-white': Specifies the JIS B2 white medium 4319 'jis-b3-white': Specifies the JIS B3 white medium 4320 'jis-b6-white': Specifies the JIS B6 white medium 4321 'jis-b7-white': Specifies the JIS B7 white medium 4322 'jis-b8-white': Specifies the JIS B8 white medium 4323 'jis-b9-white': Specifies the JIS B9 white medium 4324 'jis-b10-white': Specifies the JIS B10 white medium 4326 The following standard values are defined for engineering media: 4328 'a': Specifies the engineering A size medium 4329 'b': Specifies the engineering B size medium 4330 'c': Specifies the engineering C size medium 4331 'd': Specifies the engineering D size medium 4332 'e': Specifies the engineering E size medium 4334 deBry, Hastings, Herriot, Isaacson, Powell 4335 Expires February xx, 1998 4336 The following standard values are defined for input-trays (from ISO 4337 DPA and the Printer MIB): 4339 'top': The top input tray in the printer. 4340 'middle': The middle input tray in the printer. 4341 'bottom': The bottom input tray in the printer. 4342 'envelope': The envelope input tray in the printer. 4343 'manual': The manual feed input tray in the printer. 4344 'large-capacity': The large capacity input tray in the printer. 4345 'main': The main input tray 4346 'side': The side input tray 4348 The following standard values are defined for media sizes (from ISO 4349 DPA): 4351 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 4352 in ISO 216 4353 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 4354 ISO 216 4355 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 4356 ISO 216 4357 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 4358 ISO 216 4359 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 4360 ISO 216 4361 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 4362 ISO 216 4363 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 4364 ISO 216 4365 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 4366 ISO 216 4367 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 4368 ISO 216 4369 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 4370 ISO 216 4371 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 4372 ISO 216 4373 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 4374 in ISO 216 4375 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 4376 in ISO 216 4377 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 4378 ISO 216 4379 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 4380 ISO 216 4381 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 4382 ISO 216 4384 deBry, Hastings, Herriot, Isaacson, Powell 4385 Expires February xx, 1998 4386 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 4387 ISO 216 4388 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 4389 ISO 216 4390 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 4391 ISO 216 4392 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 4393 ISO 216 4394 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 4395 ISO 216 4396 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 4397 ISO 216 4398 'na-letter': Specifies the North American letter size: 8.5 inches 4399 by 11 inches 4400 'na-legal': Specifies the North American legal size: 8.5 inches by 4401 14 inches 4402 'executive': Specifies the executive size (7.25 X 10.5 in) 4403 'folio': Specifies the folio size (8.5 X 13 in) 4404 'invoice': Specifies the invoice size (5.5 X 8.5 in) 4405 'ledger': Specifies the ledger size (11 X 17 in) 4406 'quarto': Specifies the quarto size (8.5 X 10.83 in) 4407 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 4408 ISO 269 4409 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 4410 ISO 269 4411 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 4412 ISO 269 4413 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 4414 ISO 269 4415 'iso-designated-long': Specifies the ISO Designated Long size: 110 4416 mm by 220 mm as defined in ISO 269 4417 'na-10x13-envelope': Specifies the North American 10x13 size: 10 4418 inches by 13 inches 4419 'na-9x12-envelope': Specifies the North American 9x12 size: 9 4420 inches by 12 inches 4421 'na-number-10-envelope': Specifies the North American number 10 4422 business envelope size: 4.125 inches by 9.5 inches 4423 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 4424 size 4425 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 4426 size 4427 'na-10x14-envelope': Specifies the North American 10x14 inch 4428 envelope size 4429 'na-number-9-envelope': Specifies the North American number 9 4430 business envelope size 4431 'na-6x9-envelope': Specifies the North American 6x9 envelope size 4432 'na-10x15-envelope': Specifies the North American 10x15 envelope 4433 size 4435 deBry, Hastings, Herriot, Isaacson, Powell 4436 Expires February xx, 1998 4437 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 4438 in) 4439 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 4440 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 4441 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 4442 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 4443 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 4444 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 4445 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 4446 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 4447 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 4448 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 4449 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 4451 15. APPENDIX E: Processing IPP Attributes 4453 When submitting a print job to an IPP Printer, the IPP model allows a 4454 client to supply operation and Job Template attributes along with the 4455 print data. These Job Template attributes in the create request 4456 affect the rendering, production and finishing of the documents in the 4457 job. Similar types of instructions may also be contained in the 4458 document to be printed, that is, embedded within the print data 4459 itself. In addition, the Printer has a set of attributes that 4460 describe what rendering and finishing options which are supported by 4461 that Printer. This model, which allows for flexibility and power, 4462 also introduces the potential that at job submission time, these 4463 client-supplied attributes may conflict with either: 4465 - what the implementation is capable of realizing (i.e., what the 4466 Printer supports), as well as 4467 - the instructions embedded within the print data itself. 4469 The following sections describe how these two types of conflicts are 4470 handled in the IPP model. 4472 15.1 Fidelity 4474 If there is a conflict between what the client requests and what a 4475 Printer supports, the client may request one of two possible conflict 4476 handling mechanisms: 4478 1) either reject the job since the job can not be processed exactly 4479 as specified, or 4480 2) allow the Printer to make any changes necessary to proceed with 4481 processing the Job the best it can. 4483 deBry, Hastings, Herriot, Isaacson, Powell 4484 Expires February xx, 1998 4485 In the first case the client is indicating to the Printer: "Print the 4486 job exactly as specified with no exceptions, and if that can't be 4487 done, don't even bother printing the job at all." In the second case, 4488 the client is indicating to the Printer: "It is more important to make 4489 sure the job is printed rather than be processed exactly as specified; 4490 just make sure the job is printed even if client supplied attributes 4491 need to be changed or ignored." 4493 The IPP model accounts for this situation by introducing an "ipp- 4494 attribute-fidelity" attribute. 4496 In a create request, "ipp-attribute-fidelity" is a boolean attribute 4497 that is OPTIONALLY supplied by the client. The value 'true' indicates 4498 that total fidelity to client supplied attributes and values is 4499 required. The client is requesting that the Job be printed exactly as 4500 specified, and if that is not possible then the job must be rejected 4501 rather than processed incorrectly. The value 'false' indicates that a 4502 reasonable attempt to print the Job is acceptable. If a Printer does 4503 not support some of the client supplied Job Template attributes or 4504 values, the Printer may ignore them or substitute any supported value 4505 for unsupported values. The Printer may choose to substitute the 4506 default value associated with that attribute, or use some other 4507 supported value that is similar to the unsupported requested value. 4508 For example, if a client supplies a "media" value of 'na-letter', the 4509 Printer may choose to substitute 'iso-a4' rather than a default value 4510 of 'envelope'. Since this is an OPTIONAL attribute, if the client 4511 does not supply a value, the Printer assumes a value of 'false'. 4513 Each Printer implementation MUST support both types of "fidelty" 4514 printing (that is whether the client supplies a value of 'true' or 4515 'false'). This is possible across all types of implementations, since 4516 there is a broad range of acceptable actions when substituting or 4517 ignoring unsupported attributes and values. Also, even if the client 4518 supplies a value of 'false', a Printer might still reject the Job for 4519 any reason including an unsupported attributes and/or values. In the 4520 other case, where the client requests a value of 'true', it is 4521 expected that the Printer support this type of printing since the 4522 Printer is already indicating functional support corresponding to all 4523 advertised supported attributes and values. 4525 Since a client can always query a Printer to find out exactly what is 4526 and is not supported, "ipp-attribute-fidelity" set to 'false' is 4527 useful when: 4529 1) The End-User uses a command line interface to request attributes 4530 that might not be supported. 4532 deBry, Hastings, Herriot, Isaacson, Powell 4533 Expires February xx, 1998 4534 2) In a GUI context, if the End User expects the job might be moved 4535 to another printer and prefers a sub-optimal result to nothing at 4536 all. 4537 3) The End User just wants something reasonable in lieu of nothing 4538 at all. 4540 15.2 Page Description Language (PDL) Override 4542 If there is a conflict between the value of an IPP Job Template 4543 attribute and a corresponding instruction in the print data, it is 4544 desirable that the value of the IPP attribute take precedence over the 4545 document instruction. Consider the case where a previously formatted 4546 file of print data is sent to an IPP Printer. In this case, if the 4547 client supplies any attributes at job submission time, the client 4548 desires that those attributes override the embedded instructions. 4549 Consider the case were a previously formatted document has embedded in 4550 it commands to load 'iso-a4' media. However, the document is passed 4551 to an end user that only has access to a printer with 'na-letter' 4552 media loaded. That end user most likely wants to submit that document 4553 to an that IPP Printer with the "media" Job Template attribute set to 4554 'na-letter'. The job submission attribute should take precedence over 4555 the embedded PDL instruction. However, until companies that supply 4556 interpreters for print data allow a way for external IPP attributes to 4557 take precedence over embedded job production instructions, a Printer 4558 might not be able to support the semantics that IPP attributes 4559 override the embedded instructions. 4561 The IPP model accounts for this situation by introducing a "pdl- 4562 override-supported" attribute. 4564 This attribute takes on the following values: 4566 - 'attempted': This value indicates that the Printer attempts to 4567 make sure that IPP attribute values take precedence over embedded 4568 instructions in the Print data, however there is no guarantee. 4569 - 'not-attempted': This value indicates that the Printer makes not 4570 attempt to ensure that IPP attribute values take precedence over 4571 embedded instructions in the print data. 4573 This is a MANDATORY Printer attribute. 4575 At job processing time, an implementation that supports the value of 4576 'attempted' might try to do one of several different actions: 4578 1) generate an output device specific command sequence to realize 4579 the feature represented by the IPP attribute value 4581 deBry, Hastings, Herriot, Isaacson, Powell 4582 Expires February xx, 1998 4583 2) parse the print data itself and replace the conflicting embedded 4584 instruction with a new embedded instruction that matches the 4585 intent of the IPP attribute value 4586 3) indicate to the Printer that external supplied attributes take 4587 precedence over embedded instructions and then pass the external 4588 IPP attribute values to the print data interpreter 4589 4) anything else that allows for the semantics that IPP attributes 4590 override embedded print data instructions. 4592 Since 'attempted' does not offer any type of guarantee, even though a 4593 given implementation might not do a very "good" job of attempting to 4594 ensure that IPP attributes take a higher precedence over instructions 4595 embedded in the print data, it would still be a conforming 4596 implementation. 4598 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 4599 ability to either accept or reject other unsupported attributes. In 4600 other words, if "ipp-attribute-fidelity" is set to 'true', a Job is 4601 accepted if and only if the client supplied attributes and values are 4602 supported by the Printer. Whether these attributes actually affect 4603 the processing of the Job depends on the ability of the Printer to 4604 override the instructions embedded in the print data with the 4605 semantics of the IPP attributes. If the print data attributes can be 4606 overridden ("pdl-override-supported" set to 'attempted'), the Printer 4607 makes an attempt to use the IPP attributes when processing the Job. If 4608 the print data attributes can not be overridden ("pdl-override- 4609 supported" set to 'not-attempted'), the Printer makes no attempt to 4610 use the IPP attributes when processing the Job, and hence, the IPP 4611 attributes may fail to affect the Job processing and output in any 4612 manner whatsoever. 4614 15.3 Suggested Attribute Processing Algorithm 4616 When a Printer receives a create request, the Printer either accepts 4617 or rejects the request. The Printer accepts the create request and 4618 creates a Job object if it is able to accept all Job Template and 4619 Document attributes in the request. The Printer rejects the request 4620 and does not create a Job object if the Printer rejects any Job 4621 Template or Document attribute in the request. In order to determine 4622 whether or not to accept or reject the request, the Printer SHOULD use 4623 the following algorithm: 4625 1. The implementation checks to see if the operation is supported. 4626 If not, the Printer rejects the request and sets the appropriate 4627 status code in the response. 4629 deBry, Hastings, Herriot, Isaacson, Powell 4630 Expires February xx, 1998 4631 2. The implementation checks to see if the requested version is 4632 supported. If not, the Printer rejects the request and sets the 4633 appropriate status code in the response. 4635 3. The implementation checks to see if the client supplied an "ipp- 4636 attribute-fidelity" attribute. If the attribute is missing (not 4637 supplied by the client), the Printer assumes that the value is 4638 'false'. 4640 4. The Printer loops through all other attributes, checking to see 4641 if the requested values are supported (e.g., the value of "foo" 4642 in the request is one of the values in the Printer's "foo- 4643 supported" attribute). If the attribute or its value is 4644 unsupported, the Printer flags it as unsupported. 4646 5. Once all attributes have been checked individually, the Printer 4647 checks for any inconsistent values among all the supported 4648 values. For example a Printer might be able to staple and to 4649 print on transparencies, however due to physical stapling 4650 limitations, the Printer might not be able to staple 4651 transparencies. Any inconsistent values are flagged as 4652 unsupported. 4654 6. Once all attributes have been checked and validated, if "ipp- 4655 attribute-fidelity" is set to true and there are any attributes 4656 flagged as unsupported, the Printer rejects the request and 4657 returns all unsupported attributes and values in the response and 4658 sets the appropriate status code. 4660 7. If "ipp-attribute-fidelity" is set to 'false' (nor it was not 4661 supplied by the client) and there are any attributes that are 4662 flagged as unsupported, the Printer, chooses to either ignore the 4663 unsupported attributes or change the requested value to some 4664 supported value. If, for some reason, it is not possible for the 4665 implementation to ignore or substitute values and is unable to 4666 "just print the job", the Printer is still able to reject the 4667 request and return all unsupported attributes and values in the 4668 response. In doing so, the Printer sets the appropriate status 4669 code. 4671 8. If the Printer is able to accept the request (either as is or by 4672 making changes and the "ipp-attribute-fidelity" attribute is set 4673 to 'false'), the Printer creates a new Job object with the 4674 remaining valid Job Template attributes. Initially it sets the 4675 Job's state to 'pending'. These Job Template attributes are 4676 associated with the Job object. All attributes which are 4677 associated with the Job object are intended to be override values 4678 that take precedence over whatever other embedded instructions 4680 deBry, Hastings, Herriot, Isaacson, Powell 4681 Expires February xx, 1998 4682 might be in the print data itself. That is, IPP allows for 4683 submission time attributes to take precedence over static 4684 instructions embedded in the print data. These submission time 4685 attributes are persistently stored with the Job. However, it is 4686 not possible for all implementations to realize the semantics of 4687 "override". End users may query the Printer's "pdl-override" 4688 attribute to determine if the Printer either attempts or does not 4689 attempt to override print data instructions with IPP attributes. 4691 9. There are some cases, where a Printer supports a Job Template 4692 attribute and has an associated default value set for that 4693 attribute. In the case where a client does not supply the 4694 corresponding attribute, the Printer does not use its default 4695 values to populate Job attributes when creating the new Job 4696 object. The Printer's default values are used at Job processing 4697 time where no other IPP attribute or instruction embedded in the 4698 print data is present. Suppose the Printer were to associate the 4699 Printer's default value with the Job at creation time for an 4700 attribute not supplied by the client. This would change it from 4701 a default value to an override value. A later query of the Job 4702 object would return a set of attributes. Neither the Printer nor 4703 the end user would be able to tell the difference between an 4704 attribute that is an "override PDL" attribute supplied by the 4705 client or a "default value" attribute supplied by the printer. 4707 10. If the client does not supply a value for some Job Template 4708 attribute, and the Printer does not support that attribute, as 4709 far as IPP is concerned, the result of processing that Job (with 4710 respect to the missing attribute) is undefined. 4712 11. Once the Job object has been created, the Printer responds back 4713 to the client with a successful response including Job status 4714 attributes that indicate the initial state of the Job ('pending', 4715 'processing', etc.). The Printer uses its own configuration and 4716 implementation specific algorithms for scheduling the Job in the 4717 correct processing order. Once the Printer begins processing the 4718 Job, the Printer changes the Job's state to 'processing'. The 4719 Printer monitors all Jobs and notifies the intended recipients 4720 for each event by processing the all of the "notify-events" and 4721 "notify-addresses" Job attributes. If the Printer supports PDL 4722 override (the "pdl-override" attribute set to 'attempted'), the 4723 implementation does its best to see that IPP attributes take 4724 precedence over embedded instructions in the print data. 4726 12. The implementation of the Printer object continues to process 4727 the Job until it can move the Job into the 'completed' state. If 4728 an Cancel-Job operation is received, the implementation 4729 eventually moves the Job into the 'cancelled' state. If the 4731 deBry, Hastings, Herriot, Isaacson, Powell 4732 Expires February xx, 1998 4733 system encounters errors during processing that do not allow it 4734 to progress the Job into a completed state, the implementation 4735 halts all processing, cleans up any resources, and moves the Job 4736 into the 'aborted' state. 4738 13. Once the Job moves to the 'completed', 'aborted', or 4739 'cancelled' state, it is an implementation decision as to when to 4740 destroy the Job object and release all associated resources. 4741 Once the Job has been destroyed, the Printer would return either 4742 the "not-found" or "gone" status codes for operations directed at 4743 that Job. 4745 Some Printer implementations may support "ipp-attribute-fidelity" set 4746 to 'true' and "pdl-override" set to 'attempted' and yet still not be 4747 able to realize exactly what the client specifies in the create 4748 request. This is due to legacy decisions and assumptions that have 4749 been made about the role of job instructions embedded within the print 4750 data and external job instructions that accompany the print data and 4751 how to handle conflicts between such instructions. The inability to 4752 be 100% precise about how a given implementation will behave is also 4753 compounded by the fact that the two special attributes, "ipp- 4754 attribute-fidelity" and "pdl-override", apply to the whole job rather 4755 than specific values for each attribute. For example, some 4756 implementations may be able to override almost all Job Template 4757 attributes except for "number-up". It would only make the IPP model 4758 more complex (with relatively little added value) to allow for 4759 additional special attributes that apply uniquely to each Job Template 4760 attribute or even specific values of each attribute. 4762 16. APPENDIX F: Relationship to SNMP MIBs 4764 The IPP model is related to the Printer MIB [??] in the following 4765 ways: 4767 ISSUE: TBS. 4769 The IPP model is related to the Job Monitoring MIB [??] in the 4770 following ways: 4772 ISSUE: TBS 4774 deBry, Hastings, Herriot, Isaacson, Powell 4775 Expires February xx, 1998