idnits 2.17.1 draft-ietf-ipp-model-03.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-19) 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: ' 7. 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 1893 instances of too long lines in the document, the longest one being 7 characters in excess of 72. ** There is 1 instance of lines with control characters in the document. ** The abstract seems to contain references ([20], [2], [21], [3], [4], [22], [5], [23], [6], [24], [25], [7], [30], [8], [26], [9], [27], [10], [28], [29], [11], [1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There is 21 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. == There is 7 instances of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 155 has weird spacing: '...(1setOf type2...' == Line 453 has weird spacing: '... any indi...' == Line 764 has weird spacing: '...t using the v...' == Line 795 has weird spacing: '...and the rejec...' == Line 2050 has weird spacing: '...d to be count...' == (6 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 while this job is processing (i.e., when the Job moves from the 'processing' to the 'processing-stopped' state). Problems include any of the "job-state-reasons" or "printer-state-reason" values. '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. If the Printer enters the 'stopped' state the reason in the "printer-state-reasons" attribute. == 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 page 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 page 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). 'timed-out': The server was able to connect to the output device (or is always connected), but was unable to get a response from the output device. 'stopping': The printer will be stopping in a while and will change its reason to printer-stopped. This reason is a non-critical, even for a Printer with a single output device. When an output-device ceases accepting jobs, the Printer will have this state while the output device completes printing. 'stopped-partly': When a Printer controls more than one output device, this reason indicates that one or more output devices are stopped. If the reason is a report, fewer than half of the output devices are stopped. If the reason is a warning, fewer than all of the output devices are stopped. 'toner-low': The Printer is low on toner. 'spool-area-full': The limit of persistent storage allocated for spooling has been reached. == 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 (July 14, 1997) is 9776 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? '11' on line 3109 looks like a reference -- Missing reference section? '5' on line 3945 looks like a reference -- Missing reference section? '1' on line 3946 looks like a reference -- Missing reference section? '29' on line 3135 looks like a reference -- Missing reference section? '27' on line 3129 looks like a reference -- Missing reference section? '26' on line 3126 looks like a reference -- Missing reference section? '28' on line 3132 looks like a reference -- Missing reference section? '30' on line 3138 looks like a reference -- Missing reference section? '22' on line 3117 looks like a reference -- Missing reference section? '24' on line 3121 looks like a reference -- Missing reference section? '2' on line 3080 looks like a reference -- Missing reference section? '3' on line 3083 looks like a reference -- Missing reference section? '4' on line 3086 looks like a reference -- Missing reference section? '6' on line 3091 looks like a reference -- Missing reference section? '7' on line 3094 looks like a reference -- Missing reference section? '8' on line 3097 looks like a reference -- Missing reference section? '9' on line 3101 looks like a reference -- Missing reference section? '10' on line 3104 looks like a reference -- Missing reference section? '20' on line 3112 looks like a reference -- Missing reference section? '21' on line 3114 looks like a reference -- Missing reference section? '23' on line 3402 looks like a reference -- Missing reference section? '25' on line 3245 looks like a reference Summary: 12 errors (**), 0 flaws (~~), 15 warnings (==), 26 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 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 July 14, 1997 15 Internet Printing Protocol/1.0: Model and Semantics 16 draft-ietf-ipp-model-03.txt 18 Status of this Memo 20 This document is an Internet-Draft. Internet-Drafts are working 21 documents of the Internet Engineering Task Force (IETF), its areas, 22 and its working groups. Note that other groups may also distribute 23 working documents as Internet-Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference 28 material or to cite them other than as "work in progress". 30 To learn the current status of any Internet-Draft, please check the 31 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 32 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 33 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 34 ftp.isi.edu (US West Coast). 36 Abstract 38 This document is one of a set of documents, which together describe 39 all aspects of a new Internet Printing Protocol (IPP). IPP is an 40 application level protocol that can be used for distributed printing 41 using Internet tools and technology. The protocol is heavily 42 influenced by the printing model introduced in the Document Printing 43 Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both 44 end user and administrative features, IPP version 1.0 is focused only 45 on end user functionality. 47 The full set of IPP documents includes: 49 Expires January 14, 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 Expires January 14, 1998 80 Table of Contents 82 1. Simplified Printing Model......................................7 83 2. IPP Objects....................................................9 84 2.1 Printer Object................................................10 85 2.2 Job Object....................................................12 86 2.3 Document Object...............................................13 87 2.4 Object Relationships..........................................14 88 2.5 Object Identity...............................................14 89 3. IPP Operations................................................15 90 3.1 Operation Semantics...........................................16 91 3.1.1 Get-Operations Operation.................................17 92 3.1.1.1 Get-Operations Request..............................17 93 3.1.1.2 Get-Operations Response.............................17 94 3.1.2 Print-Job Operation......................................17 95 3.1.2.1 Print-Job Request...................................18 96 3.1.2.2 Print-Job Response..................................20 97 3.1.3 Print-URI Operation......................................20 98 3.1.3.1 Print-URI Request...................................20 99 3.1.3.2 Print-URI Response..................................21 100 3.1.4 Validate-Job Operation...................................21 101 3.1.4.1 Validate-Job Request................................21 102 3.1.4.2 Validate-Job Response...............................21 103 3.1.5 Create-Job Operation.....................................22 104 3.1.5.1 Create-Job Request..................................22 105 3.1.5.2 Create Job Response.................................22 106 3.1.6 Send-Document Operation..................................23 107 3.1.6.1 Send-Document Request...............................23 108 3.1.6.2 Send-Document Response..............................23 109 3.1.7 Send-URI Operation.......................................23 110 3.1.7.1 Send-URI Request....................................24 111 3.1.7.2 Send-URI Response...................................24 112 3.1.8 Cancel Job Operation.....................................24 113 3.1.8.1 Cancel-Job Request..................................24 114 3.1.8.2 Cancel-Job Response.................................25 115 3.1.9 Get-Attributes Operation.................................25 116 3.1.9.1 Get-Attributes Request..............................25 117 3.1.9.2 Get-Attributes Response.............................27 118 3.1.10 Get-Jobs Operation.......................................27 119 3.1.10.1 Get-Jobs Request....................................27 120 3.1.10.2 Get-Jobs Response...................................28 121 3.2 Operation Status Codes and Messages...........................28 122 4. Object Attributes.............................................29 123 4.1 Attribute Syntaxes............................................29 124 4.1.1 Attribute Extensibility..................................31 125 4.2 Job Template Attributes.......................................33 126 4.2.1 job-name (name)..........................................37 127 4.2.2 job-sheets (type4 keyword)...............................38 129 Expires January 14, 1998 130 4.2.3 notify-events (1setOf type2 keyword).....................38 131 4.2.4 notify-addresses (1setOf uri)............................38 132 4.2.5 job-priority (integer(1:100))............................39 133 4.2.6 job-hold-until (type4 keyword)...........................39 134 4.2.7 multiple-documenthandling (type2 keyword)................40 135 4.2.8 best-effort (boolean)....................................40 136 4.2.9 media (type4 keyword)....................................42 137 4.2.10 number-up (type3 keyword)................................42 138 4.2.11 sides (type2 keyword)....................................43 139 4.2.12 printer-resolution (type2 enum)..........................43 140 4.2.13 print-quality (type2 enum)...............................44 141 4.2.14 copies (integer(1:2**31 - 1))............................45 142 4.2.15 finishing (1setOf type2 enum)............................45 143 4.2.16 document-format (type2 keyword)..........................46 144 4.2.17 compression (type3 keyword)..............................46 145 4.2.18 job-k-octets (integer(0:2**31 - 1))......................46 146 4.2.19 job-impressions (integer(0:2**31 - 1))...................46 147 4.2.20 job-media-sheets (integer(0:2**31 - 1))..................47 148 4.3 Job Description Attributes....................................47 149 4.3.1 job-uri (uri)............................................48 150 4.3.2 job-uri-user (uri).......................................49 151 4.3.3 job-originating-user (name)..............................49 152 4.3.4 job-originating-host (name)..............................49 153 4.3.5 user-locale (locale).....................................49 154 4.3.6 job-state (type1 enum)...................................49 155 4.3.7 job-state-reasons (1setOf type2 keyword)................51 156 4.3.8 job-state-message (text).................................53 157 4.3.9 output-device-assigned (name)............................53 158 4.3.10 time-since-pending (milliseconds)........................53 159 4.3.11 time-since-processing (milliseconds).....................53 160 4.3.12 time-since-completed (milliseconds)......................53 161 4.3.13 number-of-intervening-jobs (integer(0:2**31 - 1))........53 162 4.3.14 job-message-from-operator (text).........................53 163 4.3.15 job-k-octets-processed (integer(0:2**31 - 1))............54 164 4.3.16 job-impressions-completed (integer(0:2**31 - 1))........54 165 4.3.17 job-media-sheets-completed (integer(0:2**31 - 1))........54 166 4.4 Document Attributes...........................................54 167 4.4.1 document-name (name).....................................54 168 4.4.2 document-format (type2 enum).............................55 169 4.4.3 document-uri (uri).......................................55 170 4.5 Printer Description Attributes................................55 171 4.5.1 printer-uri (uri)........................................56 172 4.5.2 printer-uri-user (uri)...................................57 173 4.5.3 printer-name (name)......................................57 174 4.5.4 printer-location (text)..................................57 175 4.5.5 printer-description (text)...............................57 176 4.5.6 printer-more-info-site (uri).............................57 177 4.5.7 printer-driver-installer (uri)...........................57 179 Expires January 14, 1998 180 4.5.8 printer-make-and-model (text)............................57 181 4.5.9 printer-more-info-manufacturer (uri).....................58 182 4.5.10 printer-state (type1 keyword)............................58 183 4.5.11 printer-state-reasons (1setOf type2 keyword).............59 184 4.5.12 printer-is-accepting-jobs (boolean)......................61 185 4.5.13 printer-state-message (text).............................61 186 4.5.14 queued-job-count (integer(0:2**31 - 1))..................61 187 4.5.15 printer-message-from-the-operator (text).................61 188 4.5.16 printer-locale (locale)..................................61 189 4.5.17 printer-locales-supported (1setOf locale)................61 190 4.5.18 color-supported (boolean)................................61 191 4.5.19 pdl-override (type2 keyword).............................62 192 4.5.20 Security Related Attributes..............................63 193 4.5.20.1 message-protection-supported (keyword)..............63 194 4.5.20.2 authentication-authorization-supported (keyword)....63 195 5. Conformance...................................................64 196 5.1 Conditionally Mandatory.......................................64 197 5.2 Client Conformance Requirements...............................64 198 5.3 Printer Object Conformance Requirements.......................65 199 5.3.1 Objects..................................................65 200 5.3.2 Operations...............................................65 201 5.3.3 Attributes...............................................65 202 5.3.4 Printer extensions.......................................66 203 5.3.5 Attribute Syntaxes.......................................66 204 5.4 Security Conformance Requirements.............................66 205 6. IANA Considerations (registered and private extensions).......66 206 6.1 Typed Extensions..............................................67 207 6.1.1 Type1....................................................67 208 6.1.2 Type2....................................................67 209 6.1.3 Type3....................................................68 210 6.1.4 Type4....................................................68 211 6.2 Registration of MIME types/sub-types for document-formats.....68 212 7. Security Considerations.......................................69 213 8. References....................................................69 214 9. Author's Address..............................................70 215 10. APPENDIX A: Terminology.......................................73 216 10.1 Conformance Terminology.......................................73 217 10.1.1 MUST.....................................................73 218 10.1.2 MUST NOT.................................................73 219 10.1.3 SHOULD...................................................73 220 10.1.4 SHOULD NOT...............................................73 221 10.1.5 MAY......................................................73 222 10.1.6 CONDITIONALLY MANDATORY..................................74 223 10.1.7 NEED NOT.................................................74 224 10.2 Model Terminology.............................................74 225 10.2.1 Keyword..................................................74 226 10.2.2 Parameters...............................................74 227 10.2.2.1 Parameter Name......................................74 229 Expires January 14, 1998 230 10.2.2.2 Parameter Value.....................................75 231 10.2.2.3 Parameter Syntax....................................75 232 10.2.3 Attributes...............................................75 233 10.2.3.1 Attribute Name......................................75 234 10.2.3.2 Attribute Group Name................................76 235 10.2.3.3 Attribute Value.....................................76 236 10.2.3.4 Attribute Syntax....................................76 237 10.2.4 Supports.................................................76 238 11. APPENDIX B: Status Codes.....................................77 239 11.1 Status Codes (type2 keyword)..................................78 240 11.1.1 Informational............................................78 241 11.1.2 Successful Status Codes..................................78 242 11.1.2.1 successful-ok.......................................78 243 11.1.3 Redirection Status Codes.................................78 244 11.1.4 Client Error Status Codes................................79 245 11.1.4.1 client-error-bad-request............................79 246 11.1.4.2 client-error-forbidden..............................79 247 11.1.4.3 client-error-not-authenticated......................79 248 11.1.4.4 client-error-not-authorized.........................79 249 11.1.4.5 client-error-not-possible...........................80 250 11.1.4.6 client-error-timeout................................80 251 11.1.4.7 client-error-not-found..............................80 252 11.1.4.8 client-error-gone...................................80 253 11.1.4.9 client-error-request-entity-too-large...............81 254 11.1.4.10 client-error-request-URI-too-long...................81 255 11.1.4.11 client-error-unsupported-document-format............81 256 11.1.4.12 client-error-attribute- not-supported...............81 257 11.1.5 Server Error Status Codes................................82 258 11.1.5.1 server-error-internal- error........................82 259 11.1.5.2 server-error-operation-not-supported................82 260 11.1.5.3 server-error-service-unavailable....................82 261 11.1.5.4 server-error- version-not-supported.................82 262 11.1.5.5 server-error-device-error...........................83 263 11.1.5.6 server-error-temporary-error........................83 264 11.2 Status Keywords for IPP Operations............................84 265 12. APPENDIX C: "document-format" enum values.....................84 266 13. APPENDIX D: "media" keyword values...........................87 268 Expires January 14, 1998 269 1. Simplified Printing Model 271 In order to a achieve its goal of realizing a workable printing 272 protocol for the Internet, the Internet Printing Protocol (IPP) is 273 based on a simplified printing model which abstracts the many (often 274 complex) components of real world printing solutions. Many of these 275 systems include features, interfaces, and relationships that are 276 beyond the scope of IPP. IPP has to run in a distributed computing 277 environment where requesters of print services (clients, 278 applications, PC drivers, etc.) cooperate and interact with print 279 service providers. Although the underlying configuration may be a 280 complex n-tier client/server system, an important simplifying step in 281 the IPP model is to expose only the key objects and interfaces 282 required for printing. The IPP model encapsulates these important 283 elements into three simple object types: 285 Printer (Section 2.1) 286 Job (Section 2.2) 287 Document (Section 2.3) 289 Each object type has an associated set of operations (see section 3) 290 and attributes (see section 4) 292 It is important, however, to understand that in real system 293 implementations (which lie underneath the abstracted IPP model), there 294 are other components of a print service which are not explicitly 295 defined in the IPP model. The following figure illustrates where IPP 296 fits with respect to these other components. 298 Expires January 14, 1998 299 +--------------+ 300 | Application | 301 o +. . . . . . . | 302 \|/ | Spooler | 303 / \ +. . . . . . . | +---------+ 304 End-User | Print Driver |---| File | 305 +-----------+ +-----+ +------+-------+ +----+----+ 306 | Browser | | GUI | | | 307 +-----+-----+ +--+--+ | | 308 | | | | 309 | +---+------------+---+ | 310 N D S | | IPP Client |------------+ 311 O I E | +---------+----------+ 312 T R C | | 313 I E U | 314 F C R -------------- Transport ------------------ 315 I T I 316 C O T | --+ 317 A R Y +--------+--------+ | 318 T Y | IPP Server | | 319 I +--------+--------+ | 320 O | | 321 N +-----------------+ | IPP Printer 322 | Print Service | | 323 +-----------------+ | 324 | --+ 325 +-----------------+ 326 | Output Device(s)| 327 +-----------------+ 329 IPP Printers encapsulate the functions normally associated with 330 physical output devices along with the spooling, scheduling and 331 multiple device management functions associated with a print server. 332 Printers may be registered as entries in a directory where end users 333 find and select them based on some sort of filtered and context based 334 searching. The directory is used to store relatively static 335 information about the Printer, allowing end users to search for and 336 find Printers that match their search criteria (name, context, printer 337 capabilities, etc.). 339 IPP clients implement the IPP protocol on the client side and give end 340 users or programs the ability to query an IPP Printer and submit and 341 manage their print jobs. An IPP server is just that part of the IPP 342 Printer that implements the protocol. The rest of the IPP Printer 343 implements the application semantics of the print service itself. The 344 IPP Printer may be embedded in an output device or may be implemented 345 on a host on the network that communicates with the output device. 347 Expires January 14, 1998 348 All information about the Printer, both static and dynamic 349 information, can be accessed directly from the Printer itself. The 350 more dynamic information associated with a Printer includes state, 351 currently loaded and ready media, number of jobs on the Printer, 352 errors, warnings, etc. The Printer is optionally represented by an 353 entry in a directory service. The more static information (name, URI, 354 location, etc.) are stored with along with the entry in the directory 355 service to enable filtered directory queries. 357 When a job is submitted to the Printer, the Printer SHALL create a Job 358 object. The end user then interacts with this new Job to query its 359 status and monitor the progress of the job. End users may also cancel 360 the Job. The end user is able to register to receive certain events 361 which are then routed using the notification service(s). 363 2. IPP Objects 365 The IPP model introduces objects of type Printer, Job, and Document. 366 Each object type is defined as a set of possible attributes that may 367 be supported by each instance of an object of that type. The 368 attributes (and values) supported by each object instance describe the 369 implementation (that is the realizable features, functions, and 370 characteristics either in software or hardware) for that object 371 instance. For example, the object type "Printer" is defined as set of 372 attributes that each instance of a Printer object might potentially 373 support. In the same manner, the object type "Job" is defined as a 374 set of attributes that are potentially supported by each instance of a 375 Job object. 377 Each attribute included in the set of attributes defining an object 378 type labeled as: 380 "MANDATORY": each object instance MUST support the attribute. 381 "OPTIONAL": each object instance MAY support the attribute. 382 "CONDITIONALLY MANDATORY": whether or not the object instance 383 supports the attribute is determined by a semantic condition. 384 For example, if the implementation behind a given instance of a 385 Printer object knows about and is able to support multiple levels 386 of job priorities, that instance MUST support the "job-priority- 387 supported" attribute. An administrator may set the values to be 388 somewhat more restrictive that what a given implementation might 389 allow, however the attribute MUST still be supported. 391 Expires January 14, 1998 393 2.1 Printer Object 395 A major component of the IPP model is the Printer object. The 396 capabilities and state of an IPP Printer are described by its 397 attributes. Printer attributes are grouped as follows: 399 "job-template" attributes (section 4.2) 400 "printer-description" attributes (section 4.5) 402 Operations which are invoked on a printer include: 404 Get-Operations (Section 3.1.1) 405 Print-Job (section 3.1.2) 406 Print-URI (Section 3.1.3) 407 Validate-Job (Section 3.1.4) 408 Create-Job (section 3.1.5) 409 Get-Attributes (section 3.1.9) 410 Get-Jobs (section 3.1.10) 412 An instance of a Printer object implements the IPP protocol. Using 413 the protocol, end users may query the attributes of the Printer, 414 submit jobs to the Printer, determine subsequent states of submitted 415 and queued jobs, and cancel their own print jobs. The actual 416 implementation components behind the Printer object abstraction may 417 take on different forms and different configurations, however, the 418 details of the configuration of real components are transparent to the 419 end user. 421 Since a Printer object is an abstraction of a generic document output 422 device and print service provider, an IPP Printer object could be used 423 to represent any real or virtual device with semantics consistent with 424 the Printer object. For example, an instance of a Printer object could 425 be used to front end a fax-out device, any kind of imager, or even a 426 CD writer. 428 Some examples of configurations supporting a Printer object include: 430 1) An output device, with no spooling capabilities 431 2) An output device, with a built-in spooler 432 3) A print server supporting IPP with one or more associated output 433 devices 434 3a) The associated output devices might or might not be capable 435 of spooling jobs 436 3b) The associated output devices might or might not support IPP 438 See the following figures for some examples on how to view Printer 439 objects on top of several print system configurations. The embedded 441 Expires January 14, 1998 442 case below represents configurations 1 and 2. The hosted and fan-out 443 figures below represent configuration 3. 445 Expires January 14, 1998 446 Legend: 448 ##### indicates a Printer object which is 449 either embedded in an output device or is 450 hosted in a server. The implementation 451 might or might not be capable of queuing/spooling. 453 any indicates any network protocol or direct 454 connect, including IPP 456 embedded printer: 457 output device 458 +---------------+ 459 O +--------+ | ########### | 460 /|\ | client |------------IPP------------># Printer # | 461 / \ +--------+ | # Object # | 462 | ########### | 463 +---------------+ 465 hosted printer: 466 +---------------+ 467 O +--------+ ########### | | 468 /|\ | client |--IPP--># Printer #-any->| output device | 469 / \ +--------+ # Object # | | 470 ########### +---------------+ 472 +---------------+ 473 fan out: | | 474 +-->| output device | 475 any/ | | 476 O +--------+ ########### / +---------------+ 477 /|\ | client |-IPP-># Printer #--* 478 / \ +--------+ # Object # \ +---------------+ 479 ########### any\ | | 480 +-->| output device | 481 | | 482 +---------------+ 484 2.2 Job Object 486 A Job object is used to model a job. A job can contain one or more 487 documents. The information required to create a Job object is sent in 489 Expires January 14, 1998 490 a create request from the end user via an IPP client to a Printer. A 491 create request can be either a Print-Job Request, a Print-URI Request, 492 or a Create-Job Request. The Printer MUST perform validation checks 493 to verify that the job may indeed be processed. A client MAY send a 494 Validate-Job Request (with no document data) so that the Printer 495 performs all validation checks without the overhead of transferring 496 all of the document data. As an example of some of the validation 497 checks that are performed, the create request may specify that the 498 documents within the job are to be printed duplex (on both sides of 499 the media). However, the Printer might not support such a feature. 500 Once the Printer validates the submitted information, a Job object is 501 created. The instance of the Job object is initialized with 502 information from the create request. If a Create-Job operation is 503 used to create the Job object, subsequent Send-Document operations are 504 used to transfer the document data from the client to the IPP Printer. 506 This model specification defines rules for what is done when: 508 - optional attributes are missing 509 - there are conflicts between what is supported and what is 510 requested 511 - there are conflicts between what the client requests via external 512 attributes in the IPP operation and what the client requests in 513 embedded instructions in the document page description language 514 (PDL). 516 Job attributes are grouped as follows: 518 "job-template" attributes (optionally supplied by the client/end 519 user, section 4.2) 520 "job-description" attributes (set by the Printer, section 4.3) 522 The following operations can be invoked on Jobs: 524 Send-Document (section 3.1.6) 525 Send-URI (Section 3.1.7) 526 Cancel Job (section 3.1.8) 527 Get-Attributes (section 3.1.9) 529 2.3 Document Object 531 A Document object consists of either printable data or a reference 532 (URI) to printable data and a set of Document Attributes (see section 533 4.4). These Document Attributes only describe the data to be printed; 534 they do not include any specialized document processing instructions 535 that apply to only this one Document. All Job Template attributes, 536 that isthose attributes that describe desired job processing behavior, 538 Expires January 14, 1998 539 are defined as part of the Job object, therefore, they apply equally 540 to all Documents within a Job. 542 Currently there are no operations defined for Document objects. 544 2.4 Object Relationships 546 Instances of objects within the system have relationships that MUST be 547 maintained persistently along with the persistent storage of the 548 object attributes. An instance of a Printer object usually represents 549 one or more output devices. A Printer object may represent a logical 550 device which "processes" jobs but never actually uses a physical 551 output device to put marks on paper (for example a Web page publisher 552 or an interface into an online document archive or repository). A 553 Printer can contain zero or more Job objects. An instance of a Job 554 object is contained in exactly one Printer object (the same document 555 data could be sent to a the same or a different Printer, but the 556 corresponding Job object would be an identical, but different Job 557 object). A Job object contains one or more Documents. If the 558 Document is simply a reference to some print data stream, the 559 reference may be used in multiple Documents in the same Job or even in 560 different Jobs. If the Document is not just a reference, but an 561 actual stream of print data, the stream is contained in only one 562 Document, although there can be copies of the same document data in 563 other Documents in the same or different Jobs. 565 2.5 Object Identity 567 All instances of Printer and Job objects have a URI so that they can 568 persistently and unambiguously referenced. The IPP model requires 569 that these values be URIs as defined by RFC 1738 [11] and RFC 1808. 570 In addition to an identifier attribute, instances of Printer and Job 571 objects may have a name. An object name need not be unique across all 572 instances of all objects. The Printer name is chosen and set by an 573 administrator. If not supplied by the client, the Printer creates the 574 Job name. In all cases, the name only has local meaning, and it is 575 not constrained to be unique. 577 To summarize, each instance of Printer and Job objects will have two 578 identifying attributes: 580 - "xxx-uri": The unique identifier for this object instance 581 - "xxx-name": The non unique name for this object instance 583 Document objects sent to an IPP Printer only have names, no 584 identifiers. The "document-name" attribute is used to store the name 586 Expires January 14, 1998 587 of the Document. This name is just of interest within the context of 588 a Job; it need not be unique. 590 If Documents are printed by reference, the corresponding document 591 object contains a "document-uri" attribute, but the value of this 592 attribute is a reference to the document data to be printed; it is not 593 the unique identifier of the Document object itself. 595 3. IPP Operations 597 Jobs and Printers each have a set of associated operations. End users 598 or programs invoke these operations using an IPP client. The 599 operations are: 601 For a Printer object: 602 Get-Operations (section 3.1.1) Print-Job (section 3.1.2) Print- 603 URI (section 3.1.3) 604 Validate-Job (section 3.1.4) 605 Create-Job (section 3.1.5) 606 Get-Jobs (section 3.1.8) 607 Get-Attributes (section 3.1.9) 609 For a Job object: 610 Send-Document (section 3.1.6) 611 Send-URI (section 3.1.7) 612 Cancel-Job (section 3.1.8) 613 Get-Attributes (section 3.1.9) 615 When a client communicates with a remote IPP object, it sends an 616 operation request to the URI for that object. Each request carries 617 along with it the input parameters and data required to perform the 618 specified operation. Each request requires a response from the object 619 indicating success or failure of the operation including output 620 parameters, status codes, and/or status messages. The representation 621 and encoding of the IPP protocol are contained in "Internet Printing 622 Protocol: Protocol Specification."[23] 624 It is assumed that URIs for IPP Printers are available to end users or 625 programs that wish to invoke Printer operations. Although NOT 626 MANDATORY, it is RECOMMENDED that Printers be registered in a 627 directory service which end users and programs can interrogate. 628 "Internet Printing Protocol: Directory Schema"[24] defines the 629 attributes to be associated with a Printer entry in a directory 630 service. 632 Expires January 14, 1998 633 3.1 Operation Semantics 635 In this section, the IPP operations are described in terms of their 636 contents and semantics including both the request and the response for 637 each operation. 639 In order to create a new Job object, a client uses one of three 640 operations: 642 - The Print-Job operation: This operation is used if the client 643 wants to create a Job with only a single Document and the 644 document data is included in the request. In this case, the 645 client "pushes" the document data to the Printer. 647 - The Print-URI operation: This operation is used if the client 648 wants to create a Job with only a single Document and only a URI 649 reference to the document data (not the document data itself) is 650 included in the request. In this case, the Printer "pulls" the 651 document data from the location identified by the URI. 653 - The Create-Job operation: This operation is used if the client 654 wants to create a Job with one or more Documents. This operation 655 is followed by an arbitrary number of Send-Document or Send-URI 656 operations (each creating another Document for this Job). The 657 Send-Document operation includes the document data with the 658 operation request (client "pushes" the document data to the 659 printer), and the Send-URI operation includes only a reference (a 660 URI) to the document data (the Printer "pulls" the document data 661 from the referenced location). 663 A Create-Job operation followed by a only one Send-Document operation 664 is semantically equivalent to a Print-Job operation, however, for 665 performance reasons, the client SHOULD use the Print-Job operation for 666 all single Document Jobs. Throughout this model specification, the 667 term "create request" is used to refer to any of these three operation 668 requests. 670 Every operation response returns a MANDATORY status code and an 671 OPTIONAL status message (see Section 10). In most cases, if the 672 status code indicates an error (the code belongs to either the 673 "client-error" or the "server-error" group), there are additional 674 output parameters returned that are not returned in the successful 675 case. 677 In many of these operations, a client supplies a list of attributes to 678 be returned in the response. A Printer may be configured, for 679 security reasons, not to return all attributes that a client requests. 680 It may even return none of the requested attributes. In such cases, 682 Expires January 14, 1998 683 the status returned is the same as if the Printer had returned all 684 requested attributes. The client cannot tell by such a response 685 whether the requested attribute was present or absent on the Printer. 687 3.1.1 Get-Operations Operation 689 Since some of the IPP operations defined in this specification are 690 OPTIONAL and therefore some implementations may choose to not 691 implement support them, this operation is a simple, MANDATORY 692 operation that all implementations MUST support. The client uses this 693 operation to query a specific implementation for a list of supported 694 operations. 696 3.1.1.1 Get-Operations Request 698 The Get-Operations Request has no input parameters. 700 3.1.1.2 Get-Operations Response 702 The Printer returns the following output parameters as part of the 703 Get-Operations Response: 705 Supported Operations ("supported-operations"): 706 A list of the operations that this implementation supports 707 (including all MANDATORY operations). The values are taken 708 from the following set: 'Get-Operations', 'Print-Job', 'Print- 709 URI', 'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get- 710 Attributes', 'Send-Document', 'Send-URI', and 'Cancel-Job'. 712 Note: Since this list contains all MANDATORY operations ('Get- 713 Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get- 714 Attributes', and 'Cancel-Job'), this output parameter will never 715 be empty. 717 3.1.2 Print-Job Operation 719 When an end user desires to submit a print job with only one Document, 720 the client sends a Print-Job Request to a Printer and receives a 721 Print-Job Response from that Printer. The information in a Print-Job 722 Request (along with any default information associated with the 723 Printer) is sufficient for the Printer to create a Job object and then 724 process that Job. A Print-Job operation differs from a Print-URI 725 operation in that a Print-Job operation contains the document data to 726 be printed and a Print-URI operation only contains a reference to the 727 document data. 729 Expires January 14, 1998 730 3.1.2.1 Print-Job Request 732 The following input parameters are part of the Print-Job Request: 734 Job Template Attributes: 735 An optional set of Job Template attributes as defined in section 736 4.2. If the client supplies no Job Template attributes in the 737 Create-Job Request, the Printer uses its default value attributes 738 when processing the job. Since a Print-Job operation is used for 739 a Job with only one Document, the Document attributes "document- 740 name" and "document-format" are also supplied by the client. 741 "document-name" is MANDATORY; "document-format" is OPTIONAL. 743 Document Content: 744 The client supplies the document data to be processed. 746 The simplest Print-Job Request consists of just the Document Content 747 and nothing else. In this case, the Printer creates a new Job object 748 with no associated Job Template attributes and the job contains a 749 single Document. 751 When a Printer receives a Print-Job Request, the Printer either 752 accepts or rejects the request. The Printer accepts the Print-Job 753 Request and creates a Job object if it is able to accept all Job 754 Template attributes in the request. The Printer rejects the request 755 and does not create a Job object if the Printer rejects any Job 756 Template attribute in the request. There are six cases to consider 757 when accepting or rejecting Job Template attributes: 759 1. The client supplies a Job Template attribute named "xxx" and the 760 value supplied by the client is among the values supported by the 761 Printer (i.e., is among the values of the Printer's "xxx- 762 supported" attribute): The "xxx" Job Template attribute is 763 accepted. The Printer creates the Job object and associates the 764 "xxx" attribute with the new Job object using the value supplied 765 by the client. 767 2. The client supplies a Job Template attribute but the attribute 768 is syntactically bad: The Printer SHALL reject the job and return 769 name of the badly formed attribute (if known) in the 770 "unsupported-attributes" response parameter. 772 3. The client supplies a Job Template attribute and the attribute 773 value is not among the values supported by the Printer: This 774 case depending on the value of the "best-effort' attribute (see 775 Section 4.2.8), tIf the client supplies a "best-effort" of 776 'false' (or supplies no "best-effort" attribute and the Printer's 777 default behavior attribute is set to 'false') the Printer SHALL 779 Expires January 14, 1998 780 reject the Job and return the 'client-error-attribute- 781 unsupported" error code and the unsupported attribute in the 782 "unsupported-attributes " output parameter. If the client 783 supplies a "best-effort" of 'true' (or supplies no "best-effort" 784 attribute and the Printer's default behavior attribute is set to 785 'true') the Printer SHALL accept the Job and substitute supported 786 values for all unsupported values supplied by the client. In 787 this case, if everything else is ok, the Printer returns a 788 "successful-ok" status code. The client must query the newly 789 create Job object to find out if any of the requested values have 790 been modified. 792 4. The client supplies a Job Template attribute and the Printer 793 does not support the attribute: The Printer rejects the 794 attribute. The Printer returns the 'client-error-attribute- 795 unsupported' error code and the rejected attribute in the 796 "unsupported-attributes" output parameter. 798 5. The client does not supply a Job Template attribute, but the 799 Printer supports the attribute: The attribute is accepted and 800 when the Printer creates the Job object, the Printer SHALL NOT 801 associate the attribute with the new Job object using Printer's 802 default value attribute. When the Printer processes that Job, 803 the Printer uses the behavior implied by the default value 804 Printer attribute as set at the time of Job processing (not Job 805 creation). In other words, these rules allow for a Job object to 806 be created without implementing some of the Job Template 807 attributes. As the Printer processes the Job, if the Printer 808 supports a corresponding default value attribute for the missing 809 Job Template attribute, the Printer uses the default value. 811 6. The client does not supply an attribute, and the Printer does 812 not support the attribute: The Printer accepts the Job. However, 813 as far as IPP is concerned, the result of processing that Job 814 (with respect to the missing attributes) is undefined. In many 815 cases though, this case represents a legacy environment, and even 816 without IPP attributes, the job will be processed successfully. 817 For example, the document data might have been generated by a 818 device-specific printer driver that formats the job and emits a 819 data stream (a stream of PDL) that is finely tuned for the 820 intended output device and its internal interpreter. But, both 821 the output device and the printer driver are unaware of the IPP 822 protocol, and an intermediate process (which is IPP aware) is 823 able to submit the job and make sure that it is delivered to the 824 output device, yet not be aware of all the Job Template 825 attributes that might possibly be supported. 827 Expires January 14, 1998 829 3.1.2.2 Print-Job Response 831 The Printer SHALL return to the client the following output parameters 832 as part of the Print-Job Response: 834 Job Identifier ("job-uri"): 835 A URI which the client SHALL use for all other operations on this 836 Job 838 Job Status Attributes: 839 This includes the following Job attributes: "job-name", "job- 840 state", and "job-state-reasons". The value of each attribute is 841 taken from a "snapshot" of the new Job object sometime after the 842 time the Printer receives the print request until just prior to 843 returning the response to the client. Since the "job-state- 844 message" attribute is OPTIONAL, it MAY be included in the 845 response, but it is NOT REQUIRED. 847 Note: Since any printer state information which affects a job's 848 state is reflected in the "job-state" and "job-state-reasons" 849 attributes, it is sufficient to return only these attributes and 850 no specific printer status attributes. 852 Unsupported Attributes: 853 If there is an error, this output parameter contains a set of 854 attributes that are unsupported. This output parameter is not 855 used if the status code indicates that there were no errors. 857 The simplest response consists of the just the job identifier ("job- 858 uri") and Job Status attributes output parameters with a status code 859 of "successful-ok". 861 3.1.3 Print-URI Operation 863 This operation is identical to the Print-Job operation (section 3.1.2) 864 except that a client supplies a reference (a URI) to the document data 865 to be printed rather than the document data itself. It is up to the 866 IPP server to interpret the URI and subsequently "pull" the document 867 from the source referenced by the URI string. 869 3.1.3.1 Print-URI Request 871 The following elements are part of the Print-URI Request: 873 Expires January 14, 1998 874 Job Template Attributes: 875 (see section 3.1.2.1) 877 Document URI ("document-uri"): 878 The client supplies a URI reference to the document data rather 879 than the document data itself. 881 3.1.3.2 Print-URI Response 883 The Printer SHALL return to the client the following output parameters 884 as part of the Print-URI Response: 886 Job Identifier ("job-uri"): 887 (see section 3.1.2.2) 889 Job Status: 890 (see section 3.1.2.2) 892 Unsupported Attributes: 893 (see section 3.1.2.2) 895 3.1.4 Validate-Job Operation 897 This operation is identical to the Print-Job operation (section 3.1.2) 898 except that a client supplies no document data or any reference to 899 document data and the Printer allocates no resources (i.e., a new Job 900 object) to process the job. The VALIDATE request is only used to 901 verify capabilities of a printer object against whatever input 902 parameters are supplied in the Validate-Job request. 904 3.1.4.1 Validate-Job Request 906 The following elements are part of the Validate-Job Request: 908 Job Template Attributes: 909 (see section 3.1.2.1) 911 3.1.4.2 Validate-Job Response 913 The Printer SHALL return to the client the following output parameters 914 as part of the Validate-Job Response: 916 Expires January 14, 1998 917 Unsupported Attributes: 918 (see section 3.1.2.2) 920 Note: In this case, no "job-uri" or Job Status output parameters are 921 returned. 923 3.1.5 Create-Job Operation 925 This operation is similar to the Print-Job operation (section 3.1.2) 926 except that a client supplies no document data or any reference to 927 document data in the Create-Job request. This operation is followed 928 by one or more Send-Document or Send-URI operations. It is possible 929 for a given implementation to only support either Send-Document or 930 Send-URI but not both. In that case, a client SHOULD NOT use an 931 unsupported operation. If a Printer supports the Create-Job 932 operation, it MUST also support one of the Send-Document or Send-URI 933 operations or both. 935 3.1.5.1 Create-Job Request 937 The following elements are part of the Create-Job Request: 939 Job Template Attributes: 940 (see section 3.1.2.1) 942 3.1.5.2 Create Job Response 944 The Printer returns to the client the following output parameters as 945 part of the Create-Job Response: 947 Job Identifier ("job-uri"): 948 (see section 3.1.2.2) 950 Job Status: 951 (see section 3.1.2.2) 953 Unsupported Attributes: 954 (see section 3.1.2.2) 956 Expires January 14, 1998 958 3.1.6 Send-Document Operation 960 Once a Job object has been created using a Create-Job operation 961 (returning a "job-uri"), a client directs a Send-Document operation to 962 the newly create Job object. The operation adds a new Document to the 963 Job object. An entire document MUST be sent in a single Send-Document 964 operation. 966 3.1.6.1 Send-Document Request 968 The client submits the request to a Job URI. 970 The following abstract data types are part of the Send-Document 971 Request: 973 Document Attributes: 974 A set of Document Description attributes (section 4.4). 976 Last Document Flag ("last-document"): 977 This is a boolean flag that is set to 'true' if this is the last 978 Document for the Job. 980 Document Content: 981 The client supplies the document data. 983 3.1.6.2 Send-Document Response 985 The following output parameters are part of the Send-Document 986 Response: 988 Job Status: 989 (see section 3.1.2.2) 991 Unsupported Attributes: 992 (see section 3.1.2.2) 994 3.1.7 Send-URI Operation 996 This operation is identical to the Send-Document operation (see 997 section 3.1.6) except that a client supplies a reference (a URI) to 998 the document data to be printed rather than the document data itself. 999 It is up to the IPP server to interpret the URI and subsequently 1000 "pull" the document from the source referenced by the URI string. 1002 Expires January 14, 1998 1003 3.1.7.1 Send-URI Request 1005 The client submits the request to a Job URI. 1007 The following abstract data types are part of the Send-URI Request: 1009 Document Attributes: 1010 (see section 3.1.6.1) 1012 Last Document Flag ("last-document"): 1013 (see section 3.1.6.1) 1015 Document Reference ("document-uri"): 1016 The client supplies a URI reference to the document data. 1018 3.1.7.2 Send-URI Response 1020 The following output parameters are part of the Send-URI Response: 1022 Job Status: 1023 (see section 3.1.6.2) 1025 Unsupported Attributes: 1026 (see section 3.1.6.2) 1028 3.1.8 Cancel Job Operation 1030 This operation allows a user to cancel one specific Print Job any time 1031 after the print job has been established on the Printer. Some pages 1032 may be printed before a job is terminated if printing has already 1033 started when the Cancel Job operation is received. Only the end user 1034 who is also the job originator ("job-originating-user" Job attribute) 1035 can cancel the job using IPP 1.0. 1037 3.1.8.1 Cancel-Job Request 1039 The client submits the request to a Job URI. 1041 The following abstract data types are part of the Cancel Job Request: 1043 Message ("message"): 1044 Optional message to the operator 1046 Expires January 14, 1998 1048 3.1.8.2 Cancel-Job Response 1050 There are no output parameters other Cancel Job Response other than 1051 the Status Code and optional Status Message. 1053 3.1.9 Get-Attributes Operation 1055 The Get-Attributes operation allows a client to obtain information 1056 from a Printer or Job object. The client supplies as an operation 1057 parameter the set of attribute names and/or attribute group names that 1058 the requester is interested in. The Printer returns a corresponding 1059 attribute set in the response with the appropriate attribute values 1060 filled in for each requested attribute (either explicitly named in the 1061 request or implicitly included by naming an attribute group). 1063 3.1.9.1 Get-Attributes Request 1065 When querying a Printer object, the client submits the Get-Attributes 1066 request to a Printer URI. When querying a Job object, the client 1067 submits the Get-Attributes request to a Job URI.The following input 1068 parameters are part of the Get-Attributes Request whether or not the 1069 request is to a Printer URI or a Job URI: 1071 Requested Attributes ("requested-attributes") : 1072 An optional set of attribute names (without values) or attribute 1073 group names in whose values the requester is interested. If the 1074 client omits this input parameter, the Printer SHALL respond as 1075 if this input parameter had been supplied with a value of 'all'. 1077 Attributes may be requested by name or by group name. For Jobs, 1078 the attribute groups include: 1080 - 'job-template': all of the Job Template attributes that apply 1081 to a Job object (the first column of the table in Section 1082 4.2). 1083 - 'job-description': the Job Description attributes in Section 1084 4.3. 1086 For Printers, the attribute groups include: 1088 - 'job-template': all of the Job Template attributes that apply 1089 to a Printer object (the last two columns of the table in 1090 Section 4.2). 1091 - 'printer-description': the attributes specified in Section 4.5. 1093 Expires January 14, 1998 1094 There are also special groups: 1096 - 'none': no attributes of the specified object. 'none' is 1097 primarily useful in Get-Jobs, but can be used as a "ping" with 1098 the Get-Attributes operation. 1099 - 'all': all supported attributes 1101 It is NOT REQUIRED that a Printer support ALL attributes 1102 belonging to a group, however it is MANDATORY that a Printer 1103 implementation understand these group names. 1105 Document Attributes ("document-name", "document-format", and 1106 "document-uri", see Section 4.4) may also be requested either 1107 individually or as a group named 'document-attributes'. If any 1108 or all of these attributes are requested, in the response, they 1109 are treated as multi-valued attributes (one value for each 1110 Document in the Job). If there are 5 Documents in the Job, then 1111 each returned Document attribute MUST have 5 values: the set of 1112 first values from each attribute correspond to the first 1113 Document, the set of second values correspond to the second 1114 Document, and so on. In order to maintain the same number of 1115 values in each returned attribute, if there is no value for the 1116 "document-format" attribute for one of the Documents, the value 1117 'other' is returned in its place, and if there is no value for 1118 the "document-uri" attribute for one of the Documents, the 1119 special URI 'none' is returned in its place. For example if all 1120 Document attributes are requested, and there are 3 Documents is a 1121 Job, the returned attributes might look like: 1123 document-name = 'Document 1', 'Document 2', Document 3' 1124 document-format = 'langPS', 'other', 'langPCL' 1125 document-uri = ' ftp://some.domain.com/file1.ps', 'none', 'none' 1126 The following input parameters are part of the Get-Attributes Request 1127 only when querying a Printer: 1129 Document Format ("document-format") : 1131 This input parameter conditions the Printer attributes and values 1132 that might depend on the document format. The Printer SHALL 1133 return only (1) those attributes that are supported and (2) the 1134 attribute values that are supported for the specified document 1135 format. By specifying the document format, the client can 1136 eliminate the attributes and values that are not supported for a 1137 specific document format. For example, a Printer might have 1138 multiple interpreters to support both 'langPS' (for PostScript) 1139 and 'langPCL' (for PCL) documents. However, for only one of 1140 those interpreters might the Printer be able to support "number- 1141 up" with values of 'one', 'two', and 'four'. For the other 1143 Expires January 14, 1998 1144 interpreter it might be able to only support "number-up" with a 1145 value of 'one'. 1147 If the client omits this input parameter, the Printer SHALL 1148 respond as if the input parameter had been set to the value of 1149 the Printer's default value "document-format" attribute were 1150 supplied. It is recommended that the client always supply a 1151 value for document-format, since the Printer's default value for 1152 document-format may be 'langAutomatic', in which case the 1153 returned attributes and values are for the union of the document 1154 formats that the Printer can automatically sense. 1156 If this input parameter is sent in a Get-Attribute Request sent 1157 to a Job URI, the request is rejected with a status code of 1158 'client-error-not-possible'. 1160 3.1.9.2 Get-Attributes Response 1162 The Printer returns the following response parameters as part of the 1163 Get-Attributes Response: 1165 Requested Attributes: 1166 This is a the set of requested attributes and their current 1167 values. The Printer ignores (does not respond with) any 1168 requested attribute which is not supported. 1170 3.1.10 Get-Jobs Operation 1172 The Get-Jobs operation allows a client to retrieve list of Jobs 1173 belonging to the target Printer object. The client may also supply a 1174 list of Job attribute names or attribute group names. These Job 1175 attributes will be returned for each Job that is returned. 1177 This operation is like Get-Attributes, except that Get-Jobs operation 1178 returns attributes from more than one object. 1180 3.1.10.1 Get-Jobs Request 1182 The client submits the Get-Jobs request to a Printer URI. 1184 The following input parameters are part of the Get-Jobs Request: 1186 Expires January 14, 1998 1187 Limit ("limit"): 1188 This is an integer value that indicates a limit to the number of 1189 Jobs returned. The limit is a "stateless limit" in that if the 1190 limit is n then only the first n jobs are returned in the Get- 1191 Jobs Response; there is no mechanism to allow for the "next" n 1192 jobs. The limit applies across all Job States requested. For 1193 example, if the limit if 50, and there are 75 jobs in the 1194 'completed' state and 25 in the 'pending state' and the client 1195 requests first 'completed jobs' and then 'pending' jobs, only the 1196 oldest 50 'completed' jobs are returned. The other 25 1197 'completed' jobs are not returned and neither are any of the 1198 'pending' jobs returned. 1200 Requested Job Attributes ("requested-attributes"): 1201 An optional set of Job attribute names or attribute groups names 1202 in whose values the requester is interested. This set of 1203 attributes is returned for each Job that is returned.. The 1204 attribute group names are the same as for the Get-Attributes 1205 operation for the Job object. If the client omits this input 1206 parameter, the Printer SHALL respond as if this input parameter 1207 had been supplied with a value of " 'job-uri'. 1209 3.1.10.2 Get-Jobs Response 1211 The Printer SHALL return the following output parameters as part of 1212 the Get-Jobs Response: 1214 Req uested Attributes: 1215 The result includes zero or more Job objects each with zero or 1216 more attributes. Jobs are returned in the following order: First 1217 all active Jobs (Jobs in the 'pending', 'processing', 'pending- 1218 held', and 'processing-stopped' states) are returned oldest to 1219 newest (with respect to expected completion time) followed by all 1220 completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled' 1221 states) newest to oldest (with respect to actual completion 1222 time). Jobs that are in the 'pending-held' state SHALL appear in 1223 their position as if they were 'pending' (otherwise, a user might 1224 be confused by Jobs that move from 'pending-held' to 'pending' as 1225 seeming to jump ahead in the queue). 1227 3.2 Operation Status Codes and Messages 1229 An operation status code provides information on the processing of a 1230 request. A message provides a short textual description of the status 1232 Expires January 14, 1998 1233 of the operation. The status code is intended for use by automata and 1234 a status message is intended for the human user. An IPP application 1235 (i.e. a browser, GUI, print driver or gateway) is not required to 1236 examine or display the message. Status codes and suggested 1237 corresponding status messages are described in section 11.. 1239 4. Object Attributes 1241 This section describes the attributes with their corresponding 1242 syntaxes and values that are part of the IPP model. The sections below 1243 show the objects and their associated attributes which are included 1244 within the scope of this protocol. Many of these attributes are 1245 derived from other relevant specifications: 1247 - ISO/IEC 10175 DPA (Final, June 1996) [5] 1248 - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1] 1249 - Internet-Draft: Printer MIB (Draft Standard in progress, July 1250 1997) [29] 1251 - Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997) 1252 [27] 1254 Each attribute is uniquely identified in this document using a 1255 "keyword" (see section 10.2.1). The keyword is included in the 1256 section header describing that attribute. Not only are attributes 1257 uniquely identified with keywords, some attributes are defined to have 1258 a syntax which is a set of keywords. 1260 4.1 Attribute Syntaxes 1262 The following table shows the basic syntax types that a client and 1263 server SHALL be able to handle. 1265 text: a sequence of characters, length: 0 to 4095, UTF8 1266 characters. This syntax type is used for free form human 1267 readable text intended for human consumption. 1269 name: a sequence of characters, length: 1 to 255, UTF8 characters. 1270 This syntax type is used for referencing some object or entity 1271 via a user-friendly string, such as a Printer name, a document 1272 name, a user name, or a host name. 1274 fileName: a sequence of characters, length: 1 to 1024, UTF8 1275 characters. This syntax type is used for referencing some file. 1276 The limit is the same as in POSIX and Microsoft NT. 1278 Expires January 14, 1998 1280 keyword: a sequence of characters, length: 1 to 255, containing 1281 only the characters ASCII lowercase letters ("a" - "z"), ASCII 1282 digits ("0" - "9"), hyphen ("-"), and underscore ("_"). The 1283 first character MUST be an ASCII lowercase letter. This syntax 1284 type is used for enumerating semantic identifiers of entities in 1285 the abstract protocol (specified in this document). These 1286 entities can be attribute names or values of attributes. When a 1287 keyword is used to represent an attribute (its name), it MUST be 1288 unique within the full scope of IPP objects and attributes. When 1289 a keyword is used to represent a value of an attribute, it MUST 1290 be unique just within the scope of that attribute. That is, the 1291 same keyword can not be used for two different values within the 1292 same attribute to mean two different semantic ideas. However, 1293 the same keyword can be used across two or more attributes, 1294 representing different semantic ideas for each attribute. 1296 enum: an enumerated integer value that is in the range from -2**31 1297 to 2**31 - 1. Each value has an associated keyword name. Each 1298 attribute (whose syntax is enum) enumerates the values that are 1299 defined for the attribute. The enum type is used for attributes 1300 for which there are enum values assigned by other standards, such 1301 as SNMP MIBs. A number of attribute enum values in this 1302 specification are also used for corresponding attributes in the 1303 IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are 1304 not used for attributes to which the system administrator may 1305 assign values. Values in the range 2**30 to 2**31 - 1 are 1306 reserved for private or experimental use. Implementers are 1307 warned that use of such values may conflict with other 1308 implementations. Implementers are encouraged to request 1309 registration of enum values following the procedures in Section 1310 6. 1312 uri: a sequence of characters as defined in rfc1738 and rfc1808. 1313 This syntax type is used for carrying Universal Resource 1314 Identifiers. 1316 uriScheme: a sequence of characters representing the URI Scheme. 1317 These include 'http' for HTTP schemed URIs (e.g., http://...), 1318 and 'ftp' for FTP schemed URIs (e.g., ftp://...). 1320 locale: a standard identifier for human language and optionally a 1321 country. The values for this syntax type are taken from RFC 1766 1322 [26]. RFC 1766 does not have provision for expressing the coded 1323 character set component of a locale. The coded character set 1324 used in the IPP protocol SHALL be UTF-8 [28]. 1326 ISSUE: The term 'locale' usually includes country, language, and 1327 coded character set. But our data type and RFC 1766 do not 1329 Expires January 14, 1998 1330 include coded character set. Should we change the name from 1331 'locale' to 'human-language' and the corresponding attributes 1332 from "user-locale" to "user-language", and "printer-locale" to 1333 "printer-language" (though printer language is what IANA 1334 registers for our document formats)? 1336 octetString: a sequence of octets. This syntax type is used for 1337 opaque data, such as the document-content. 1339 boolean: two values of 'true' and 'false'. This syntax type is 1340 like a keywordSet, but there are only two values. Note: An 1341 application might use a checkbox for an attribute with this 1342 syntax type. 1344 integer: an integer value that is in the range from -2**31 to 1345 2**31 - 1. Each attribute specifies the range constraint 1346 explicitly if the range is different from the full range of 1347 possible integer values (e.g., 0 - 100 for the "job-priority" 1348 attribute). 1350 dateTime: a standard, fixed length representation of date and time 1351 (to the nearest second) as defined in RFC 1123 [27]. For 1352 example, Sun, 06 Nov 1994 08:49:37 GMT. This is a fixed-length 1353 subset of that defined by RFC 1123 (an update to RFC 822). All 1354 values MUST be represented in Greenwich Mean Time (GMT). This is 1355 indicated by the inclusion of "GMT" as the three-letter 1356 abbreviation for time. 1358 seconds: a non-negative integer with implicit units of seconds. 1359 This is used for relative time. 1361 milliseconds: a non-negative integer with implicit units of 1362 milliseconds. This is used for relative time. 1364 1setOf X: 1 or more values of type X. This syntax type is used 1365 for multi-valued attributes, whose value is a set of values. 1366 Note: The syntax type is called "1setOf" to indicate that set of 1367 values SHALL NOT be empty (a set of size 0). 1369 rangeOf X: a range of value of type X. This syntax type is used 1370 for ordered values (numeric, lexical, etc.) such as integers. 1372 4.1.1 Attribute Extensibility 1374 This document uses prefixes to the "keyword" and "enum" basic 1375 syntax type in order to communicate extra information to the reader 1376 through its name. This extra information need not be represented in 1378 Expires January 14, 1998 1379 an implementation because it is unimportant to a client or Printer. 1380 The table below describes the prefixes and their meaning. 1382 "type1": The IPP standard must be revised to add a new keyword or 1383 a new enum. No private keywords or enums are allowed. 1385 "type2": Implementers can, at any time, add new keyword or enum 1386 values by proposing them to the IPP working group for 1387 registration (or an IANA-appointed registry advisor after the IPP 1388 working group is no longer certified) where they are reviewed for 1389 approval. IANA keeps the registry. 1391 "type3": Implementers can, at any time, add new keyword and enum 1392 values by submitting a registration request directly to IANA, no 1393 IPP working group or IANA-appointed registry advisor review is 1394 required. 1396 "type4": Anyone (system administrators, system integrators, site 1397 managers, etc.) can, at any time, add new installation-defined 1398 values (keywords or new enum values) to a local system. Care 1399 SHOULD be taken by the implementers to see that keywords do not 1400 conflict with other keywords defined by the standard or as 1401 defined by the implementing product. There is no registration or 1402 approval procedure for type 4 keywords. 1404 Each of the four types above assert some sort of registry or review 1405 process in order to be valid extensions. "type1" extensions are only 1406 valid if the specification is updated, "type2" extensions are only 1407 valid if the IPP working group or an IANA approved review process 1408 approves them, "type3" extensions are only valid if IANA registers the 1409 value with no review process required, and "type4" extensions are 1410 always valid (there is no review or registration process required). 1411 Any typeN value MAY be registered using a process for some typeM where 1412 M is less than N, however such registration is NOT REQUIRED. For 1413 example, a type4 value MAY be registered in a type 1 manner (by being 1414 included in a future version of an IPP specification) however it is 1415 NOT REQUIRED. 1417 This specification defines keyword and enum values for all of the 1418 above types, including type4 keywords. 1420 For private (unregistered) keyword extensions, implementers SHOULD use 1421 keywords with a suitable distinguishing prefix, such as "xxx-" where 1422 xxx is the (lowercase) company name registered with IANA for use in 1423 domain names [30]. 1425 Note: RFC 1035 [30] indicates that while upper and lower case letters 1426 are allowed in domain names, no significance is attached to the case. 1428 Expires January 14, 1998 1429 That is, two names with the same spelling but different case are to be 1430 treated as if identical. Also, he labels in a domain name must follow 1431 the rules for ARPANET host names: They must start with a letter, end 1432 with a letter or digit, and have as interior characters only letters, 1433 digits, and hyphen. Labels must be 63 characters or less. 1435 ISSUE: Since "." is allowed in fully qualified domain names we must 1436 state that "." gets mapped to "_" for keywords or we must allow for 1437 "." in keywords. Also, why do we not allow uppercase in keywords? 1438 Should we make keyword be much more broad (all printable ASCII) now 1439 that we have binary delimeters? 1441 For private (unregistered) enum extension, implementers SHOULD values 1442 in the reserved integer range (see "enum"). 1444 4.2 Job Template Attributes 1446 Job Template attributes describe job processing behavior. Take for 1447 example, a generic Job Template attribute called "xxx": 1449 1. "xxx" is optionally supplied by the client in a create request. 1450 If "xxx" is supplied, the client is specifying that the Printer 1451 SHALL apply a specific job processing behavior to this job while 1452 processing the Job. When "xxx" is not supplied by the client, 1453 the the Printer applies thedefault job processing behavior. 1455 2. "xxx-supported" is a Printer attribute that describes which 1456 behaviors are supported by a Printer. "xxx-supported" is a 1457 CONDITIONALLY MANDATORY attribute, that is the "xxx-supported" 1458 attribute is MANDATORY if the Printer is capable of realizing one 1459 or more of the behaviors associated with the attribute and its 1460 values. A client can query the Printer and find out what 1461 behaviors are supported by inspecting the values of the "xxx- 1462 supported" attribute. 1464 3. The Printer also supports a default value attribute named "xxx". 1465 This default value attribute describes what will be done when no 1466 other job processing information is supplied by the client 1467 (either explicitly as an IPP attribute in the create request or 1468 implicitly as an embedded instruction within the job data). 1469 Along with the supported attribute, the default value attribute 1470 is also CONDITIONALLY MANDATORY. However, if the Printer 1471 supports either the "xxx" default value attribute or the "xxx- 1472 supported" attribute, the Printer MUST support the other and vice 1473 versa. 1475 Expires January 14, 1998 1477 4. If a client application wishes to present an end user with a 1478 list of supported and default values from which to choose, the 1479 client program SHOULD query the Printer for the supported and 1480 default value attributes. The values that the client then 1481 supplies in the create request will all fall within the supported 1482 values of the Printer. When querying the Printer, the client MAY 1483 enumerate each attribute by name in the Get-Attributes Request, 1484 or the client MAY just name the "printer-job-template" group in 1485 order to get the complete set of supported and default value 1486 attributes which are supported. 1488 The "job-priority" attribute is an example of a Job Template 1489 attribute. It is an integer in the range from 1 to 100. A client can 1490 query the Printer for the "job-priority-supported" attribute and the 1491 "job-priority" default value attribute. The supported attribute 1492 contains a range of supported priority values. The default value 1493 attribute contains the job priority value that will be used for a new 1494 job if the client does not supply one in the create request. If the 1495 client does supply the "job-priority" attribute, the Printer validates 1496 the value to make sure that it falls within the range of supported 1497 values. If the client-supplied value is supported, the Job object is 1498 created and the "job-priority" attribute is populated with that value. 1499 The Job object, when queried, returns the value supplied by the 1500 client. If the client does not supply a "job-priority" value in the 1501 create request, the Job object is created, but no "job-priority" 1502 attribute is associated with the Job. The client queries the 1503 Printer's default value "job-priority" value to find out at what 1504 priority the job will be processed. 1506 The table below summarizes the names, relationships, and conformance 1507 requirements for all Job Template attributes. The following general 1508 rules apply to implementation requirements: 1510 1. In a create request, all Job Template attributes are OPTIONAL. 1512 2. In a Printer Object, all supported attributes ("xxx-supported") 1513 are CONDITIONALLY MANDATORY. 1515 3. All Printer default value attributes ("xxx") are CONDITIONALLY 1516 MANDATORY. 1518 Note: If the Printer implements either the default value attribute 1519 or the supported values attribute, the Printer MUST also 1520 implement the other and vice versa. 1522 The table only shows exceptions to the above rules. The first column 1523 of the table (Job) shows the name and syntax for each Job Template 1525 Expires January 14, 1998 1526 attribute in the Job object (in the create request, the same name and 1527 syntax is used). All of the attributes in the first column make up the 1528 "job-template" group. The last two columns show the name and syntax 1529 for each Job Template attribute in the Printer object (the default 1530 value attribute and the supported attribute). A "No" in the table 1531 means the Printer SHALL NOT support the attribute. A "MAN" indicates 1532 that the attribute is MANDATORY. 1534 Expires January 14, 1998 1535 +-------------------+----------------------+----------------------+ 1536 | Job |Printer: Default Value| Printer: Supported | 1537 +===================+======================+======================+ 1538 | job-name | No | No | 1539 | (name, MAN) | | | 1540 +-------------------+----------------------+----------------------+ 1541 | job-sheets | job-sheets |job-sheets-supported | 1542 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1543 | | | | 1544 +-------------------+----------------------+----------------------+ 1545 | notify-events | notify-events | notify-events- | 1546 |(1setOf |(1setOf type2 keyword)| supported | 1547 | type2 keyword) | |(1setOf type2 keyword)| 1548 +-------------------+----------------------+----------------------+ 1549 |notify-addresses | No |notify-addresses | 1550 |(1setOf uri) | |-supported | 1551 | | |(1setOf uri scheme) | 1552 +-------------------+----------------------+----------------------+ 1553 | job-priority | job-priority |job-priority-supported| 1554 | (integer 1-100) | (integer 1-100) |(rangeOf integer | 1555 | | | 1-100) | 1556 +-------------------+----------------------+----------------------+ 1557 | job-hold-until | job-hold-until | job-hold-until- | 1558 | (type4 keyword) | (type4 keyword) | supported | 1559 | | |(1setOf type4 keyword)| 1560 +-------------------+----------------------+----------------------+ 1561 |multiple-document- |multiple-document- |multiple-document- | 1562 | handling | handling |handling-supported | 1563 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1564 +-------------------+----------------------+----------------------+ 1565 | best-effort | best-effort | best-effort-supported| 1566 | (boolean) | (boolean, MAN) |(boolean, MAN) | 1567 | | | | 1568 +-------------------+----------------------+----------------------+ 1569 | media | media | media-supported | 1570 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1571 | | | | 1572 +-------------------+----------------------+----------------------+ 1573 | number-up | number-up | number-up-supported | 1574 | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| 1575 | | | | 1576 +-------------------+----------------------+----------------------+ 1577 | sides | sides | sides-supported | 1578 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1579 | | | | 1580 +-------------------+----------------------+----------------------+ 1581 | printer-resolution| printer-resolution | printer-resolution- | 1583 Expires January 14, 1998 1584 | (type2 enum) | (type2 enum) | supported | 1585 | | |(1setOf type2 enum) | 1586 +-------------------+----------------------+----------------------+ 1587 | print-quality | print-quality | print-quality- | 1588 | (type2 enum) | (type2 enum) | supported | 1589 | | |(1setOf type2 enum) | 1590 +-------------------+----------------------+----------------------+ 1591 | finishings | finishings | finishings-supported | 1592 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 1593 | | | | 1594 +-------------------+----------------------+----------------------+ 1595 | copies | copies | copies-supported | 1596 | (integer: 1 - MAX)| (integer: 1 - MAX) | (rangeOf integer | 1597 | | | 1- MAX) | 1598 +-------------------+----------------------+----------------------+ 1599 | document-format | document-format | document-format- | 1600 | (type2 enum) | (type2 enum) | supported | 1601 | | |(1setOf type2 enum) | 1602 +-------------------+----------------------+----------------------+ 1603 | compression | No | compression-supported| 1604 | (type3 keyword) | |(1setOf type3 keyword)| 1605 | | | | 1606 +-------------------+----------------------+----------------------+ 1607 | job-k-octets | No |job-k-octets-supported| 1608 | (integer) | | (rangeOf integer) | 1609 | | | | 1610 +-------------------+----------------------+----------------------+ 1611 | job-impressions | No | job-impressions- | 1612 | (integer) | | supported | 1613 | | | (rangeOf integer) | 1614 +-------------------+----------------------+----------------------+ 1615 | job-media-sheets | No | job-media-sheets- | 1616 | (integer) | | supported | 1617 | | | (rangeOf integer) | 1618 +-------------------+----------------------+----------------------+ 1620 4.2.1 job-name (name) 1622 This attribute is the name of the job. It is a name that is more user 1623 friendly than the "job-uri" attribute value. It does not need to be 1624 unique. 1626 If "job-name" is not supplied in the create request, the Printer, on 1627 creation of the Job, SHALL generate a name. The name MAY be generated 1628 using the name of the first Document in the Job (the "document-name" 1629 attribute). If "job-name" is supplied in the create request, the 1630 Printer SHALL use its value as the name of the created Job. 1632 Expires January 14, 1998 1633 4.2.2 job-sheets (type4 keyword) 1635 This attribute determines which if any banner page(s) SHALL be printed 1636 with a job. 1638 Standard values are: 1640 'none': no job sheet is printed 1641 'standard': a site specific standard job sheet (start only) or 1642 sheets (start and end) is printed 1644 To force no job sheets, the system administrator SHALL set the 1645 supported value to only 'none'. To force the use of banner pages, the 1646 supported values SHALL not include 'none'. In this case, if a client 1647 requests 'none', the create request is rejected. 1649 4.2.3 notify-events (1setOf type2 keyword) 1651 This attribute specifies the events for which the end user desires 1652 some sort of notification. The "notify-addresses" attribute is used 1653 to describe the destination addresses for these events. 1655 Standard values are: 1657 'none': the Printer SHALL not notify. 1658 'all': the Printer SHALL notify when any of the events occur. 1659 'job-completion': the Printer SHALL notify when the job containing 1660 this value completes (i.e., enters the 'completed', 'canceled', 1661 or 'aborted' state) with or without errors. 1662 'job-problems': the Printer SHALL notify when this job has a 1663 problem while this job is processing (i.e., when the Job moves 1664 from the 'processing' to the 'processing-stopped' state). 1665 Problems include any of the "job-state-reasons" or "printer- 1666 state-reason" values. 1667 'printer-problems': the Printer SHALL notify when this job is 1668 affected by a Printer problem. This happens when the printer 1669 enters the 'stopped' state while this job is in the 'pending', 1670 'pending-held', 'processing', or 'processing-stopped' state. If 1671 the Printer enters the 'stopped' state the reason in the 1672 "printer-state-reasons" attribute. 1674 4.2.4 notify-addresses (1setOf uri) 1676 This attribute describes both where (the address) and how (the 1677 mechanism for delivery ) events are to be delivered. The Printer SHALL 1678 use this attribute as the set of addresses and methods for sending 1680 Expires January 14, 1998 1681 messages when an event occurs that the end user (job submitter) has 1682 registered an interest in. 1684 Standard uri scheme values are: 1686 'mailto': email is used 1687 'http': an HTTP method is used to add HTML formatted events to the 1688 end of the specified HTML file. 1689 'ftp': FTP is used to append a record at the end of a specified 1690 text file. 1692 4.2.5 job-priority (integer(1:100)) 1694 This attribute specifies a priority for scheduling the print-job. A 1695 higher value specifies a higher priority. The value 1 is defined to 1696 indicate the lowest possible priority. The value 100 is defined to 1697 indicate the highest possible priority. Among those jobs that are 1698 ready to print, a Printer SHALL print all jobs with a priority value 1699 of n before printing those with a priority value of n-1 for all n. 1700 The mapping of vendor-defined priority over this range is 1701 implementation-specific. 1703 4.2.6 job-hold-until (type4 keyword) 1705 This job attribute specifies the named time period during which the 1706 Job print job SHALL become a candidate for printing. 1708 Standard values for named time periods are: 1710 'no-hold': immediately, if there are not other reasons to hold the 1711 job. 1712 'day-time': during the day. 1713 'evening': evening 1714 'night': night 1715 'weekend': weekend 1716 'second-shift': second-shift 1717 'third-shift': third-shift (after midnight) 1719 An administrator SHALL associate allowable print times with a named 1720 time period (by means outside IPP 1.0). An administrator is 1721 encouraged to pick names that suggest the type of time period. 1723 If the value of this attribute specifies a time period that is in the 1724 future, the Printer SHALL add the 'job-hold-until-specified' value to 1725 the job's "job-state-reasons" attribute, move the job to the 'pending- 1726 held' state, and SHALL NOT schedule the job for printing until the 1727 specified time-period arrives. When the specified time period 1729 Expires January 14, 1998 1730 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 1731 from the job's "job-state-reason attribute" and, if no other job 1732 reasons remain, SHALL consider the job as a candidate for processing 1733 by moving the job to the 'pending' state. 1735 If this job attribute value is the named value 'no-hold', or the time 1736 period has already started , the job SHALL be a candidate for 1737 processing immediately. 1739 4.2.7 multiple-documenthandling (type2 keyword) 1741 This job attribute is relevant only if a job consists of two or more 1742 documents. It controls finishing operations, job-sheet placement, and 1743 the order of documents when the copies attribute exceeds 1. 1745 Standard values are: 1747 'single-document': If the files for the job are a and b, then files 1748 a and b SHALL be treated as a single document for finishing 1749 operations. Also, there SHALL be no slip sheets between files a 1750 and b and the Printer SHALL NOT force each document to start on a 1751 new page or new media sheet. If more than one copy is made, the 1752 ordering SHALL be a, b, a, b, ...., and the Printer SHALL force 1753 each copy to start on a new sheet. 1754 'separate-documents-uncollated-copies': If the files for the job 1755 are a and b, then each file SHALL be treated as a single document 1756 for finishing operations. Also, a client may specify that a slip 1757 sheet be placed between files a and b and the Printer shall force 1758 each document copy to start on a new sheet. If more than one 1759 copy is made, the ordering SHALL be a, a, b, b, .... 1760 'separate-documents-collated-copies': If the files for the job are 1761 a and b, then each file SHALL be treated as a single document for 1762 finishing operations. Also, a client may specify that a slip 1763 sheet be placed between files a and b. If more than one copy is 1764 made, the ordering SHALL be a, b, a, b, ...., and the Printer 1765 shall force each document copy to start on a new sheet 1767 4.2.8 best-effort (boolean) 1769 This attribute determines how to control a conflict between what a 1770 client requests in a create request and what a Printer supports. The 1771 value 'true' means that a best effort attempt to print the Job is 1772 possible (or acceptable). In order to achieve this, the Printer might 1773 have to substitute some supported value for a requested value which is 1774 unsupported. The value 'false' means that total fidelity is required; 1776 Expires January 14, 1998 1777 a best effort attempt to print the Job is not possible (or not 1778 acceptable). In other words, the job must be printed exactly as 1779 specified in the create request. If one or more of the client- 1780 supplied values in the create request is not supported by the Printer, 1781 the Printer rejects the create request. 1783 There are two cases to consider: 1785 - The Printer's "best-effort-supported" attribute is set to 'true': 1786 This indicates that the Printer is capable of best effort 1787 printing. In this case either the "best-effort" Job Template 1788 attribute in the create request or the Printer's "best-effort" 1789 (the default value attribute) can be set to either 'true' or 1790 'false'. If "best-effort" is set to 'false' the Printer ensures 1791 full fidelity of the other IPP attributes in the create request. 1792 That is, if any other attribute in the create-request is set to a 1793 value that is not supported, the Printer rejects the create 1794 request. If "best-effort" attribute is set to 'true', the the 1795 Printer makes whatever substitutions are necessary to ensure that 1796 the job is printed. For example, if a client supplies a 1797 "finishings" Job Template attribute set to 'staple' but the 1798 printer does not support stapling (not a feature or it is 1799 temporarily out of staples) then if the "best-effort" attribute 1800 is set to 'true' the job can still be printed but it is not 1801 stapled. If "best-effort" is set to 'false', the create request 1802 is rejected since the Printer can not guarantee that the job will 1803 be stapled. 1805 - The Printer's "best-effort-supported" attribute is set to 1806 'false': This indicates that the Printer is not capable of (or 1807 will not support) best effort printing. The Job Template 1808 attributes supplied by the client in the create request must 1809 match all of the Printer's supported values, or else the Printer 1810 rejects the create request. In this case Printer's "best-effort" 1811 attribute (the default value attribute) MUST also be set to 1812 'false'. If the client supplies the "best-effort" Job Template 1813 create request, it too MUST be set to 'false'. If it is set to 1814 'true', the Printer rejects the create request. 1816 Note: that the "best-effort" attribute in a create request is unlikely 1817 to be used much. Many clients will submit a job with no attributes, 1818 and the Printer will use default values. Other clients will submit a 1819 job via a GUI that limits the attribute values to values which are 1820 supported. Best-effort is useful in the GUI context only if a user 1821 expects the job to be moved to another printer and prefers a sub- 1822 optimal result to nothing at all. Best-effort is most useful in the 1823 case where an end-user uses a command line interface to request 1824 attributes that might not be supported. 1826 Expires January 14, 1998 1827 4.2.9 media (type4 keyword) 1829 This job attribute identifies the medium that the Printer uses for all 1830 pages of the Job. 1832 The values for "media" include medium-names, medium-sizes, input-trays 1833 and electronic forms so that one attribute specifies the media. If a 1834 printer allows a client to specify a medium name as the value of this 1835 attribute, such a medium name implicitly selects an input-tray that 1836 contains the specified medium. If a printer allows a client to 1837 specify a medium size as the value of this attribute, such a medium 1838 size implicitly selects a medium name which in turn implicitly selects 1839 an input-tray that contains the medium with the specified size. If a 1840 printer allows a client to specify an input-tray as the value of this 1841 attribute, such an input-tray implicitly selects the medium that is in 1842 that input-tray at the time the job prints. This case includes manual- 1843 feed input-trays. If a printer allows a client to specify an 1844 electronic form as the value of this attribute, such an electronic 1845 form implicitly selects a medium-name which in turn implicitly selects 1846 an input-tray that contains the medium specified by the electronic 1847 form. The electronic form also implicitly selects an image that the 1848 Printer SHALL merge with the data from the document as its prints each 1849 page. 1851 Standard values are (taken from ISO DPA and the Printer MIB) and are 1852 listed in section 13. 1853 4.2.10 number-up (type3 keyword) 1855 This job attribute specifies the number of source page-images to 1856 impose upon a single side of an instance of a selected medium. 1858 Standard values are: 1860 'none': The Printer SHALL not include any embellishments and SHALL 1861 place one logical page on a single side of an instance of the 1862 selected medium without any translation, scaling, or rotation. 1863 'one': The Printer SHALL place one logical page on a single side of 1864 an instance of the selected medium (MAY add some sort of 1865 translation, scaling, or rotation). 1866 'two': The Printer SHALL place two logical page on a single side of 1867 an instance of the selected medium (MAY add some sort of 1868 translation, scaling, or rotation). 1869 'four': The Printer SHALL place four logical page on a single side 1870 of an instance of the selected medium (MAY add some sort of 1871 translation, scaling, or rotation). 1873 Expires January 14, 1998 1875 This attribute primarily controls the translation, scaling and 1876 rotation of page images, but a site may choose to add embellishments, 1877 such as borders to each logical page. 1879 4.2.11 sides (type2 keyword) 1881 This attribute specifies how source page-images are to be imposed upon 1882 the sides of an instance of a selected medium. 1884 The standard values are: 1886 'one-sided': imposes each consecutive source page-image upon the 1887 same side of consecutive media sheets. 1888 'two-sided-long-edge': imposes each consecutive pair of source 1889 page-image upon front and back sides of consecutive media sheets, 1890 such that the orientation of each pair of source-pages on the 1891 medium would be correct for the reader as if for binding on the 1892 long edge. This imposition is sometimes called 'duplex'. 1893 'two-sided-short-edge': imposes each consecutive pair of source 1894 page-image upon front and back sides of consecutive media sheets, 1895 such that the orientation of each pair of source-pages on the 1896 medium would be correct for the reader as if for binding on the 1897 short edge. This imposition is sometimes called 'tumble' or 1898 'head-to-toe'. 1900 'two-sided-long-edge', 'two-sided-short-edge', 'tumble'. 'duplex', and 1901 'head-to-toe' all work the same for portrait or landscape, that is, 1902 'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape. 1903 'head-to-head' also switches between 'duplex' and 'tumble' when using 1904 portrait and landscape modes. 1906 4.2.12 printer-resolution (type2 enum) 1908 This attribute identifies the resolution that Printer uses for a 1909 certain Job. 1911 The values are type2 enums which represent single integers or pair of 1912 integers. The latter are to specify the resolution when the x and y 1913 dimensions differ. When two integers are specified, the first is in 1914 the x direction, i.e., in the direction of the shortest dimension of 1915 the medium, so that the value is independent of whether the printer 1916 feeds long edge or short edge first. 1918 The standard values are: 1920 'normal'(3): 1922 Expires January 14, 1998 1923 'res-100'(4): 100 x 100 dpi 1924 'res-200'(5): 200 x 200 dpi 1925 'res-240'(6): 240 x 240 dpi 1926 'res-300'(7): 300 x 300 dpi 1927 'res-360'(8): 360 x 360 dpi 1928 'res-400'(9): 400 x 400 dpi 1929 'res-600'(10): 600 x 600 dpi 1930 'res-720'(11): 720 x 720 dpi 1931 'res-800'(12): 800 x 800 dpi 1932 'res-1200'(13): 1200 x 1200 dpi 1933 'res-1440'(14): 1440 x 1440 dpi 1934 'res-1600'(15): 1600 x 1600 dpi 1935 'res-1800'(16): 1800 x 1800 dpi 1936 'res-100x200'(100): 100 x 200 dpi 1937 'res-200x100'(101): 200 x 100 dpi 1938 'res-300x600'(102): 300 x 600 dpi 1939 'res-600x300'(103): 600 x 300 dpi 1940 'res-360x720'(104): 360 x 260 dpi 1941 'res-720x360'(105): 720 x 360 dpi 1942 'res-400x800'(106): 400 x 800 dpi 1943 'res-800x400'(107): 800 x 400 dpi 1944 'res-600x1200'(108): 600 x 1200 dpi 1945 'res-1200x600'(109): 1200 x 600 dpi 1946 'res-720x1440'(110): 720 x 1440 dpi 1947 'res-1440x720'(111): 1440 x 720 dpi 1948 'res-1800x600'(112): 1800 x 600 dpi 1950 ISSUE: Should we add metric enums? Such as 1952 'res-8x3.85'(200): 8 lines per 3.85 mm (fax) 1953 'res-8x7.7'(201): 8 lines per 7.7 mm (fax) 1954 'res-8x15.4'(202): 8 lines per 15.4 mm (fax) 1955 'res-16x15.4'(203): 16 lines per 15.4 mm (fax) 1957 4.2.13 print-quality (type2 enum) 1959 This attribute specifies the print quality that the Printeruses for a 1960 certain Job. 1962 The standard values are: 1964 'draft'(3): lowest quality available on the printer 1965 'normal'(4): normal or intermediate quality on the printer 1966 'high'(5): highest quality available on the printer 1968 Expires January 14, 1998 1970 4.2.14 copies (integer(1:2**31 - 1)) 1972 This attribute specifies the number of copies of the job to be 1973 printed. 1975 Note: The effect of this attribute on job with multiple documents is 1976 controlled by the "multiple-document-handling" job attribute (section 1977 4.2.7). 1979 4.2.15 finishing (1setOf type2 enum) 1981 This attribute identifies the finishing operations that the Printer 1982 uses for each copy of each printed document in a particular Job. The 1983 definition of a copy for Jobs with multiple documents is controlled by 1984 the "multiple-document-handling" attribute. 1986 Standard values are: 1988 'none'(3): Perform no finishing 1989 'staple'(4): Bind the document(s) with one or more staples. The 1990 exact number and placement of the staples is site-defined. 1991 'staple-top-left'(5): Place one or more staples on the top left 1992 corner of the document(s). 1993 'staple-bottom-left'(6): Place one or more staples on the bottom 1994 left corner of the document(s). 1995 'staple-top-right'(7): Place one or more staples on the top right 1996 corner of the document(s). 1997 'staple-bottom-right'(8): Place one or more staples on the bottom 1998 right corner of the document(s). 1999 'saddle-stitch'(9): Bind the document(s) with one or more staples 2000 (wire stitches) along the middle fold. The exact number and 2001 placement of the stitches is site-defined. 2002 'edge-stitch'(10): Bind the document(s) with one or more staples 2003 (wire stitches) along one edge. The exact number and placement 2004 of the staples is site-defined. 2005 'punch'(11): This value indicates that holes are required in the 2006 finished document. The exact number and placement of the holes is 2007 site-defined The punch specification MAY be satisfied (in a 2008 site- and implementation-specific manner) either by 2009 drilling/punching, or by substituting pre-drilled media. 2010 'cover'(12): This value is specified when it is desired to select 2011 a non-printed (or pre-printed) cover for the document. This does 2012 not supplant the specification of a printed cover (on cover stock 2013 medium) by the document itself. 2015 Expires January 14, 1998 2017 'bind'(13): This value indicates that a binding is to be applied 2018 to the document; the type and placement of the binding is site- 2019 defined." 2020 4.2.16 document-format (type2 keyword) 2022 This attribute defines the document format for each Document in a Job. 2023 The standard values for this attribute are enums. Since the complete 2024 list is rather long, the full enumeration of standard values is found 2025 in section 12 APPENDIX C: "document-format" enum values. 2027 If the "document-format" is unknown for a certain document, the client 2028 SHALL NOT supply the attribute in the create request or the Send- 2029 Document Request. 2031 4.2.17 compression (type3 keyword) 2033 This attribute identifies compression algorithms used for compressed 2034 document data. 2036 Standard values for this attribute are: 2038 'none': no compression is used. 2039 'zip':ZIP compression technology 2040 'tar': UNIX TAR compression technology 2042 4.2.18 job-k-octets (integer(0:2**31 - 1)) 2044 This attribute specifies the total size of the job in K octets, i.e., 2045 in units of 1024 octets. The value SHALL be rounded up, so that a job 2046 between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048 2047 SHALL be 2, etc. 2049 Note: This attribute and the following two attributes ("job- 2050 impressions" and "job-media-sheets") are not intended to be counters; 2051 they are intended to be useful routing and scheduling information if 2052 known. The Printer tries to compute the value if it is not supplied in 2053 the create request. The Printer, however, might not be able to 2054 compute this value at the time the Job is created. If not, the 2055 Printer may support this attribute at any later time as it is able to 2056 compute value. 2058 4.2.19 job-impressions (integer(0:2**31 - 1)) 2060 This attribute specifies the total size of the job in impressions. 2062 Expires January 14, 1998 2063 4.2.20 job-media-sheets (integer(0:2**31 - 1)) 2065 This attribute specifies the total size of the job in media-sheets. 2067 4.3 Job Description Attributes 2069 The attributes in this section form the attribute group called "job- 2070 description". The following table summarizes these attributes. The 2071 third column indicates whether the attribute is a MANDATORY attribute. 2072 If it is not MANDATORY, then it is OPTIONAL. 2074 Expires January 14, 1998 2075 +----------------------------+----------------------+----------------+ 2076 | Attribute | Syntax | MANDATORY? | 2077 +----------------------------+----------------------+----------------+ 2078 | job-uri | uri | MANDATORY | 2079 +----------------------------+----------------------+----------------+ 2080 | job-uri-user | uri | | 2081 +----------------------------+----------------------+----------------+ 2082 | job-originating-user | name | MANDATORY | 2083 +----------------------------+----------------------+----------------+ 2084 | job-originating-host | name | | 2085 +----------------------------+----------------------+----------------+ 2086 | user-locale | locale | | 2087 +----------------------------+----------------------+----------------+ 2088 | job-state | type1 enum | MANDATORY | 2089 +----------------------------+----------------------+----------------+ 2090 | job-state-reasons | 1setOf type2 keyword | | 2091 +----------------------------+----------------------+----------------+ 2092 | job-state-message | text | | 2093 +----------------------------+----------------------+----------------+ 2094 | output-device-assigned | name | | 2095 +----------------------------+----------------------+----------------+ 2096 | time-since-pending | milliseconds | MANDATORY | 2097 +----------------------------+----------------------+----------------+ 2098 | time-since-processing | milliseconds | MANDATORY | 2099 +----------------------------+----------------------+----------------+ 2100 | time-since-completed | milliseconds | MANDATORY | 2101 +----------------------------+----------------------+----------------+ 2102 | number-of-intervening-jobs | integer | MANDATORY | 2103 +----------------------------+----------------------+----------------+ 2104 | job-message-from-operator | text | | 2105 +----------------------------+----------------------+----------------+ 2106 | job-k-octets-processed | integer | | 2107 +----------------------------+----------------------+----------------+ 2108 | job-impressions-completed | integer | | 2109 +----------------------------+----------------------+----------------+ 2110 | job-media-sheets-completed | integer | | 2111 +----------------------------+----------------------+----------------+ 2113 4.3.1 job-uri (uri) 2115 This attribute contains the URI for the job. The Printer, on receipt 2116 of a new job, generates a URI which identifies the new Job on that 2117 Printer. The Printer returns the value of the "job-uri" attribute as 2118 part of the response to a create request. The precise format of a 2119 job URI is implementation dependent. 2121 Expires January 14, 1998 2122 4.3.2 job-uri-user (uri) 2124 Similar to "job-uri", this attribute contains the URI referencing an 2125 HTML page containing information about the Job. 2127 4.3.3 job-originating-user (name) 2129 This attribute specifies the user name of the person submitting the 2130 print job. The Printer SHALL set this attribute to the most 2131 authenticated name that it can obtain from the protocol over which the 2132 operation was received from the client. 2134 4.3.4 job-originating-host (name) 2136 This attribute identifies the originating host of the job. The Printer 2137 SHALL set this attribute to the most authenticated host name it can 2138 obtain from the protocol over which the operation was received from 2139 the client. 2141 4.3.5 user-locale (locale) 2143 This attribute identifies the human language and optional the country 2144 of the end user. The Printer sets this attribute to the most reliable 2145 value it can obtain from the protocol over which the Print operation 2146 was received from the client. 2148 The Printer uses this attribute to determine the locale it SHOULD use 2149 for localizing any text strings that it sends back to the end user. 2150 These include status messages, text attributes, and notification 2151 messages. 2153 4.3.6 job-state (type1 enum) 2155 This attribute identifies the current state of the job. Even though 2156 the IPP protocol defines eight values for job states, implementations 2157 only need to support those states which are appropriate for the 2158 particular implementation. In other words, a Printer supports only 2159 those job states implemented by the output device and available to the 2160 Printer object implementation. 2162 Standard values are: 2164 'unknown'(2): The job state is not known, or its state is 2165 indeterminate. 2166 'pending'(3): The job is a candidate to start processing, but is 2167 not yet processing. 2168 'pending-held'(4): The job is not a candidate for processing for 2169 any number of reasons but will return to the 'pending' state as 2171 Expires January 14, 1998 2172 soon as the reasons are no longer present. The job's "job-state- 2173 reason" attribute SHALL indicate why the job is no longer a 2174 candidate for processing. 2175 'processing'(5): Either: 2176 1. the job is using, or is attempting to use, one or more 2177 document transforms which include (1) purely software 2178 processes that are interpreting a PDL, and (2) hardware 2179 devices that are interpreting a PDL, making marks on a medium, 2180 and/or performing finishing, such as stapling OR 2181 2. the server has made the job ready for printing, but the 2182 output device is not yet printing it, either because the job 2183 hasn't reached the output device or because the job is queued 2184 in the output device or some other spooler, awaiting the 2185 output device to print it. 2186 When the job is in the 'processing' state, the entire job state 2187 includes the detailed status represented in the printer's 2188 "printer-state", "printer-state-reasons", and "printer-state- 2189 message" attributes. 2190 Implementations MAY include additional values in the job's "job- 2191 state-reasons" attribute to indicate the progress of the job, 2192 such as adding the 'job-printing' value to indicate when the 2193 output device is actually making marks on paper. Most 2194 implementations won't bother with this nuance. 2195 'processing-stopped'(6): The job has stopped while processing for 2196 any number of reasons and will return to the 'processing' state 2197 as soon as the reasons are no longer present. 2198 The job's "job-state-reason" attribute MAY indicate why the job 2199 has stopped processing. For example, if the output device is 2200 stopped, the 'printer-stopped' value MAY be included in the job's 2201 "job-state-reasons" attribute. For example, if the output device 2202 is stopped, the 'printer-stopped' value MAY be included in the 2203 job's "job-state-reasons" attribute. 2204 NOTE - When an output device is stopped, the device usually 2205 indicates its condition in human readable form locally at the 2206 device. A client can obtain more complete device status remotely 2207 by querying the printer's "printer-state", "printer-state- 2208 reasons" and "printer-state-message" attributes. 2209 'canceled'(7): The job has been canceled by a Cancel-Job operation 2210 and is either (1) in the process of terminating or (2) has 2211 completed terminating. The job's "job-state-reasons" attribute 2212 SHOULD contain either the 'canceled-by-user' or 'canceled-by- 2213 operator' value. 2214 'aborted'(8): The job has been aborted by the system, usually 2215 while the job was in the 'processing' or 'processing-stopped' 2216 state. 2217 'completed'(9): The job has completed successfully or with 2218 warnings or errors after processing and all of the job media 2219 sheets have been successfully stacked in the appropriate output 2221 Expires January 14, 1998 2222 bin(s). The job's "job-state-reasons" attribute SHOULD contain 2223 one of: 'completed-successfully', 'completed-with-warnings', or 2224 'completed-with-errors' values. 2226 The final value for this attribute SHALL be one of: 'completed', 2227 'canceled', or 'aborted' before the Printer removes the job 2228 altogether. The length of time that jobs remain in the 'canceled', 2229 'aborted', and 'completed' states depends on implementation. 2231 The following figure shows the normal job state transitions. 2233 +----> canceled 2234 / 2235 +----> pending --------> processing ---------+------> completed 2236 | ^ ^ \ 2237 --->+ | | +----> aborted 2238 | v v / 2239 +----> pending-held processing-stopped ----+ 2241 Normally a job progresses from left to right. Other state transitions 2242 are unlikely, but are not forbidden. Not shown are the transitions to 2243 the 'canceled' state from the 'pending', 'pending-held', 'processing', 2244 and 'processing-stopped' states. 2246 4.3.7 job-state-reasons (1setOf type2 keyword) 2248 This attribute provides additional information about the job's current 2249 state, i.e., information that augments the value of the job's "job- 2250 state" attribute. 2252 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 2253 implement them, even if (1) the output device supports the 2254 functionality represented by the reason and (2) is available to the 2255 Printer object implementation. These values MAY be used with any job 2256 state or states for which the reason makes sense. Furthermore, when 2257 implemented, the Printer SHALL return these values when the reason 2258 applies and SHALL NOT return them when the reason no longer applies 2259 whether the value of the job's "job-state" attribute changed or not. 2260 When the job does not have any reasons for being in its current state, 2261 the Printer shall set the value of the job's "job-state-reasons" 2262 attribute to 'none'. 2264 NOTE - While values cannot be added to the 'job-state' attribute 2265 without impacting deployed clients that take actions upon receiving 2266 "job-state"values, it is the intent that additional "job-state- 2267 reasons" values can be defined and registered without impacting such 2269 Expires January 14, 1998 2270 deployed clients. In other words, the "job-state-reasons" attribute 2271 is intended to be extensible. 2273 The following standard values are defined: 2275 NOTE - For easy of understanding the order of the reasons is presented 2276 in the order in which the reason is most likely to occur: 2278 'none': There are no reasons for the job's current state. 2279 'job-incoming': The CreateJob operation has been accepted by the 2280 Printer, but the Printer is expecting additional SendDocument 2281 operations and/or is accessing/accepting document data. 2282 'job-outgoing': The Printer is transmitting the job to the output 2283 device. 2284 'job-hold-until-specified': The value of the job's "job-hold- 2285 until" attribute specifies a time period that is still in the 2286 future. The job SHALL NOT be a candidate for processing until 2287 this reason is removed and there are no other reasons to hold the 2288 job. 2289 'resources-are-not-ready': At least one of the resources needed by 2290 the job, such as media, fonts, resource objects, etc., is not 2291 ready on any of the physical printer's for which the job is a 2292 candidate. This condition MAY be detected when the job is 2293 accepted, or subsequently while the job is pending or processing, 2294 depending on implementation. 2295 'printer-stopped-partly': The value of the Printer's "printer- 2296 state-reasons" attribute contains the value 'stopped-partly'. 2297 'printer-stopped': The value of the Printer's "printer-state" 2298 attribute is 'stopped'. 2299 'job-printing': The output device is marking media. This value is 2300 useful for Printers which spend a great deal of time processing 2301 when no marking is happening and then want to show that marking 2302 is now happening. 2303 'job-cancelled-by-user': The job was cancelled by the user using 2304 the CancelJob request, i.e., by a user whose name is the same as 2305 the value of the job's "job-originating-user" attribute. 2306 'job-cancelled-by-operator': The job was cancelled by the operator 2307 using the CancelJob request, i.e., by a user whose name is 2308 different than the value of the job's "job-originating-user" 2309 attribute. 2310 'job-completed-successfully': The job completed successfully. 2311 'job-completed-with-warnings': The job completed with warnings. 2312 'job-completed-with-errors': The job completed with errors (and 2313 possibly warnings too). 2314 'logfile-pending ': The job's logfile is pending file transfer. 2315 'logfile-transferring': The job's logfile is being transferred. 2317 Expires January 14, 1998 2319 4.3.8 job-state-message (text) 2321 This attributes specifies supplemental information about the Job State 2322 in human readable text. 2324 4.3.9 output-device-assigned (name) 2326 This attribute identifies the Output Device to which the Printer has 2327 assigned this job. If an output device implements an embedded IPP 2328 Printer, the Printer NEED NOT set this attribute. If a Print Server 2329 implements a Printer, the value MAY be empty until the Printer assigns 2330 an output device to the job. 2332 4.3.10 time-since-pending (milliseconds) 2334 This attribute indicates the amount of time that has passed since the 2335 Job was first put into the pending state.. 2337 4.3.11 time-since-processing (milliseconds) 2339 This attribute indicates the amount of time that has passed since the 2340 Job first entered the processing state. 2342 4.3.12 time-since-completed (milliseconds) 2344 This attribute indicates the amount of time that has passed since the 2345 Job was completed. 2347 4.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) 2349 This attribute indicates the number of jobs that are "ahead" of this 2350 job in the current scheduled order. For efficiency, it is only 2351 necessary to calculate this value when an operation is performed that 2352 requests this attribute. 2354 Note: This attribute is necessary since an end user may request just 2355 their own jobs and they need some relative position indicator if there 2356 are other jobs interspersed in the waiting list which are not returned 2357 in the response or cannot be because of site security policy 2358 restrictions. 2360 4.3.14 job-message-from-operator (text) 2362 This attribute provides a message from an operator, system 2363 administrator or "intelligent" process to indicate to the end user the 2364 reasons for modification or other management action taken on a job. 2366 Expires January 14, 1998 2367 4.3.15 job-k-octets-processed (integer(0:2**31 - 1)) 2369 This attribute specifies the number of octets completed in K octets, 2370 i.e., in units of 1024 octets. The value SHALL be rounded up, so that 2371 a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2372 2048 SHALL be 2, etc. 2374 Note: This attribute and the following two attributes ("job- 2375 impressions-completed" and "job-sheets-completed") are intended to be 2376 counters as in the Job Monitoring MIB [27]. 2378 4.3.16 job-impressions-completed (integer(0:2**31 - 1)) 2380 This job attribute specifies the number of impressions completed. This 2381 attribute is intended to be a counter as in the Job Monitoring MIB. 2383 4.3.17 job-media-sheets-completed (integer(0:2**31 - 1)) 2385 This job attribute specifies the media-sheets completed. This 2386 attribute is intended to be a counter as in the Job Monitoring MIB. 2388 4.4 Document Attributes 2390 This group of attributes describes the document data for the job. For 2391 single-Document Jobs, they are supplied in the Print-Job or Print-URI 2392 requests. For multi-Document Jobs, they are supplied in each Send- 2393 Document or Send-URI request. 2395 +----------------------------+----------------------+----------------+ 2396 | Attribute | Syntax | MANDATORY? | 2397 +----------------------------+----------------------+----------------+ 2398 | document-name | name | MANDATORY | 2399 +----------------------------+----------------------+----------------+ 2400 | document-format | type 2 enum | | 2401 +----------------------------+----------------------+----------------+ 2402 | document-uri | uri | | 2403 +----------------------------+----------------------+----------------+ 2405 4.4.1 document-name (name) 2407 This attribute contains the name of the document used by the client to 2408 initially identify the document. When a client prints by reference, 2409 i.e. includes the document-URI attribute and no document content, this 2410 attribute SHALL be absent. 2412 Expires January 14, 1998 2413 4.4.2 document-format (type2 enum) 2415 See section 4.2.16 that describes the "document-format" Job Template 2416 attribute. 2418 4.4.3 document-uri (uri) 2420 This attribute contains the URI of the document when the document 2421 content is not included in the Send Document operation. Document- 2422 number is the only other attribute allowed when a document-URI 2423 attribute is present in a Send Document operation. 2425 4.5 Printer Description Attributes 2427 These attributes form the attribute group called "printer- 2428 description". A Printer object may be realized in either a print 2429 server or output device. Note: How these attributes are set by an 2430 Administrator is outside the scope of this specification. The 2431 following table summarizes these attributes, their syntax, and whether 2432 or not they are MANDATORY. If they are not MANDATORY, they are 2433 OPTIONAL. 2435 Expires January 14, 1998 2436 +----------------------------+----------------------+----------------+ 2437 | Attribute | Syntax | MANDATORY? | 2438 +----------------------------+----------------------+----------------+ 2439 | printer-uri | uri | MANDATORY | 2440 +----------------------------+----------------------+----------------+ 2441 | printer-uri-user | uri | | 2442 +----------------------------+----------------------+----------------+ 2443 | printer-name | name | MANDATORY | 2444 +----------------------------+----------------------+----------------+ 2445 | printer-location | text | | 2446 +----------------------------+----------------------+----------------+ 2447 | printer-description | text | | 2448 +----------------------------+----------------------+----------------+ 2449 | printer-more-info-site | uri | | 2450 +----------------------------+----------------------+----------------+ 2451 | printer-driver-installer | uri | | 2452 +----------------------------+----------------------+----------------+ 2453 | printer-make-and-model | text | | 2454 +----------------------------+----------------------+----------------+ 2455 | printer-more-info- | uri | | 2456 | manufacturer | | | 2457 +----------------------------+----------------------+----------------+ 2458 | printer-state | type1 enum | MANDATORY | 2459 +----------------------------+----------------------+----------------+ 2460 | printer-state-reasons | type2 keyword | | 2461 +----------------------------+----------------------+----------------+ 2462 | printer-state-message | text | | 2463 +----------------------------+----------------------+----------------+ 2464 | printer-is-accepting-jobs | boolean | MANDATORY | 2465 +----------------------------+----------------------+----------------+ 2466 | queued-job-count | integer | | 2467 +----------------------------+----------------------+----------------+ 2468 | printer-message-from- | text | | 2469 | operator | | | 2470 +----------------------------+----------------------+----------------+ 2471 | printer-locale | locale | MANDATORY | 2472 +----------------------------+----------------------+----------------+ 2473 | printer-locales-supported | 1setOf locale | MANDATORY | 2474 +----------------------------+----------------------+----------------+ 2475 | color-supported | boolean | | 2476 +----------------------------+----------------------+----------------+ 2478 4.5.1 printer-uri (uri) 2480 This attribute contains the URI for the printer. An administrator 2481 SHALL determine a printer's URI and SHALL set this attribute to that 2482 URI. The precise format of a printer URI SHALL be implementation 2483 dependent. 2485 Expires January 14, 1998 2486 4.5.2 printer-uri-user (uri) 2488 Similar to "printer-uri", this attribute contains the URI for an HTML 2489 page with more information about this printer. 2491 4.5.3 printer-name (name) 2493 This attribute contains the name of the printer. It is a name that is 2494 more user friendly than the printer-URI. An administrator SHALL 2495 determine a printer's name and SHALL set this attribute to that name. 2496 This name may be the last part of the printer's URI or it may be 2497 unrelated. In non-US-English locales, a name may contain characters 2498 that are not allowed in a URI. 2500 4.5.4 printer-location (text) 2502 This attribute identifies the location of this printer. 2504 4.5.5 printer-description (text) 2506 This attribute identifies the descriptive information about the this 2507 Printer. This could include things like: "This printer can be used 2508 for printing color transparencies for HR presentations", or "Out of 2509 courtesy for others, please print only small (1-5 page) jobs at this 2510 printer", or even "This printer is going away on July 1, 1997, please 2511 find a new printer". 2513 4.5.6 printer-more-info-site (uri) 2515 This attribute contains a URI used to obtain more information about 2516 this specific printer. The information obtained from this URI is 2517 intended for end user consumption. Features outside the scope of IPP 2518 can be accessed from this URI. The information is intended to be 2519 specific to this printer instance and site services (e.g. job pricing, 2520 services offered, end user assistance). The printer manufacturer may 2521 initially populate this attribute. 2523 4.5.7 printer-driver-installer (uri) 2525 This attribute contains a URI to use to locate the driver installer 2526 for this printer. This attribute is intended for consumption by 2527 automata. The mechanics of print driver installation is outside the 2528 scope of IPP. The printer manufacturer may initially populate this 2529 attribute. 2531 4.5.8 printer-make-and-model (text) 2533 This attribute identifies the make and model of the printer. 2535 Expires January 14, 1998 2536 4.5.9 printer-more-info-manufacturer (uri) 2538 This attribute contains a URI used to obtain more information about 2539 this type of printer. The information obtained from this URI is 2540 intended for end user consumption. Features outside the scope of IPP 2541 can be accessed from this URI (e.g., latest firmware, upgrades, print 2542 drivers, optional features available). The information is intended to 2543 be germane to this printer without regard to site specific 2544 modifications or services. 2546 4.5.10 printer-state (type1 keyword) 2548 This attribute identifies the current state of the printer. The 2549 "printer-state reasons" attribute augments the "printer-state" 2550 attribute to give more detailed information about the Printer in the 2551 given printer state. 2553 A Printer SHALL continually keep this attribute set to the value in 2554 the table below which most accurately reflects the state of the 2555 Printer. A Printer NEED NOT implement all values if they are not 2556 applicable to a given implementation. 2558 The following standard values are defined: 2560 'unknown'(2): The Printer state is not known, or is indeterminate. 2561 A Printer SHALL use this state only if it cannot determine its 2562 actual state. 2564 'idle'(3): If a Printer receives a job (whose required resources 2565 are ready) while in this state, such a job SHALL transit into the 2566 processing state immediately. If the printer-state-reasons 2567 attribute contains any reasons, they SHALL be reasons that would 2568 not prevent a job from transiting into the processing state 2569 immediately, e.g., toner-low. Note: if a Printer controls more 2570 than one output device, the above definition implies that a 2571 Printer is idle if at least one output device is idle. 2573 'processing'(4): If a Printer receives a job (whose required 2574 resources are ready) while in this state, such a job SHALL 2575 transit into the pending state immediately. Such a job SHALL 2576 transit into the processing state only after jobs ahead of it 2577 complete. If the printer-state-reasons attribute contains any 2578 reasons, they SHALL be reasons that do not prevent the current 2579 job from printing, e.g. toner-low. Note: if a Printer controls 2580 more than one output device, the above definition implies that a 2581 Printer is processing if at least one output device is 2582 processing, and none is idle. 2584 Expires January 14, 1998 2586 'stopped'(5): If a Printer receives a job (whose required 2587 resources are ready) while in this state, such a job SHALL 2588 transit into the pending state immediately. Such a job SHALL 2589 transit into the processing state only after some human fixes the 2590 problem that stopped the printer and after jobs ahead of it 2591 complete printing. The "printer-state-reasons" attribute SHALL 2592 contain at least one reason, e.g. media-jam, which prevents it 2593 from either processing the current job or transiting a pending 2594 job to the processing state. 2596 Note: if a Printer controls more than one output device, the 2597 above definition implies that a Printer is stopped only if all 2598 output devices are stopped. Also, it is tempting to define 2599 stopped as when a sufficient number of output devices are stopped 2600 and leave it to an implementation to define the sufficient 2601 number. But such a rule complicates the definition of stopped 2602 and processing. For example, with this alternate definition of 2603 stopped, a job can move from idle to processing without human 2604 intervention, even though the Printer is stopped. 2606 4.5.11 printer-state-reasons (1setOf type2 keyword) 2608 This attribute supplies additional detail about the printer's state. 2610 Each MAY have asuffix to indicate its level of severity. The three 2611 levels are: report (least severe), warning, and error (most severe). 2613 - '-report': This suffix indicates that the reason is a "report". 2614 An implementation may choose to omit some or all reports. Some 2615 reports specify finer granularity about the printer state; others 2616 serve as a precursor to a warning. A report SHALL contain nothing 2617 that could affect the printed output. 2618 - '-warning': This suffix indicates that the reason is a "warning". 2619 An implementation may choose to omit some or all warnings. 2620 Warnings serve as a precursor to an error. A warning SHALL 2621 contain nothing that prevents a job from completing, though in 2622 some cases the output may be of lower quality. 2623 - '-error': This suffix indicates that the reason is an "error". . 2624 An implementation SHALL include all errors. If this attribute 2625 contains one or more errors, printer SHALL be in the stopped 2626 state. 2628 If the implementation does not add any one of the three suffixes, all 2629 parties SHALL assume that the reason is an "error". 2631 If a logical Printer controls more than one output device, each value 2632 of this attribute MAY apply to one or more of the output devices. An 2633 error on one output device that does not stop the logical Printer as a 2635 Expires January 14, 1998 2636 whole MAY appear as a warning in the Printer's "printer-state-reasons 2637 attribute". The "printer-state" for such a Printer may have a value 2638 of 'stopped' even though there are with no "printer-state-reasons" 2639 values that are "errors". 2641 The following standard values are defined: 2643 'media-needed': A tray has run out of media. 2644 'media-jam': The printer has a media jam. 2645 'paused': Someone has paused the Printer. In this state, a Printer 2646 SHALL not produce printed output, but it SHALL perform other 2647 operations requested by a client. If a Printer had been printing 2648 a job when the Printer was paused, the Printer SHALL resume 2649 printing that job when the Printer is no longer paused and leave 2650 no evidence in the printed output of such a pause. 2651 'shutdown': Someone has removed a Printer from service, and it may 2652 be powered down or physical removed. In this state, a Printer 2653 SHALL not produce printed output, and unless the Printer is 2654 realized by a print server that is still active, the Printer 2655 SHALL perform no other operations requested by a client, 2656 including returning this value. If a Printer had been printing a 2657 job when it was shutdown, the Printer need not resume printing 2658 that job when the Printer is no longer shutdown. If the Printer 2659 resumes printing such a job, it may leave evidence in the printed 2660 output of such a shutdown, e.g. the part printed before the 2661 shutdown may be printed a second time after the shutdown. 2662 'connecting-to-device': The server has scheduled a job on the 2663 Printer and is in the process of connecting to a shared network 2664 output device (and might not be able to actually start printing 2665 the job for an arbitrarily long time depending on the usage of 2666 the output device by other servers on the network). 2667 'timed-out': The server was able to connect to the output device 2668 (or is always connected), but was unable to get a response from 2669 the output device. 2670 'stopping': The printer will be stopping in a while and will change 2671 its reason to printer-stopped. This reason is a non-critical, 2672 even for a Printer with a single output device. When an output- 2673 device ceases accepting jobs, the Printer will have this state 2674 while the output device completes printing. 2675 'stopped-partly': When a Printer controls more than one output 2676 device, this reason indicates that one or more output devices are 2677 stopped. If the reason is a report, fewer than half of the output 2678 devices are stopped. If the reason is a warning, fewer than all 2679 of the output devices are stopped. 2680 'toner-low': The Printer is low on toner. 2681 'spool-area-full': The limit of persistent storage allocated for 2682 spooling has been reached. 2684 Expires January 14, 1998 2686 4.5.12 printer-is-accepting-jobs (boolean) 2688 This attribute determines whether the printer is currently accepting 2689 job. If the value is true, the printer is accepting jobs. If the 2690 value is false, the printer is currently rejecting any jobs submitted 2691 to it. 2693 Note: This value is independent of the printer state and printer- 2694 state-reasons because its value does not affect the current job; 2695 rather it affects future jobs. This attribute may cause the Printer to 2696 reject jobs when the printer-state is idle or it may cause the Printer 2697 to accepts jobs when the printer-state is stopped. 2699 4.5.13 printer-state-message (text) 2701 This attribute specifies the additional information about the printer 2702 state in human readable text and it SHALL be set by the Printer (or 2703 the Administrator by some mechanism outside the scope of IPP). 2705 4.5.14 queued-job-count (integer(0:2**31 - 1)) 2707 This attribute contains a count of the number of jobs that are either 2708 pending and/or processing and SHALL be set by the Printer. 2710 4.5.15 printer-message-from-the-operator (text) 2712 This attribute provides a message from an operator, system 2713 administrator or "intelligent" process to indicate to the end user 2714 information or status of the printer, such as why it is unavailable or 2715 when it is expected to be available. 2717 4.5.16 printer-locale (locale) 2719 This attribute specifies the current locale that the Printer is 2720 operating in. 2722 4.5.17 printer-locales-supported (1setOf locale) 2724 This attribute specifies the supported locales that the Printer 2725 operates in. 2727 4.5.18 color-supported (boolean) 2729 This attribute identifies whether the Printer is capable of any type 2730 of color printing at all. All document instructions having to do with 2731 color are embedded within the document PDL (none are external IPP 2732 attributes). 2734 Expires January 14, 1998 2735 4.5.19 pdl-override (type2 keyword) 2737 A client supplies Job Template attributes to affect the rendering, 2738 production and finishing of the documents in the job. Similar types 2739 of instructions may also be contained in the document to be printed, 2740 that is, within the Page Description Language (PDL) of the document 2741 data. If there is a conflict between the value of one of these IPP 2742 Job Template attributes, and a corresponding instruction in the 2743 document (either implicit or explicit), it is desirable that the value 2744 of the IPP attribute take precedence over the document instruction. 2745 Until companies that supply interpreters for PDLs, such as PostScript 2746 and PCL allow a way for external attributes (such as IPP attributes) 2747 to take precedence over internal job production instructions, a 2748 Printer might not be able to support the semantics that IPP attributes 2749 override (take on a higher precedence) the embedded PDL instructions. 2750 This attribute expresses how a particular Printer implementation 2751 handles these conflicts. 2753 This attribute takes on the following values: 2755 - 'guaranteed': This value indicates that the Printer guarantees 2756 that all IPP attribute values take precedence over embedded PDL 2757 instructions. 2758 - 'attempted': This value indicates that the Printer attempts to 2759 make sure that IPP attribute values take precedence over embedded 2760 PDL instructions, however there is no guarantee. 2761 - 'ignored': This value indicates that the Printer ignores all IPP 2762 Job Template attributes and it makes no attempts to ensure that 2763 IPP attribute values take precedence over embedded PDL 2764 instructions. 2766 This is a MANDATORY attribute. 2768 Note: Since 'attempted' does not offer any type of guarantee, a given 2769 implementation might not do a very "good" job of attempting to ensure 2770 that IPP attributes take a higher precedence over PDL instructions 2771 embedded in the document data, but it would still be a conforming 2772 implementation. 2774 If the value of this attribute is 'guaranteed', the implementation 2775 MUST guarantee that the IPP attribute values take precedence over any 2776 related job processing instructions in the PDL Job's document data. 2777 This can be done by modifying the interpreter within the output device 2778 itself to understand IPP attributes, or by merging theses Job Template 2779 attributes directly into the document data, or in any other 2780 implementation specific manner. In any case, the semantics of 2781 'guaranteed' MUST be preserved. 2783 Expires January 14, 1998 2784 4.5.20 Security Related Attributes 2786 The security document [22] describes four common usage scenarios: 2788 - no security 2789 - message protection 2790 - client authentication and authorization 2791 - mutual authentication, authorization, and message protection 2793 In order to let an end user know what to expect in terms of security, 2794 there are two attributes described below. Since by definition an end 2795 user, because of security reasons, might not be allowed to query these 2796 two attributes, therefore, it is important that if these two 2797 attributes are supported, then they are also populated in the 2798 directory entry (see [24]). 2800 These attributes allow for minimal client/server negotiation regarding 2801 security features. If the Printer requires the feature, the client 2802 can decide whether or not to participate. If the client does not 2803 support the feature, and the Printer requires it, then the client 2804 knows before hand that such an interaction would fail. 2806 Standard values for these two attributes include: 2808 'supported' - means that the Printer is capable of supporting the 2809 security feature (somehow), but it is does not require the client 2810 to use it. 2811 'required' - means that the Printer is capable of supporting the 2812 security feature (somehow) and the client is required to use it. 2813 'none' - means that the Printer is not capable of supporting 2814 message protection at all. 2816 Note: This is a single-valued attribute, not a multi-valued 2817 attribute, i.e., an implementation can not support 'none' and 2818 'required' or any other combination of values. 2820 4.5.20.1 message-protection-supported (keyword) 2822 This attribute is used to determine whether or not a printer supports 2823 or requires message protection (whether it be through encryption or 2824 some other privacy mechanism). 2826 4.5.20.2 authentication-authorization-supported (keyword) 2828 This attribute is used to determine whether or not a printer supports 2829 or requires authentication and authorization. 2831 Expires January 14, 1998 2832 5. Conformance 2834 This section describes conformance issues and requirements. This 2835 document introduces model entities such as objects, operations, 2836 attributes, and attribute values. These conformance sections describe 2837 the conformance requirements which apply to these model entities. 2839 5.1 Conditionally Mandatory 2841 For example, a conditionally mandatory attribute means that a Printer 2842 implementation need not support the attribute if the attribute 2843 controls a feature that the output device does not implement or 2844 expose. For example, for an output device that can only print on one 2845 side, a Printer need not support the "sides" attribute. For an output 2846 device that does not support any of the finishing attribute values, a 2847 Printer need not support the "finishing" attribute. 2849 5.2 Client Conformance Requirements 2851 There are no conformance requirements placed on the user interfaces 2852 provided by IPP clients or their applications. For example, one 2853 application might not allow an end user to submit multiple documents 2854 per job, while another does. One application might first query a 2855 Printer object in order to supply a graphical user interface (GUI) 2856 dialogue box with supported and default values whereas a different 2857 implementation might not. 2859 When sending a Get-Attributes or create request, an IPP client need 2860 not supply any attributes. 2862 A client SHALL be able to accept any of the attribute syntaxes defined 2863 in Section 4.1 that may be returned to it in a response from a Printer 2865 A query response may contain attributes and values that the client 2866 does not expect. Therefore, a client implementation MUST gracefully 2867 handle such responses and not refuse to interoperate with a conforming 2868 Printer that is returning extended registered or private attributes 2869 and/or attribute values that conform to Section 6. Clients may choose 2870 to ignore any attributes that it does not understand. 2872 Expires January 14, 1998 2873 5.3 Printer Object Conformance Requirements 2875 This section specifies the conformance requirements for conforming 2876 Printer object implementations with respect to objects, operations, 2877 and attributes. 2879 5.3.1 Objects 2881 Conforming Printer implementations SHALL implement all of the model 2882 objects as defined in this specification in the indicated sections: 2884 Section 2.1 Printer Object 2885 Section 2.2 Job Object 2886 Section 2.3 Document Object 2888 5.3.2 Operations 2890 Conforming Printer implementations SHALL implement all of the 2891 MANDATORY model operations, including mandatory responses, as defined 2892 in this specification in the indicated sections: 2894 For a Printer object: 2895 Get-Operations (section 3.1.1) MANDATORY 2896 Print-Job (section 3.1.2) MANDATORY 2897 Print-URI (section 3.1.3) OPTIONAL 2898 Validate-Job (section 3.1.4) MANDATORY 2899 Create-Job (section 3.1.5) OPTIONAL 2900 Get-Jobs (section 3.1.8) MANDATORY 2901 Get-Attributes (section 3.1.9) MANDATORY 2903 For a Job object: 2904 Send-Document (section 3.1.6) OPTIONAL 2905 Send-URI (section 3.1.7) OPTIONAL 2906 Cancel-Job (section 3.1.8) MANDATORY 2907 Get-Attributes (section 3.1.9) MANDATORY 2909 5.3.3 Attributes 2911 Conforming Printer implementations SHALL support all of the MANDATORY 2912 attributes, as defined in this specification in the indicated 2913 sections. 2915 Conforming Printer implementations SHALL support all CONDITIONALLY 2916 MANDATORY attributes as defined in this specification (in the 2917 indicated sections) if in the implementation the condition us true. 2919 Expires January 14, 1998 2920 If a Printer implements a "xxx-supported" attribute it MUST implement 2921 the corresponding "xxx" default value attribute and vice versa. 2923 5.3.4 Printer extensions 2925 A conforming Printer may support registered extensions and private 2926 extensions, as long as they meet the requirements specified in Section 2927 6. 2929 5.3.5 Attribute Syntaxes 2931 A Printer SHALL be able to accept any of the attribute syntaxes 2932 defined in Section 4.1 in any operation in which a client may supply 2933 attributes or parameters. Furthermore, a Printer SHALL return 2934 attributes to the client in operation responses that conform to the 2935 syntax specified in Section 4.1. 2937 5.4 Security Conformance Requirements 2939 The security mechanisms being considered for IPP fall outside the 2940 scope of the application layer protocol itself. There are two 2941 mechanisms used to begin secure communications using IPP: 2943 1. Information in the directory entry for an IPP Printer (or from 2944 additional information at a Web site hosting the IPP Printer) 2945 indicate which, if any, security protocols are used in 2946 conjunction with IPP. 2948 2. The URI for the IPP Printer contains the security protocol 2949 information (https://..., etc.). 2951 In either case, the security protocol (if any) is initiated first 2952 which allows for the negotiation of security features. IPP is then 2953 run as an application protocol on top of the security protocols. One 2954 cannot "bootstrap" the security features from IPP itself. 2956 ISSUE: The above is not quite correct. Waiting for better description 2957 from the security document [22]. 2959 6. IANA Considerations (registered and private extensions) 2961 During the development of this standard, the IPP working group 2962 (working with IANA) will register additional keywords and enums while 2963 the standard is in the proposed and draft states according to the 2965 Expires January 14, 1998 2966 procedures described in this section. IANA will handle registration 2967 of additional enums after this standard is approved in cooperation 2968 with an IANA-appointed registration editor from the IPP working group 2969 according to the procedures described in this section. 2971 6.1 Typed Extensions 2973 This document identifies both keywords and enum values. Throughout 2974 this document, references to "typeN enum" or "typeN keyword" can be 2975 found (where N can be 1, 2, 3 or 4). The typeN extension has more 2976 registration controls than a typeM extension where M is greater than 2977 N. That is, there are more controls in place to extend a type1 value 2978 over a type 2 value. However, any typeN value MAY be registered using 2979 a process for some typeM where M is less than N, however such 2980 registration is NOT REQUIRED. For example, a type4 value MAY be 2981 registered in a type1 manner (i.e., by being included in a future 2982 version of an IPP specification). For private (unregistered) keyword 2983 extensions, implementers SHOULD use keywords with a suitable 2984 distinguishing prefix, such as "xxx-" where xxx is the (lowercase) 2985 company name registered with IANA for use in domain names. For 2986 private (unregistered) enum extension, implementers SHOULD support 2987 values in the reserved integer range (see "enum"). 2989 The definitions of these various types are as follows. 2991 6.1.1 Type1 2993 The IPP standard must be revised to add a new keyword or a new enum. 2994 No private keywords or enums are allowed. 2996 This draft contains the following type1 keywords: 2998 - 3000 This draft contains the following type1 enums: 3002 - 3004 6.1.2 Type2 3006 Implementers can, at any time, add new keyword or enum values by 3007 proposing them to the IPP working group for registration (or an IANA- 3008 appointed registry advisor after the IPP working group is no longer 3009 certified) where they are reviewed for approval. IANA keeps the 3010 registry. 3012 This draft contains the following type2 keywords: 3014 Expires January 14, 1998 3015 - 3017 This draft contains the following type2 enums: 3019 - 3021 6.1.3 Type3 3023 Implementers can, at any time, add new keyword and enum values by 3024 submitting a registration request directly to IANA, no IPP working 3025 group or IANA-appointed registry advisor review is required. 3027 This draft contains the following type3 keywords: 3029 - 3031 This draft contains the following type3 enums: 3033 - 3035 6.1.4 Type4 3037 Anyone (system administrators, system integrators, site managers, 3038 etc.) can, at any time, add new installation-defined values (keywords 3039 or new enum values) to a local system. Care SHOULD be taken by the 3040 implementers to see that keywords do not conflict with other keywords 3041 defined by the standard or as defined by the implementing product. 3042 There is no registration or approval procedure for type4 values. 3044 This draft contains the following type4 keywords: 3046 - 3048 This draft contains the following type4 enums: 3050 - 3052 6.2 Registration of MIME types/sub-types for document-formats 3054 The "document-format" attribute has MIME type/sub-type values for 3055 indicating document formats which IANA registers as "media type" 3056 names. 3058 Expires January 14, 1998 3059 7. Security Considerations 3061 There is another Internet-Draft called "Internet Printing 3062 Protocol/1.0: Security" [22]. That document is being drafted and 3063 reviewed in parallel with this document. The mapping of IPP on top of 3064 appropriate security protocols will be described in that document. 3065 IPP does not introduce any new, general purpose security mechanisms 3066 for authentication and encryption. 3068 A Printer may choose, for security reasons, not to return all 3069 attributes that a client requests. It may even return none of the 3070 requested attributes. In such cases, the status returned is the same 3071 as if the Printer had returned all requested attributes. The client 3072 cannot tell by such a response whether the requested attribute was 3073 present or absent on the Printer. 3075 8. References 3077 [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 3078 J., "Printer MIB", RFC 1759, March 1995. 3080 [2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC 3081 2068, January 1997 3083 [3] Crocker, D., "Standard for the Format of ARPA Internet Text 3084 Messages", RFC 822, August 1982. 3086 [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 3087 1993. 3089 [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. 3091 [6] Herriot, R. (editor), X/Open A Printing System Interoperability 3092 Specification (PSIS), August 1995. 3094 [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing 3095 Interfaces, POSIX 1387.4 D8, 1994. 3097 [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 3098 Extensions) Part One: Mechanism for Specifying and Describing the 3099 Format of Internet Message Bodies", RFC 1521, September, 1993. 3101 [9] Braden, S., "Requirements for Internet Hosts - Application and 3102 Support", RFC 1123, October, 1989, 3104 [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 3105 1179, August 1990. 3107 Expires January 14, 1998 3109 [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 3110 Locators (URL)", RFC 1738, December, 1994. 3112 [20] Internet Printing Protocol: Requirements 3114 [21] Internet Printing Protocol/1.0: Model and Semantics (This 3115 document) 3117 [22] Internet Printing Protocol/1.0: Security 3119 [23] Internet Printing Protocol/1.0: Protocol Specification 3121 [24] Internet Printing Protocol/1.0: Directory Schema 3123 [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3124 Levels", RFC 2119 , March 1997 3126 [26] H. Alvestrand, " Tags for the Identification of Languages", RFC 3127 1766, March 1995. 3129 [27] T. Hastings, "Job Monitoring MIB", , June 1997. 3132 [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 3133 10646, RFC 2044, October 1996. 3135 [29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt, 3136 July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1]. 3138 [30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 3139 SPECIFICATION", RFC 1035, November 1987. 3141 9. Author's Address 3143 Scott A. Isaacson (Editor) 3144 Novell, Inc. 3145 122 E 1700 S 3146 Provo, UT 84606 3148 Phone: 801-861-7366 3149 Fax: 801-861-4025 3150 EMail: scott_isaacson@novell.com 3152 Tom Hastings 3153 Xerox Corporation 3154 701 S. Aviation Blvd. 3155 El Segundo, CA 90245 3157 Expires January 14, 1998 3158 Phone: 310-333-6413 3159 Fax: 310-333-5514 3160 EMail: hastings@cp10.es.xerox.com 3162 Robert Herriot 3163 Sun Microsystems Inc. 3164 2550 Garcia Ave., MPK-17 3165 Mountain View, CA 94043 3167 Phone: 415-786-8995 3168 Fax: 415-786-7077 3169 Email: robert.herriot@eng.sun.com 3171 Roger deBry 3172 HUC/003G 3173 IBM Corporation 3174 P.O. Box 1900 3175 Boulder, CO 80301-9191 3177 Phone: (303) 924-4080 3178 Fax: (303) 924-9889 3179 Email: debry@vnet.ibm.com 3181 Patrick Powell 3182 San Diego State University 3183 9475 Chesapeake Dr., Suite D 3184 San Diego, CA 95123 3186 Phone: (619) 874-6543 3187 Fax: (619) 279-8424 3188 Email: papowell@sdsu.edu 3190 IPP Mailing List: ipp@pwg.org 3191 IPP Mailing List Subscription: ipp-request@pwg.org 3192 IPP Web Page: http://www.pwg.org/ipp/ 3194 Other Participants: 3196 Chuck Adams - Tektronix 3197 Jeff Barnett - IBM 3198 Ron Bergman - Data Products 3199 Keith Carter, IBM Corporation 3200 Jeff Copeland - QMS 3201 Andy Davidson - Tektronix 3202 Mabry Dozier - QMS 3203 Lee Farrell - Canon Information Systems 3204 Steve Gebert - IBM 3206 Expires January 14, 1998 3207 David Kellerman - Northlake Software 3208 Rick Landau - Digital 3209 Harry Lewis - IBM 3210 Pete Loya - HP 3211 Ray Lutz - Cognisys 3212 Mike MacKay, Novell, Inc. 3213 Carl-Uno Manros, Xerox, Corp. 3214 Jay Martin - Underscore 3215 Stan McConnell - Xerox 3216 Pat Nogay - IBM 3217 Bob Pentecost - HP 3218 Rob Rhoads - Intel 3219 David Roach - Unisys 3220 Hiroyuki Sato - Canon 3221 Bob Setterbo - Adobe 3222 Devon Taylor, Novell, Inc. 3223 Mike Timperman - Lexmark 3224 Randy Turner - Sharp 3225 Atsushi Yuki - Kyocera 3226 Lloyd Young - Lexmark 3227 Bill Wagner - DPI 3228 Jim Walker - DAZEL 3229 Chris Wellens - Interworking Labs 3230 Rob Whittle - Novell 3231 Don Wright - Lexmark 3232 Peter Zehler, Xerox, Corp. 3234 Expires January 14, 1998 3236 10. APPENDIX A: Terminology 3238 This specification uses the terminology defined in this section. 3240 10.1 Conformance Terminology 3242 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 3243 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 3244 document are to be interpreted as described in RFC 2119 [25]. 3246 10.1.1 MUST 3248 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 3249 that the definition is an absolute requirement of the specification. 3251 10.1.2 MUST NOT 3253 This phrase, or the phrase "SHALL NOT", means that the definition is 3254 an absolute prohibition of the specification. 3256 10.1.3 SHOULD 3258 This word, or the adjective "RECOMMENDED", means that there may exist 3259 valid reasons in particular circumstances to ignore a particular item, 3260 but the full implications must be understood and carefully weighed 3261 before choosing a different course. 3263 10.1.4 SHOULD NOT 3265 This phrase, or the phrase "NOT RECOMMENDED" means that there may 3266 exist valid reasons in particular circumstances when the particular 3267 behavior is acceptable or even useful, but the full implications 3268 should be understood and the case carefully weighed before 3269 implementing any behavior described with this label. 3271 10.1.5 MAY 3273 This word, or the adjective "OPTIONAL", means that an item is truly 3274 optional. One vendor may choose to include the item because a 3275 particular marketplace requires it or because the vendor feels that it 3276 enhances the product while another vendor may omit the same item. An 3277 implementation which does not include a particular option MUST be 3278 prepared to interoperate with another implementation which does 3279 include the option, though perhaps with reduced functionality. In the 3280 same vein an implementation which does include a particular option 3281 MUST be prepared to interoperate with another implementation which 3283 Expires January 14, 1998 3284 does not include the option (except, of course, for the feature the 3285 option provides.) 3287 10.1.6 CONDITIONALLY MANDATORY 3289 This term means that an item MUST be implemented in a conforming 3290 implementation if the specified condition is true. Conversely, a 3291 conforming implementation NEED NOT implement the item if the specified 3292 condition is false. 3294 10.1.7 NEED NOT 3296 The verb "NEED NOT" indicates an action that the subject of the 3297 sentence does not have to implement in order to claim conformance to 3298 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 3299 "MAY NOT" sounds like a prohibition. 3301 10.2 Model Terminology 3303 10.2.1 Keyword 3305 Keywords are used within this document as identifiers of semantic 3306 entities within the abstract model. Attribute names, some attribute 3307 values, attribute syntaxes, and attribute group names are represented 3308 as keywords. In this document, a keyword is a sequence of characters 3309 (length of 1 to 255) which consists of the following ASCII characters: 3310 lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), and 3311 underscore ("_"). A keyword starts with a lower-case letter. In the 3312 actual protocol, these keywords will be represented using an 3313 appropriate protocol encoding. 3315 10.2.2 Parameters 3317 A parameter is an item of information supplied in an operation 3318 consisting of a parameter name and a parameter value(s). Each 3319 parameter has a specific syntax. Clients supply input parameters in 3320 operation requests and servers return output parameters in operation 3321 responses. Most parameters have corresponding object attributes; some 3322 do not. All parameters are defined in section 3. 3324 10.2.2.1 Parameter Name 3326 Each parameter is uniquely identified in this document by its 3327 parameter name which is a keyword. The keyword parameter name is 3328 given in the section header describing that parameter. In running 3329 text in this document, parameter names are indicated inside double 3330 quotation marks ("). 3332 Expires January 14, 1998 3333 10.2.2.2 Parameter Value 3335 Each parameter has one or more values. Parameter values are 3336 represented in the syntax type specified for that parameter. In 3337 running text in this document, parameter values are indicated inside 3338 single quotation marks ('), whether their parameter syntax is keyword, 3339 integer, text, etc. 3341 10.2.2.3 Parameter Syntax 3343 Each parameter is defined using an explicit syntax. In this document, 3344 each syntax type is defined as a keyword with specific meaning. The 3345 protocol specification document [23] indicates the actual on-the-wire 3346 encoding for each parameter syntax. Parameter syntaxes are the same as 3347 attribute syntaxes and they are defined in section 4.1. 3349 10.2.3 Attributes 3351 An attribute is an item of information that is associated with an 3352 instance of an IPP object. An attribute consists of an attribute name 3353 and an attribute value(s). Each attribute has a specific syntax.. 3354 All attributes are defined in section 4. 3356 An interesting set of attributes is called Job Template Attributes 3357 (these attributes are described in detail in section 4.2.) The client 3358 optionally supplies Job Template attributes as input parameters in a 3359 create request (operation requests that create Job objects). The 3360 Printer object has associated attributes which define supported and 3361 default values for the Printer. Thee following rules apply: 3363 - When a Job Template attribute is supplied as an input parameter 3364 in a create request, the attribute and its value describe the 3365 desired job processing behavior. 3367 - The Printer object's supported attribute describes what behaviors 3368 are possible. 3370 - The Printer object's default value attribute describes what will 3371 be done when no other job processing information is supplied by 3372 the client. 3374 10.2.3.1 Attribute Name 3376 Each attribute is uniquely identified in this document by its 3377 attribute name which is a keyword. The keyword attribute name is 3378 given in the section header describing that attribute. In running 3379 text in this document, attribute names are indicated inside double 3380 quotation marks ("). 3382 Expires January 14, 1998 3383 10.2.3.2 Attribute Group Name 3385 Related attributes are grouped into named groups. The name of the 3386 group is a keyword. The group name may be used in an input parameter 3387 in place of naming all the attributes in the group explicitly. 3388 Attribute groups are defined in section 4. 3390 10.2.3.3 Attribute Value 3392 Each attribute has one or more values. Attribute values are 3393 represented in the syntax type specified for that attribute. In 3394 running text in this document, attribute values are indicated inside 3395 single quotation marks ('), whether their attribute syntax is keyword, 3396 integer, text, etc. 3398 10.2.3.4 Attribute Syntax 3400 Each attribute is defined using an explicit attribute syntax. In this 3401 document, each attribute syntax is defined as a keyword with specific 3402 meaning. The protocol specification document [23] indicates the 3403 actual on-the-wire encoding for each attribute syntax. Attribute 3404 syntaxes are defined in section 4.1. 3406 10.2.4 Supports 3408 By definition, an implementation (an instance of an IPP object) 3409 supports an attribute (or a particular value of an attribute) only if 3410 that implementation responds with the corresponding attribute and 3411 value in a response to a query for that attribute. A given 3412 implementation may exhibit a behavior that corresponds to the value of 3413 some attribute, but if the implementation, when queried for that 3414 attribute, doesn't respond with the supported attribute populated with 3415 that specific value, then as far as IPP is concerned, that 3416 implementation does not support that feature. 3418 A conforming implementation SHALL support all MANDATORY attributes and 3419 all CONDITIONALLY MANDATORY attributes where the implementation 3420 satisfies the condition associated with the CONDITIONALLY MANDATORY 3421 attribute. Conformance to IPP does not mandate that all 3422 implementations support all possible values representing all possible 3423 job processing behaviors and features. For example, if a given 3424 instance of a Printer supports only certain document formats, then 3425 that Printer responds with the "document-format-supported" attribute 3426 populated with a set of values, possibly only one, taken from the 3427 entire set of possible values defined in this model document. This 3428 set of values represent the Printer's set of supported document 3429 formats. Another example is the "finishings-supported" attribute. If 3430 a Printer is not physically capable of stapling (there is no stapler 3432 Expires January 14, 1998 3433 in the output device itself), the "finishings-supported" attribute 3434 MUST NOT be populated with the value of 'staple'. 3436 In order to ease the implementation burden, if a certain 3437 implementation supports only one well-known value of some "xxx- 3438 supported" attribute, it is NOT REQUIRED that that implementation 3439 support that attribute. For example, if a Printer object represents a 3440 physical device that can not print on two sides of the media, the only 3441 possible value for the "sides-supported" attribute could be 'one- 3442 sided'. In this case, it is NOT REQUIRED that the implementation 3443 support the "sides-supported" attribute since a client could infer 3444 that the implementation supports only single-sided printing from the 3445 absence of the "sides-supported" attribute. If for some reason, an 3446 implementation only supported "two-sided-long-edge" then that 3447 implementation MUST support the "sides-supported" attribute to be a 3448 conforming implementation. The "well-known value" for CONDITIONALLY 3449 MANDATORY attribute is specified in the section describing that 3450 attribute. 3452 Note: The supported attributes are set (populated) by some 3453 administrative process or automatic sensing mechanism that is outside 3454 the scope of IPP. 3456 11. APPENDIX B: Status Codes 3458 This section defines status code keywords that are used to provide 3459 semantic information on the results of an operation request. Each 3460 operation response MUST include a status code. For error type status 3461 codes, the response MAY also contain a message that provides a short 3462 textual description of the status. The status code is intended for use 3463 by automata, and the message is intended for the human end user. 3464 Since the message is an OPTIONAL component of the operation response, 3465 an IPP application (i.e. a browser, GUI, print driver or gateway) is 3466 NOT REQUIRED to examine or display the message. 3468 The prefix of the status keyword defines the class of response as 3469 follows: 3471 "informational" - Request received, continuing process 3472 "successful" - The action was successfully received, understood, 3473 and accepted 3474 "redirection" - Further action must be taken in order to complete 3475 the request 3476 "client-error" - The request contains bad syntax or cannot be 3477 fulfilled 3478 "server-error" - The server failed to fulfill an apparently valid 3479 request 3481 Expires January 14, 1998 3483 IPP status codes are extensible. IPP applications are NOT REQUIRED to 3484 understand the meaning of all registered status codes, though such 3485 understanding is obviously desirable. However, applications SHALL 3486 understand the class of any status code, as indicated by the prefix, 3487 and treat any unrecognized response as being equivalent to the first 3488 status code of that class, with the exception that an unrecognized 3489 response shall not be cached. For example, if an unrecognized status 3490 code of "client-error-foo-bar" is received by the client, it can 3491 safely assume that there was something wrong with its request and 3492 treat the response as if it had received a "client-error-bad-request" 3493 status code. In such cases, IPP applications could present the 3494 OPTIONAL message (if present) to the end user since the message is 3495 likely to contain human readable information which will help to 3496 explain the unusual status. 3498 11.1 Status Codes (type2 keyword) 3500 Each status code is described below. Section 11.2 contains a table 3501 that indicates which status codes apply to which operations. 3503 11.1.1 Informational 3505 This class of status code indicates a provisional response and is to 3506 be used for informational purposes only. 3508 There are no status codes defined in IPP 1.0 for this class of status 3509 code. 3511 11.1.2 Successful Status Codes 3513 This class of status code indicates that the client's request was 3514 successfully received, understood, and accepted. 3516 11.1.2.1 successful-ok 3518 The request has succeeded. 3520 11.1.3 Redirection Status Codes 3522 This class of status code indicates that further action needs to be 3523 taken to fulfill the request. 3525 There are no status codes defined in IPP 1.0 for this class of status 3526 code. 3528 Expires January 14, 1998 3529 11.1.4 Client Error Status Codes 3531 This class of status code is intended for cases in which the client 3532 seems to have erred. The server SHOULD return a message containing an 3533 explanation of the error situation and whether it is a temporary or 3534 permanent condition. 3536 11.1.4.1 client-error-bad-request 3538 The request could not be understood by the server due to malformed 3539 syntax. The IPP application SHOULD NOT repeat the request without 3540 modifications. 3542 11.1.4.2 client-error-forbidden 3544 The server understood the request, but is refusing to fulfill it. 3545 Additional authentication information or authorization credentials 3546 will not help and the request SHOULD NOT be repeated. This status 3547 code is commonly used when the server does not wish to reveal exactly 3548 why the request has been refused or when no other response is 3549 applicable. 3551 11.1.4.3 client-error-not-authenticated 3553 The request requires user authentication. The IPP client may repeat 3554 the request with suitable authentication information. If the request 3555 already included authentication information, then this status code 3556 indicates that authorization has been refused for those credentials. 3557 If this response contains the same challenge as the prior response, 3558 and the user agent has already attempted authentication at least once, 3559 then the response message may contain relevant diagnostic information. 3560 This status codes reveals more information than "client-error- 3561 forbidden". 3563 11.1.4.4 client-error-not-authorized 3565 The requester is not authorized to perform the request. Additional 3566 authentication information or authorization credentials will not help 3567 and the request SHOULD be repeated. This status code is used when the 3568 server wishes to reveal that the authentication information is 3569 understandable, however, the requester is explicitly not authorized to 3570 perform the request. This status codes reveals more information than 3571 "client-error-forbidden". 3573 Expires January 14, 1998 3574 11.1.4.5 client-error-not-possible 3576 This status code is used when the request is for something that can 3577 happen. For example, there might be a request to cancel a job that 3578 has already been aborted by the system. The IPP client SHOULD NOT 3579 repeat the request. 3581 11.1.4.6 client-error-timeout 3583 The client did not produce a request within the time that the server 3584 was prepared to wait. For example, a client issued a Create-Job 3585 operation and then, after a long period of time, issued a Send- 3586 Document operation and this error status code was returned in response 3587 to the Send-Document request. The server might have been forced to 3588 clean up resources that had been held for the waiting additional 3589 Documents. The server was forced to close the Job since the client 3590 took too long. The client SHOULD NOT repeat the request without 3591 modifications. 3593 11.1.4.7 client-error-not-found 3595 The server has not found anything matching the request URI. No 3596 indication is given of whether the condition is temporary or 3597 permanent. For example, a client with an old reference to a Job (a 3598 URI) tries to cancel the Job, however in the mean time the Job might 3599 have been completed and all record of it at the Printer has been 3600 deleted. This status code, 'client-error-not-found' is returned 3601 indicating that the referenced Job can not be found. This error 3602 status code is also used when a client supplies a URI as a reference 3603 to the document data in either a Print-URI or Send-URI operation 3604 however the document can not be found. 3606 ISSUE: Shall a printer be required to validate the URI at submit time? 3607 If the Printer tries to resolve the URI at job processing time, how is 3608 this error returned? In a new "job-state-reasons" value? In a "job- 3609 state-message" value? 3611 In practice, an IPP application should avoid a not found situation by 3612 first querying and presenting a list of valid Printer URIs and Job 3613 URIs to the end-user. 3615 11.1.4.8 client-error-gone 3617 The requested object is no longer available at the server and no 3618 forwarding address is known. This condition should be considered 3619 permanent. Clients with link editing capabilities should delete 3620 references to the request URI after user approval. If the server does 3621 not know or has no facility to determine, whether or not the condition 3623 Expires January 14, 1998 3624 is permanent, the status code "client-error-not-found" should be used 3625 instead. 3627 This response is primarily intended to assist the task of web 3628 maintenance by notifying the recipient that the resource is 3629 intentionally unavailable and that the server owners desire that 3630 remote links to that resource be removed. It is not necessary to mark 3631 all permanently unavailable resources as "gone" or to keep the mark 3632 for any length of time -- that is left to the discretion of the server 3633 owner. 3635 11.1.4.9 client-error-request-entity-too-large 3637 The server is refusing to process a request because the request entity 3638 is larger than the server is willing or able to process. An IPP 3639 Printer returns this status code when it limits the size of print jobs 3640 and it receives a print job that exceeds that limit or when the 3641 operation parameters are so many that their encoding causes the 3642 request entity to exceed server capacity. 3644 11.1.4.10 client-error-request-URI-too-long 3646 The server is refusing to service the request because the request URI 3647 is longer than the server is willing to interpret. This rare 3648 condition is only likely to occur when a client has improperly 3649 submitted a request with long query information (e.g. an IPP 3650 application allows an end-user to enter an invalid URI), when the 3651 client has descended into a URI "black hole" of redirection (e.g., a 3652 redirected URI prefix that points to a suffix of itself), or when the 3653 server is under attack by a client attempting to exploit security 3654 holes present in some servers using fixed-length buffers for reading 3655 or manipulating the Request-URI. 3657 11.1.4.11 client-error-unsupported-document-format 3659 The server is refusing to service the request because the print data 3660 is in a format, as specified in the "document-format" input parameter, 3661 that is not supported by the IPP Printer. 3663 11.1.4.12 client-error-attribute- not-supported 3665 For a Create-Job, Print-Job or Validate operation, if the IPP Printer 3666 does not support at least one attribute or one attribute value 3667 supplied in the request, the Printer shall return this status. For 3668 example, if the request requires A4 paper and that paper size is not 3669 supported by the Printer, the Printer shall return this status. 3671 Expires January 14, 1998 3672 For a Get-Jobs operation, if the IPP Printer does not support one of 3673 the requested attributes, , the Printer shall return this status. 3675 In practice, an IPP application should avoid this situation by 3676 querying an IPP Printer for its valid attributes and values before 3677 performing an operation on the Printer. 3679 11.1.5 Server Error Status Codes 3681 This class of status codes indicates cases in which the server is 3682 aware that it has erred or is incapable of performing the request. 3683 The server SHOULD include a message containing an explanation of the 3684 error situation, and whether it is a temporary or permanent condition. 3686 11.1.5.1 server-error-internal- error 3688 The server encountered an unexpected condition that prevented it from 3689 fulfilling the request. This error status code differs from "server- 3690 error-temporary-error" in that it implies a more permanent type of 3691 internal error. It also differs from "server-error-device-error" in 3692 that it implies an unexpected condition (unlike a paper-jam or out-of- 3693 toner problem which is undesirable but expected). This error status 3694 code indicates that probably some knowledgeable human intervention is 3695 required. 3697 11.1.5.2 server-error-operation-not-supported 3699 The server does not support the functionality required to fulfill the 3700 request. This is the appropriate response when the server does not 3701 recognize an operation or is not capable of supporting it. 3703 11.1.5.3 server-error-service-unavailable 3705 The server is currently unable to handle the request due to a 3706 temporary overloading or maintenance of the server. The implication 3707 is that this is a temporary condition which will be alleviated after 3708 some delay. If known, the length of the delay may be indicated in the 3709 message. If no delay is given, the IPP application should handle the 3710 response as it would for a "server-error-temporary-internal-error" 3711 response. If the condition is more permanent, the error status codes 3712 "client-error-gone" or "client-error-not-found" could be used. 3714 11.1.5.4 server-error- version-not-supported 3716 The server does not support, or refuses to support, the IPP protocol 3717 version that was used in the request message. The server is 3718 indicating that it is unable or unwilling to complete the request 3719 using the same version as supplied in the request other than with this 3721 Expires January 14, 1998 3722 error message. The response should contain a Message describing why 3723 that version is not supported and what other versions are supported by 3724 that server. 3726 A conforming IPP client shall specify the valid version (IPP 1.0)on 3727 each request. A conforming IPP server (IPP 1.0) SHALL NOT return this 3728 status code to a conforming IPP 1.0 client. An IPP server shall 3729 return this status code to a non-conforming IPP client. 3731 11.1.5.5 server-error-device-error 3733 A printer error, such as a paper jam, occurs while the IPP Printer 3734 processes a Print or Send operation. The response contains the true 3735 Job Status (the values of the "job-state" and "job-state-reasons" 3736 attributes). Additional information can be returned in the optional 3737 "job-state-message" attribute value or in the OPTIONAL status code 3738 message that describes the error in more detail. This error status 3739 code MAY be returned even though the operation was successful (the Job 3740 was submitted and is now in the 'pending' state waiting to be 3741 processed). 3743 11.1.5.6 server-error-temporary-error 3745 A temporary error such as a buffer full write error, a memory overflow 3746 (i.e. the document data exceeds the memory of the Printer), or a disk 3747 full condition, occurs while the IPP Printer processes an operation. 3748 The client MAY try the unmodified request again at some later point in 3749 time with an expectation that the temporary internal error condition 3750 may have been cleared. 3752 Expires January 14, 1998 3753 11.2 Status Keywords for IPP Operations 3755 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 3756 SU = Send-URI, V = Validate, GA = Get-Attributes, GJ = Get-Jobs 3757 GO = Get-Operations, C = Cancel-Job 3759 IPP Operations 3760 IPP Status Keyword PJ PU CJ SD SU V GA GJ GO C 3761 ------------------ -- -- -- -- -- - -- -- -- - 3762 successful-OK x x x x x x x x x x 3763 client-error-bad-request x x x x x x x x x x 3764 client-error-not-authenticated x x x x x x x x x x 3765 client-error-not-authorized x x x x x x x x x x 3766 client-error-forbidden x x x x x x x x x x 3767 client-error-not-possible x x x x x x x x x x 3768 client-error-not-found x x x x x x x x x x 3769 client-error-timeout x x x x x x x x x x 3770 client-error-gone x x x x x x x x x x 3771 client-error-request-entity-too-large x X X X X X X X X X 3772 client-error-request-URI-too-long x x x x x x x x x x 3773 client-error-unsupported-document-format x x x x 3774 client-error-attribute-value-not- x x x x 3775 supported 3776 server-error-internal-error x x x x x x x x x x 3777 server-error-service-unavailable x x x x x x x x x x 3778 server-error-timeout x x x x x x x x x x 3779 server-error-HTTP-version-not-supported x x x x x x x x x x 3780 server-error-IPP-version-not-supported x x x x x x x x x x 3781 server-error-device-error x x x x x 3782 server-error-temporary-error x x x x x 3784 12. APPENDIX C: "document-format" enum values 3786 The Printer Working Group has registered a set of type2 enum values 3787 with IANA as part of the IETF Printer MIB [1] project. The standard 3788 value assigned by the PWG starts with the four letters: "lang", in 3789 order to follow SNMP ASN.1 rules that all enum symbols SHALL start 3790 with a lower case letter. The integer enum value is used as the value 3791 the "document-format" attribute. 3793 This APPENDIX lists the document formats that are currently registered 3794 with IANA. As with all type 2 and type 3 enums, when additional enum 3795 values are registered with IANA, they may be used in IPP withhout 3796 updating this appendix. 3798 ISSUE: PDF does not have an enum value, though it has a MIME type. 3799 Adobe needs to register PDF as one of the standard values. 3801 Expires January 14, 1998 3802 The standard values registered at the current time are: 3804 'other': 1 - 3805 'langPCL': 3 - PCL. Starting with PCL version 5, HP-GL/2 is 3806 included as part of the PCL language. PCL and HP-GL/2 are 3807 registered trademarks of Hewlett-Packard Company. 3808 'langHPGL': 4 - Hewlett-Packard Graphics Language. HP-GL is a 3809 registered trademark of Hewlett-Packard Company. 3810 'langPJL': 5 - Peripheral Job Language. Appears in the data stream 3811 between data intended for a page description language. Hewlett- 3812 Packard Co. 3813 'langPS': 6 - PostScript Language (tm) Postscript - a trademark of 3814 Adobe Systems Incorporated which may be registered in certain 3815 jurisdictions 3816 'langIPDS': 7 - Intelligent Printer Data Stream Bi-directional 3817 print data stream for documents consisting of data objects (text, 3818 image, graphics, bar codes), resources (fonts, overlays) and 3819 page, form and finishing instructions. Facilitates system level 3820 device control, document tracking and error recovery throughout 3821 the print process. Pennant Systems, IBM 3822 'langPPDS': 8 - IBM Personal Printer Data Stream. Originally 3823 called IBM ASCII, the name was changed to PPDS when the Laser 3824 Printer was introduced in 1989. Lexmark International, Inc. 3825 'langEscapeP': 9 - Epson Corp. 3826 'langEpson': 10 - 3827 'langDDIF': 11 - Digital Document Interchange Format Digital 3828 Equipment Corp., Maynard MA 3829 'langInterpress': 12 - Xerox Corp. 3830 'langISO6429': 13 - ISO 6429. Control functions for Coded 3831 Character Sets (has ASCII control characters, plus additional 3832 controls for character imaging devices.) ISO Standard, Geneva, 3833 Switzerland 3834 'langLineData': 14 - line-data: Lines of data as separate ASCII or 3835 EBCDIC records and containing no control functions (no CR, LF, 3836 HT, FF, etc.). For use with traditional line printers. May use 3837 CR and/or LF to delimit lines, instead of records. See ISO 10175 3838 Document Printing Application (DPA) ISO standard, Geneva, 3839 Switzerland 3840 'langMODCA': 15 - Mixed Object Document Content Architecture 3841 Definitions that allow the composition, interchange, and 3842 presentation of final form documents as a collection of data 3843 objects (text, image, graphics, bar codes), resources (fonts, 3844 overlays) and page, form and finishing instructions. Pennant 3845 Systems, IBM 3846 'langREGIS': 16 - Remote Graphics Instruction Set, Digital 3847 Equipment Corp., Maynard MA 3848 'SCS': 17 - SNA Character String Bi-directional print data stream 3849 for SNA LU-1 mode of communications IBM 3851 Expires January 14, 1998 3853 'langSPDL': 18 - ISO 10180 Standard Page Description Language ISO 3854 Standard 3855 'langTEK4014': 19 - Tektronix Corp. 3856 'langPDS': 20 - 3857 'langIGP': 21 - Printronix Corp. 3858 'langCodeV': 22 - Magnum Code-V, Image and printer control language 3859 used to control impact/dot- matrix printers. QMS, Inc., Mobile 3860 AL 3861 'langDSCDSE': 23 - DSC-DSE: Data Stream Compatible and Emulation 3862 Bi-directional print data stream for non-SNA (DSC) and SNA LU-3 3863 3270 controller (DSE) communications IBM 3864 'langWPS': 24 - Windows Printing System, Resource based 3865 command/data stream used by Microsoft At Work Peripherals. 3866 Developed by the Microsoft Corporation. 3867 'langLN03': 25 - Early DEC-PPL3, Digital Equipment Corp. 3868 'langCCITT': 26 - 3869 'langQUIC': 27 - QUIC (Quality Information Code), Page Description 3870 Language for laser printers. Included graphics, printer control 3871 capability and emulation of other well- known printer . QMS, 3872 Inc. 3873 'langCPAP': 28 - Common Printer Access Protocol Digital Equipment 3874 Corp 3875 'langDecPPL': 29 - Digital ANSI-Compliant Printing Protocol (DEC- 3876 PPL) Digital Equipment Corp 3877 'langSimpleText': 30 - simple-text: character coded data, including 3878 NUL, CR , LF, HT, and FF control characters. See ISO 10175 3879 Document Printing Application (DPA) ISO standard, Geneva, 3880 Switzerlan 3881 'langNPAP': 31 - Network Printer Alliance Protocol (NPAP). This 3882 protocol has been superseded by the IEEE 1284.1 TIPSI standard. 3883 (ref. LangTIPSI(49)). 3884 'langDOC': 32 - Document Option Commands, Appears in the data 3885 stream between data intended for a page description . QMS, Inc 3886 'langimPress': 33 - imPRESS, Page description language originally 3887 developed for the ImageServer line of systems. A binary language 3888 providing representations for text, simple graphics (rules, 3889 lines, conic sections), and some large forms (simple bit-map and 3890 CCITT group 3/4 encoded).The language was intended to be sent 3891 over an 8-bit channel and supported early document preparation 3892 languages (e.g. TeX and TROFF). QMS, Inc. 3893 'langPinwriter': 34 - 24 wire dot matrix printer for USA, Europe, 3894 and Asia except Japan. More widely used in Germany, and some 3895 Asian countries than in US. NEC 3896 'langNPDL': 35 - Page printer for Japanese market. NEC 3897 'langNEC201PL': 36 - Serial printer language used in the Japanese 3898 market. NEC 3899 'langAutomatic': 37 - Automatic PDL sensing. Automatic sensing of 3900 the interpreter language family by the printer examining the 3902 Expires January 14, 1998 3903 document content. Which actual interpreter language families are 3904 sensed depends on the printer implementation. 3905 'langPages': 38 - Page printer Advanced Graphic Escape Set IBM 3906 Japan 3907 'langLIPS': 39 - LBP Image Processing System 3908 'langTIFF': 40 - Tagged Image File Format (Aldus) 3909 'langDiagnostic': 41 - A hex dump of the input to the interpreter 3910 'langPSPrinter': 42 - The PostScript Language used for control 3911 (with any PDLs) Adobe Systems Incorporated 3912 'langCaPSL': 43 - Canon Print Systems Language 3913 'langEXCL': 44 - Extended Command Language Talaris Systems Inc 3914 'langLCDS': 45 - Line Conditioned Data Stream Xerox Corporatio 3915 'langXES': 46 - Xerox Escape Sequences Xerox Corporation 3916 'langPCLXL': 47 - Printer Control Language. Extended language 3917 features for printing, and printer control. Technical reference 3918 manual # TBD. Hewlett-Packard Co. 3919 'langART': 48 - Advanced Rendering Tools (ART). Page Description 3920 language originally developed for the Laser Press printers. 3921 Tehnical reference manual: "ART IV Reference Manual", No F33M. 3922 Fuji Xerox Co., Ltd. 3923 'langTIPSI': 49 - Transport Independent Printer System Interface 3924 (ref. IEEE Std. 1284.1) 3925 'langPrescribe': 50 - Page description and printer control 3926 language. It can be described with ordinary ASCII characters. 3927 Technical reference manual: "PRESCRIBE II Programming Manual" 3928 'langLinePrinter': 51 - A simple-text character stream which 3929 supports the control codes LF, VT, FF and CR plus Centronics or 3930 Dataproducts Vertical Format Unit (VFU). language is commonly 3931 used on many older model line and matrix printers. 3932 'langIDP': 52 - Imaging Device Protocol Apple Computer. 3933 'langXJCL': 53 - Xerox Corp. 3935 One special value is 'langAutomatic (37)'. However a client SHALL NOT 3936 supply the value 'langAutomatic' in a create request. If the 3937 "document-format" is unknown for a certain document, the client SHALL 3938 NOT supply the attribute in the create request or the Send-Document 3939 Request. 3941 13. APPENDIX D: "media" keyword values 3943 Standard keyword values are taken from several sources. 3945 Standard values are defined (taken from ISO DPA[5] and the Printer 3946 MIB[1]): 3948 'default': The default medium for the output device 3950 Expires January 14, 1998 3951 'iso-a4-white': Specifies the ISO A4 white medium 3952 'iso-a4-colored': Specifies the ISO A4 coloured medium 3953 'iso-a4-transparent' Specifies the ISO A4 transparent medium 3954 'iso-a3-white': Specifies the ISO A3 white medium 3955 'iso-a3-colored': Specifies the ISO A3 coloured medium 3956 'iso-a5-white': Specifies the ISO A5 white medium 3957 'iso-a5-colored': Specifies the ISO A5 coloured medium 3958 'iso-b4-white': Specifies the ISO B4 white medium 3959 'iso-b4-colored': Specifies the ISO B4 coloured medium 3960 'iso-b5-white': Specifies the ISO B5 white medium 3961 'iso-b5-colored': Specifies the ISO B5 coloured medium 3962 'jis-b4-white': Specifies the JIS B4 white medium 3963 'jis-b4-colored': Specifies the JIS B4 coloured medium 3964 'jis-b5-white': Specifies the JIS B5 white medium 3965 'jis-b5-colored': Specifies the JIS B5 coloured medium 3967 The following standard values are defined for North American media: 3969 'na-letter-white': Specifies the North American letter white medium 3970 'na-letter-colored': Specifies the North American letter coloured 3971 medium 3972 'na-letter-transparent': Specifies the North American letter 3973 transparent medium 3974 'na-legal-white': Specifies the North American legal white medium 3975 'na-legal-colored': Specifies the North American legal coloured 3976 medium 3978 The following standard values are defined for envelopes: 3980 'iso-b4-envelope': Specifies the ISO B4 envelope medium 3981 'iso-b5-envelope': Specifies the ISO B5 envelope medium 3982 'iso-c3-envelope': Specifies the ISO C3 envelope medium 3983 'iso-c4-envelope': Specifies the ISO C4 envelope medium 3984 'iso-c5-envelope': Specifies the ISO C5 envelope medium 3985 'iso-c6-envelope': Specifies the ISO C6 envelope medium 3986 'iso-designated-long-envelope': Specifies the ISO Designated Long 3987 envelope medium 3988 'na-10x13-envelope': Specifies the North American 10x13 envelope 3989 medium 3990 'na-9x12-envelope': Specifies the North American 9x12 envelope 3991 medium 3992 'monarch-envelope': Specifies the Monarch envelope 3993 'na-number-10-envelope': Specifies the North American number 10 3994 business envelope medium 3995 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 3996 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 3998 Expires January 14, 1998 3999 'na-10x14-envelope': Specifies the North American 10x14 inch 4000 envelope 4001 'na-number-9-envelope': Specifies the North American number 9 4002 business envelope 4003 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 4004 'na-10x15-envelope': Specifies the North American 10x15 inch 4005 envelope 4007 The following standard values are defined for the less commonly used 4008 media (white-only): 4010 'executive-white': Specifies the white executive medium 4011 'folio-white': Specifies the folio white medium 4012 'invoice-white': Specifies the white invoice medium 4013 'ledger-white': Specifies the white ledger medium 4014 'quarto-white': Specified the white quarto medium 4015 'iso-a0-white': Specifies the ISO A0 white medium 4016 'iso-a1-white': Specifies the ISO A1 white medium 4017 'iso-a2-white': Specifies the ISO A2 white medium 4018 'iso-a6-white': Specifies the ISO A6 white medium 4019 'iso-a7-white': Specifies the ISO A7 white medium 4020 'iso-a8-white': Specifies the ISO A8 white medium 4021 'iso-a9-white': Specifies the ISO A9 white medium 4022 'iso-10-white': Specifies the ISO A10 white medium 4023 'iso-b0-white': Specifies the ISO B0 white medium 4024 'iso-b1-white': Specifies the ISO B1 white medium 4025 'iso-b2-white': Specifies the ISO B2 white medium 4026 'iso-b3-white': Specifies the ISO B3 white medium 4027 'iso-b6-white': Specifies the ISO B6 white medium 4028 'iso-b7-white': Specifies the ISO B7 white medium 4029 'iso-b8-white': Specifies the ISO B8 white medium 4030 'iso-b9-white': Specifies the ISO B9 white medium 4031 'iso-b10-white': Specifies the ISO B10 white medium 4032 'jis-b0-white': Specifies the JIS B0 white medium 4033 'jis-b1-white': Specifies the JIS B1 white medium 4034 'jis-b2-white': Specifies the JIS B2 white medium 4035 'jis-b3-white': Specifies the JIS B3 white medium 4036 'jis-b6-white': Specifies the JIS B6 white medium 4037 'jis-b7-white': Specifies the JIS B7 white medium 4038 'jis-b8-white': Specifies the JIS B8 white medium 4039 'jis-b9-white': Specifies the JIS B9 white medium 4040 'jis-b10-white': Specifies the JIS B10 white medium 4042 The following standard values are defined for engineering media: 4044 'a': Specifies the engineering A size medium 4046 Expires January 14, 1998 4047 'b': Specifies the engineering B size medium 4048 'c': Specifies the engineering C size medium 4049 'd': Specifies the engineering D size medium 4050 'e': Specifies the engineering E size medium 4052 The following standard values are defined for input-trays (from ISO 4053 DPA and the Printer MIB): 4055 'top': The top input tray in the printer. 4056 'middle': The middle input tray in the printer. 4057 'bottom': The bottom input tray in the printer. 4058 'envelope': The envelope input tray in the printer. 4059 'manual': The manual feed input tray in the printer. 4060 'large-capacity': The large capacity input tray in the printer. 4061 'main': The main input tray 4062 'side': The side input tray 4064 The following standard values are defined for media sizes (from ISO 4065 DPA): 4067 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 4068 in ISO 216 4069 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 4070 ISO 216 4071 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 4072 ISO 216 4073 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 4074 ISO 216 4075 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 4076 ISO 216 4077 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 4078 ISO 216 4079 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 4080 ISO 216 4081 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 4082 ISO 216 4083 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 4084 ISO 216 4085 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 4086 ISO 216 4087 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 4088 ISO 216 4089 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 4090 in ISO 216 4091 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 4092 in ISO 216 4094 Expires January 14, 1998 4096 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 4097 ISO 216 4098 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 4099 ISO 216 4100 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 4101 ISO 216 4102 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 4103 ISO 216 4104 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 4105 ISO 216 4106 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 4107 ISO 216 4108 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 4109 ISO 216 4110 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 4111 ISO 216 4112 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 4113 ISO 216 4114 'na-letter': Specifies the North American letter size: 8.5 inches 4115 by 11 inches 4116 'na-legal': Specifies the North American legal size: 8.5 inches by 4117 14 inches 4118 'executive': Specifies the executive size (7.25 X 10.5 in) 4119 'folio': Specifies the folio size (8.5 X 13 in) 4120 'invoice': Specifies the invoice size (5.5 X 8.5 in) 4121 'ledger': Specifies the ledger size (11 X 17 in) 4122 'quarto': Specifies the quarto size (8.5 X 10.83 in) 4123 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 4124 ISO 269 4125 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 4126 ISO 269 4127 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 4128 ISO 269 4129 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 4130 ISO 269 4131 'iso-designated-long': Specifies the ISO Designated Long size: 110 4132 mm by 220 mm as defined in ISO 269 4133 'na-10x13-envelope': Specifies the North American 10x13 size: 10 4134 inches by 13 inches 4135 'na-9x12-envelope': Specifies the North American 9x12 size: 9 4136 inches by 12 inches 4137 'na-number-10-envelope': Specifies the North American number 10 4138 business envelope size: 4.125 inches by 9.5 inches 4139 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 4140 size 4141 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 4142 size 4144 Expires January 14, 1998 4146 'na-10x14-envelope': Specifies the North American 10x14 inch 4147 envelope size 4148 'na-number-9-envelope': Specifies the North American number 9 4149 business envelope size 4150 'na-6x9-envelope': Specifies the North American 6x9 envelope size 4151 'na-10x15-envelope': Specifies the North American 10x15 envelope 4152 size 4153 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 4154 in) 4155 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 4156 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 4157 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 4158 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 4159 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 4160 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 4161 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 4162 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 4163 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 4164 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 4165 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 4167 Expires January 14, 1998