idnits 2.17.1 draft-ietf-ipp-model-04.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-03-29) 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 expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of current Internet-Drafts. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 91 longer pages, the longest (page 2) being 59 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 92 pages 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 2012 instances of too long lines in the document, the longest one being 7 characters in excess of 72. ** There are 3 instances of lines with control characters in the document. ** The abstract seems to contain references ([2], [20], [21], [3], [4], [22], [5], [23], [6], [24], [25], [7], [30], [8], [31], [26], [9], [32], [27], [10], [33], [28], [29], [11], [1]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 35 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. == There are 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 150 has weird spacing: '...(1setOf type2...' == Line 446 has weird spacing: '... any indi...' == Line 841 has weird spacing: '...est and creat...' == Line 925 has weird spacing: '...tion is used ...' == Line 1900 has weird spacing: '...d to be count...' == (10 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 or from 'pending' to 'pending-held'). Problems also can include any of the "job-state-reasons" or "printer-state-reason" values. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: 'none': The Printer SHALL not include any embellishments and SHALL place one logical page on a single side of an instance of the selected medium without any translation, scaling, or rotation. 'one': The Printer SHALL place one logical page on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). 'two': The Printer SHALL place two logical pages on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). 'four': The Printer SHALL place four logical pages on a single side of an instance of the selected medium (MAY add some sort of translation, scaling, or rotation). == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: 'media-needed': A tray has run out of media. 'media-jam': The printer has a media jam. 'paused': Someone has paused the Printer. In this state, a Printer SHALL not produce printed output, but it SHALL perform other operations requested by a client. If a Printer had been printing a job when the Printer was paused, the Printer SHALL resume printing that job when the Printer is no longer paused and leave no evidence in the printed output of such a pause. 'shutdown': Someone has removed a Printer from service, and it may be powered down or physical removed. In this state, a Printer SHALL not produce printed output, and unless the Printer is realized by a print server that is still active, the Printer SHALL perform no other operations requested by a client, including returning this value. If a Printer had been printing a job when it was shutdown, the Printer need not resume printing that job when the Printer is no longer shutdown. If the Printer resumes printing such a job, it may leave evidence in the printed output of such a shutdown, e.g. the part printed before the shutdown may be printed a second time after the shutdown. == 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 25, 1997) is 9744 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Missing reference section? '20' on line 3138 looks like a reference -- Missing reference section? '11' on line 3135 looks like a reference -- Missing reference section? '23' on line 3513 looks like a reference -- Missing reference section? '5' on line 4078 looks like a reference -- Missing reference section? '1' on line 4079 looks like a reference -- Missing reference section? '29' on line 3163 looks like a reference -- Missing reference section? '27' on line 3157 looks like a reference -- Missing reference section? '26' on line 3154 looks like a reference -- Missing reference section? '28' on line 3160 looks like a reference -- Missing reference section? '31' on line 3169 looks like a reference -- Missing reference section? '32' on line 3171 looks like a reference -- Missing reference section? '33' on line 3173 looks like a reference -- Missing reference section? '30' on line 3166 looks like a reference -- Missing reference section? '22' on line 3145 looks like a reference -- Missing reference section? '24' on line 3149 looks like a reference -- Missing reference section? '2' on line 3108 looks like a reference -- Missing reference section? '3' on line 3111 looks like a reference -- Missing reference section? '4' on line 3114 looks like a reference -- Missing reference section? '6' on line 3119 looks like a reference -- Missing reference section? '7' on line 3122 looks like a reference -- Missing reference section? '8' on line 3125 looks like a reference -- Missing reference section? '9' on line 3129 looks like a reference -- Missing reference section? '10' on line 3132 looks like a reference -- Missing reference section? '21' on line 3142 looks like a reference -- Missing reference section? '25' on line 3285 looks like a reference Summary: 11 errors (**), 0 flaws (~~), 17 warnings (==), 29 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT R. deBry 2 draft-ietf-ipp-model-04.txt IBM Corporation 3 T. Hastings 4 Xerox Corporation 5 R. Herriot 6 Sun Microsystems 7 S. Isaacson 8 Novell, Inc. 9 P. Powell 10 San Diego State University 11 July 25, 1997 13 Internet Printing Protocol/1.0: Model and Semantics 15 Status of this Memo 17 This document is an Internet-Draft. Internet-Drafts are working 18 documents of the Internet Engineering Task Force (IETF), its areas, 19 and its working groups. Note that other groups may also distribute 20 working documents as Internet-Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress". 27 To learn the current status of any Internet-Draft, please check the 28 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 29 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 30 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 31 ftp.isi.edu (US West Coast). 33 Abstract 35 This document is one of a set of documents, which together describe 36 all aspects of a new Internet Printing Protocol (IPP). IPP is an 37 application level protocol that can be used for distributed printing 38 using Internet tools and technology. The protocol is heavily 39 influenced by the printing model introduced in the Document Printing 40 Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both 41 end user and administrative features, IPP version 1.0 is focused only 42 on end user functionality. 44 The full set of IPP documents includes: 46 Expires January 25, 1998 47 Internet Printing Protocol: Requirements 48 Internet Printing Protocol/1.0: Model and Semantics 49 Internet Printing Protocol/1.0: Security 50 Internet Printing Protocol/1.0: Protocol Specification 51 Internet Printing Protocol/1.0: Directory Schema 53 The requirements document takes a broad look at distributed printing 54 functionality, and it enumerates real-life scenarios that help to 55 clarify the features that need to be included in a printing protocol 56 for the Internet. It identifies requirements for three types of 57 users: end users, operators, and administrators. The requirements 58 document calls out a subset of end user requirements that MUST be 59 satisfied in the first version of IPP. Operator and administrator 60 requirements are out of scope for v1.0. The model and semantics 61 document describes a simplified model with abstract objects, their 62 attributes, and their operations. The model introduces a Printer 63 object and a Job object. The Job object supports multiple documents 64 per job. The security document covers potential threats and proposed 65 counters to those threats. The protocol specification is formal 66 document which incorporates the ideas in all the other documents into 67 a concrete mapping using clearly defined data representations and 68 transport protocol mappings that real implementers can use to develop 69 interoperable client and server side components. Finally, the 70 directory schema document shows a generic schema for directory service 71 entries that represent instances of IPP Printers. 73 This document is the "Internet Printing Protocol/1.0: Model and 74 Semantics" document. 76 Expires January 25, 1998 77 Table of Contents 79 1. Simplified Printing Model......................................7 80 2. IPP Objects....................................................9 81 2.1 Printer Object .............................................10 82 2.2 Job Object .................................................12 83 2.3 Document Object ............................................12 84 2.4 Object Relationships .......................................12 85 2.5 Object Identity ............................................13 86 3. IPP Operations................................................13 87 3.1 General Semantics ..........................................14 88 3.1.1 Operation Status Codes and Messages......................14 89 3.1.2 Security and Query Operations............................14 90 3.1.3 Job Creation Operations..................................15 91 3.2 Printer Operations .........................................16 92 3.2.1 Get-Operations Operation.................................16 93 3.2.1.1 Get-Operations Request ................................16 94 3.2.1.2 Get-Operations Response ...............................16 95 3.2.2 Print-Job Operation......................................17 96 3.2.2.1 Print-Job Request .....................................17 97 3.2.2.2 Print-Job Response ....................................20 98 3.2.3 Print-URI Operation......................................20 99 3.2.4 Validate-Job Operation...................................21 100 3.2.5 Create-Job Operation.....................................21 101 3.2.6 Get-Attributes Operation.................................21 102 3.2.6.1 Get-Attributes Request ................................22 103 3.2.6.2 Get-Attributes Response ...............................23 104 3.2.7 Get-Jobs Operation.......................................23 105 3.2.7.1 Get-Jobs Request ......................................24 106 3.2.7.2 Get-Jobs Response .....................................24 107 3.3 Job Operations .............................................25 108 3.3.1 Send-Document Operation..................................25 109 3.3.1.1 Send-Document Request .................................25 110 3.3.1.2 Send-Document Response ................................25 111 3.3.2 Send-URI Operation.......................................25 112 3.3.3 Cancel Job Operation.....................................26 113 3.3.3.1 Cancel-Job Request ....................................26 114 3.3.3.2 Cancel-Job Response ...................................26 115 3.3.4 Get-Attributes Operation.................................26 116 3.3.4.1 Get-Attributes Request ................................26 117 4. Object Attributes.............................................27 118 4.1 Attribute Syntaxes .........................................27 119 4.1.1 Attribute Extensibility..................................29 120 4.2 Job Template Attributes ....................................31 121 4.2.1 job-sheets (type4 keyword)...............................34 122 4.2.2 notify-events (1setOf type2 keyword).....................35 123 4.2.3 notify-addresses (1setOf uri)............................35 124 4.2.4 job-priority (integer(1:100))............................36 126 Expires January 25, 1998 127 4.2.5 job-hold-until (type4 keyword)...........................36 128 4.2.6 multiple-document-handling (type2 keyword)...............37 129 4.2.7 media (type4 keyword)....................................37 130 4.2.8 number-up (type3 keyword)................................38 131 4.2.9 sides (type2 keyword)....................................38 132 4.2.10 printer-resolution (resoultion)..........................39 133 4.2.11 print-quality (type2 enum)...............................39 134 4.2.12 finishings (1setOf type2 enum)...........................39 135 4.2.13 copies (integer(1:2**31 - 1))............................40 136 4.2.14 document-format (type2 enum).............................40 137 4.2.15 compression (type3 keyword)..............................41 138 4.2.16 job-k-octets (integer(0:2**31 - 1))......................41 139 4.2.17 job-impressions (integer(0:2**31 - 1))...................41 140 4.2.18 job-media-sheets (integer(0:2**31 - 1))..................41 141 4.3 Job Description Attributes .................................42 142 4.3.1 job-uri (uri)............................................43 143 4.3.2 job-uri-user (uri).......................................44 144 4.3.3 job-name (name)..........................................44 145 4.3.4 job-originating-user (name)..............................44 146 4.3.5 job-originating-host (name)..............................44 147 4.3.6 user-human-language (human-language).....................44 148 4.3.7 user-content-char-set (char-set).........................45 149 4.3.8 job-state (type1 enum)...................................45 150 4.3.9 job-state-reasons (1setOf type2 keyword)................47 151 4.3.10 job-state-message (text).................................49 152 4.3.11 output-device-assigned (name)............................49 153 4.3.12 time-since-pending (integer).............................49 154 4.3.13 time-since-processing (integer)..........................49 155 4.3.14 time-since-completed (integer)...........................49 156 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))........49 157 4.3.16 job-message-from-operator (text).........................50 158 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))............50 159 4.3.18 job-impressions-completed (integer(0:2**31 - 1))........50 160 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))........50 161 4.4 Document Attributes ........................................50 162 4.4.1 document-name (name).....................................51 163 4.4.2 document-format (type2 enum).............................51 164 4.4.3 document-uri (uri).......................................51 165 4.5 Printer Description Attributes .............................51 166 4.5.1 printer-uri (uri)........................................53 167 4.5.2 printer-uri-user (uri)...................................53 168 4.5.3 printer-name (name)......................................53 169 4.5.4 printer-location (text)..................................53 170 4.5.5 printer-description (text)...............................53 171 4.5.6 printer-more-info-site (uri).............................53 172 4.5.7 printer-driver-installer (uri)...........................54 173 4.5.8 printer-make-and-model (text)............................54 174 4.5.9 printer-more-info-manufacturer (uri).....................54 176 Expires January 25, 1998 177 4.5.10 printer-state (type1 enum)...............................54 178 4.5.11 printer-state-reasons (1setOf type2 keyword).............55 179 4.5.12 printer-state-message (text).............................57 180 4.5.13 printer-is-accepting-jobs (boolean)......................57 181 4.5.14 queued-job-count (integer(0:2**31 - 1))..................58 182 4.5.15 printer-message-from-operator (text).....................58 183 4.5.16 printer-human-language (human-language)..................58 184 4.5.17 printer-human-language-supported (1setOf human-language).58 185 4.5.18 printer-content-char-set (char-set)......................58 186 4.5.19 printer-content-char-set-supported (1setOf char-set).....58 187 4.5.20 color-supported (boolean)................................58 188 4.5.21 pdl-override (type2 keyword).............................58 189 4.5.22 Security Related Attributes..............................59 190 4.5.22.1 message-protection-supported (keyword) ................60 191 4.5.22.2 authentication-authorization-supported (keyword) ......60 192 4.5.23 best-effort (1setOf boolean).............................60 193 5. Conformance...................................................61 194 5.1 Conditionally Mandatory ....................................61 195 5.2 Client Conformance Requirements ............................62 196 5.3 Printer Object Conformance Requirements ....................62 197 5.3.1 Objects..................................................62 198 5.3.2 Operations...............................................63 199 5.3.3 Attributes...............................................63 200 5.3.4 Printer extensions.......................................64 201 5.3.5 Attribute Syntaxes.......................................64 202 5.4 Security Conformance Requirements ..........................64 203 6. IANA Considerations (registered and private extensions).......65 204 6.1 Typed Extensions ...........................................65 205 6.1.1 Type1....................................................65 206 6.1.2 Type2....................................................65 207 6.1.3 Type3....................................................66 208 6.1.4 Type4....................................................66 209 6.2 Registration of MIME types/sub-types for document-formats ..66 210 7. Security Considerations.......................................66 211 8. References....................................................67 212 9. Author's Address..............................................68 213 10. APPENDIX A: Terminology.......................................71 214 10.1 Conformance Terminology ....................................71 215 10.1.1 MUST.....................................................71 216 10.1.2 MUST NOT.................................................71 217 10.1.3 SHOULD...................................................71 218 10.1.4 SHOULD NOT...............................................71 219 10.1.5 MAY......................................................71 220 10.1.6 CONDITIONALLY MANDATORY..................................72 221 10.1.7 NEED NOT.................................................73 222 10.2 Model Terminology ..........................................74 223 10.2.1 Keyword..................................................74 224 10.2.2 Parameters...............................................74 226 Expires January 25, 1998 227 10.2.2.1 Parameter Name ........................................74 228 10.2.2.2 Parameter Value .......................................74 229 10.2.2.3 Parameter Syntax ......................................74 230 10.2.3 Attributes...............................................75 231 10.2.3.1 Attribute Name ........................................75 232 10.2.3.2 Attribute Group Name ..................................75 233 10.2.3.3 Attribute Value .......................................75 234 10.2.3.4 Attribute Syntax ......................................76 235 10.2.4 Supports.................................................76 236 11. APPENDIX B: Status Codes.....................................77 237 11.1 Status Codes (type2 keyword) ...............................78 238 11.1.1 Informational............................................78 239 11.1.2 Successful Status Codes..................................78 240 11.1.2.1 successful-ok .........................................78 241 11.1.2.2 successful-ok-ignored-or-substituted-attributes .......78 242 11.1.3 Redirection Status Codes.................................78 243 11.1.4 Client Error Status Codes................................79 244 11.1.4.1 client-error-bad-request ..............................79 245 11.1.4.2 client-error-forbidden ................................79 246 11.1.4.3 client-error-not-authenticated ........................79 247 11.1.4.4 client-error-not-authorized ...........................79 248 11.1.4.5 client-error-not-possible .............................80 249 11.1.4.6 client-error-timeout ..................................80 250 11.1.4.7 client-error-not-found ................................80 251 11.1.4.8 client-error-gone .....................................80 252 11.1.4.9 client-error-request-entity-too-large .................81 253 11.1.4.10 client-error-request-URI-too-long .....................81 254 11.1.4.11 client-error-unsupported-document-format ..............81 255 11.1.4.12 client-error-attribute-not-supported ..................81 256 11.1.5 Server Error Status Codes................................82 257 11.1.5.1 server-error-internal- error ..........................82 258 11.1.5.2 server-error-operation-not-supported ..................82 259 11.1.5.3 server-error-service-unavailable ......................82 260 11.1.5.4 server-error-version-not-supported ....................82 261 11.1.5.5 server-error-device-error .............................83 262 11.1.5.6 server-error-temporary-error ..........................83 263 11.2 Status Keywords for IPP Operations .........................84 264 12. APPENDIX C: "document-format" enum values.....................84 265 13. APPENDIX D: "media" keyword values...........................88 267 Expires January 25, 1998 268 1. Simplified Printing Model 270 In order to a achieve its goal of realizing a workable printing 271 protocol for the Internet, the Internet Printing Protocol (IPP) is 272 based on a simplified printing model which abstracts the many 273 components of real world printing solutions. The Internet is a 274 distributed computing environment where requesters of print services 275 (clients, applications, PC drivers, etc.) cooperate and interact with 276 print service providers. This model and semantics document describes 277 a simple, abstract model for IPP even though the underlying 278 configurations may be complex "n-tier" client/server systems. An 279 important simplifying step in the IPP model is to expose only the key 280 objects and interfaces required for printing. The model does not 281 include features, interfaces, and relationships that are beyond the 282 scope of IPP [20]. 284 The IPP model encapsulates the important components of distributed 285 printing into three object types: 287 - Printer (Section 0) 288 - Job (Section 2.2) 289 - Document (Section 2.3) 291 Each object type has an associated set of operations (see section 3) 292 and attributes (see section 4). The remainder of this document uses 293 specific model terminology (such as "attributes", "supports", 294 "keywords", and "parameters") and conformance terminology (such as 295 "MANDATORY", "MUST", and "OPTIONAL"). Appendix A defines these terms 296 as they relate to this document. 298 It is important, however, to understand that in real system 299 implementations (which lie underneath the abstracted IPP model), there 300 are other components of a print service which are not explicitly 301 defined in the IPP model. The following figure illustrates where IPP 302 fits with respect to these other components. 304 Expires January 25, 1998 305 +--------------+ 306 | Application | 307 o +. . . . . . . | 308 \|/ | Spooler | 309 / \ +. . . . . . . | +---------+ 310 End-User | Print Driver |---| File | 311 +-----------+ +-----+ +------+-------+ +----+----+ 312 | Browser | | GUI | | | 313 +-----+-----+ +--+--+ | | 314 | | | | 315 | +---+------------+---+ | 316 N D S | | IPP Client |------------+ 317 O I E | +---------+----------+ 318 T R C | | 319 I E U | 320 F C R -------------- Transport ------------------ 321 I T I 322 C O T | --+ 323 A R Y +--------+--------+ | 324 T Y | IPP Server | | 325 I +--------+--------+ | 326 O | | 327 N +-----------------+ | IPP Printer 328 | Print Service | | 329 +-----------------+ | 330 | --+ 331 +-----------------+ 332 | Output Device(s)| 333 +-----------------+ 335 An IPP Printer encapsulates the functions normally associated with 336 physical output devices along with the spooling, scheduling and 337 multiple device management functions often associated with a print 338 server. IPP Printers are optionally registered as entries in a 339 directory where end users find and select them based on some sort of 340 filtered and context based searching mechanism. The directory is used 341 to store relatively static information about the Printer, allowing end 342 users to search for and find Printers that match their search criteria 343 (name, context, printer capabilities, etc.). The more dynamic 344 information associated with a Printer includes state, currently loaded 345 and ready media, number of jobs at the Printer, errors, warnings, and 346 so forth. 348 IPP clients implement the IPP protocol on the client side, and give 349 end users (or programs) the ability to query an IPP Printer and submit 350 and manage their print jobs. An IPP server is just that part of the 351 IPP Printer that implements the server-side protocol. The rest of the 353 Expires January 25, 1998 354 IPP Printer implements the application semantics of the print service 355 itself. The IPP Printer may be embedded in an output device or may be 356 implemented on a host on the network that communicates with the output 357 device. 359 When a job is submitted to the Printer, the Printer creates a Job 360 object. The end user then interacts with this new Job to query its 361 status and monitor the progress of the job. End users may also cancel 362 the Job. The end user is able to register to receive certain events 363 that are then routed using the specified notification service(s). 365 2. IPP Objects 367 The IPP model introduces objects of type Printer, Job, and Document. 368 Each object type is defined as a set of possible attributes that may 369 be supported by each instance of an object of that type. The 370 attributes (and values) supported by each object instance describe the 371 implementation (that is the realizable features, functions, and 372 characteristics either in software or hardware) for that object 373 instance. For example, the object type "Printer" is defined as set of 374 attributesthat each instance of a Printer object might potentially 375 support. In the same manner, the object type "Job" is defined as a 376 set of attributes that are potentially supported by each instance of a 377 Job object. 379 Each attribute included in the set of attributes defining an object 380 type is labeled as: 382 - "MANDATORY": each object instance MUST support the attribute. 383 - "OPTIONAL": each object instance MAY support the attribute. 384 - "CONDITIONALLY MANDATORY": whether or not the object instance 385 supports the attribute is determined by a semantic condition. 386 For example, a Printer object implementation MUST support the 387 "job-priority-supported" attribute if the implementation knows 388 about and is able to realize multiple levels of job priorities. 389 An administrator may set the values to be somewhat more 390 restrictive that what a given implementation might allow, however 391 the attribute MUST still be supported. 393 There is no such similar labeling of attribute values. However, if an 394 implementation supports an attribute, it must support any non-empty 395 subset of the possible values for that attribute. 397 Expires January 25, 1998 398 2.1 Printer Object 400 A major component of the IPP model is the Printer object. An instance 401 of a Printer object implements the IPP protocol. Using the protocol, 402 end users may query the attributes of the Printer, submit Jobs to the 403 Printer, determine subsequent states of submitted and queued Jobs, and 404 cancel Jobs (section 3 describes each of the Printer specific 405 operations in detail). The actual implementation components behind 406 the Printer abstraction may take on different forms and different 407 configurations. However, the model abstraction allows the details of 408 the configuration of real components to remain transparent to the end 409 user. 411 The capabilities and state of an IPP Printer are described by its 412 attributes. Printer attributes are grouped as follows: 414 "job-template" attributes (section 4.2) 415 "printer-description" attributes (section 4.5) 417 Since a Printer object is an abstraction of a generic document output 418 device and print service provider, an IPP Printer object could be used 419 to represent any real or virtual device with semantics consistent with 420 thePrinter object, such as a fax-out device, an imager, or even a CD 421 writer. 423 Some examples of configurations supporting a Printer object include: 425 1) An output device, with no spooling capabilities 426 2) An output device, with a built-in spooler 427 3) A print server supporting IPP with one or more associated output 428 devices 429 3a) The associated output devices might or might not be capable 430 of spooling jobs 431 3b) The associated output devices might or might not support IPP 433 See the following figures for some examples on how to view IPP Printer 434 objects implemented on top of various print system configurations. 435 The embedded case below represents configurations 1 and 2. The hosted 436 and fan-out figures below represent configuration 3. 438 Expires January 25, 1998 439 Legend: 441 ##### indicates a Printer object which is 442 either embedded in an output device or is 443 hosted in a server. The implementation 444 might or might not be capable of queuing/spooling. 446 any indicates any network protocol or direct 447 connect, including IPP 449 embedded printer: 450 output device 451 +---------------+ 452 O +--------+ | ########### | 453 /|\ | client |------------IPP------------># Printer # | 454 / \ +--------+ | # Object # | 455 | ########### | 456 +---------------+ 458 hosted printer: 459 +---------------+ 460 O +--------+ ########### | | 461 /|\ | client |--IPP--># Printer #-any->| output device | 462 / \ +--------+ # Object # | | 463 ########### +---------------+ 465 +---------------+ 466 fan out: | | 467 +-->| output device | 468 any/ | | 469 O +--------+ ########### / +---------------+ 470 /|\ | client |-IPP-># Printer #--* 471 / \ +--------+ # Object # \ +---------------+ 472 ########### any\ | | 473 +-->| output device | 474 | | 475 +---------------+ 477 It is assumed that URIs for IPP Printers are available to end users or 478 programs that wish to interact with the Printer. Although NOT 479 MANDATORY, it is RECOMMENDED that Printers be registered in a 480 directory service which end users and programs can interrogate. 481 "Internet Printing Protocol: Directory Schema"[24] defines the 483 Expires January 25, 1998 484 attributes to be associated with a Printer entry in a directory 485 service. 487 2.2 Job Object 489 A Job object is used to model a job. A Job can contain one or more 490 Documents. The information required to create a Job object is sent in 491 a create request from the end user via an IPP client to an IPP 492 Printer. Section 3 describes each of the Job specific operations in 493 detail. 495 The characteristics and state of an IPP Job are described by its 496 attributes. Job attributes are grouped as follows: 498 "job-template" attributes (optionally supplied by the client/end 499 user, section 4.2) 500 "job-description" attributes (set by the Printer, section 4.3) 502 2.3 Document Object 504 A Document object consists of either printable data or a reference 505 (URI) to printable data and a set of Document Attributes (see section 506 4.4). These Document attributes only describe the data to be printed; 507 they do not include any specialized document processing instructions. 508 All document processing instructions are included as Job level 509 attributes (called Job Template attributes), and they apply equally 510 to all Documents within a Job. 512 Currently there are no operations defined for Document objects. 514 2.4 Object Relationships 516 Instances of objects within the system have relationships that MUST be 517 maintained persistently along with the persistent storage of the 518 object attributes. An instance of a Printer object usually represents 519 one or more output devices. A Printer object may represent a logical 520 device which "processes" jobs but never actually uses a physical 521 output device to put marks on paper (for example a Web page publisher 522 or an interface into an online document archive or repository). A 523 Printer can contain zero or more Job objects. An instance of a Job 524 object is contained in exactly one Printer object (the same document 525 data could be sent to a the same or a different Printer, but the 526 corresponding Job object would be an identical, but different Job 528 Expires January 25, 1998 529 object). A Job object contains one or more Documents. If the 530 Document is simply a reference to some print data stream, the 531 referenced document may be used in multiple Documents in the same Job 532 or even in different Jobs, though each Document contains its own copy 533 of the reference. If the Document is not just a reference, but an 534 actual stream of print data, the stream is contained in only one 535 Document, although there can be copies of the same document data in 536 other Documents in the same or different Jobs. 538 2.5 Object Identity 540 All instances of Printer and Job objects have a URI so that they can 541 persistently and unambiguously referenced. The IPP model requires 542 that these values be URIs as defined by RFC 1738 [11] and RFC 1808. 543 In addition to an identifier attribute, instances of Printer and Job 544 objects may have a name. An object name need not be unique across all 545 instances of all objects. The Printer name is chosen and set by an 546 administrator. If not supplied by the client, the Printer creates the 547 Job name. In all cases, the name only has local meaning, and it is 548 not constrained to be unique. 550 To summarize, each instance of Printer and Job objects will have two 551 identifying attributes: 553 - "xxx-uri": The unique identifier for this object instance 554 - "xxx-name": The non unique name for this object instance 556 Document objects sent to an IPP Printer only have names, no 557 identifiers. The "document-name" attribute is used to store the name 558 of the Document. This name is just of interest within the context of 559 a Job; it need not be unique. 561 If Documents are printed by reference, the corresponding document 562 object contains a "document-uri" attribute, but the value of this 563 attribute is a reference to the document data to be printed; it is not 564 the unique identifier of the Document object itself. 566 3. IPP Operations 568 Jobs and Printers each have a set of associated operations. 569 Operations consist of requests and responses. When a client 570 communicates with an IPP object, it issues an operation request to the 571 URI for that object. Each request carries along with it the input 572 parameters and any data required to perform the operation. Each 573 request requires a response from the object indicating success or 574 failure of the operation including output parameters, status codes, 576 Expires January 25, 1998 577 and/or status messages. The representation and encoding of IPP 578 operations, parameters, and attributes is described in "Internet 579 Printing Protocol: Protocol Specification" [23]. This section of this 580 document describes the IPP operations in terms of their contents and 581 semantics including both the request and the response for each 582 operation. 584 The Printer operations are fully defined in section ??: 586 Get-Operations (section 3.2.1) 587 Print-Job (section 3.2.2) 588 Print-URI (section 3.2.3) 589 Validate-Job (section 3.2.4) 590 Create-Job (section 3.2.5) 591 Get-Jobs (section 3.3.3) 592 Get-Attributes (section 3.3.4) 594 The Job operations are fully defined in section ??: 596 Send-Document (section 3.3.1) 597 Send-URI (section 3.3.2) 598 Cancel-Job (section 3.3.3) 599 Get-Attributes (section 3.3.4) 601 There are no Document operations. 603 3.1 General Semantics 605 3.1.1 Operation Status Codes and Messages 607 Every operation response returns a MANDATORY status code and an 608 OPTIONAL status message. A status code provides information on the 609 processing of a request. A message provides a short textual 610 description of the status of the operation. The status code is 611 intended for use by automata and a status message is intended for the 612 human user. An IPP application (i.e. a browser, GUI, print driver or 613 gateway) is not required to examine or display the message. Status 614 codes and suggested corresponding status messages are described in 615 section 11.. In most cases, if the status code indicates an error (the 616 code belongs to either the "client-error" or the "server-error" 617 group), there are additional output parameters (such as "unsupported- 618 attributes") returned that are not returned in the successful case. 620 3.1.2 Security and Query Operations 622 In many of these IPP operations, a client supplies a list of 623 attributes to be returned in the response. A Printer may be 625 Expires January 25, 1998 626 configured, for security reasons, not to return all attributes that a 627 client requests. It may even return none of the requested attributes. 628 In such cases, the status returned is the same as if the Printer had 629 returned all requested attributes. The client cannot tell by such a 630 response whether the requested attribute was present or absent on the 631 Printer. 633 3.1.3 Job Creation Operations 635 In order to create a new Job object, a client issues a create request. 636 A create request any one of following three operation requests: 638 - The Print-Job operation: This operation is used by a client that 639 wants to create a Job with only a single Document. The operation 640 allows for the client to "push" the document data to the Printer 641 by including the document data in the request itself. 643 - The Print-URI operation: This operation is used by a client that 644 wants to create a Job with only a single Document, however, the 645 client wants the Printer to "pull" the document data. In this 646 case, the client includes only a URI reference to the document 647 data (not the document data itself). 649 - The Create-Job operation: This operation is used by a client 650 that wants to create a Job with multiple Documents. This 651 operation is followed by an arbitrary number of Send-Document or 652 Send-URI operations (each creating another Document for this 653 Job). The Send-Document operation includes the document data 654 with the operation request (client "pushes" the document data to 655 the printer), and the Send-URI operation includes only a URI 656 reference to the document data (the Printer "pulls" the document 657 data from the referenced location). The last Send-Document or 658 Send-URI request includes a parameter indicating that this is the 659 last Document for this Job. 661 A Create-Job operation followed by only one Send-Document operation is 662 semantically equivalent to a Print-Job operation, however, for 663 performance reasons, the client SHOULD use the Print-Job operation for 664 all single Document Jobs. Throughout this model specification, the 665 term "create request" is used to refer to any of these three operation 666 requests. 668 Also, as the Printer evaluates input parameters and Job Template 669 attributes in a create request at the time the Job is first submitted, 670 it makes a decision whether or not to accept or reject the request and 671 create the Job object. At job submission time, the Printer does not 672 need to validate the document data or the URI reference to document 674 Expires January 25, 1998 675 data (in the case of a Print-URI). However, at job processing time, 676 the Printer might realize any of the following: 678 - there an error in the document data and it can not be parsed 679 - the document data is in an unsupported format 680 - the URI reference is incomplete or incorrect 681 - the URI reference is no longer valid (i.e., the server hosting 682 the data might be down) 683 - or any other job processing error 685 In this case, the Printer, depending on the error, can set the "job- 686 state", "job-state-reasons", or "job-state-message" to some 687 appropriate value. 689 3.2 Printer Operations 691 3.2.1 Get-Operations Operation 693 The client uses this operation to query a specific implementation for 694 a list of supported operations. All implementations MUST support this 695 operation because some of the IPP operations defined in this 696 specification are OPTIONAL. 698 3.2.1.1 Get-Operations Request 700 The Get-Operations Request has no input parameters. 702 3.2.1.2 Get-Operations Response 704 The Printer returns the following output parameters as part of the 705 Get-Operations Response: 707 Target Printer ("printer-uri"): 708 The URI of the target printer. 710 Supported Operations ("supported-operations"): 711 A list of the operations that this implementation supports 712 (including all MANDATORY operations). The values are taken from 713 the following set: 'Get-Operations', 'Print-Job', 'Print-URI', 714 'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get-Attributes', 715 'Send-Document', 'Send-URI', and 'Cancel-Job'. 717 Note: Since this list contains all MANDATORY operations ('Get- 718 Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get- 719 Attributes', and 'Cancel-Job'), this output parameter will never 720 be empty. 722 Expires January 25, 1998 724 3.2.2 Print-Job Operation 726 When an end user desires to submit a print job with only one Document, 727 the client sends a Print-Job Request to a Printer and receives a 728 Print-Job Response from that Printer. The information in a Print-Job 729 Request (along with any default information associated with the 730 Printer) is sufficient for the Printer to create a Job object and then 731 process that Job. A Print-Job operation differs from a Print-URI 732 operation in that a Print-Job operation contains the document data to 733 be printed and a Print-URI operation only contains a reference to the 734 document data. 736 3.2.2.1 Print-Job Request 738 The following input parameters are part of the Print-Job Request: 740 "printer-uri" (uri): 741 The URI of the target printer. 743 "job-name" (name): 744 This optional parameter is supplied by the client. If it is not 745 supplied by the client, the Printer generates a name (see Section 746 4.3.3). 748 "best-effort" (boolean): 749 This parameter identifies the clients desire to accept best 750 effort printing or not. Best effor printing allows a job to be 751 printed even though there might be a conflict between what a 752 client requests in a create request and what a Printer supports. 753 This is a MANDATORY parameter. The value 'true' indicates that a 754 "best effort attempt to print the Job" is acceptable. If a 755 Printer does not support some of the client supplied Job Template 756 attributes or values, the Printer might have to ignore or 757 substitute attributes or values. The value 'false' indicates 758 that a best effort attempt to print the Job is not acceptable; 759 total fidelity to client supplied attributes and values is 760 required. In this case, the client is requesting that the Job be 761 printed exactly as specified, and if that is not possible the the 762 Job must be rejected rather than processed incorrectly. A client 763 may query the Printer's MANDATORY "best-effort-supported" 764 attribute to determine if either type of best effort printing (or 765 both) are supported. The request is rejected outright if either 766 the Printer's "best-effort-supported" attribute is set to only 767 'true' and the client supplies a value of 'false' or the 768 Printer's "best-effort-supported" attribute is set to only 769 'false' and the client supplies a value of 'true'. 771 Job Template Attributes: 773 Expires January 25, 1998 774 An optional set of Job Template attributes as defined in section 775 4.2. If the client supplies no Job Template attributes in the 776 Print-Job Request, the Printer uses its default value attributes 777 when processing the job. 779 Document Attributes 780 The client optionally supplies the "document-name" and "document- 781 format" attributes. If "document-name" is not supplied, the 782 Printer generates a name for the Document. If "document-format" 783 is not supplied, the Printer assumes that the document data is in 784 a format that this acceptable to the Printer. 786 ISSUE: Should "document-name" be a parameter and document-format 787 just be a Job Template attribute? 789 Document Content: 790 The client supplies the document data to be processed. 792 The simplest Print-Job Request consists of just the Document Content 793 and nothing else. In this case, the Printer creates a new Job object 794 with no associated Job Template attributes and the job contains a 795 single Document. The Printer also generates a name for the Document 796 and for the Job. 798 When a Printer receives a Print-Job Request, the Printer either 799 accepts or rejects the request. The Printer accepts the Print-Job 800 Request and creates a Job object if it is able to accept all Job 801 Template attributes in the request. The Printer rejects the request 802 and does not create a Job object if the Printer rejects any Job 803 Template attribute in the request. There are six cases to consider 804 when accepting or rejecting Job Template attributes: 806 1. The client supplies a Job Template attribute named "xxx" and the 807 value supplied by the client is among the values supported by the 808 Printer (i.e., is among the values of the Printer's "xxx- 809 supported" attribute): The "xxx" Job Template attribute is 810 accepted. The Printer creates the Job object and associates the 811 "xxx" attribute with the new Job object using the value supplied 812 by the client. 814 2. The client supplies a Job Template attribute but the attribute 815 is syntactically bad: The Printer rejects the job and returns the 816 attribute in the "unsupported-attributes" output parameter. 818 3. The client supplies a Job Template attribute and the attribute 819 value is not among the values supported by the Printer or the 820 Printer does not support the attribute at all: This case depends 821 on the value of the "best-effort' parameter. If the client 823 Expires January 25, 1998 824 supplies a value of 'false'the Printer SHALL reject the Job and 825 return the 'client-error-attribute-unsupported" error code and 826 the unsupported attribute in the "unsupported-attributes " output 827 parameter. If the client supplies a "best-effort" value of 828 'true' the Printer SHALL accept the Job either ignore unsupported 829 attributes or substitute supported values for all unsupported 830 values supplied by the client. In this case, if everything else 831 is ok, the Printer returns a "successful-ok-ignored-or- 832 substituted-attributes" status code. The client could later 833 query the Job object to find which of the Job attributes had been 834 ignored or substituted. 836 ISSUE: Does the above satisfy Jim W.'s issue about persistence of 837 the best effort value? 839 5. The client does not supply a Job Template attribute that is 840 supported by the Printer:: If all other attributes are 841 acceepted, the Printer accepts the request and creates the Job 842 object, the Printer does not associate the attribute with the new 843 Job object. When the Printer processes that Job, the Printer uses 844 the behavior implied by the default value Printer attribute as 845 set at the time of Job processing (not Job creation). In other 846 words, these rules allow a client to submit a Job with no Job 847 Template attribute and as the Printer processes the Job, the 848 Printer uses its the default value attribute in place of the 849 missing Job Template attribute. Suppose the Printer were to 850 associate the Printer's default value is with the Job at creation 851 time for an attribute which was not supplied by the client. A 852 later query of the Job object would reveal a set of Job object 853 attributes and neither the Printer nor the end user would be able 854 to tell the difference between a Job attribute that is an 855 "override PDL" attribute (supplied by the client) and another 856 which is a "default value" attribute (supplied by the printer). 858 6. Neither the client supplies an attribute nor the Printer 859 supports the attribute: : The Printer accepts the Job, however, 860 as far as IPP is concerned, the result of processing that Job 861 (with respect to the missing attributes) is undefined. 863 In many cases though, this case represents a legacy environment, 864 and even without IPP attributes, the Job will be processed 865 successfully. For example, the document data might have been 866 generated by a device-specific printer driver that formats the 867 job and emits a data stream (a stream of PDL) that is finely 868 tuned for the intended output device and its internal 869 interpreter. But, neither the output device nor the printer 870 driver are aware of the IPP protocol. However, an intermediate 872 Expires January 25, 1998 873 process, which is IPP aware, is able to submit the job and make 874 sure that it is delivered to the output device, yet be unaware of 875 all the Job Template attributes that might possibly be supported. 877 3.2.2.2 Print-Job Response 879 The Printer SHALL return to the client the following output parameters 880 as part of the Print-Job Response: 882 "job-uri" (uri): 883 A URI which the client SHALL use for all other operations on this 884 Job 886 Job Status Attributes: 887 This includes the following Job attributes: "job-name", "job- 888 state", and "job-state-reasons". The value of each attribute is 889 taken from a "snapshot" of the new Job object sometime after the 890 time the Printer receives the print request until just prior to 891 returning the response to the client. Since the "job-state- 892 message" attribute is OPTIONAL, it MAY be included in the 893 response, but it is NOT REQUIRED. 895 Note: Since any printer state information which affects a job's 896 state is reflected in the "job-state" and "job-state-reasons" 897 attributes, it is sufficient to return only these attributes and 898 no specific printer status attributes. 900 Unsupported Attributes: 901 This is a set of attributes and attribute values that are 902 unsupported. This output parameter is only returned in the 903 response if the status code indicates that there was such an 904 error. 906 The simplest response consists of the just the job identifier ("job- 907 uri") and Job Status attributes output parameters with a status code 908 of "successful-ok". 910 3.2.3 Print-URI Operation 912 This operation is identical to the Print-Job operation (section 3.2.2) 913 except that a client supplies a URI reference to the document data 914 using the "document-uri" (uri) input parameter rather than including 915 the document data itself. It is up to the IPP server to interpret the 916 URI and subsequently "pull" the document from the source referenced by 917 the URI string. 919 Expires January 25, 1998 920 3.2.4 Validate-Job Operation 922 This operation is similar to the Print-Job operation (section 3.2.2) 923 except that a client supplies no document data and the Printer 924 allocates no resources (i.e., it does not create a new Job object) to 925 process the job. This operation is used only to verify capabilities 926 of a printer object against whatever input parameters are supplied in 927 the Validate-Job request. There is no "job-uri" output parameter 928 returned in the Validate-Job Response. If the client supplies a 929 "document-uri" input parameter, the Printer SHOULD only validate the 930 syntax of the URI rather than follow the reference and validate the 931 contents of the reference. The Printer may choose to validate the 932 reference, however, later at job processing time, the reference will 933 need to be validated yet again. If all is well, the Printer returns 934 the status code "successful-ok". 936 3.2.5 Create-Job Operation 938 This operation is similar to the Print-Job operation (section 3.2.2) 939 except that a client supplies no document data or any reference to 940 document data in the Create-Job request. This operation is followed 941 by one or more Send-Document or Send-URI operations. If a Printer 942 object supports the Create-Job operation, it MUST also support either 943 the Send-Document operation or the Send-URI operation or both. Since 944 a client can use the Get-Operations operation, a client SHOULD NOT 945 attempt to use an unsupported operation. 947 3.2.6 Get-Attributes Operation 949 The Get-Attributes operation allows a client to obtain information 950 from a Printer object. The client supplies as an operation parameter 951 the set of attribute names and/or attribute group names that the 952 requester is interested in. The Printer returns a corresponding 953 attribute set in the response with the appropriate attribute values 954 filled in for each requested attribute (either explicitly named in the 955 request or implicitly included by naming an attribute group). 957 For Printers, the attribute groups include: 959 - 'job-template': all of the Job Template attributes that apply to 960 a Printer object (the last two columns of the table in Section 961 4.2). 962 - 'printer-description': the attributes specified in Section 4.5. 964 There are also special groups: 966 Expires January 25, 1998 967 - 'none': no attributes of the specified object. 'none' is 968 primarily useful in Get-Jobs, but can be used as a "ping" with 969 the Get-Attributes operation. 970 - 'all': all supported attributes 972 It is NOT REQUIRED that a Printer support all attributes belonging to 973 a group, however it is MANDATORY that each Printer implementation 974 understand all group names. 976 There is one group named 'document-attributes' which consists of the 977 Document Attributes described in section 4.4 ("document-name", 978 "document-format", and "document-uri"). These attributes may be 979 requested either individually or as a group. If any or all of these 980 attributes are requested, in the response, they are treated as multi- 981 valued attributes (one value for each Document in the Job). For 982 example, there are 5 Documents in the Job, then each returned Document 983 attribute MUST have 5 values: the set of first values from each 984 attribute correspond to the first Document, the set of second values 985 correspond to the second Document, and so on. In order to maintain 986 the same number of values in each returned attribute, if there is no 987 value for either the "document-format" or "document-uri" attributes, a 988 special "out of band" value of 'none' is returned in its place. This 989 out of band value requires an encoding described in the Protocol 990 Specification document [23]. 992 For a complete example, consider a Job with 3 Documents and in the 993 Get-Attributes Request the group 'document-attributes' is requested. 994 The returned attributes (in the Get-Attributes Response) might look 995 like: 997 document-name = 'Document 1', 'Document 2', Document 3' 998 document-format = 'langPS', 'none', 'langPCL' 999 document-uri = ' ftp://some.domain.com/file1.ps', 'none', 'none' 1001 3.2.6.1 Get-Attributes Request 1003 The following input parameters are part of the Get-Attributes Request 1004 when the request is directed to a Printer object: 1006 "printer-uri" (uri): 1007 The URI of the target printer. 1009 "requested-attributes" (1setOf keyword) : 1010 An optional set of attribute names (without values) or attribute 1011 group names in whose values the requester is interested. If the 1012 client omits this input parameter, the Printer SHALL respond as 1013 if this input parameter had been supplied with a value of 'all'. 1015 Expires January 25, 1998 1017 "document-format" (enum) : 1018 This input parameter is useful for determining the set of 1019 supported attribute values which relate to the requested document 1020 format. The Printer SHALL return only (1) those attributes that 1021 are supported and (2) the attribute values that are supported for 1022 the specified document format. By specifying the document 1023 format, the client can get the Printer to eliminate the 1024 attributes and values that are not supported for a specific 1025 document format. For example, a Printer might have multiple 1026 interpreters to support both 'langPS' (for PostScript) and 1027 'langPCL' (for PCL) documents. However, for only one of those 1028 interpreters might the Printer be able to support "number-up" 1029 with values of 'one', 'two', and 'four'. For the other 1030 interpreter it might be able to only support "number-up" with a 1031 value of 'one'. 1033 If the client omits this input parameter, the Printer SHALL 1034 respond as if the input parameter had been set to the value of 1035 the Printer's default value "document-format" attribute were 1036 supplied. It is recommended that the client always supply a 1037 value for document-format, since the Printer's default value for 1038 document-format may be 'langAutomatic', in which case the 1039 returned attributes and values are for the union of the document 1040 formats that the Printer can automatically sense. 1042 3.2.6.2 Get-Attributes Response 1044 The Printer returns the following response parameters as part of the 1045 Get-Attributes Response: 1047 Requested Attributes: 1048 This is a the set of requested attributes and their current 1049 values. The Printer ignores (does not respond with) any 1050 requested attribute which is not supported. 1052 3.2.7 Get-Jobs Operation 1054 The Get-Jobs operation allows a client to retrieve the list of Jobs 1055 belonging to the target Printer object. The client may also supply a 1056 list of Job attribute names or attribute group names. These Job 1057 attributes will be returned for each Job that is returned. 1059 This operation is like Get-Attributes, except that Get-Jobs operation 1060 returns attributes from possibly more than one object (see the 1061 description of attribute groups in section 3.2.6). 1063 Expires January 25, 1998 1064 3.2.7.1 Get-Jobs Request 1066 The client submits the Get-Jobs request to a Printer URI. 1068 The following input parameters are part of the Get-Jobs Request: 1070 "printer-uri" (uri): 1071 The URI of the target printer. 1073 "limit" (integer): 1074 This is an integer value that indicates a limit to the number of 1075 Jobs returned. The limit is a "stateless limit" in that if the 1076 limit is n then only the first n jobs are returned in the Get- 1077 Jobs Response; there is no mechanism to allow for the "next" n 1078 jobs. The limit applies across all Job States requested. For 1079 example, if the limit if 50, and there are 75 spooled jobs, only 1080 the first 50 jobs are returned; the other 25 jobs are not 1081 returned. 1083 "requested-attributes" (1setOf keyword): 1084 An optional set of Job attribute names or attribute groups names 1085 in whose values the requester is interested. This set of 1086 attributes is returned for each Job that is returned.. The 1087 attribute group names are the same as for the Get-Attributes 1088 operation for the Job object. If the client omits this input 1089 parameter, the Printer SHALL respond as if this input parameter 1090 had been supplied with a value of " 'job-uri'. 1092 3.2.7.2 Get-Jobs Response 1094 The Printer SHALL return the following output parameters as part of 1095 the Get-Jobs Response: 1097 Requested Attributes: 1098 The result includes zero or more Job objects each with zero or 1099 more attributes. Jobs are returned in the following order: First 1100 all active Jobs (Jobs in the 'pending', 'processing', 'pending- 1101 held', and 'processing-stopped' states) are returned oldest to 1102 newest (with respect to expected completion time) followed by all 1103 completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled' 1104 states) newest to oldest (with respect to actual completion 1105 time). Jobs that are in the 'pending-held' state SHALL appear in 1106 their position as if they were 'pending' (otherwise, a user might 1107 be confused by Jobs that move from 'pending-held' to 'pending' as 1108 seeming to jump ahead in the queue). 1110 Expires January 25, 1998 1112 3.3 Job Operations 1114 3.3.1 Send-Document Operation 1116 Once a Job object has been created using a Create-Job operation 1117 (returning a "job-uri"), a client directs a Send-Document operation to 1118 the newly create Job object. The operation adds a new Document to the 1119 Job object. An entire document MUST be sent in a single Send-Document 1120 Request. 1122 3.3.1.1 Send-Document Request 1124 The client submits the request to a Job URI. 1126 The following abstract data types are part of the Send-Document 1127 Request: 1129 "job-uri" (uri): 1130 The URI of the target Job. 1132 Document Attributes: 1133 An optional set of Document Description attributes (section 4.4). 1135 Last Document Flag ("last-document"): 1136 This is a boolean flag that is set to 'true' if this is the last 1137 Document for the Job. 1139 Document Content: 1140 The client supplies the document data. 1142 3.3.1.2 Send-Document Response 1144 The following output parameters are part of the Send-Document 1145 Response: 1147 Job Status: 1148 (see section 3.2.2.2) 1150 Unsupported Attributes: 1151 (see section 3.2.2.2) 1153 3.3.2 Send-URI Operation 1155 This operation is identical to the Send-Document operation (see 1156 section 3.3.1) except that a client supplies a URI reference 1157 ("document-uri") rather than the document data itself. It is up to 1159 Expires January 25, 1998 1160 the IPP server to interpret the URI and subsequently "pull" the 1161 document from the source referenced by the URI string. 1163 3.3.3 Cancel Job Operation 1165 This operation allows a user to cancel one specific Print Job any time 1166 after the print job has been established on the Printer. Some pages 1167 may be printed before a job is terminated if printing has already 1168 started when the Cancel Job operation is received. The Printer 1169 determines via the security layer (authentication) and administrative 1170 policy set outside the scope of IPP (authorization) whether or not to 1171 allow the Cancel-Job operation. 1173 3.3.3.1 Cancel-Job Request 1175 The client submits the request to a Job URI. 1177 The following abstract data types are part of the Cancel Job Request: 1179 "job-uri" (uri): 1180 The URI of the target Job. 1182 "message" (text): 1183 Optional message to the operator 1185 3.3.3.2 Cancel-Job Response 1187 There are no output parameters other Cancel Job Response other than 1188 the Status Code and optional Status Message. 1190 3.3.4 Get-Attributes Operation 1192 The Get-Attributes operation allows a client to obtain information 1193 from a Job object and it is almost identical to the Get-Attributes 1194 operation for a Printer object (see section 3.2.6). The only 1195 differences are that the operation is directed at a Printer URI rather 1196 than a Job URI and there is no Document Format input parameter used 1197 for querying a Job object.. In an input parameter, the client supplies 1198 the set of attribute names and/or attribute group names that the 1199 requester is interested in. 1201 3.3.4.1 Get-Attributes Request 1203 Expires January 25, 1998 1204 4. Object Attributes 1206 This section describes the attributes with their corresponding 1207 syntaxes and values that are part of the IPP model. The sections below 1208 show the objects and their associated attributes which are included 1209 within the scope of this protocol. Many of these attributes are 1210 derived from other relevant specifications: 1212 - ISO/IEC 10175 DPA (Final, June 1996) [5] 1213 - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1] 1214 - Internet-Draft: Printer MIB (Draft Standard in progress, July 1215 1997) [29] 1216 - Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997) 1217 [27] 1219 Each attribute is uniquely identified in this document using a 1220 "keyword" (see section 10.2.1). The keyword is included in the 1221 section header describing that attribute. Not only are attributes 1222 uniquely identified with keywords, some attributes are defined to have 1223 a syntax which is a set of keywords. 1225 4.1 Attribute Syntaxes 1227 The following table shows the basic syntax types that a client and 1228 server SHALL be able to handle. 1230 text: a sequence of characters, length: 0 to 4095, where each 1231 character is a member of the UCS-2 coded character set.. This 1232 syntax type is used for free form human readable text intended 1233 for human consumption. The default encoding for attributes of 1234 type "text" is the UTF8 encoding rules. However, if the 1235 attribute "content-char-set" is set to a value of type "char-set" 1236 then that value describes the encoding rules used for text 1237 attributes. 1239 name: this is the same a "text" except that the sequence of 1240 characters is of length 1 to 255 This syntax type is used for 1241 referencing some object or entity via a user-friendly string, 1242 such as a Printer name, a document name, a user name, or a host 1243 name. 1245 keyword: a sequence of characters, length: 1 to 255, containing 1246 only the characters ASCII lowercase letters ("a" - "z"), ASCII 1247 digits ("0" - "9"), hyphen ("-"), dot ("."), and underscore 1248 ("_"). The first character MUST be an ASCII lowercase letter. 1249 This syntax type is used for enumerating semantic identifiers of 1251 Expires January 25, 1998 1252 entities in the abstract protocol (specified in this document). 1253 These entities can be attribute names or values of attributes. 1254 When a keyword is used to represent an attribute (its name), it 1255 MUST be unique within the full scope of IPP objects and 1256 attributes. When a keyword is used to represent a value of an 1257 attribute, it MUST be unique just within the scope of that 1258 attribute. That is, the same keyword can not be used for two 1259 different values within the same attribute to mean two different 1260 semantic ideas. However, the same keyword can be used across two 1261 or more attributes, representing different semantic ideas for 1262 each attribute. 1264 enum: an enumerated integer value that is in the range from -2**31 1265 to 2**31 - 1. Each value has an associated keyword name. Each 1266 attribute (whose syntax is enum) enumerates the values that are 1267 defined for the attribute. The enum type is used for attributes 1268 for which there are enum values assigned by other standards, such 1269 as SNMP MIBs. A number of attribute enum values in this 1270 specification are also used for corresponding attributes in the 1271 IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are 1272 not used for attributes to which the system administrator may 1273 assign values. Values in the range 2**30 to 2**31 - 1 are 1274 reserved for private or experimental use. Implementers are 1275 warned that use of such values may conflict with other 1276 implementations. Implementers are encouraged to request 1277 registration of enum values following the procedures in Section 1278 6. 1280 uri: a sequence of characters as defined in rfc1738 and rfc1808. 1281 This syntax type is used for carrying Universal Resource 1282 Identifiers. 1284 uriScheme: a sequence of characters representing the URI Scheme. 1285 These include 'http' for HTTP schemed URIs (e.g., http://...), 1286 and 'ftp' for FTP schemed URIs (e.g., ftp://...). 1288 human-language: a standard identifier for human language and 1289 optionally a country. The values for this syntax type are taken 1290 from RFC 1766 [26]. RFC 1766 does not have provision for 1291 expressing the coded character set component of a locale. The 1292 "content-char-set" attribute contains a value which represents 1293 the encoding rules used. If "content-char-set" is not supported, 1294 the coded character set used in the IPP protocol MUST be UTF-8 1295 [28]. 1297 char-set: a standard identifier the character set used in the 1298 encoding of attributes of type "text". The values for this syntax 1299 type are taken from RFC 2130 [31]. 1301 Expires January 25, 1998 1303 octetString: a sequence of octets. This syntax type is used for 1304 opaque data, such as the document-content. 1306 boolean: two values of 'true' and 'false'. This syntax type is 1307 like a keywordSet, but there are only two values. Note: An 1308 application might use a checkbox for an attribute with this 1309 syntax type. 1311 integer: an integer value that is in the range from -2**31 to 1312 2**31 - 1. Each attribute specifies the range constraint 1313 explicitly if the range is different from the full range of 1314 possible integer values (e.g., 0 - 100 for the "job-priority" 1315 attribute). 1317 dateTime: a standard, fixed length representation of date and time 1318 as defined in RFC 1514 [32] and RFC 1903 [33]. 1320 resolution: a special syntax used only for "printer-resolution" 1321 and "printer-resolution-supported" It consists of 3 parts: a 1322 cross feed direction resolution (positive integer value), a feed 1323 direction resolution (positive integer value) and a units value. 1324 All these are taken from the Printer MIB [1] suggested values. 1326 1setOf X: 1 or more values of type X. This syntax type is used 1327 for multi-valued attributes, whose value is a set of values. 1328 Note: The syntax type is called "1setOf" to indicate that set of 1329 values SHALL NOT be empty (a set of size 0). 1331 rangeOf X: a range of value of type X. This syntax type is used 1332 for ordered values (numeric, lexical, etc.) such as integers. 1334 4.1.1 Attribute Extensibility 1336 This document uses prefixes to the "keyword" and "enum" basic 1337 syntax type in order to communicate extra information to the reader 1338 through its name. This extra information need not be represented in 1339 an implementation because it is unimportant to a client or Printer. 1340 The table below describes the prefixes and their meaning. 1342 "type1": The IPP standard must be revised to add a new keyword or 1343 a new enum. No private keywords or enums are allowed. 1345 Expires January 25, 1998 1347 "type2": Implementers can, at any time, add new keyword or enum 1348 values by proposing them to the IPP working group for 1349 registration (or an IANA-appointed registry advisor after the IPP 1350 working group is no longer certified) where they are reviewed for 1351 approval. IANA keeps the registry. 1353 "type3": Implementers can, at any time, add new keyword and enum 1354 values by submitting a registration request directly to IANA, no 1355 IPP working group or IANA-appointed registry advisor review is 1356 required. 1358 "type4": Anyone (system administrators, system integrators, site 1359 managers, etc.) can, at any time, add new installation-defined 1360 values (keywords or new enum values) to a local system. Care 1361 SHOULD be taken by the implementers to see that keywords do not 1362 conflict with other keywords defined by the standard or as 1363 defined by the implementing product. There is no registration or 1364 approval procedure for type 4 keywords. 1366 By definition, each of the four types above assert some sort of 1367 registry or review process in order for extensions to be considered 1368 valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less 1369 stringent than the previous level. Therefore, any typeN value MAY be 1370 registered using a process for some typeM where M is less than N, 1371 however such registration is NOT REQUIRED. For example, a type4 value 1372 MAY be registered in a type 1 manner (by being included in a future 1373 version of an IPP specification) however it is NOT REQUIRED. 1375 This specification defines keyword and enum values for all of the 1376 above types, including type4 keywords. 1378 For private (unregistered) keyword extensions, implementers SHOULD use 1379 keywords with a suitable distinguishing prefix, such as "xxx-" where 1380 xxx is the (lowercase) fully qualified company name registered with 1381 IANA for use in domain names [30]. 1383 Note: RFC 1035 [30] indicates that while upper and lower case letters 1384 are allowed in domain names, no significance is attached to the case. 1385 That is, two names with the same spelling but different case are to be 1386 treated as if identical. Also, the labels in a domain name must 1387 follow the rules for ARPANET host names: They must start with a 1388 letter, end with a letter or digit, and have as interior characters 1389 only letters, digits, and hyphen. Labels must be 63 characters or 1390 less. Lables are separated by the "." character. 1392 Expires January 25, 1998 1393 For private (unregistered) enum extension, implementers SHOULD use 1394 values in the reserved integer range (see "enum"). 1396 4.2 Job Template Attributes 1398 Job Template attributes describe job processing behavior. Take for 1399 example, a generic Job Template attribute called "xxx": 1401 1. "xxx" is optionally supplied by the client in a create request. 1402 If "xxx" is supplied, the client is specifying that the Printer 1403 SHALL apply a specific job processing behavior to this job while 1404 processing the Job. When "xxx" is not supplied by the client, 1405 the Printer applies the default job processing behavior. 1407 2. "xxx-supported" is a Printer attribute that describes which 1408 behaviors are supported by a Printer. "xxx-supported" is a 1409 CONDITIONALLY MANDATORY attribute, that is the "xxx-supported" 1410 attribute is MANDATORY if the Printer is capable of realizing two 1411 or more of the behaviors associated with the attribute and its 1412 values. A client can query the Printer and find out what 1413 behaviors are supported by inspecting the values of the "xxx- 1414 supported" attribute. 1416 3. The Printer also supports a default value attribute named "xxx". 1417 This default value attribute describes what will be done when no 1418 other job processing information is supplied by the client 1419 (either explicitly as an IPP attribute in the create request or 1420 implicitly as an embedded instruction within the job data). 1421 Along with the supported attribute, the default value attribute 1422 is also CONDITIONALLY MANDATORY. However, if the Printer 1423 supports either the "xxx" default value attribute or the "xxx- 1424 supported" attribute, the Printer MUST support both. 1426 4. If a client application wishes to present an end user with a 1427 list of supported and default values from which to choose, the 1428 client program SHOULD query the Printer for the supported and 1429 default value attributes. The values that the client then 1430 supplies in the create request will all fall within the supported 1431 values of the Printer. When querying the Printer, the client MAY 1432 enumerate each attribute by name in the Get-Attributes Request, 1433 or the client MAY just name the "job-template" group in order to 1434 get the complete set of supported and default value attributes 1435 which are supported. 1437 The "job-priority" attribute is an example of a Job Template 1438 attribute. It is an integer in the range from 1 to 100. A client can 1439 query the Printer for the "job-priority-supported" attribute and the 1441 Expires January 25, 1998 1442 "job-priority" default value attribute. The supported attribute 1443 contains a range of supported priority values which is equal to or 1444 smaller than the maximum range of 1 to 100. The default value 1445 attribute contains the job priority value that will be used for a new 1446 job if the client does not supply one in the create request. If the 1447 client does supply the "job-priority" attribute, the Printer validates 1448 the value to make sure that it falls within the range of supported 1449 values. If the client-supplied value is supported, the Job object is 1450 created and the "job-priority" attribute is populated with that value. 1451 The Job object, when queried, returns the value supplied by the 1452 client. If the client does not supply a "job-priority" value in the 1453 create request, the Job object is created, but no "job-priority" 1454 attribute is associated with the Job. The client queries the 1455 Printer's default value "job-priority" value to find out at what 1456 priority the job will be processed. 1458 The table below summarizes the names, relationships, and conformance 1459 requirements for all Job Template attributes. The following general 1460 rules apply to implementation requirements: 1462 1. In a create request, all Job Template attributes are optionally 1463 supplied by the client. 1465 2. In a Printer Object, all supported attributes ("xxx-supported") 1466 are CONDITIONALLY MANDATORY. 1468 3. All Printer default value attributes ("xxx") are CONDITIONALLY 1469 MANDATORY. 1471 Note: If the Printer implements either the default value attribute 1472 or the supported values attribute, the Printer MUST also 1473 implement the other and vice versa. 1475 The table only shows exceptions to the above rules. The first column 1476 of the table (Job) shows the name and syntax for each Job Template 1477 attribute in the Job object.. All of the attributes in the first 1478 column make up the "job-template" group. The last two columns show 1479 the name and syntax for each Job Template attribute in the Printer 1480 object (the default value attribute and the supported attribute). A 1481 "No" in the table means the Printer SHALL NOT support the attribute. 1482 A "MAN" indicates that it is MANDATORY that the Printer support the 1483 attribute. 1485 Expires January 25, 1998 1486 +-------------------+----------------------+----------------------+ 1487 | Job |Printer: Default Value| Printer: Supported | 1488 +===================+======================+======================+ 1489 | job-sheets | job-sheets |job-sheets-supported | 1490 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1491 | | | | 1492 +-------------------+----------------------+----------------------+ 1493 | notify-events | notify-events | notify-events- | 1494 |(1setOf |(1setOf type2 keyword)| supported | 1495 | type2 keyword) | |(1setOf type2 keyword)| 1496 +-------------------+----------------------+----------------------+ 1497 |notify-addresses | No |notify-addresses | 1498 |(1setOf uri) | |-supported | 1499 | | |(1setOf uriScheme) | 1500 +-------------------+----------------------+----------------------+ 1501 | job-priority | job-priority |job-priority-supported| 1502 | (integer 1-100) | (integer 1-100) |(rangeOf integer | 1503 | | | 1-100) | 1504 +-------------------+----------------------+----------------------+ 1505 | job-hold-until | job-hold-until | job-hold-until- | 1506 | (type4 keyword) | (type4 keyword) | supported | 1507 | | |(1setOf type4 keyword)| 1508 +-------------------+----------------------+----------------------+ 1509 |multiple-document- |multiple-document- |multiple-document- | 1510 | handling | handling |handling-supported | 1511 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1512 +-------------------+----------------------+----------------------+ 1513 | media | media | media-supported | 1514 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1515 | | | | 1516 +-------------------+----------------------+----------------------+ 1517 | number-up | number-up | number-up-supported | 1518 | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| 1519 | | | | 1520 +-------------------+----------------------+----------------------+ 1521 | sides | sides | sides-supported | 1522 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1523 | | | | 1524 +-------------------+----------------------+----------------------+ 1525 | printer-resolution| printer-resolution | printer-resolution- | 1526 | (type2 enum) | (type2 enum) | supported | 1527 | | |(1setOf type2 enum) | 1528 +-------------------+----------------------+----------------------+ 1529 | print-quality | print-quality | print-quality- | 1530 | (type2 enum) | (type2 enum) | supported | 1531 | | |(1setOf type2 enum) | 1532 +-------------------+----------------------+----------------------+ 1534 Expires January 25, 1998 1535 | finishings | finishings | finishings-supported | 1536 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 1537 | | | | 1538 +-------------------+----------------------+----------------------+ 1539 | copies | copies | copies-supported | 1540 | (integer: 1 - MAX)| (integer: 1 - MAX) | (rangeOf integer | 1541 | | | 1- MAX) | 1542 +-------------------+----------------------+----------------------+ 1543 | document-format | document-format | document-format- | 1544 | (type2 enum) | (type2 enum) | supported | 1545 | | |(1setOf type2 enum) | 1546 +-------------------+----------------------+----------------------+ 1547 | compression | No | compression-supported| 1548 | (type3 keyword) | |(1setOf type3 keyword)| 1549 | | | | 1550 +-------------------+----------------------+----------------------+ 1551 | job-k-octets | No |job-k-octets-supported| 1552 | (integer) | | (rangeOf integer) | 1553 | | | | 1554 +-------------------+----------------------+----------------------+ 1555 | job-impressions | No | job-impressions- | 1556 | (integer) | | supported | 1557 | | | (rangeOf integer) | 1558 +-------------------+----------------------+----------------------+ 1559 | job-media-sheets | No | job-media-sheets- | 1560 | (integer) | | supported | 1561 | | | (rangeOf integer) | 1562 +-------------------+----------------------+----------------------+ 1564 4.2.1 job-sheets (type4 keyword) 1566 This attribute determines which if any banner page(s) SHALL be printed 1567 with a job. 1569 Standard values are: 1571 'none': no job sheet is printed 1572 'standard': one or more site specific standard job sheets are 1573 printed, e.g. a single start sheet or both start and end sheet is 1574 printed 1576 To force no job sheets, the system administrator SHALL set the 1577 supported value to only 'none'. To force the use of banner pages, the 1578 supported values SHALL not include 'none'. In this case, if a client 1579 requests 'none', the create request is rejected. 1581 Expires January 25, 1998 1582 Note: The effect of this attribute on jobs with multiple documents is 1583 controlled by the "multiple-document-handling" job attribute (section 1584 4.2.6). 1586 4.2.2 notify-events (1setOf type2 keyword) 1588 This attribute specifies the events for which the end user desires 1589 some sort of notification. The "notify-addresses" attribute is used 1590 to describe the destination addresses for these events. 1592 Standard values are: 1594 'none': the Printer SHALL not notify. 1595 'all': the Printer SHALL notify when any of the events occur. 1596 'job-completion': the Printer SHALL notify when the job containing 1597 this value completes (i.e., enters the 'completed', 'canceled', 1598 or 'aborted' state) with or without errors. 1599 'job-problems': the Printer SHALL notify when this job has a 1600 problem while this job is processing (i.e., when the Job moves 1601 from the 'processing' to the 'processing-stopped' state or from 1602 'pending' to 'pending-held'). Problems also can include any of 1603 the "job-state-reasons" or "printer-state-reason" values. 1605 ISSUE: All or none or some "xxx-reasons"?? 1607 'printer-problems': the Printer SHALL notify when this job is 1608 affected by a Printer problem. This happens when the printer 1609 enters the 'stopped' state while this job is in the 'pending', 1610 'pending-held', 'processing', or 'processing-stopped' state. If 1611 the Printer enters the 'stopped' state, the reason is in the 1612 "printer-state-reasons" attribute. 1614 ISSUE: Do you really need this last sentence. That is, should this 1615 document state what information an implementation should use to 1616 compose the notification message. 1618 4.2.3 notify-addresses (1setOf uri) 1620 This attribute describes both where (the address) and how (the 1621 mechanism for delivery ) events are to be delivered. The Printer SHALL 1622 use this attribute as the set of addresses and methods for sending 1623 messages when an event occurs that the end user (job submitter) has 1624 registered an interest in. 1626 Standard uriScheme values are: 1628 Expires January 25, 1998 1629 'mailto': the Printer sends a text message via email to the 1630 specified email address 1631 'http': the Printer sends an HTML formatted message via an HTTP 1632 POST method to the specified URI 1633 'ftp': the Printer sends a text message via an FTP `append' command 1634 to the specified remote file. 1636 4.2.4 job-priority (integer(1:100)) 1638 This attribute specifies a priority for scheduling the Job. A higher 1639 value specifies a higher priority. The value 1 indicates the lowest 1640 possible priority. The value 100 indicates the highest possible 1641 priority. Among those jobs that are ready to print, a Printer SHALL 1642 print all jobs with a priority value of n before printing those with a 1643 priority value of n-1 for all n. The mapping of vendor-defined 1644 priority over this range is implementation-specific. 1646 4.2.5 job-hold-until (type4 keyword) 1648 This job attribute specifies the named time period during which the 1649 Job print job SHALL become a candidate for printing. 1651 Standard values for named time periods are: 1653 'no-hold': immediately, if there are not other reasons to hold the 1654 job. 1655 'day-time': during the day. 1656 'evening': evening 1657 'night': night 1658 'weekend': weekend 1659 'second-shift': second-shift 1660 'third-shift': third-shift (after midnight) 1662 An administrator SHALL associate allowable print times with a named 1663 time period (by means outside IPP 1.0). An administrator is 1664 encouraged to pick names that suggest the type of time period. 1666 If the value of this attribute specifies a time period that is in the 1667 future, the Printer SHALL add the 'job-hold-until-specified' value to 1668 the job's "job-state-reasons" attribute, move the job to the 'pending- 1669 held' state, and SHALL NOT schedule the job for printing until the 1670 specified time-period arrives. When the specified time period 1671 arrives, the Printer SHALL remove the 'job-hold-until-specified' value 1672 from the job's "job-state-reason" attribute and, if no other job 1673 reasons that keep it in the 'pending-held' state remain, the Printer 1674 SHALL consider the job as a candidate for processing by moving the job 1675 to the 'pending' state. 1677 Expires January 25, 1998 1678 If this job attribute value is the named value 'no-hold', or specified 1679 time period is in effect has already started , the job SHALL be a 1680 candidate for processing immediately. 1682 4.2.6 multiple-document-handling (type2 keyword) 1684 This job attribute is relevant only if a job consists of two or more 1685 documents. It controls finishing operations, and job-sheet placement. 1686 When the copies attribute exceeds 1, it also controls the order of 1687 documents.. 1689 Standard values are: 1691 'single-document': If the files for the job are a and b, then files 1692 a and b SHALL be treated as a single document for finishing 1693 operations. Also, there SHALL be no slip sheets between files a 1694 and b and the Printer SHALL NOT force each document to start on a 1695 new page or new media sheet. If more than one copy is made, the 1696 ordering SHALL be a, b, a, b, ...., and the Printer SHALL force 1697 each copy to start on a new sheet. 1698 'separate-documents-uncollated-copies': If the files for the job 1699 are a and b, then each file SHALL be treated as a single document 1700 for finishing operations. Also, a client may specify that a slip 1701 sheet be placed between files a and b and the Printer shall force 1702 each document copy to start on a new sheet. If more than one 1703 copy is made, the ordering SHALL be a, a, b, b, .... 1704 'separate-documents-collated-copies': If the files for the job are 1705 a and b, then each file SHALL be treated as a single document for 1706 finishing operations. Also, a client may specify that a slip 1707 sheet be placed between files a and b. If more than one copy is 1708 made, the ordering SHALL be a, b, a, b, ...., and the Printer 1709 shall force each document copy to start on a new sheet 1711 4.2.7 media (type4 keyword) 1713 This job attribute identifies the medium that the Printer uses for all 1714 pages of the Job. 1716 The values for "media" include medium-names, medium-sizes, input-trays 1717 and electronic forms so that one attribute specifies the media. If a 1718 printer allows a client to specify a medium name as the value of this 1719 attribute, such a medium name implicitly selects an input-tray that 1720 contains the specified medium. If a printer allows a client to 1721 specify a medium size as the value of this attribute, such a medium 1722 size implicitly selects a medium name which in turn implicitly selects 1723 an input-tray that contains the medium with the specified size. If a 1724 printer allows a client to specify an input-tray as the value of this 1726 Expires January 25, 1998 1727 attribute, such an input-tray implicitly selects the medium that is in 1728 that input-tray at the time the job prints. This case includes manual- 1729 feed input-trays. If a printer allows a client to specify an 1730 electronic form as the value of this attribute, such an electronic 1731 form implicitly selects a medium-name which in turn implicitly selects 1732 an input-tray that contains the medium specified by the electronic 1733 form. The electronic form also implicitly selects an image that the 1734 Printer SHALL merge with the data from the document as its prints each 1735 page. 1737 Standard values are (taken from ISO DPA and the Printer MIB) and are 1738 listed in section 13. 1740 4.2.8 number-up (type3 keyword) 1742 This job attribute specifies the number of source page-images to 1743 impose upon a single side of an instance of a selected medium. 1745 Standard values are: 1747 'none': The Printer SHALL not include any embellishments and SHALL 1748 place one logical page on a single side of an instance of the 1749 selected medium without any translation, scaling, or rotation. 1750 'one': The Printer SHALL place one logical page on a single side of 1751 an instance of the selected medium (MAY add some sort of 1752 translation, scaling, or rotation). 1753 'two': The Printer SHALL place two logical pages on a single side 1754 of an instance of the selected medium (MAY add some sort of 1755 translation, scaling, or rotation). 1756 'four': The Printer SHALL place four logical pages on a single side 1757 of an instance of the selected medium (MAY add some sort of 1758 translation, scaling, or rotation). 1760 This attribute primarily controls the translation, scaling and 1761 rotation of page images, but a site may choose to add embellishments, 1762 such as borders to each logical page. 1764 4.2.9 sides (type2 keyword) 1766 This attribute specifies how source page-images are to be imposed upon 1767 the sides of an instance of a selected medium. 1769 The standard values are: 1771 'one-sided': imposes each consecutive source page-image upon the 1772 same side of consecutive media sheets. 1773 'two-sided-long-edge': imposes each consecutive pair of source 1774 page-image upon front and back sides of consecutive media sheets, 1776 Expires January 25, 1998 1777 such that the orientation of each pair of source-pages on the 1778 medium would be correct for the reader as if for binding on the 1779 long edge. This imposition is sometimes called 'duplex'. 1780 'two-sided-short-edge': imposes each consecutive pair of source 1781 page-image upon front and back sides of consecutive media sheets, 1782 such that the orientation of each pair of source-pages on the 1783 medium would be correct for the reader as if for binding on the 1784 short edge. This imposition is sometimes called 'tumble' or 1785 'head-to-toe'. 1787 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 1788 all work the same for portrait or landscape. However 'head-to-toe' is 1789 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 1790 switches between 'duplex' and 'tumble' when using portrait and 1791 landscape modes. 1793 4.2.10 printer-resolution (resoultion) 1795 This attribute identifies the resolution that Printer uses for a 1796 certain Job. 1798 The value is a special type consisting of a pair of integers and a 1799 value which specifies the units for the two integers. The three 1800 values are the same as those specified in the draft-ietf- 1801 printmib-mib-info-02.txt as prtMarkerAddressabilityFeedDir (the 1802 resolution in the feed direction), 1803 prtMarkerAddressabilityXFeedDir (the resolution in the cross feed 1804 direction), and prtMarkerAddressabilityUnit (the units of the 1805 first two values, namely dots per inch and dots per centimeter). 1806 4.2.11 print-quality (type2 enum) 1808 This attribute specifies the print quality that the Printeruses for a 1809 certain Job. 1811 The standard values are: 1813 'draft' (3): lowest quality available on the printer 1814 'normal' (4): normal or intermediate quality on the printer 1815 'high' (5): highest quality available on the printer 1817 4.2.12 finishings (1setOf type2 enum) 1819 This attribute identifies the finishing operations that the Printer 1820 uses for each copy of each printed document in a particular Job. For 1821 Jobs with multiple documents, the "multiple-document-handling" 1822 attribute determines what constitutes a _copy_ for purposes of 1823 finishing. 1825 Expires January 25, 1998 1826 Standard values are: 1828 'none'(3): Perform no finishing 1829 'staple'(4): Bind the document(s) with one or more staples. The 1830 exact number and placement of the staples is site-defined. 1831 'staple-top-left'(5): Place one or more staples on the top left 1832 corner of the document(s). 1833 'staple-bottom-left'(6): Place one or more staples on the bottom 1834 left corner of the document(s). 1835 'staple-top-right'(7): Place one or more staples on the top right 1836 corner of the document(s). 1837 'staple-bottom-right'(8): Place one or more staples on the bottom 1838 right corner of the document(s). 1839 'saddle-stitch'(9): Bind the document(s) with one or more staples 1840 (wire stitches) along the middle fold. The exact number and 1841 placement of the stitches is site-defined. 1842 'edge-stitch'(10): Bind the document(s) with one or more staples 1843 (wire stitches) along one edge. The exact number and placement 1844 of the staples is site-defined. 1845 'punch'(11): This value indicates that holes are required in the 1846 finished document. The exact number and placement of the holes is 1847 site-defined The punch specification MAY be satisfied (in a 1848 site- and implementation-specific manner) either by 1849 drilling/punching, or by substituting pre-drilled media. 1850 'cover'(12): This value is specified when it is desired to select 1851 a non-printed (or pre-printed) cover for the document. This does 1852 not supplant the specification of a printed cover (on cover stock 1853 medium) by the document itself. 1854 'bind'(13): This value indicates that a binding is to be applied 1855 to the document; the type and placement of the binding is site- 1856 defined." 1858 4.2.13 copies (integer(1:2**31 - 1)) 1860 This attribute specifies the number of copies of the job to be 1861 printed. 1863 Note: The effect of this attribute on job with multiple documents is 1864 controlled by the "multiple-document-handling" job attribute (section 1865 4.2.6). 1867 4.2.14 document-format (type2 enum) 1869 This attribute defines the document format for each Document in a Job. 1870 The standard values for this attribute are enums. Since the complete 1871 list is rather long, the full enumeration of standard values is found 1872 in section 12 APPENDIX C: "document-format" enum values. 1874 Expires January 25, 1998 1875 If the "document-format" is unknown for a certain document, the client 1876 SHALL NOT supply the attribute in the create request or the Send- 1877 Document Request. 1879 4.2.15 compression (type3 keyword) 1881 This attribute identifies compression algorithms used for compressed 1882 document data. 1884 ISSUE: Is this in the HTTP header and an attribute is compression 1885 applied at both levels? 1887 'none': no compression is used. 1888 'zip':ZIP compression technology 1889 `gzip' GNU zip compression technology described in RFC 1952. 1890 'compress': UNIX compression technology 1892 4.2.16 job-k-octets (integer(0:2**31 - 1)) 1894 This attribute specifies the total size of the job in K octets, i.e., 1895 in units of 1024 octets. The value SHALL be rounded up, so that a job 1896 between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048 1897 SHALL be 2, etc. 1899 Note: This attribute and the following two attributes ("job- 1900 impressions" and "job-media-sheets") are not intended to be counters; 1901 they are intended to be useful routing and scheduling information if 1902 known. The Printer may try to compute the value if it is not supplied 1903 in the create request. The Printer, however, might not be able to 1904 compute this value at the time the Job is created. If not, the 1905 Printer may support this attribute at any later time as it is able to 1906 compute value. 1908 ISSUE: What does this last sentence mean. Do we need to make the 1909 distinction as to whether the printer computes this attribute 1910 immediately as it is creates versus somewhat later? 1912 4.2.17 job-impressions (integer(0:2**31 - 1)) 1914 This attribute specifies the total size of the job in impressions. 1916 4.2.18 job-media-sheets (integer(0:2**31 - 1)) 1918 This attribute specifies the total size of the job in media-sheets. 1920 Expires January 25, 1998 1921 4.3 Job Description Attributes 1923 The attributes in this section form the attribute group called "job- 1924 description". The following table summarizes these attributes. The 1925 third column indicates whether the attribute is a MANDATORY attribute. 1926 If it is not MANDATORY, then it is OPTIONAL. 1928 Expires January 25, 1998 1929 +----------------------------+----------------------+----------------+ 1930 | Attribute | Syntax | MANDATORY? | 1931 +----------------------------+----------------------+----------------+ 1932 | job-uri | uri | MANDATORY | 1933 +----------------------------+----------------------+----------------+ 1934 | job-uri-user | uri | | 1935 +----------------------------+----------------------+----------------+ 1936 | job-name | name | | 1937 +----------------------------+----------------------+----------------+ 1938 | job-originating-user | name | MANDATORY | 1939 +----------------------------+----------------------+----------------+ 1940 | job-originating-host | name | | 1941 +----------------------------+----------------------+----------------+ 1942 | user-human-language | human-language | | 1943 +----------------------------+----------------------+----------------+ 1944 | user-content-char-set | char-set | | 1945 +----------------------------+----------------------+----------------+ 1946 | job-state | type1 enum | MANDATORY | 1947 +----------------------------+----------------------+----------------+ 1948 | job-state-reasons | 1setOf type2 keyword | | 1949 +----------------------------+----------------------+----------------+ 1950 | job-state-message | text | | 1951 +----------------------------+----------------------+----------------+ 1952 | output-device-assigned | name | | 1953 +----------------------------+----------------------+----------------+ 1954 | time-since-pending | milliseconds | MANDATORY | 1955 +----------------------------+----------------------+----------------+ 1956 | time-since-processing | milliseconds | MANDATORY | 1957 +----------------------------+----------------------+----------------+ 1958 | time-since-completed | milliseconds | MANDATORY | 1959 +----------------------------+----------------------+----------------+ 1960 | number-of-intervening-jobs | integer | MANDATORY | 1961 +----------------------------+----------------------+----------------+ 1962 | job-message-from-operator | text | | 1963 +----------------------------+----------------------+----------------+ 1964 | job-k-octets-processed | integer | | 1965 +----------------------------+----------------------+----------------+ 1966 | job-impressions-completed | integer | | 1967 +----------------------------+----------------------+----------------+ 1968 | job-media-sheets-completed | integer | | 1969 +----------------------------+----------------------+----------------+ 1971 ISSUE: Should time-since-xxx and number-of jobs be MANDATORY? 1973 4.3.1 job-uri (uri) 1975 This attribute contains the URI for the job. The Printer, on receipt 1976 of a new job, generates a URI which identifies the new Job on that 1978 Expires January 25, 1998 1979 Printer. The Printer returns the value of the "job-uri" attribute as 1980 part of the response to a create request. The precise format of a 1981 job URI is implementation dependent. 1983 4.3.2 job-uri-user (uri) 1985 Similar to "job-uri", this attribute contains the URI referencing an 1986 HTML page containing information about the Job. 1988 4.3.3 job-name (name) 1990 This attribute is the name of the job. It is a name that is more user 1991 friendly than the "job-uri" attribute value. It does not need to be 1992 unique. This is set to the value of the "job-name" input parameter in 1993 the create request. However, if it is not supplied in the create 1994 request, the Printer, on creation of the Job, SHALL generate a name. 1995 The Printer can be generate the name using the name of the first 1996 Document (the "document-name" attribute) if supplied or some other 1997 piece of Job specific information. 1999 4.3.4 job-originating-user (name) 2001 This attribute specifies the user name of the person submitting the 2002 print job. The Printer sets this attribute to the most authenticated 2003 name that it can obtain from the protocol over which the operation was 2004 received from the client. 2006 4.3.5 job-originating-host (name) 2008 This attribute identifies the originating host of the job. The Printer 2009 sets this attribute to the most authenticated host name it can obtain 2010 from the protocol over which the operation was received from the 2011 client. 2013 4.3.6 user-human-language (human-language) 2015 This attribute identifies the human language and optionally the 2016 country of the end user. The Printer sets this attribute to the most 2017 reliable value it can obtain from the protocol over which the Print 2018 operation was received from the client. 2020 The Printer uses this attribute to determine the locale it SHOULD use 2021 for localizing any text strings that it sends back to the end user. 2022 These include status messages, text attributes, and notification 2023 messages. 2025 ISSUE: should we a statement about which attributes should be 2026 localized. I would expect the text attributes set by the manufacturer 2028 Expires January 25, 1998 2029 would be localized. They are: job-state-message , printer-more-info- 2030 manufacturer, printer-state-message, and printer-make-and-model. I 2031 would expect text attribute set by a site would not be localized. They 2032 are job-message-from-operator, printer-location, printer-description, 2033 printer-message-from-the-operator. Should there be a separate text 2034 type called localized-text for the 4 attributes mentioned in the 2035 previous issue that can be localized. Should all "text" be localized 2036 text? Unless we do something, the localization issue is left very 2037 vague. 2039 4.3.7 user-content-char-set (char-set) 2041 This attribute identifies encoding character set for any text 2042 attributes the client sends or desires to receive in IPP operations. 2043 The Printer sets this attribute to the most reliable value it can 2044 obtain from the protocol over which the Print operation was received 2045 from the client. If this attribute is not supported, the value UTF-8 2046 MUST be assumed. All clients and all servers MUST support UTF-8. 2048 4.3.8 job-state (type1 enum) 2050 This attribute identifies the current state of the job. Even though 2051 the IPP protocol defines eight values for job states, implementations 2052 only need to support those states which are appropriate for the 2053 particular implementation. In other words, a Printer supports only 2054 those job states implemented by the output device and available to the 2055 Printer object implementation. 2057 Standard values are: 2059 'unknown'(2): The job state is not known, or its state is 2060 indeterminate. 2061 'pending'(3): The job is a candidate to start processing, but is 2062 not yet processing. 2063 'pending-held'(4): The job is not a candidate for processing for 2064 any number of reasons but will return to the 'pending' state as 2065 soon as the reasons are no longer present. The job's "job-state- 2066 reason" attribute SHALL indicate why the job is no longer a 2067 candidate for processing. 2068 'processing'(5): Either: 2069 1. the job is using, or is attempting to use, one or more 2070 document transforms which include (1) purely software 2071 processes that are interpreting a PDL, and (2) hardware 2072 devices that are interpreting a PDL, making marks on a medium, 2073 and/or performing finishing, such as stapling OR 2074 2. the server has made the job ready for printing, but the 2075 output device is not yet printing it, either because the job 2076 hasn't reached the output device or because the job is queued 2078 Expires January 25, 1998 2079 in the output device or some other spooler, awaiting the 2080 output device to print it. 2081 When the job is in the 'processing' state, the entire job state 2082 includes the detailed status represented in the printer's 2083 "printer-state", "printer-state-reasons", and "printer-state- 2084 message" attributes. 2085 Implementations MAY include additional values in the job's "job- 2086 state-reasons" attribute to indicate the progress of the job, 2087 such as adding the 'job-printing' value to indicate when the 2088 output device is actually making marks on paper. Most 2089 implementations won't bother with this nuance. 2090 ISSUE: Change to (but this must be synchronized with JMP) 2091 'processing'(5): One of: 2092 1. the job is using, or is attempting to use hardware devices 2093 that are making marks on a medium, and/or performing 2094 finishing, such as stapling OR 2095 2. the job is using, or is attempting to use software processes 2096 that are analyzing or interpreting a PDL without making marks 2097 on a medium. 2098 3. the server has made the job ready for printing, but the output 2099 device is not yet printing it, either because the job hasn't 2100 reached the output device or because the job is queued in the 2101 output device or some other spooler, awaiting the output 2102 device to print it. 2104 'processing-stopped'(6): The job has stopped while processing for 2105 any number of reasons and will return to the 'processing' state 2106 as soon as the reasons are no longer present. 2107 The job's "job-state-reason" attribute MAY indicate why the job 2108 has stopped processing. For example, if the output device is 2109 stopped, the 'printer-stopped' value MAY be included in the job's 2110 "job-state-reasons" attribute. 2111 NOTE - When an output device is stopped, the device usually 2112 indicates its condition in human readable form locally at the 2113 device. A client can obtain more complete device status remotely 2114 by querying the printer's "printer-state", "printer-state- 2115 reasons" and "printer-state-message" attributes. 2116 'canceled'(7): The job has been canceled by a Cancel-Job operation 2117 and is either (1) in the process of terminating or (2) has 2118 completed terminating. The job's "job-state-reasons" attribute 2119 SHOULD contain either the 'canceled-by-user' or 'canceled-by- 2120 operator' value. 2121 'aborted'(8): The job has been aborted by the system, usually 2122 while the job was in the 'processing' or 'processing-stopped' 2123 state. 2124 'completed'(9): The job has completed successfully or with 2125 warnings or errors after processing and all of the job media 2126 sheets have been successfully stacked in the appropriate output 2128 Expires January 25, 1998 2129 bin(s). The job's "job-state-reasons" attribute SHOULD contain 2130 one of: 'completed-successfully', 'completed-with-warnings', or 2131 'completed-with-errors' values. 2133 The final value for this attribute SHALL be one of: 'completed', 2134 'canceled', or 'aborted' before the Printer removes the job 2135 altogether. The length of time that jobs remain in the 'canceled', 2136 'aborted', and 'completed' states depends on implementation. 2138 The following figure shows the normal job state transitions. 2140 +----> canceled 2141 / 2142 +----> pending --------> processing ---------+------> completed 2143 | ^ ^ \ 2144 --->+ | | +----> aborted 2145 | v v / 2146 +----> pending-held processing-stopped ----+ 2148 Normally a job progresses from left to right. Other state transitions 2149 are unlikely, but are not forbidden. Not shown are the transitions to 2150 the 'canceled' state from the 'pending', 'pending-held', 'processing', 2151 and 'processing-stopped' states. 2153 4.3.9 job-state-reasons (1setOf type2 keyword) 2155 This attribute provides additional information about the job's current 2156 state, i.e., information that augments the value of the job's "job- 2157 state" attribute. 2159 Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT 2160 implement them, even if (1) the output device supports the 2161 functionality represented by the reason and (2) is available to the 2162 Printer object implementation. These values MAY be used with any job 2163 state or states for which the reason makes sense. Furthermore, when 2164 implemented, the Printer SHALL return these values when the reason 2165 applies and SHALL NOT return them when the reason no longer applies 2166 whether the value of the job's "job-state" attribute changed or not. 2167 When the job does not have any reasons for being in its current state, 2168 the Printer shall set the value of the job's "job-state-reasons" 2169 attribute to 'none'. 2171 NOTE - While values cannot be added to the 'job-state' attribute 2172 without impacting deployed clients that take actions upon receiving 2173 "job-state"values, it is the intent that additional "job-state- 2174 reasons" values can be defined and registered without impacting such 2176 Expires January 25, 1998 2177 deployed clients. In other words, the "job-state-reasons" attribute 2178 is intended to be extensible. 2180 The following standard values are defined: 2182 NOTE - For easy of understanding the order of the reasons is presented 2183 in the order in which the reason is most likely to occur: 2185 'none': There are no reasons for the job's current state. 2186 'job-incoming': The CreateJob operation has been accepted by the 2187 Printer, but the Printer is expecting additional SendDocument 2188 operations and/or is accessing/accepting document data. 2189 'job-outgoing': The Printer is transmitting the job to the output 2190 device. 2191 'job-hold-until-specified': The value of the job's "job-hold- 2192 until" attribute specifies a time period that is still in the 2193 future. The job SHALL NOT be a candidate for processing until 2194 this reason is removed and there are no other reasons to hold the 2195 job. 2196 'resources-are-not-ready': At least one of the resources needed by 2197 the job, such as media, fonts, resource objects, etc., is not 2198 ready on any of the physical printer's for which the job is a 2199 candidate. This condition MAY be detected when the job is 2200 accepted, or subsequently while the job is pending or processing, 2201 depending on implementation. 2202 ISSUE: Change to job-hold-until-specified-time and job-hold-until- 2203 resources-ready to make it clear that the job-state is pending- 2204 held?. 2206 'printer-stopped-partly': The value of the Printer's "printer- 2207 state-reasons" attribute contains the value 'stopped-partly'. 2208 'printer-stopped': The value of the Printer's "printer-state" 2209 attribute is 'stopped'. 2210 'job-printing': The output device is marking media. This value is 2211 useful for Printers which spend a great deal of time processing 2212 when no marking is happening and then want to show that marking 2213 is now happening. 2214 'job-cancelled-by-user': The job was cancelled by the user using 2215 the CancelJob request, i.e., by a user whose name is the same as 2216 the value of the job's "job-originating-user" attribute. 2217 'job-cancelled-by-operator': The job was cancelled by the operator 2218 using the CancelJob request, i.e., by a user whose name is 2219 different than the value of the job's "job-originating-user" 2220 attribute. 2221 'job-completed-successfully': The job completed successfully. 2222 'job-completed-with-warnings': The job completed with warnings. 2223 'job-completed-with-errors': The job completed with errors (and 2224 possibly warnings too). 2226 Expires January 25, 1998 2228 'logfile-pending ': The job's logfile is pending file transfer. 2229 'logfile-transferring': The job's logfile is being transferred. 2230 ISSUE: How does this protocol get a logfile transfer to occur? I 2231 suggest we delete them. 2233 4.3.10 job-state-message (text) 2235 This attributes specifies supplemental information about the Job State 2236 in human readable text. 2238 4.3.11 output-device-assigned (name) 2240 This attribute identifies the Output Device to which the Printer has 2241 assigned this job. If an output device implements an embedded IPP 2242 Printer, the Printer NEED NOT set this attribute. If a Print Server 2243 implements a Printer, the value MAY be empty until the Printer assigns 2244 an output device to the job. 2246 4.3.12 time-since-pending (integer) 2248 This attribute indicates the amount of time in milliseconds that has 2249 passed since the Job was first put into the pending state.. 2251 4.3.13 time-since-processing (integer) 2253 This attribute indicates the amount of time in milliseconds that has 2254 passed since the Job first entered the processing state. 2256 4.3.14 time-since-completed (integer) 2258 This attribute indicates the amount of time in milliseconds that has 2259 passed since the Job was completed. 2261 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1)) 2263 This attribute indicates the number of jobs that are "ahead" of this 2264 job in the current scheduled order. For efficiency, it is only 2265 necessary to calculate this value when an operation is performed that 2266 requests this attribute. 2268 Note: This attribute is necessary since an end user may request just 2269 their own jobs and they need some relative position indicator if there 2270 are other jobs interspersed in the waiting list which are not returned 2271 in the response or cannot be because of site security policy 2272 restrictions. 2274 Expires January 25, 1998 2275 ISSUE: No longer possible to request an owners job, so may this 2276 attribute isn't important now. 2278 4.3.16 job-message-from-operator (text) 2280 This attribute provides a message from an operator, system 2281 administrator or "intelligent" process to indicate to the end user the 2282 reasons for modification or other management action taken on a job. 2284 4.3.17 job-k-octets-processed (integer(0:2**31 - 1)) 2286 This attribute specifies the number of octets completed in K octets, 2287 i.e., in units of 1024 octets. The value SHALL be rounded up, so that 2288 a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2289 2048 SHALL be 2, etc. 2291 Note: This attribute and the following two attributes ("job- 2292 impressions-completed" and "job-sheets-completed") are intended to be 2293 counters as in the Job Monitoring MIB [27]. That is, if the "job- 2294 state" is 'processing' or 'processing-stopped', this value is intended 2295 to contain amount of the job that has been processed to the time at 2296 which the attributes are requested. 2298 4.3.18 job-impressions-completed (integer(0:2**31 - 1)) 2300 This job attribute specifies the number of impressions completed. This 2301 attribute is intended to be a counter as in the Job Monitoring MIB. 2303 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1)) 2305 This job attribute specifies the media-sheets completed. This 2306 attribute is intended to be a counter as in the Job Monitoring MIB. 2308 4.4 Document Attributes 2310 This group of attributes describes the document data for the job. For 2311 single-Document Jobs, they are supplied in the Print-Job or Print-URI 2312 requests. For multi-Document Jobs, they are supplied in each Send- 2313 Document or Send-URI request. 2315 Expires January 25, 1998 2316 +----------------------------+----------------------+----------------+ 2317 | Attribute | Syntax | MANDATORY? | 2318 +----------------------------+----------------------+----------------+ 2319 | document-name | name | MANDATORY | 2320 +----------------------------+----------------------+----------------+ 2321 | document-format | type 2 enum | | 2322 +----------------------------+----------------------+----------------+ 2323 | document-uri | uri | | 2324 +----------------------------+----------------------+----------------+ 2326 4.4.1 document-name (name) 2328 This attribute contains the name of the document used by the client to 2329 initially identify the document. When a client prints by reference, 2330 i.e. includes the document-URI attribute and no document content, this 2331 attribute SHALL be absent. 2333 4.4.2 document-format (type2 enum) 2335 See section 4.2.13 that describes the "document-format" Job Template 2336 attribute. This attribute is a job-template attribute. It may be 2337 specified with the job or separately for each document. In a Print-Job 2338 or Print-URI operation, there is no distinction between job and 2339 document attributes because there is only one job. If document-format 2340 is included with a Create-Job operation, it specifies the format for 2341 all documents. If document-format is included with a Send-Document or 2342 Send-URI operation, it overrides whatever format was specified with 2343 Create-Job. 2345 4.4.3 document-uri (uri) 2347 This attribute contains the URI of the document when the document 2348 content is not included in the Send Document operation. Note: For 2349 Print-URI and Send-URI "document-uri" is an explicit parameter which 2350 sets the "document-uri" attribute in the Document object. 2352 4.5 Printer Description Attributes 2354 These attributes form the attribute group called "printer- 2355 description". A Printer object may be realized in either a print 2356 server or output device. Note: How these attributes are set by an 2357 Administrator is outside the scope of this specification. The 2358 following table summarizes these attributes, their syntax, and whether 2359 or not they are MANDATORY. If they are not MANDATORY, they are 2360 OPTIONAL. 2362 Expires January 25, 1998 2363 +----------------------------+----------------------+----------------+ 2364 | Attribute | Syntax | MANDATORY? | 2365 +----------------------------+----------------------+----------------+ 2366 | printer-uri | uri | MANDATORY | 2367 +----------------------------+----------------------+----------------+ 2368 | printer-uri-user | uri | | 2369 +----------------------------+----------------------+----------------+ 2370 | printer-name | name | MANDATORY | 2371 +----------------------------+----------------------+----------------+ 2372 | printer-location | text | | 2373 +----------------------------+----------------------+----------------+ 2374 | printer-description | text | | 2375 +----------------------------+----------------------+----------------+ 2376 | printer-more-info-site | uri | | 2377 +----------------------------+----------------------+----------------+ 2378 | printer-driver-installer | uri | | 2379 +----------------------------+----------------------+----------------+ 2380 | printer-make-and-model | text | | 2381 +----------------------------+----------------------+----------------+ 2382 | printer-more-info- | uri | | 2383 | manufacturer | | | 2384 +----------------------------+----------------------+----------------+ 2385 | printer-state | type1 enum | MANDATORY | 2386 +----------------------------+----------------------+----------------+ 2387 | printer-state-reasons | 1setOf type2 keyword | | 2388 +----------------------------+----------------------+----------------+ 2389 | printer-state-message | text | | 2390 +----------------------------+----------------------+----------------+ 2391 | printer-is-accepting-jobs | boolean | MANDATORY | 2392 +----------------------------+----------------------+----------------+ 2393 | queued-job-count | integer | | 2394 +----------------------------+----------------------+----------------+ 2395 | printer-message-from- | text | | 2396 | operator | | | 2397 +----------------------------+----------------------+----------------+ 2398 | printer-language | human-language | MANDATORY | 2399 +----------------------------+----------------------+----------------+ 2400 | printer-language-supported | 1setOf human-language| MANDATORY | 2401 +----------------------------+----------------------+----------------+ 2402 | content-char-set-supported | 1setOf char-set | | 2403 +----------------------------+----------------------+----------------+ 2404 | content-char-set | char-set | | 2405 +----------------------------+----------------------+----------------+ 2406 | color-supported | boolean | | 2407 +----------------------------+----------------------+----------------+ 2408 | message-protection- | keyword | | 2409 | supported | | | 2410 +----------------------------+----------------------+----------------+ 2412 Expires January 25, 1998 2413 | authentication-author | keyword | | 2414 | ization-supported | | | 2415 +----------------------------+----------------------+----------------+ 2416 | color-supported | boolean | | 2417 +----------------------------+----------------------+----------------+ 2418 | pdl-override-supported | type2 keyword | | 2419 +----------------------------+----------------------+----------------+ 2421 4.5.1 printer-uri (uri) 2423 This attribute contains the URI for the printer. An administrator 2424 determines a printer's URI and sets this attribute to that URI. The 2425 precise format of a printer URI is implementation dependent. 2427 4.5.2 printer-uri-user (uri) 2429 This attribute contains the URI for an HTML page with more information 2430 about this printer. 2432 ISSUE: Get rid of "printer-uri-user" or "printer-more-info-site"? 2434 4.5.3 printer-name (name) 2436 This attribute contains the name of the printer. It is a name that is 2437 more user friendly than the printer-URI. An administrator determines a 2438 printer's name and sets this attribute to that name. This name may be 2439 the last part of the printer's URI or it may be unrelated. In non-US- 2440 English locales, a name may contain characters that are not allowed in 2441 a URI. 2443 4.5.4 printer-location (text) 2445 This attribute identifies the location of this printer. This could 2446 include things like: _in Room 123A, second floor of building XYZ_. 2448 4.5.5 printer-description (text) 2450 This attribute identifies the descriptive information about this 2451 Printer. This could include things like: "This printer can be used 2452 for printing color transparencies for HR presentations", or "Out of 2453 courtesy for others, please print only small (1-5 page) jobs at this 2454 printer", or even "This printer is going away on July 1, 1997, please 2455 find a new printer". 2457 4.5.6 printer-more-info-site (uri) 2459 This attribute contains a URI used to obtain more information about 2460 this specific printer. The information obtained from this URI is 2462 Expires January 25, 1998 2463 intended for end user consumption. Features outside the scope of IPP 2464 can be accessed from this URI. The information is intended to be 2465 specific to this printer instance and site services (e.g. job pricing, 2466 services offered, end user assistance). The printer manufacturer may 2467 initially populate this attribute. 2469 4.5.7 printer-driver-installer (uri) 2471 This attribute contains a URI to use to locate the driver installer 2472 for this printer. This attribute is intended for consumption by 2473 automata. The mechanics of print driver installation is outside the 2474 scope of IPP. The printer manufacturer may initially populate this 2475 attribute. 2477 4.5.8 printer-make-and-model (text) 2479 This attribute identifies the make and model of the printer. 2481 4.5.9 printer-more-info-manufacturer (uri) 2483 This attribute contains a URI used to obtain more information about 2484 this type of printer. The information obtained from this URI is 2485 intended for end user consumption. Features outside the scope of IPP 2486 can be accessed from this URI (e.g., latest firmware, upgrades, print 2487 drivers, optional features available). The information is intended to 2488 be germane to this printer without regard to site specific 2489 modifications or services. 2491 4.5.10 printer-state (type1 enum) 2493 This attribute identifies the current state of the printer. The 2494 "printer-state reasons" attribute augments the "printer-state" 2495 attribute to give more detailed information about the Printer in the 2496 given printer state. 2498 A Printer SHALL keep this attribute set in a timely manner to the 2499 value in the table below which most accurately reflects the state of 2500 the Printer. If the printer has jobs that are requesting notification 2501 of printer-problems or job-problems, then _timely manner_ means 2502 continually.. Otherwise, _timely manner_ means whether the Printer 2503 receives a query for this attribute. A Printer NEED NOT implement all 2504 values if they are not applicable to a given implementation. 2506 The following standard values are defined: 2508 'unknown'(2): The Printer state is not known, or is indeterminate. 2509 A Printer SHALL use this state only if it cannot determine its 2510 actual state. 2512 Expires January 25, 1998 2514 'idle'(3): If a Printer receives a job (whose required resources 2515 are ready) while in this state, such a job SHALL transit into the 2516 processing state immediately. If the printer-state-reasons 2517 attribute contains any reasons, they SHALL be reasons that would 2518 not prevent a job from transiting into the processing state 2519 immediately, e.g., toner-low. Note: if a Printer controls more 2520 than one output device, the above definition implies that a 2521 Printer is idle if at least one output device is idle. 2523 'processing'(4): If a Printer receives a job (whose required 2524 resources are ready) while in this state, such a job SHALL 2525 transit into the pending state immediately. Such a job SHALL 2526 transit into the processing state only after jobs ahead of it 2527 complete. If the printer-state-reasons attribute contains any 2528 reasons, they SHALL be reasons that do not prevent the current 2529 job from printing, e.g. toner-low. Note: if a Printer controls 2530 more than one output device, the above definition implies that a 2531 Printer is processing if at least one output device is 2532 processing, and none is idle. 2534 'stopped'(5): If a Printer receives a job (whose required 2535 resources are ready) while in this state, such a job SHALL 2536 transit into the pending state immediately. Such a job SHALL 2537 transit into the processing state only after some human fixes the 2538 problem that stopped the printer and after jobs ahead of it 2539 complete printing. The "printer-state-reasons" attribute SHALL 2540 contain at least one reason, e.g. media-jam, which prevents it 2541 from either processing the current job or transiting a pending 2542 job to the processing state. 2544 Note: if a Printer controls more than one output device, the 2545 above definition implies that a Printer is stopped only if all 2546 output devices are stopped. Also, it is tempting to define 2547 stopped as when a sufficient number of output devices are stopped 2548 and leave it to an implementation to define the sufficient 2549 number. But such a rule complicates the definition of stopped 2550 and processing. For example, with this alternate definition of 2551 stopped, a job can move from idle to processing without human 2552 intervention, even though the Printer is stopped. 2554 4.5.11 printer-state-reasons (1setOf type2 keyword) 2556 This attribute supplies additional detail about the printer's state. 2558 Each MAY have asuffix to indicate its level of severity. The three 2559 levels are: report (least severe), warning, and error (most severe). 2561 Expires January 25, 1998 2562 - '-report': This suffix indicates that the reason is a "report". 2563 An implementation may choose to omit some or all reports. Some 2564 reports specify finer granularity about the printer state; others 2565 serve as a precursor to a warning. A report SHALL contain nothing 2566 that could affect the printed output. 2567 - '-warning': This suffix indicates that the reason is a "warning". 2568 An implementation may choose to omit some or all warnings. 2569 Warnings serve as a precursor to an error. A warning SHALL 2570 contain nothing that prevents a job from completing, though in 2571 some cases the output may be of lower quality. 2572 - '-error': This suffix indicates that the reason is an "error". . 2573 An implementation SHALL include all errors. If this attribute 2574 contains one or more errors, printer SHALL be in the stopped 2575 state. 2577 If the implementation does not add any one of the three suffixes, all 2578 parties SHALL assume that the reason is an "error". 2580 If a logical Printer controls more than one output device, each value 2581 of this attribute MAY apply to one or more of the output devices. An 2582 error on one output device that does not stop the logical Printer as a 2583 whole MAY appear as a warning in the Printer's "printer-state-reasons 2584 attribute". The "printer-state" for such a Printer may have a value 2585 of 'stopped' even though there are with no "printer-state-reasons" 2586 values that are "errors". 2588 The following standard values are defined: 2590 'media-needed': A tray has run out of media. 2591 'media-jam': The printer has a media jam. 2592 'paused': Someone has paused the Printer. In this state, a Printer 2593 SHALL not produce printed output, but it SHALL perform other 2594 operations requested by a client. If a Printer had been printing 2595 a job when the Printer was paused, the Printer SHALL resume 2596 printing that job when the Printer is no longer paused and leave 2597 no evidence in the printed output of such a pause. 2598 'shutdown': Someone has removed a Printer from service, and it may 2599 be powered down or physical removed. In this state, a Printer 2600 SHALL not produce printed output, and unless the Printer is 2601 realized by a print server that is still active, the Printer 2602 SHALL perform no other operations requested by a client, 2603 including returning this value. If a Printer had been printing a 2604 job when it was shutdown, the Printer need not resume printing 2605 that job when the Printer is no longer shutdown. If the Printer 2606 resumes printing such a job, it may leave evidence in the printed 2607 output of such a shutdown, e.g. the part printed before the 2608 shutdown may be printed a second time after the shutdown. 2610 Expires January 25, 1998 2612 'connecting-to-device': The server has scheduled a job on the 2613 Printer and is in the process of connecting to a shared network 2614 output device (and might not be able to actually start printing 2615 the job for an arbitrarily long time depending on the usage of 2616 the output device by other servers on the network). 2617 'timed-out': The server was able to connect to the output device 2618 (or is always connected), but was unable to get a response from 2619 the output device. 2620 'stopping': The printer will be stopping in a while and will change 2621 its reason to printer-stopped. This reason is a non-critical, 2622 even for a Printer with a single output device. When an output- 2623 device ceases accepting jobs, the Printer will have this state 2624 while the output device completes printing. 2625 'stopped-partly': When a Printer controls more than one output 2626 device, this reason indicates that one or more output devices are 2627 stopped. If the reason is a report, fewer than half of the output 2628 devices are stopped. If the reason is a warning, fewer than all 2629 of the output devices are stopped. 2630 'toner-low': The Printer is low on toner. 2631 'spool-area-full': The limit of persistent storage allocated for 2632 spooling has been reached. 2634 4.5.12 printer-state-message (text) 2636 This attribute specifies the additional information about the printer 2637 state in human readable text and it is set by the Printer (or the 2638 Administrator by some mechanism outside the scope of IPP). 2640 ISSUE: Do we want to delete the last phrase and imply that this is a 2641 human readable version of printer-state and printer-state-reason and 2642 not something created by an admin? printer-message-from-the-operator 2643 is from an admin. 2645 4.5.13 printer-is-accepting-jobs (boolean) 2647 This attribute determines whether the printer is currently accepting 2648 job. If the value is true, the printer is accepting jobs. If the 2649 value is false, the printer is currently rejecting any jobs submitted 2650 to it. 2652 Note: This value is independent of the printer state and printer- 2653 state-reasons because its value does not affect the current job; 2654 rather it affects future jobs. This attribute may cause the Printer to 2655 reject jobs when the printer-state is idle or it may cause the Printer 2656 to accepts jobs when the printer-state is stopped. 2658 Expires January 25, 1998 2659 4.5.14 queued-job-count (integer(0:2**31 - 1)) 2661 This attribute contains a count of the number of jobs that are either 2662 pending and/or processing and is set by the Printer. 2664 4.5.15 printer-message-from-operator (text) 2666 This attribute provides a message from an operator, system 2667 administrator or "intelligent" process to indicate to the end user 2668 information or status of the printer, such as why it is unavailable or 2669 when it is expected to be available. 2671 4.5.16 printer-human-language (human-language) 2673 This attribute specifies the current human-language that the Printer 2674 is operating in. 2676 4.5.17 printer-human-language-supported (1setOf human-language) 2678 This attribute specifies the supported human languages that the 2679 Printer operates in. 2681 4.5.18 printer-content-char-set (char-set) 2683 This attribute specifies the current character set encoding that the 2684 Printer is operating in. If this attribute is not supported, the 2685 Printer MUST support UTF-8. 2687 4.5.19 printer-content-char-set-supported (1setOf char-set) 2689 This attribute specifies the supported character set encodings that 2690 the Printer operates in. If this attribute is not supported, the 2691 Printer MUST support UTF-8. 2693 4.5.20 color-supported (boolean) 2695 This attribute identifies whether the Printer is capable of any type 2696 of color printing at all. All document instructions having to do with 2697 color are embedded within the document PDL (none are external IPP 2698 attributes). 2700 4.5.21 pdl-override (type2 keyword) 2702 A client supplies Job Template attributes to affect the rendering, 2703 production and finishing of the documents in the job. Similar types 2704 of instructions may also be contained in the document to be printed, 2705 that is, within the Page Description Language (PDL) of the document 2706 data. If there is a conflict between the value of one of these IPP 2708 Expires January 25, 1998 2709 Job Template attributes, and a corresponding instruction in the 2710 document (either implicit or explicit), it is desirable that the value 2711 of the IPP attribute take precedence over the document instruction. 2712 Until companies that supply interpreters for PDLs, such as PostScript 2713 and PCL allow a way for external attributes (such as IPP attributes) 2714 to take precedence over internal job production instructions, a 2715 Printer might not be able to support the semantics that IPP attributes 2716 override (take on a higher precedence) the embedded PDL instructions. 2717 This attribute expresses how a particular Printer implementation 2718 handles these conflicts. 2720 This attribute takes on the following values: 2722 - 'guaranteed': This value indicates that the Printer guarantees 2723 that all IPP attribute values take precedence over embedded PDL 2724 instructions. 2725 - 'attempted': This value indicates that the Printer attempts to 2726 make sure that IPP attribute values take precedence over embedded 2727 PDL instructions, however there is no guarantee. 2728 - 'ignored': This value indicates that the Printer ignores all IPP 2729 Job Template attributes and it makes no attempts to ensure that 2730 IPP attribute values take precedence over embedded PDL 2731 instructions. 2733 This is a MANDATORY attribute. 2735 Note: Since 'attempted' does not offer any type of guarantee, a given 2736 implementation might not do a very "good" job of attempting to ensure 2737 that IPP attributes take a higher precedence over PDL instructions 2738 embedded in the document data, but it would still be a conforming 2739 implementation. 2741 If the value of this attribute is 'guaranteed', the implementation 2742 MUST guarantee that the IPP attribute values take precedence over any 2743 related job processing instructions in the PDL Job's document data. 2744 This can be done by modifying the interpreter within the output device 2745 itself to understand IPP attributes, or by merging theses Job Template 2746 attributes directly into the document data, or in any other 2747 implementation specific manner. In any case, the semantics of 2748 'guaranteed' MUST be preserved. 2750 4.5.22 Security Related Attributes 2752 The security document [22] describes four common usage scenarios: 2754 - no security 2755 - message protection 2756 - client authentication and authorization 2758 Expires January 25, 1998 2759 - mutual authentication, authorization, and message protection 2761 In order to let an end user know what to expect in terms of security, 2762 there are two attributes described below. Since by definition an end 2763 user, because of security reasons, might not be allowed to query these 2764 two attributes, therefore, it is important that if these two 2765 attributes are supported, then they are also populated in the 2766 directory entry (see [24]). 2768 These attributes allow for minimal client/server negotiation regarding 2769 security features. If the Printer requires the feature, the client 2770 can decide whether or not to participate. If the client does not 2771 support the feature, and the Printer requires it, then the client 2772 knows before hand that such an interaction would fail. 2774 Standard values for these two attributes include: 2776 'supported' - means that the Printer is capable of supporting the 2777 security feature (somehow), but it is does not require the client 2778 to use it. 2779 'required' - means that the Printer is capable of supporting the 2780 security feature (somehow) and the client is required to use it. 2781 'none' - means that the Printer is not capable of supporting 2782 message protection at all. 2784 Note: This is a single-valued attribute, not a multi-valued 2785 attribute, i.e., an implementation can not support 'none' and 2786 'required' or any other combination of values. 2788 4.5.22.1 message-protection-supported (keyword) 2790 This attribute is used to determine whether or not a printer supports 2791 or requires message protection (whether it be through encryption or 2792 some other privacy mechanism). 2794 4.5.22.2 authentication-authorization-supported (keyword) 2796 This attribute is used to determine whether or not a printer supports 2797 or requires authentication and authorization. 2799 4.5.23 best-effort (1setOf boolean) 2801 This attribute determines how a Printer handles a conflict between 2802 what a client requests in a create request and what a Printer 2803 supports. The value 'true' means that a best effort attempt to print 2804 the Job is possible. In order to achieve this, the Printer might 2805 ignore some attributes or might have to substitute some supported 2806 value for a requested value which is unsupported. The value 'false' 2808 Expires January 25, 1998 2809 means that only total fidelity is supported; a best effort attempt to 2810 print the Job is not possible. In other words, the job can only be 2811 printed exactly as specified in the create request. If one or more of 2812 the client-supplied values in the create request is not supported by 2813 the Printer, the Printer rejects the create request. 2815 For example, if a client supplies a "finishings" Job Template 2816 attribute set to 'staple' but the printer does not support stapling 2817 (not a feature or it is temporarily out of staples) and if the "best- 2818 effort" input parameter is set to 'true' and the Printer's "best- 2819 effort-supported" attributes includes 'true' then the Printer tries to 2820 still print the job even if it can not be stapled. 2822 Note: that the "best-effort" attribute in a create request is unlikely 2823 to be used much. Many clients will submit a job with no attributes, 2824 and the Printer will use default values. Other clients will submit a 2825 job via a GUI that limits the attribute values to values which are 2826 supported. Best effort printing is useful in the GUI context only if 2827 a user expects the job to be moved to another printer and prefers a 2828 sub-optimal result to nothing at all. Best effort printing is most 2829 useful in the case where an end-user uses a command line interface to 2830 request attributes that might not be supported. 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 ISSUE: We still have a problem with conditionally mandatory. What 2850 MUST be supported? What NEED NOT? What SHOULD NOT? 2852 Expires January 25, 1998 2853 5.2 Client Conformance Requirements 2855 A conforming client SHALL send operations that conform to the protocol 2856 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 2857 [23]. For each parameter or attribute included in an operation 2858 request, a conforming client SHALL send a value whose type and value 2859 syntax conforms to the requirement of this document 2861 Otherwise, there are no conformance requirements placed on the user 2862 interfaces provided by IPP clients or their applications. For 2863 example, one application might not allow an end user to submit 2864 multiple documents per job, while another does. One application might 2865 first query a Printer object in order to supply a graphical user 2866 interface (GUI) dialogue box with supported and default values whereas 2867 a different implementation might not. 2869 When sending a Get-Attributes or create request, an IPP client need 2870 not supply any attributes. 2872 A client SHALL be able to accept any of the attribute syntaxes defined 2873 in Section 4.1 that may be returned to it in a response from a Printer 2875 A query response may contain parameters, attributes, and values that 2876 the client does not expect. Therefore, a client implementation MUST 2877 gracefully handle such responses and not refuse to interoperate with a 2878 conforming Printer that is returning extended registered or private 2879 attributes and/or attribute values that conform to Section 6. Clients 2880 may choose to ignore any parametes, attributes, or values that it does 2881 not understand. 2883 5.3 Printer Object Conformance Requirements 2885 This section specifies the conformance requirements for conforming 2886 Printer object implementations with respect to objects, operations, 2887 and attributes. 2889 5.3.1 Objects 2891 Conforming Printer implementations SHALL implement all of the model 2892 objects as defined in this specification in the indicated sections: 2894 Section 0 2895 Printer Object 2896 Section 2.2 Job Object 2897 Section 2.3 Document Object 2899 Expires January 25, 1998 2901 5.3.2 Operations 2903 Conforming Printer implementations SHALL implement all of the 2904 MANDATORY model operations, including mandatory responses, as defined 2905 in this specification in the indicated sections: 2907 For a Printer object: 2908 Get-Operations (section 3.2.1) MANDATORY 2909 Print-Job (section 3.2.2) MANDATORY 2910 Print-URI (section 3.2.3) OPTIONAL 2911 Validate-Job (section 3.2.4) MANDATORY 2912 Create-Job (section 3.2.5) OPTIONAL 2913 Get-Jobs (section 3.2.7) MANDATORY 2914 Get-Attributes (section3.2.6) MANDATORY 2916 For a Job object: 2917 Send-Document (section 3.3.1) OPTIONAL 2918 Send-URI (section 3.3.2) OPTIONAL 2919 Cancel-Job (section 3.3.3) MANDATORY 2920 Get-Attributes (section 3.3.4) MANDATORY 2922 Conforming Printer implementations SHALL support all request and 2923 response parameters and all values of such parameters, except for 2924 parameters which are collections of attributes. The following section 2925 on attributes specifies the support required for attributes. 2927 5.3.3 Attributes 2929 Conforming Printer implementations SHALL support all of the MANDATORY 2930 attributes, as defined in this specification in the indicated 2931 sections. 2933 Conforming Printer implementations SHALL support all CONDITIONALLY 2934 MANDATORY attributes as defined in this specification (in the 2935 indicated sections) if in the implementation the condition us true. 2937 If a Printer implements a "xxx-supported" attribute it MUST implement 2938 the corresponding "xxx" default value attribute and vice versa. 2940 ISSUE: For each attribute Job-Template attribute _xxx_, there are 3 2941 attributes: Job attributes _xxx_, Printer attribute _xxx_ (default 2942 value) and Printer attribute _xxx-supported_; a Printer supports 2943 either all three of these attributes or none of the three 2945 If a Printer implements an attribute, it SHALL support only those 2946 values specified in this document or through the extension mechanism 2947 described in the next section. It MAY support any non-empty subset of 2949 Expires January 25, 1998 2950 these values. That is, it SHALL support at least one of the specified 2951 values and at most all of them. 2953 5.3.4 Printer extensions 2955 A conforming Printer may support registered extensions and private 2956 extensions, as long as they meet the requirements specified in Section 2957 6. 2959 A conforming Printer SHALL send responses that conform to the protocol 2960 defined in _Internet Printing Protocol/1.0: Protocol Specification_ 2961 [23]. For each parameter or attribute included in an operation 2962 response, a conforming printer SHALL send a value whose type and value 2963 syntax conforms to the requirement of this document 2965 5.3.5 Attribute Syntaxes 2967 A Printer SHALL be able to accept any of the attribute syntaxes 2968 defined in Section 4.1 in any operation in which a client may supply 2969 attributes or parameters. Furthermore, a Printer SHALL return 2970 attributes to the client in operation responses that conform to the 2971 syntax specified in Section 4.1. 2973 5.4 Security Conformance Requirements 2975 The security mechanisms being considered for IPP fall outside the 2976 scope of the application layer protocol itself. There are two 2977 mechanisms used to begin secure communications using IPP: 2979 1. Information in the directory entry for an IPP Printer (or from 2980 additional information at a Web site hosting the IPP Printer) 2981 indicate which, if any, security protocols are used in 2982 conjunction with IPP. 2984 2. The URI for the IPP Printer contains the security protocol 2985 information (https://..., etc.). 2987 In either case, the security protocol (if any) is initiated first 2988 which allows for the negotiation of security features. IPP is then 2989 run as an application protocol on top of the security protocols. One 2990 cannot "bootstrap" the security features from IPP itself. 2992 ISSUE: The above is not quite correct. Waiting for better description 2993 from the security document [22]. 2995 Expires January 25, 1998 2996 6. IANA Considerations (registered and private extensions) 2998 During the development of this standard, the IPP working group 2999 (working with IANA) will register additional keywords and enums while 3000 the standard is in the proposed and draft states according to the 3001 procedures described in this section. IANA will handle registration 3002 of additional enums after this standard is approved in cooperation 3003 with an IANA-appointed registration editor from the IPP working group 3004 according to the procedures described in this section. 3006 6.1 Typed Extensions 3008 This document identifies both keywords and enum values. For private 3009 (unregistered) keyword extensions, implementers SHOULD use keywords 3010 with a suitable distinguishing prefix, such as "xxx-" where xxx is the 3011 (lowercase) company name registered with IANA for use in domain names. 3012 For private (unregistered) enum extension, implementers SHOULD support 3013 values in the reserved integer range (see "enum"). 3015 The definitions of these various types are as follows. 3017 6.1.1 Type1 3019 The IPP standard must be revised to add a new keyword or a new enum. 3020 No private keywords or enums are allowed. 3022 This draft contains the following type1 keywords: 3024 - 3026 This draft contains the following type1 enums: 3028 - 3030 6.1.2 Type2 3032 Implementers can, at any time, add new keyword or enum values by 3033 proposing them to the IPP working group for registration (or an IANA- 3034 appointed registry advisor after the IPP working group is no longer 3035 certified) where they are reviewed for approval. IANA keeps the 3036 registry. 3038 This draft contains the following type2 keywords: 3040 - 3042 This draft contains the following type2 enums: 3044 Expires January 25, 1998 3045 - 3047 6.1.3 Type3 3049 Implementers can, at any time, add new keyword and enum values by 3050 submitting a registration request directly to IANA, no IPP working 3051 group or IANA-appointed registry advisor review is required. 3053 This draft contains the following type3 keywords: 3055 - 3057 This draft contains the following type3 enums: 3059 - 3061 6.1.4 Type4 3063 Anyone (system administrators, system integrators, site managers, 3064 etc.) can, at any time, add new installation-defined values (keywords 3065 or new enum values) to a local system. Care SHOULD be taken by the 3066 implementers to see that keywords do not conflict with other keywords 3067 defined by the standard or as defined by the implementing product. 3068 There is no registration or approval procedure for type4 values. 3070 This draft contains the following type4 keywords: 3072 - 3074 This draft contains the following type4 enums: 3076 - 3078 6.2 Registration of MIME types/sub-types for document-formats 3080 The "document-format" attribute IANA enums for indicating document 3081 formats which IANA registers as ? names. 3083 ISSUE: MIME type/sub-types has raised its head again. 3085 7. Security Considerations 3087 There is another Internet-Draft called "Internet Printing 3088 Protocol/1.0: Security" [22]. That document is being drafted and 3089 reviewed in parallel with this document. The mapping of IPP on top of 3090 appropriate security protocols will be described in that document. 3092 Expires January 25, 1998 3093 IPP does not introduce any new, general purpose security mechanisms 3094 for authentication and encryption. 3096 A Printer may choose, for security reasons, not to return all 3097 attributes that a client requests. It may even return none of the 3098 requested attributes. In such cases, the status returned is the same 3099 as if the Printer had returned all requested attributes. The client 3100 cannot tell by such a response whether the requested attribute was 3101 present or absent on the Printer. 3103 8. References 3105 [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 3106 J., "Printer MIB", RFC 1759, March 1995. 3108 [2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC 3109 2068, January 1997 3111 [3] Crocker, D., "Standard for the Format of ARPA Internet Text 3112 Messages", RFC 822, August 1982. 3114 [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 3115 1993. 3117 [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. 3119 [6] Herriot, R. (editor), X/Open A Printing System Interoperability 3120 Specification (PSIS), August 1995. 3122 [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing 3123 Interfaces, POSIX 1387.4 D8, 1994. 3125 [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 3126 Extensions) Part One: Mechanism for Specifying and Describing the 3127 Format of Internet Message Bodies", RFC 1521, September, 1993. 3129 [9] Braden, S., "Requirements for Internet Hosts - Application and 3130 Support", RFC 1123, October, 1989, 3132 [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 3133 1179, August 1990. 3135 [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 3136 Locators (URL)", RFC 1738, December, 1994. 3138 [20] Internet Printing Protocol: Requirements 3140 Expires January 25, 1998 3142 [21] Internet Printing Protocol/1.0: Model and Semantics (This 3143 document) 3145 [22] Internet Printing Protocol/1.0: Security 3147 [23] Internet Printing Protocol/1.0: Protocol Specification 3149 [24] Internet Printing Protocol/1.0: Directory Schema 3151 [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3152 Levels", RFC 2119 , March 1997 3154 [26] H. Alvestrand, " Tags for the Identification of Languages", RFC 3155 1766, March 1995. 3157 [27] T. Hastings, "Job Monitoring MIB", , June 1997. 3160 [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO 3161 10646, RFC 2044, October 1996. 3163 [29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt, 3164 July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1]. 3166 [30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND 3167 SPECIFICATION", RFC 1035, November 1987. 3169 [31] ?, " ", RFC 2130, ?. 3171 [32] ?, " ", RFC 1514, ?. 3173 [33] ?, " ", RFC 1903, ?. 3175 9. Author's Address 3177 Scott A. Isaacson (Editor) 3178 Novell, Inc. 3179 122 E 1700 S 3180 Provo, UT 84606 3182 Phone: 801-861-7366 3183 Fax: 801-861-4025 3184 EMail: scott_isaacson@novell.com 3186 Tom Hastings 3187 Xerox Corporation 3188 701 S. Aviation Blvd. 3190 Expires January 25, 1998 3191 El Segundo, CA 90245 3193 Phone: 310-333-6413 3194 Fax: 310-333-5514 3195 EMail: hastings@cp10.es.xerox.com 3197 Robert Herriot 3198 Sun Microsystems Inc. 3199 901 San Antonio.Road, MPK-17 3200 Palo Alto, CA 94303 3202 Phone: 415-786-8995 (Area code change to 650 in August 1997) 3203 Fax: 415-786-7077 (Area code change to 650 in August 1997) 3204 Email: robert.herriot@eng.sun.com 3206 Roger deBry 3207 HUC/003G 3208 IBM Corporation 3209 P.O. Box 1900 3210 Boulder, CO 80301-9191 3212 Phone: (303) 924-4080 3213 Fax: (303) 924-9889 3214 Email: debry@vnet.ibm.com 3216 Patrick Powell 3217 San Diego State University 3218 9475 Chesapeake Dr., Suite D 3219 San Diego, CA 95123 3221 Phone: (619) 874-6543 3222 Fax: (619) 279-8424 3223 Email: papowell@sdsu.edu 3225 IPP Mailing List: ipp@pwg.org 3226 IPP Mailing List Subscription: ipp-request@pwg.org 3227 IPP Web Page: http://www.pwg.org/ipp/ 3229 Other Participants: 3231 Chuck Adams - Tektronix 3232 Jeff Barnett - IBM 3233 Ron Bergman - Data Products 3234 Sylvan Butler, HP 3235 Keith Carter, IBM Corporation 3236 Jeff Copeland - QMS 3237 Andy Davidson - Tektronix 3238 Mabry Dozier - QMS 3240 Expires January 25, 1998 3241 Lee Farrell - Canon Information Systems 3242 Steve Gebert - IBM 3243 Babek Jahromi, Microsoft 3244 David Kellerman - Northlake Software 3245 Rick Landau - Digital 3246 Harry Lewis - IBM 3247 Pete Loya - HP 3248 Ray Lutz - Cognisys 3249 Mike MacKay, Novell, Inc. 3250 Carl-Uno Manros, Xerox, Corp. 3251 Jay Martin - Underscore 3252 Stan McConnell - Xerox 3253 Paul Moore, Microsoft 3254 Pat Nogay - IBM 3255 Bob Pentecost - HP 3256 Rob Rhoads - Intel 3257 David Roach - Unisys 3258 Stuart Rowley, Kyocera Hiroyuki Sato - Canon 3259 Bob Setterbo - Adobe 3260 Devon Taylor, Novell, Inc. 3261 Mike Timperman - Lexmark 3262 Randy Turner - Sharp 3263 Atsushi Yuki - Kyocera 3264 Lloyd Young - Lexmark 3265 Bill Wagner - DPI 3266 Jim Walker - DAZEL 3267 Chris Wellens - Interworking Labs 3268 Rob Whittle - Novell 3269 Don Wright - Lexmark 3270 Peter Zehler, Xerox, Corp. 3272 Expires January 25, 1998 3274 10. APPENDIX A: Terminology 3276 This specification uses the terminology defined in this section. 3278 10.1 Conformance Terminology 3280 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 3281 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 3282 document are to be interpreted as described in RFC 2119 [25]. The 3283 sections below reiterate these definitions and include some additional 3284 ones. 3286 10.1.1 MUST 3288 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means 3289 that the definition is an absolute requirement of the specification. 3291 10.1.2 MUST NOT 3293 This phrase, or the phrase "SHALL NOT", means that the definition is 3294 an absolute prohibition of the specification. 3296 10.1.3 SHOULD 3298 This word, or the adjective "RECOMMENDED", means that there may exist 3299 valid reasons in particular circumstances to ignore a particular item, 3300 but the full implications must be understood and carefully weighed 3301 before choosing a different course. 3303 10.1.4 SHOULD NOT 3305 This phrase, or the phrase "NOT RECOMMENDED" means that there may 3306 exist valid reasons in particular circumstances when the particular 3307 behavior is acceptable or even useful, but the full implications 3308 should be understood and the case carefully weighed before 3309 implementing any behavior described with this label. 3311 10.1.5 MAY 3313 This word, or the adjective "OPTIONAL", means that an item is truly 3314 optional. One vendor may choose to include the item because a 3315 particular marketplace requires it or because the vendor feels that it 3316 enhances the product while another vendor may omit the same item. An 3317 implementation which does not include a particular option MUST be 3318 prepared to interoperate with another implementation which does 3319 include the option, though perhaps with reduced functionality. In the 3321 Expires January 25, 1998 3322 same vein an implementation which does include a particular option 3323 MUST be prepared to interoperate with another implementation which 3324 does not include the option (except, of course, for the feature the 3325 option provides.) 3327 10.1.6 CONDITIONALLY MANDATORY 3329 This term means that an item MUST be implemented in a conforming 3330 implementation if the specified condition is true. Conversely, a 3331 conforming implementation NEED NOT implement the item if the specified 3332 condition is false. 3334 ISSUE: Bob H. writes: After writing the paragraphs below, I have 3335 concluded that job-template attributes should all be optional, and we 3336 should drop the "conditionally mandatory" term. At the very least, 3337 they have to be optional for print servers. There may be some 3338 argument for making some of them conditionally mandatory in embedded 3339 printers, but the extra complexity of the explanation may not be worth 3340 the trouble. We all need to give this issue some more thought. As long 3341 as the explanation is so murky, I don't think any two people would 3342 come up with the same list of mandatory attributes for an 3343 implementation and that is no better than making them optional. 3345 Now for the details. 3347 Before discussing the issue, we should understand that there are two 3348 categories of attributes: 3350 o printer control (e.g. media or sides) 3352 o job control (e.g. job-priority, job-sheets or notify-events) 3354 And there are two types of implementations 3356 o embedded printer 3358 o print server 3360 We also need to look at the model document's definition of 3361 conditionally mandatory. The following is paraphrasing from 3 parts of 3362 the model document. It says an implementation must support the 3363 attribute if it knows about and is able to support it, and need not 3364 support the attribute that controls a feature that the output device 3365 does not implement or expose. It also says that if a certain 3366 implementation supports only one well-known value of some "xxx- 3367 supported" attribute, it is not required that that implementation 3368 support that attribute. 3370 Expires January 25, 1998 3371 This definition is somewhat reasonable for an embedded printer. It is 3372 easy to determine if an output device supports an IPP printer control 3373 attribute, though if the feature has only one value it may not be easy 3374 to determine if the value is "well-known". If a printer supports only 3375 letter paper, then the rules above say that support of "media" is not 3376 required. But suppose the size is B only. Is B "well-known" enough to 3377 qualify for the exclusion? If IPP has an exclusion for a known 3378 feature, the rule should exclude "non- selectable" features rather 3379 than "well-known" because "well-known" is subjective. 3381 This definition is somewhat more difficult for job control attributes 3382 in an embedded printer. There is no hardware associated with job- 3383 sheets or job-priority. So an output-device "knows" about such a 3384 feature only if its software implements it, in which case IPP likely 3385 supports it. This all seems rather circular. So the answer is that all 3386 job control attributes are optional for embedded printers. 3388 For print servers, the rule is quite inscrutable because a print 3389 server can potentially serve all types of printers with a variety of 3390 features. Are all printer-control attributes mandatory because a 3391 connected printer could have the feature or all printer-control 3392 attributes optional because the printer-server itself has none of the 3393 features? Because job-control attributes are normally implemented by a 3394 print servers and not output devices, the feature doesn't exist unless 3395 it is implemented, hence nothing is mandatory. So I am left not 3396 knowing what to do for a print server. Can I implement nothing or must 3397 I implement all to be conforming. I think everything is optional. 3399 When I look at the four combinations of the 2 types of implementations 3400 and 2 types of attributes, I conclude that only printer control 3401 attributes in embedded printer implementations could be conditionally 3402 mandatory. All job control attributes in embedded printers and all 3403 attributes in print servers must be optional. 3405 10.1.7 NEED NOT 3407 The verb "NEED NOT" indicates an action that the subject of the 3408 sentence does not have to implement in order to claim conformance to 3409 the standard. The verb "NEED NOT" is used instead of "MAY NOT" since 3410 "MAY NOT" sounds like a prohibition. 3412 Expires January 25, 1998 3413 10.2 Model Terminology 3415 10.2.1 Keyword 3417 Keywords are used within this document as identifiers of semantic 3418 entities within the abstract model. Attribute names, some attribute 3419 values, attribute syntaxes, and attribute group names are represented 3420 as keywords. In this document, a keyword is a sequence of characters 3421 (length of 1 to 255) which consists of the following ASCII characters: 3422 lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), 3423 period ("."), and underscore ("_"). A keyword starts with a lower- 3424 case letter. 3426 10.2.2 Parameters 3428 A parameter is an item of information supplied in an operation 3429 consisting of a parameter name and a parameter value(s). Each 3430 parameter has a specific syntax. Clients supply input parameters in 3431 operation requests and servers return output parameters in operation 3432 responses. Some parameters have corresponding object attributes; some 3433 do not. All parameters are defined in section 3. 3435 10.2.2.1 Parameter Name 3437 Each parameter is uniquely identified in this document by its 3438 parameter name which is a keyword. The keyword parameter name is 3439 given in the section header describing that parameter. In running 3440 text in this document, parameter names are indicated inside double 3441 quotation marks ("). 3443 10.2.2.2 Parameter Value 3445 Each parameter has one or more values. Parameter values are 3446 represented in the syntax type specified for that parameter. In 3447 running text in this document, parameter values are indicated inside 3448 single quotation marks ('), whether their parameter syntax is keyword, 3449 integer, text, etc. 3451 10.2.2.3 Parameter Syntax 3453 Each parameter is defined using an explicit syntax. In this document, 3454 each syntax type is defined as a keyword with specific meaning. The 3455 protocol specification document [23] indicates the actual on-the-wire 3456 encoding for each parameter syntax. Parameter syntaxes are the same as 3457 attribute syntaxes and they are defined in section 4.1. 3459 Expires January 25, 1998 3460 10.2.3 Attributes 3462 An attribute is an item of information that is associated with an 3463 instance of an IPP object. An attribute consists of an attribute name 3464 and an attribute value(s). Each attribute has a specific syntax.. 3465 All attributes are defined in section 4. 3467 An interesting set of attributes is called Job Template Attributes 3468 (these attributes are described in detail in section 4.2.) The client 3469 optionally supplies Job Template attributes as input parameters in a 3470 create request (operation requests that create Job objects). The 3471 Printer object has associated attributes which define supported and 3472 default values for the Printer. Thee following rules apply: 3474 - When a Job Template attribute is supplied as an input parameter 3475 in a create request, the attribute and its value describe the 3476 desired job processing behavior. 3478 - The Printer object's supported attribute describes what behaviors 3479 are possible. 3481 - The Printer object's default value attribute describes what will 3482 be done when no other job processing information is supplied by 3483 the client. 3485 10.2.3.1 Attribute Name 3487 Each attribute is uniquely identified in this document by its 3488 attribute name which is a keyword. The keyword attribute name is 3489 given in the section header describing that attribute. In running 3490 text in this document, attribute names are indicated inside double 3491 quotation marks ("). 3493 10.2.3.2 Attribute Group Name 3495 Related attributes are grouped into named groups. The name of the 3496 group is a keyword. The group name may be used in an input parameter 3497 in place of naming all the attributes in the group explicitly. 3498 Attribute groups are defined in section 4. 3500 10.2.3.3 Attribute Value 3502 Each attribute has one or more values. Attribute values are 3503 represented in the syntax type specified for that attribute. In 3504 running text in this document, attribute values are indicated inside 3505 single quotation marks ('), whether their attribute syntax is keyword, 3506 integer, text, etc. 3508 Expires January 25, 1998 3509 10.2.3.4 Attribute Syntax 3511 Each attribute is defined using an explicit attribute syntax. In this 3512 document, each attribute syntax is defined as a keyword with specific 3513 meaning. The protocol specification document [23] indicates the 3514 actual on-the-wire encoding for each attribute syntax. Attribute 3515 syntaxes are defined in section 4.1. 3517 10.2.4 Supports 3519 By definition, an implementation (an instance of an IPP object) 3520 supports an attribute (or a particular value of an attribute) only if 3521 that implementation responds with the corresponding attribute and 3522 value in a response to a query for that attribute. A given 3523 implementation may exhibit a behavior that corresponds to the value of 3524 some attribute, but if the implementation, when queried for that 3525 attribute, doesn't respond with the supported attribute populated with 3526 that specific value, then as far as IPP is concerned, that 3527 implementation does not support that feature. 3529 A conforming implementation SHALL support all MANDATORY attributes and 3530 all CONDITIONALLY MANDATORY attributes where the implementation 3531 satisfies the condition associated with the CONDITIONALLY MANDATORY 3532 attribute. Conformance to IPP does not mandate that all 3533 implementations support all possible values representing all possible 3534 job processing behaviors and features. For example, if a given 3535 instance of a Printer supports only certain document formats, then 3536 that Printer responds with the "document-format-supported" attribute 3537 populated with a set of values, possibly only one, taken from the 3538 entire set of possible values defined in this model document. This 3539 set of values represent the Printer's set of supported document 3540 formats. Another example is the "finishings-supported" attribute. If 3541 a Printer is not physically capable of stapling (there is no stapler 3542 in the output device itself), the "finishings-supported" attribute 3543 MUST NOT be populated with the value of 'staple'. 3545 ISSUE: We have said that conformance does not mandate support for any 3546 values. For example, a printer could have a stapler and supported 3547 finishings-supported but not the value _staple_ and still be in 3548 conformance, though not useful. Is this true? 3550 In order to ease the implementation burden, if a certain 3551 implementation supports only one well-known value of some "xxx- 3552 supported" attribute, it is NOT REQUIRED that that implementation 3553 support that attribute. For example, if a Printer object represents a 3554 physical device that can not print on two sides of the media, the only 3555 possible value for the "sides-supported" attribute could be 'one- 3556 sided'. In this case, it is NOT REQUIRED that the implementation 3558 Expires January 25, 1998 3559 support the "sides-supported" attribute since a client could infer 3560 that the implementation supports only single-sided printing from the 3561 absence of the "sides-supported" attribute. If for some reason, an 3562 implementation only supported "two-sided-long-edge" then that 3563 implementation MUST support the "sides-supported" attribute to be a 3564 conforming implementation. The "well known value" for CONDITIONALLY 3565 MANDATORY attribute is specified in the section describing that 3566 attribute. 3568 ISSUE: The "well known value" condition for each Job Template 3569 attribute has not yet been identified. The most difficult one will be 3570 "media-supported", that is there probably not one "well known value" 3571 for "media supported". This "well known value" is a very slippery 3572 slope... 3574 Note: The supported attributes are set (populated) by some 3575 administrative process or automatic sensing mechanism that is outside 3576 the scope of IPP. 3578 11. APPENDIX B: Status Codes 3580 This section defines status code keywords that are used to provide 3581 semantic information on the results of an operation request. Each 3582 operation response MUST include a status code. For error type status 3583 codes, the response MAY also contain a status message that provides a 3584 short textual description of the status. The status code is intended 3585 for use by automata, and the status message is intended for the human 3586 end user. Since the status message is an OPTIONAL component of the 3587 operation response, an IPP application (i.e. a browser, GUI, print 3588 driver or gateway) is NOT REQUIRED to examine or display the status 3589 message. 3591 The prefix of the status keyword defines the class of response as 3592 follows: 3594 "informational" - Request received, continuing process 3595 "successful" - The action was successfully received, understood, 3596 and accepted 3597 "redirection" - Further action must be taken in order to complete 3598 the request 3599 "client-error" - The request contains bad syntax or cannot be 3600 fulfilled 3601 "server-error" - The server failed to fulfill an apparently valid 3602 request 3604 IPP status codes are extensible. IPP applications are NOT REQUIRED to 3605 understand the meaning of all registered status codes, though such 3607 Expires January 25, 1998 3608 understanding is obviously desirable. However, applications SHALL 3609 understand the class of any status code, as indicated by the prefix, 3610 and treat any unrecognized response as being equivalent to the first 3611 status code of that class, with the exception that an unrecognized 3612 response shall not be cached. For example, if an unrecognized status 3613 code of "client-error-foo-bar" is received by the client, it can 3614 safely assume that there was something wrong with its request and 3615 treat the response as if it had received a "client-error-bad-request" 3616 status code. In such cases, IPP applications could present the 3617 OPTIONAL message (if present) to the end user since the message is 3618 likely to contain human readable information which will help to 3619 explain the unusual status. 3621 11.1 Status Codes (type2 keyword) 3623 Each status code is described below. Section 11.2 contains a table 3624 that indicates which status codes apply to which operations. 3626 11.1.1 Informational 3628 This class of status code indicates a provisional response and is to 3629 be used for informational purposes only. 3631 There are no status codes defined in IPP 1.0 for this class of status 3632 code. 3634 11.1.2 Successful Status Codes 3636 This class of status code indicates that the client's request was 3637 successfully received, understood, and accepted. 3639 11.1.2.1 successful-ok 3641 The request has succeeded. 3643 11.1.2.2 successful-ok-ignored-or-substituted-attributes 3645 The request has succeeded, but since "best effort" printing was 3646 allowed and requested, in order to print the job, some attributes were 3647 ignored or unsupported values were substituted with supported values. 3649 11.1.3 Redirection Status Codes 3651 This class of status code indicates that further action needs to be 3652 taken to fulfill the request. 3654 Expires January 25, 1998 3655 There are no status codes defined in IPP 1.0 for this class of status 3656 code. 3658 11.1.4 Client Error Status Codes 3660 This class of status code is intended for cases in which the client 3661 seems to have erred. The server SHOULD return a message containing an 3662 explanation of the error situation and whether it is a temporary or 3663 permanent condition. 3665 11.1.4.1 client-error-bad-request 3667 The request could not be understood by the server due to malformed 3668 syntax. The IPP application SHOULD NOT repeat the request without 3669 modifications. 3671 11.1.4.2 client-error-forbidden 3673 The server understood the request, but is refusing to fulfill it. 3674 Additional authentication information or authorization credentials 3675 will not help and the request SHOULD NOT be repeated. This status 3676 code is commonly used when the server does not wish to reveal exactly 3677 why the request has been refused or when no other response is 3678 applicable. 3680 11.1.4.3 client-error-not-authenticated 3682 The request requires user authentication. The IPP client may repeat 3683 the request with suitable authentication information. If the request 3684 already included authentication information, then this status code 3685 indicates that authorization has been refused for those credentials. 3686 If this response contains the same challenge as the prior response, 3687 and the user agent has already attempted authentication at least once, 3688 then the response message may contain relevant diagnostic information. 3689 This status codes reveals more information than "client-error- 3690 forbidden". 3692 11.1.4.4 client-error-not-authorized 3694 The requester is not authorized to perform the request. Additional 3695 authentication information or authorization credentials will not help 3696 and the request SHOULD be repeated. This status code is used when the 3697 server wishes to reveal that the authentication information is 3698 understandable, however, the requester is explicitly not authorized to 3699 perform the request. This status codes reveals more information than 3700 "client-error-forbidden". 3702 Expires January 25, 1998 3703 11.1.4.5 client-error-not-possible 3705 This status code is used when the request is for something that can 3706 not happen. For example, there might be a request to cancel a job 3707 that has already been aborted by the system. The IPP client SHOULD 3708 NOT repeat the request. 3710 11.1.4.6 client-error-timeout 3712 The client did not produce a request within the time that the server 3713 was prepared to wait. For example, a client issued a Create-Job 3714 operation and then, after a long period of time, issued a Send- 3715 Document operation and this error status code was returned in response 3716 to the Send-Document request. The server might have been forced to 3717 clean up resources that had been held for the waiting additional 3718 Documents. The server was forced to close the Job since the client 3719 took too long. The client SHOULD NOT repeat the request without 3720 modifications. 3722 11.1.4.7 client-error-not-found 3724 The server has not found anything matching the request URI. No 3725 indication is given of whether the condition is temporary or 3726 permanent. For example, a client with an old reference to a Job (a 3727 URI) tries to cancel the Job, however in the mean time the Job might 3728 have been completed and all record of it at the Printer has been 3729 deleted. This status code, 'client-error-not-found' is returned 3730 indicating that the referenced Job can not be found. This error 3731 status code is also used when a client supplies a URI as a reference 3732 to the document data in either a Print-URI or Send-URI operation 3733 however the document can not be found. 3735 In practice, an IPP application should avoid a not found situation by 3736 first querying and presenting a list of valid Printer URIs and Job 3737 URIs to the end-user. 3739 11.1.4.8 client-error-gone 3741 The requested object is no longer available at the server and no 3742 forwarding address is known. This condition should be considered 3743 permanent. Clients with link editing capabilities should delete 3744 references to the request URI after user approval. If the server does 3745 not know or has no facility to determine, whether or not the condition 3746 is permanent, the status code "client-error-not-found" should be used 3747 instead. 3749 This response is primarily intended to assist the task of web 3750 maintenance by notifying the recipient that the resource is 3752 Expires January 25, 1998 3753 intentionally unavailable and that the server owners desire that 3754 remote links to that resource be removed. It is not necessary to mark 3755 all permanently unavailable resources as "gone" or to keep the mark 3756 for any length of time -- that is left to the discretion of the server 3757 owner. 3759 11.1.4.9 client-error-request-entity-too-large 3761 The server is refusing to process a request because the request entity 3762 is larger than the server is willing or able to process. An IPP 3763 Printer returns this status code when it limits the size of print jobs 3764 and it receives a print job that exceeds that limit or when the 3765 operation parameters are so many that their encoding causes the 3766 request entity to exceed server capacity. 3768 11.1.4.10 client-error-request-URI-too-long 3770 The server is refusing to service the request because the request URI 3771 is longer than the server is willing to interpret. This rare 3772 condition is only likely to occur when a client has improperly 3773 submitted a request with long query information (e.g. an IPP 3774 application allows an end-user to enter an invalid URI), when the 3775 client has descended into a URI "black hole" of redirection (e.g., a 3776 redirected URI prefix that points to a suffix of itself), or when the 3777 server is under attack by a client attempting to exploit security 3778 holes present in some servers using fixed-length buffers for reading 3779 or manipulating the Request-URI. 3781 11.1.4.11 client-error-unsupported-document-format 3783 The server is refusing to service the request because the print data 3784 is in a format, as specified in the "document-format" input parameter, 3785 that is not supported by the IPP Printer. 3787 11.1.4.12 client-error-attribute-not-supported 3789 For a Create-Job, Print-Job or Validate-Job operation, if the IPP 3790 Printer does not support one or more attributes or attribute values 3791 supplied in the request, the Printer shall return this status. For 3792 example, if the request requires A4 paper and that paper size is not 3793 supported by the Printer, and "best effort" printing was not 3794 requested, the Printer shall return this status. 3796 For a Get-Jobs operation, if the IPP Printer does not support one of 3797 the requested attributes, the Printer shall return this status. 3799 Expires January 25, 1998 3800 In practice, an IPP application should avoid this situation by 3801 querying an IPP Printer for its valid attributes and values before 3802 performing an operation on the Printer. 3804 11.1.5 Server Error Status Codes 3806 This class of status codes indicates cases in which the server is 3807 aware that it has erred or is incapable of performing the request. 3808 The server SHOULD include a message containing an explanation of the 3809 error situation, and whether it is a temporary or permanent condition. 3811 11.1.5.1 server-error-internal- error 3813 The server encountered an unexpected condition that prevented it from 3814 fulfilling the request. This error status code differs from "server- 3815 error-temporary-error" in that it implies a more permanent type of 3816 internal error. It also differs from "server-error-device-error" in 3817 that it implies an unexpected condition (unlike a paper-jam or out-of- 3818 toner problem which is undesirable but expected). This error status 3819 code indicates that probably some knowledgeable human intervention is 3820 required. 3822 11.1.5.2 server-error-operation-not-supported 3824 The server does not support the functionality required to fulfill the 3825 request. This is the appropriate response when the server does not 3826 recognize an operation or is not capable of supporting it. 3828 11.1.5.3 server-error-service-unavailable 3830 The server is currently unable to handle the request due to a 3831 temporary overloading or maintenance of the server. The implication 3832 is that this is a temporary condition which will be alleviated after 3833 some delay. If known, the length of the delay may be indicated in the 3834 message. If no delay is given, the IPP application should handle the 3835 response as it would for a "server-error-temporary-internal-error" 3836 response. If the condition is more permanent, the error status codes 3837 "client-error-gone" or "client-error-not-found" could be used. 3839 11.1.5.4 server-error-version-not-supported 3841 The server does not support, or refuses to support, the IPP protocol 3842 version that was used in the request message. The server is 3843 indicating that it is unable or unwilling to complete the request 3844 using the same version as supplied in the request other than with this 3845 error message. The response should contain a Message describing why 3846 that version is not supported and what other versions are supported by 3847 that server. 3849 Expires January 25, 1998 3850 A conforming IPP client shall specify the valid version (IPP 1.0)on 3851 each request. A conforming IPP server (IPP 1.0) SHALL NOT return this 3852 status code to a conforming IPP 1.0 client. An IPP server shall 3853 return this status code to a non-conforming IPP client. 3855 11.1.5.5 server-error-device-error 3857 A printer error, such as a paper jam, occurs while the IPP Printer 3858 processes a Print or Send operation. The response contains the true 3859 Job Status (the values of the "job-state" and "job-state-reasons" 3860 attributes). Additional information can be returned in the optional 3861 "job-state-message" attribute value or in the OPTIONAL status code 3862 message that describes the error in more detail. This error status 3863 code MAY be returned even though the operation was successful (the Job 3864 was submitted and is now in the 'pending' state waiting to be 3865 processed). 3867 ISSUE: This doesn't seem like a good error. If the create request 3868 succeeded, an OK should be returned. The job-status of printer-stopped 3869 gives information about the printer being stopped. 3871 11.1.5.6 server-error-temporary-error 3873 A temporary error such as a buffer full write error, a memory overflow 3874 (i.e. the document data exceeds the memory of the Printer), or a disk 3875 full condition, occurs while the IPP Printer processes an operation. 3876 The client MAY try the unmodified request again at some later point in 3877 time with an expectation that the temporary internal error condition 3878 may have been cleared. 3880 Expires January 25, 1998 3881 11.2 Status Keywords for IPP Operations 3883 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 3884 SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs 3885 GO = Get-Operations, C = Cancel-Job 3887 IPP Operations 3888 IPP Status Keyword PJ PU CJ SD SU V GA GJ GO C 3889 ------------------ -- -- -- -- -- - -- -- -- - 3890 successful-OK x x x x x x x x x x 3891 client-error-bad-request x x x x x x x x x x 3892 client-error-not-authenticated x x x x x x x x x x 3893 client-error-not-authorized x x x x x x x x x x 3894 client-error-forbidden x x x x x x x x x x 3895 client-error-not-possible x x x x x x x x x x 3896 client-error-not-found x x x x x x x x x x 3897 client-error-timeout x x x x x x x x x x 3898 client-error-gone x x x x x x x x x x 3899 client-error-request-entity-too-large x X X X X X X X X X 3900 client-error-request-URI-too-long x x x x x x x x x x 3901 client-error-unsupported-document-format x x x x 3902 client-error-attribute-value-not- x x x x 3903 supported 3904 server-error-internal-error x x x x x x x x x x 3905 server-error-service-unavailable x x x x x x x x x x 3906 server-error-timeout x x x x x x x x x x 3907 server-error-HTTP-version-not-supported x x x x x x x x x x 3908 server-error-IPP-version-not-supported x x x x x x x x x x 3909 server-error-device-error x x x x x 3910 server-error-temporary-error x x x x x 3912 ISSUE: The above needs to be re-reviewed in greater detail. 3914 12. APPENDIX C: "document-format" enum values 3916 The Printer Working Group has registered a set of type2 enum values 3917 with IANA as part of the IETF Printer MIB [1] project. The standard 3918 value assigned by the PWG starts with the four letters: "lang", in 3919 order to follow SNMP ASN.1 rules that all enum symbols SHALL start 3920 with a lower case letter. The integer enum value is used as the value 3921 the "document-format" attribute. 3923 This APPENDIX lists the document formats that are currently registered 3924 with IANA. As with all type 2 and type 3 enums, when additional enum 3925 values are registered with IANA, they may be used in IPP withhout 3926 updating this appendix. 3928 Expires January 25, 1998 3929 ISSUE: PDF does not have an enum value, though it has a MIME type. 3930 Adobe needs to register PDF as one of the standard values. 3932 The standard values registered at the current time are: 3934 'other': 1 - 3935 'langPCL': 3 - PCL. Starting with PCL version 5, HP-GL/2 is 3936 included as part of the PCL language. PCL and HP-GL/2 are 3937 registered trademarks of Hewlett-Packard Company. 3938 'langHPGL': 4 - Hewlett-Packard Graphics Language. HP-GL is a 3939 registered trademark of Hewlett-Packard Company. 3940 'langPJL': 5 - Peripheral Job Language. Appears in the data stream 3941 between data intended for a page description language. Hewlett- 3942 Packard Co. 3943 'langPS': 6 - PostScript Language (tm) Postscript - a trademark of 3944 Adobe Systems Incorporated which may be registered in certain 3945 jurisdictions 3946 'langIPDS': 7 - Intelligent Printer Data Stream Bi-directional 3947 print data stream for documents consisting of data objects (text, 3948 image, graphics, bar codes), resources (fonts, overlays) and 3949 page, form and finishing instructions. Facilitates system level 3950 device control, document tracking and error recovery throughout 3951 the print process. Pennant Systems, IBM 3952 'langPPDS': 8 - IBM Personal Printer Data Stream. Originally 3953 called IBM ASCII, the name was changed to PPDS when the Laser 3954 Printer was introduced in 1989. Lexmark International, Inc. 3955 'langEscapeP': 9 - Epson Corp. 3956 'langEpson': 10 - 3957 'langDDIF': 11 - Digital Document Interchange Format Digital 3958 Equipment Corp., Maynard MA 3959 'langInterpress': 12 - Xerox Corp. 3960 'langISO6429': 13 - ISO 6429. Control functions for Coded 3961 Character Sets (has ASCII control characters, plus additional 3962 controls for character imaging devices.) ISO Standard, Geneva, 3963 Switzerland 3964 'langLineData': 14 - line-data: Lines of data as separate ASCII or 3965 EBCDIC records and containing no control functions (no CR, LF, 3966 HT, FF, etc.). For use with traditional line printers. May use 3967 CR and/or LF to delimit lines, instead of records. See ISO 10175 3968 Document Printing Application (DPA) ISO standard, Geneva, 3969 Switzerland 3970 'langMODCA': 15 - Mixed Object Document Content Architecture 3971 Definitions that allow the composition, interchange, and 3972 presentation of final form documents as a collection of data 3973 objects (text, image, graphics, bar codes), resources (fonts, 3974 overlays) and page, form and finishing instructions. Pennant 3975 Systems, IBM 3977 Expires January 25, 1998 3979 'langREGIS': 16 - Remote Graphics Instruction Set, Digital 3980 Equipment Corp., Maynard MA 3981 'SCS': 17 - SNA Character String Bi-directional print data stream 3982 for SNA LU-1 mode of communications IBM 3983 'langSPDL': 18 - ISO 10180 Standard Page Description Language ISO 3984 Standard 3985 'langTEK4014': 19 - Tektronix Corp. 3986 'langPDS': 20 - 3987 'langIGP': 21 - Printronix Corp. 3988 'langCodeV': 22 - Magnum Code-V, Image and printer control language 3989 used to control impact/dot- matrix printers. QMS, Inc., Mobile 3990 AL 3991 'langDSCDSE': 23 - DSC-DSE: Data Stream Compatible and Emulation 3992 Bi-directional print data stream for non-SNA (DSC) and SNA LU-3 3993 3270 controller (DSE) communications IBM 3994 'langWPS': 24 - Windows Printing System, Resource based 3995 command/data stream used by Microsoft At Work Peripherals. 3996 Developed by the Microsoft Corporation. 3997 'langLN03': 25 - Early DEC-PPL3, Digital Equipment Corp. 3998 'langCCITT': 26 - 3999 'langQUIC': 27 - QUIC (Quality Information Code), Page Description 4000 Language for laser printers. Included graphics, printer control 4001 capability and emulation of other well- known printer . QMS, 4002 Inc. 4003 'langCPAP': 28 - Common Printer Access Protocol Digital Equipment 4004 Corp 4005 'langDecPPL': 29 - Digital ANSI-Compliant Printing Protocol (DEC- 4006 PPL) Digital Equipment Corp 4007 'langSimpleText': 30 - simple-text: character coded data, including 4008 NUL, CR , LF, HT, and FF control characters. See ISO 10175 4009 Document Printing Application (DPA) ISO standard, Geneva, 4010 Switzerlan 4011 'langNPAP': 31 - Network Printer Alliance Protocol (NPAP). This 4012 protocol has been superseded by the IEEE 1284.1 TIPSI standard. 4013 (ref. LangTIPSI(49)). 4014 'langDOC': 32 - Document Option Commands, Appears in the data 4015 stream between data intended for a page description . QMS, Inc 4016 'langimPress': 33 - imPRESS, Page description language originally 4017 developed for the ImageServer line of systems. A binary language 4018 providing representations for text, simple graphics (rules, 4019 lines, conic sections), and some large forms (simple bit-map and 4020 CCITT group 3/4 encoded).The language was intended to be sent 4021 over an 8-bit channel and supported early document preparation 4022 languages (e.g. TeX and TROFF). QMS, Inc. 4023 'langPinwriter': 34 - 24 wire dot matrix printer for USA, Europe, 4024 and Asia except Japan. More widely used in Germany, and some 4025 Asian countries than in US. NEC 4026 'langNPDL': 35 - Page printer for Japanese market. NEC 4028 Expires January 25, 1998 4029 'langNEC201PL': 36 - Serial printer language used in the Japanese 4030 market. NEC 4031 'langAutomatic': 37 - Automatic PDL sensing. Automatic sensing of 4032 the interpreter language family by the printer examining the 4033 document content. Which actual interpreter language families are 4034 sensed depends on the printer implementation. 4035 'langPages': 38 - Page printer Advanced Graphic Escape Set IBM 4036 Japan 4037 'langLIPS': 39 - LBP Image Processing System 4038 'langTIFF': 40 - Tagged Image File Format (Aldus) 4039 'langDiagnostic': 41 - A hex dump of the input to the interpreter 4040 'langPSPrinter': 42 - The PostScript Language used for control 4041 (with any PDLs) Adobe Systems Incorporated 4042 'langCaPSL': 43 - Canon Print Systems Language 4043 'langEXCL': 44 - Extended Command Language Talaris Systems Inc 4044 'langLCDS': 45 - Line Conditioned Data Stream Xerox Corporatio 4045 'langXES': 46 - Xerox Escape Sequences Xerox Corporation 4046 'langPCLXL': 47 - Printer Control Language. Extended language 4047 features for printing, and printer control. Technical reference 4048 manual # TBD. Hewlett-Packard Co. 4049 'langART': 48 - Advanced Rendering Tools (ART). Page Description 4050 language originally developed for the Laser Press printers. 4051 Tehnical reference manual: "ART IV Reference Manual", No F33M. 4052 Fuji Xerox Co., Ltd. 4053 'langTIPSI': 49 - Transport Independent Printer System Interface 4054 (ref. IEEE Std. 1284.1) 4055 'langPrescribe': 50 - Page description and printer control 4056 language. It can be described with ordinary ASCII characters. 4057 Technical reference manual: "PRESCRIBE II Programming Manual" 4058 'langLinePrinter': 51 - A simple-text character stream which 4059 supports the control codes LF, VT, FF and CR plus Centronics or 4060 Dataproducts Vertical Format Unit (VFU). language is commonly 4061 used on many older model line and matrix printers. 4062 'langIDP': 52 - Imaging Device Protocol Apple Computer. 4063 'langXJCL': 53 - Xerox Corp. 4065 ISSUE: Add TIFF-F? 4067 One special value is 'langAutomatic (37)'. However a client SHALL NOT 4068 supply the value 'langAutomatic' in a create request. If the 4069 "document-format" is unknown for a certain document, the client SHALL 4070 NOT supply the attribute in the create request or the Send-Document 4071 Request. 4073 Expires January 25, 1998 4074 13. APPENDIX D: "media" keyword values 4076 Standard keyword values are taken from several sources. 4078 Standard values are defined (taken from ISO DPA[5] and the Printer 4079 MIB[1]): 4081 'default': The default medium for the output device 4082 'iso-a4-white': Specifies the ISO A4 white medium 4083 'iso-a4-colored': Specifies the ISO A4 coloured medium 4084 'iso-a4-transparent' Specifies the ISO A4 transparent medium 4085 'iso-a3-white': Specifies the ISO A3 white medium 4086 'iso-a3-colored': Specifies the ISO A3 coloured medium 4087 'iso-a5-white': Specifies the ISO A5 white medium 4088 'iso-a5-colored': Specifies the ISO A5 coloured medium 4089 'iso-b4-white': Specifies the ISO B4 white medium 4090 'iso-b4-colored': Specifies the ISO B4 coloured medium 4091 'iso-b5-white': Specifies the ISO B5 white medium 4092 'iso-b5-colored': Specifies the ISO B5 coloured medium 4093 'jis-b4-white': Specifies the JIS B4 white medium 4094 'jis-b4-colored': Specifies the JIS B4 coloured medium 4095 'jis-b5-white': Specifies the JIS B5 white medium 4096 'jis-b5-colored': Specifies the JIS B5 coloured medium 4098 The following standard values are defined for North American media: 4100 'na-letter-white': Specifies the North American letter white medium 4101 'na-letter-colored': Specifies the North American letter coloured 4102 medium 4103 'na-letter-transparent': Specifies the North American letter 4104 transparent medium 4105 'na-legal-white': Specifies the North American legal white medium 4106 'na-legal-colored': Specifies the North American legal coloured 4107 medium 4109 The following standard values are defined for envelopes: 4111 'iso-b4-envelope': Specifies the ISO B4 envelope medium 4112 'iso-b5-envelope': Specifies the ISO B5 envelope medium 4113 'iso-c3-envelope': Specifies the ISO C3 envelope medium 4114 'iso-c4-envelope': Specifies the ISO C4 envelope medium 4115 'iso-c5-envelope': Specifies the ISO C5 envelope medium 4116 'iso-c6-envelope': Specifies the ISO C6 envelope medium 4117 'iso-designated-long-envelope': Specifies the ISO Designated Long 4118 envelope medium 4120 Expires January 25, 1998 4122 'na-10x13-envelope': Specifies the North American 10x13 envelope 4123 medium 4124 'na-9x12-envelope': Specifies the North American 9x12 envelope 4125 medium 4126 'monarch-envelope': Specifies the Monarch envelope 4127 'na-number-10-envelope': Specifies the North American number 10 4128 business envelope medium 4129 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 4130 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 4131 'na-10x14-envelope': Specifies the North American 10x14 inch 4132 envelope 4133 'na-number-9-envelope': Specifies the North American number 9 4134 business envelope 4135 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 4136 'na-10x15-envelope': Specifies the North American 10x15 inch 4137 envelope 4139 The following standard values are defined for the less commonly used 4140 media (white-only): 4142 'executive-white': Specifies the white executive medium 4143 'folio-white': Specifies the folio white medium 4144 'invoice-white': Specifies the white invoice medium 4145 'ledger-white': Specifies the white ledger medium 4146 'quarto-white': Specified the white quarto medium 4147 'iso-a0-white': Specifies the ISO A0 white medium 4148 'iso-a1-white': Specifies the ISO A1 white medium 4149 'iso-a2-white': Specifies the ISO A2 white medium 4150 'iso-a6-white': Specifies the ISO A6 white medium 4151 'iso-a7-white': Specifies the ISO A7 white medium 4152 'iso-a8-white': Specifies the ISO A8 white medium 4153 'iso-a9-white': Specifies the ISO A9 white medium 4154 'iso-10-white': Specifies the ISO A10 white medium 4155 'iso-b0-white': Specifies the ISO B0 white medium 4156 'iso-b1-white': Specifies the ISO B1 white medium 4157 'iso-b2-white': Specifies the ISO B2 white medium 4158 'iso-b3-white': Specifies the ISO B3 white medium 4159 'iso-b6-white': Specifies the ISO B6 white medium 4160 'iso-b7-white': Specifies the ISO B7 white medium 4161 'iso-b8-white': Specifies the ISO B8 white medium 4162 'iso-b9-white': Specifies the ISO B9 white medium 4163 'iso-b10-white': Specifies the ISO B10 white medium 4164 'jis-b0-white': Specifies the JIS B0 white medium 4165 'jis-b1-white': Specifies the JIS B1 white medium 4166 'jis-b2-white': Specifies the JIS B2 white medium 4167 'jis-b3-white': Specifies the JIS B3 white medium 4168 'jis-b6-white': Specifies the JIS B6 white medium 4170 Expires January 25, 1998 4171 'jis-b7-white': Specifies the JIS B7 white medium 4172 'jis-b8-white': Specifies the JIS B8 white medium 4173 'jis-b9-white': Specifies the JIS B9 white medium 4174 'jis-b10-white': Specifies the JIS B10 white medium 4176 The following standard values are defined for engineering media: 4178 'a': Specifies the engineering A size medium 4179 'b': Specifies the engineering B size medium 4180 'c': Specifies the engineering C size medium 4181 'd': Specifies the engineering D size medium 4182 'e': Specifies the engineering E size medium 4184 The following standard values are defined for input-trays (from ISO 4185 DPA and the Printer MIB): 4187 'top': The top input tray in the printer. 4188 'middle': The middle input tray in the printer. 4189 'bottom': The bottom input tray in the printer. 4190 'envelope': The envelope input tray in the printer. 4191 'manual': The manual feed input tray in the printer. 4192 'large-capacity': The large capacity input tray in the printer. 4193 'main': The main input tray 4194 'side': The side input tray 4196 The following standard values are defined for media sizes (from ISO 4197 DPA): 4199 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined 4200 in ISO 216 4201 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 4202 ISO 216 4203 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 4204 ISO 216 4205 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 4206 ISO 216 4207 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 4208 ISO 216 4209 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 4210 ISO 216 4211 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 4212 ISO 216 4213 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 4214 ISO 216 4216 Expires January 25, 1998 4218 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in 4219 ISO 216 4220 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in 4221 ISO 216 4222 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 4223 ISO 216 4224 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined 4225 in ISO 216 4226 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined 4227 in ISO 216 4228 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 4229 ISO 216 4230 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 4231 ISO 216 4232 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 4233 ISO 216 4234 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 4235 ISO 216 4236 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 4237 ISO 216 4238 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 4239 ISO 216 4240 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in 4241 ISO 216 4242 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in 4243 ISO 216 4244 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 4245 ISO 216 4246 'na-letter': Specifies the North American letter size: 8.5 inches 4247 by 11 inches 4248 'na-legal': Specifies the North American legal size: 8.5 inches by 4249 14 inches 4250 'executive': Specifies the executive size (7.25 X 10.5 in) 4251 'folio': Specifies the folio size (8.5 X 13 in) 4252 'invoice': Specifies the invoice size (5.5 X 8.5 in) 4253 'ledger': Specifies the ledger size (11 X 17 in) 4254 'quarto': Specifies the quarto size (8.5 X 10.83 in) 4255 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 4256 ISO 269 4257 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 4258 ISO 269 4259 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 4260 ISO 269 4261 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 4262 ISO 269 4263 'iso-designated-long': Specifies the ISO Designated Long size: 110 4264 mm by 220 mm as defined in ISO 269 4266 Expires January 25, 1998 4268 'na-10x13-envelope': Specifies the North American 10x13 size: 10 4269 inches by 13 inches 4270 'na-9x12-envelope': Specifies the North American 9x12 size: 9 4271 inches by 12 inches 4272 'na-number-10-envelope': Specifies the North American number 10 4273 business envelope size: 4.125 inches by 9.5 inches 4274 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 4275 size 4276 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 4277 size 4278 'na-10x14-envelope': Specifies the North American 10x14 inch 4279 envelope size 4280 'na-number-9-envelope': Specifies the North American number 9 4281 business envelope size 4282 'na-6x9-envelope': Specifies the North American 6x9 envelope size 4283 'na-10x15-envelope': Specifies the North American 10x15 envelope 4284 size 4285 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 4286 in) 4287 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 4288 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 4289 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 4290 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 4291 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 4292 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 4293 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 4294 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 4295 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 4296 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 4297 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 4299 Expires January 25, 1998