idnits 2.17.1 draft-ietf-ipp-model-02.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Cannot find the required boilerplate sections (Copyright, IPR, etc.) in this document. Expected boilerplate is as follows today (2024-04-25) 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 Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 1732 instances of too long lines in the document, the longest one being 7 characters in excess of 72. == There are 48 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 182 has weird spacing: '...(1setOf type2...' == Line 714 has weird spacing: '... any indi...' == Line 883 has weird spacing: '...nces of all o...' == Line 1059 has weird spacing: '...t using the v...' == Line 1061 has weird spacing: '...emplate attri...' == (23 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. == The expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: The verb "NEED NOT" indicates an action that the subject of the sentence does not have to implement in order to claim conformance to the standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'SHALL not' in this paragraph: 3. If the client supplies an attribute group that is supported by the Printer, the Printer SHALL respond with all current values for each supported attribute in the group. It SHALL not respond for unsupported attributes in the group. == 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'. If a client requests 'none' in the create request, the 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 event occurs. 'job-completion': the Printer SHALL notify when the job containing this attribute completes with or without errors. 'job-canceled': the Printer SHALL notify when the job containing this attribute is canceled by the end-user or by the operator, or aborts before completion. 'job-problems': the Printer SHALL notify when this job has a problem while this job is printing. Problems include any of the "job-state-reasons" or "printer-state-reason" values. 'printer-problems': the Printer SHALL notify when any job, including this job, is affected by a Printer problem (the printer has moved to the stopped state and there is a reason in the printer-state-reasons attribute) while this job is waiting to print or printing. Problems 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). == 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. == 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: IPP is explicitly designed to be extensible. Additional attributes can be proposed to be registered by going through the type 2 or type 3 keyword process which will register their specification after approval with IANA. In addition specific implementation instances may support not only the basic protocol as defined in this specification, but may add vendor-specific private extensions by prefixing attribute-names with their company name registered with IANA for use in domains. See attribute syntax section. However, such private extensions SHALL not duplicate attribute semantics already in this specification. -- 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 (June 23, 1997) is 9803 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: '27' is mentioned on line 1664, but not defined == Unused Reference: '1' is defined on line 2997, but no explicit reference was found in the text == Unused Reference: '2' is defined on line 3000, but no explicit reference was found in the text == Unused Reference: '3' is defined on line 3003, but no explicit reference was found in the text == Unused Reference: '4' is defined on line 3006, but no explicit reference was found in the text == Unused Reference: '5' is defined on line 3008, but no explicit reference was found in the text == Unused Reference: '6' is defined on line 3010, but no explicit reference was found in the text == Unused Reference: '7' is defined on line 3015, but no explicit reference was found in the text == Unused Reference: '8' is defined on line 3018, but no explicit reference was found in the text == Unused Reference: '9' is defined on line 3022, but no explicit reference was found in the text == Unused Reference: '10' is defined on line 3025, but no explicit reference was found in the text == Unused Reference: '11' is defined on line 3028, but no explicit reference was found in the text == Unused Reference: '20' is defined on line 3031, but no explicit reference was found in the text == Unused Reference: '21' is defined on line 3033, but no explicit reference was found in the text == Unused Reference: '24' is defined on line 3039, but no explicit reference was found in the text ** Obsolete normative reference: RFC 1759 (ref. '1') (Obsoleted by RFC 3805) ** Downref: Normative reference to an Informational RFC: RFC 1945 (ref. '2') ** Obsolete normative reference: RFC 822 (ref. '3') (Obsoleted by RFC 2822) ** Obsolete normative reference: RFC 1543 (ref. '4') (Obsoleted by RFC 2223) -- Possible downref: Non-RFC (?) normative reference: ref. '5' -- Possible downref: Non-RFC (?) normative reference: ref. '6' -- Possible downref: Non-RFC (?) normative reference: ref. '7' ** Obsolete normative reference: RFC 1521 (ref. '8') (Obsoleted by RFC 2045, RFC 2046, RFC 2047, RFC 2048, RFC 2049) ** Downref: Normative reference to an Informational RFC: RFC 1179 (ref. '10') ** Obsolete normative reference: RFC 1738 (ref. '11') (Obsoleted by RFC 4248, RFC 4266) -- Possible downref: Non-RFC (?) normative reference: ref. '20' -- Possible downref: Non-RFC (?) normative reference: ref. '21' -- Possible downref: Non-RFC (?) normative reference: ref. '22' -- Possible downref: Non-RFC (?) normative reference: ref. '23' -- Possible downref: Non-RFC (?) normative reference: ref. '24' ** Obsolete normative reference: RFC 1766 (ref. '26') (Obsoleted by RFC 3066, RFC 3282) Summary: 15 errors (**), 0 flaws (~~), 31 warnings (==), 12 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 R. deBry 3 IBM Corporation 4 T. Hastings 5 Xerox Corporation 6 R. Herriot 7 Sun Microsystems 8 S. Isaacson 9 Novell, Inc. 10 P. Powell 11 San Diego State University 12 June 23, 1997 14 Internet Printing Protocol/1.0: Model and Semantics 15 draft-ietf-ipp-model-02.txt 17 Status of this Memo 19 This document is an Internet-Draft. Internet-Drafts are working 20 documents of the Internet Engineering Task Force (IETF), its areas, and 21 its working groups. Note that other groups may also distribute working 22 documents as Internet-Drafts. 24 Internet-Drafts are draft documents valid for a maximum of six months 25 and may be updated, replaced, or obsoleted by other documents at any 26 time. It is inappropriate to use Internet-Drafts as reference material 27 or to cite them other than as "work in progress". 29 To learn the current status of any Internet-Draft, please check the 30 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 31 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 32 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 33 ftp.isi.edu (US West Coast). 35 Abstract 37 This document is one of a set of documents, which together describe all 38 aspects of a new Internet Printing Protocol (IPP). IPP is an 39 application level protocol that can be used for distributed printing 40 using Internet tools and technology. The protocol is heavily influenced 41 by the printing model introduced in the Document Printing Application 42 (ISO/IEC 10175 DPA) standard. Although DPA specifies both end user and 43 administrative features, IPP version 1.0 is focused only on end user 44 functionality. 46 The full set of IPP documents includes: 48 June 23, 1997, Expires December 23, 1997 49 Internet Printing Protocol: Requirements 50 Internet Printing Protocol/1.0: Model and Semantics 51 Internet Printing Protocol/1.0: Security 52 Internet Printing Protocol/1.0: Protocol Specification 53 Internet Printing Protocol/1.0: Directory Schema 55 The requirements document takes a broad look at distributed printing 56 functionality, and it enumerates real-life scenarios that help to 57 clarify the features that need to be included in a printing protocol for 58 the Internet. It identifies requirements for three types of users: end 59 users, operators, and administrators. The requirements document calls 60 out a subset of end user requirements that MUST be satisfied in the 61 first version of IPP. Operator and administrator requirements are out 62 of scope for v1.0. The model and semantics document describes a 63 simplified model with abstract objects, their attributes, and their 64 operations. The model introduces a Printer object and a Job object. The 65 Job object supports multiple documents per job. The security document 66 covers potential threats and proposed counters to those threats. The 67 protocol specification is formal document which incorporates the ideas 68 in all the other documents into a concrete mapping using clearly defined 69 data representations and transport protocol mappings that real 70 implementers can use to develop interoperable client and server side 71 components. Finally, the directory schema document shows a generic 72 schema for directory service entries that represent instances of IPP 73 Printers. 75 This document is the "Internet Printing Protocol/1.0: Model and 76 Semantics" document. 78 June 23, 1997, Expires December 23, 1997 79 Table of Contents 81 1. Introduction.......................................................7 82 2. Terminology........................................................7 83 2.1 Conformance Terminology ......................................8 84 2.1.1 MUST......................................................8 85 2.1.2 MUST NOT..................................................8 86 2.1.3 SHOULD....................................................8 87 2.1.4 SHOULD NOT................................................8 88 2.1.5 MAY.......................................................8 89 2.1.6 CONDITIONALLY MANDATORY...................................9 90 2.1.7 NEED NOT..................................................9 91 2.2 Model Terminology ...........................................10 92 2.2.1 Keyword..................................................10 93 2.2.2 Parameters...............................................10 94 2.2.2.1 Parameter Name ....................................10 95 2.2.2.2 Parameter Value ...................................10 96 2.2.2.3 Parameter Syntax ..................................10 97 2.2.3 Attributes...............................................11 98 2.2.3.1 Attribute Name ....................................11 99 2.2.3.2 Attribute Group Name ..............................11 100 2.2.3.3 Attribute Value ...................................11 101 2.2.3.4 Attribute Syntax ..................................11 102 2.2.4 Supports.................................................12 103 3. Simplified Printing Model.........................................12 104 4. IPP Objects.......................................................15 105 4.1 Printer Object ..............................................15 106 4.2 Job Object ..................................................17 107 4.3 Document Object .............................................18 108 4.4 Object Relationships ........................................19 109 4.5 Object Attributes ...........................................19 110 4.5.1 Job Template Attribute Overview..........................19 111 4.5.2 The "best-effort" Job Attribute Overview.................20 112 4.6 Object Identity .............................................20 113 5. IPP Operations....................................................21 114 5.1 Operation Semantics .........................................22 115 5.1.1 Get-Operations Operation.................................22 116 5.1.1.1 Get-Operations Request ............................23 117 5.1.1.2 Get-Operations Response ...........................23 118 5.1.2 Print-Job Operation......................................23 119 5.1.2.1 Print-Job Request .................................23 120 5.1.2.2 Print-Job Response ................................25 121 5.1.3 Print-URI Operation......................................26 122 5.1.3.1 Print-URI Request .................................26 123 5.1.3.2 Print-URI Response ................................26 124 5.1.4 Validate-Job Operation...................................27 125 5.1.4.1 Validate-Job Request ..............................27 126 5.1.4.2 Validate-Job Response .............................27 128 June 23, 1997, Expires December 23, 1997 130 5.1.5 Create-Job Operation.....................................28 131 5.1.5.1 Create-Job Request ................................28 132 5.1.5.2 Create Job Response ...............................28 133 5.1.6 Send-Document Operation..................................29 134 5.1.6.1 Send-Document Request .............................29 135 5.1.6.2 Send-Document Response ............................29 136 5.1.7 Send-URI Operation.......................................30 137 5.1.7.1 Send-URI Request ..................................30 138 5.1.7.2 Send-URI Response .................................30 139 5.1.8 Cancel Job Operation.....................................30 140 5.1.8.1 Cancel-Job Request ................................31 141 5.1.8.2 Cancel-Job Response ...............................31 142 5.1.9 Get-Attributes Operation.................................31 143 5.1.9.1 Get-Attributes Request ............................31 144 5.1.9.2 Get-Attributes Response ...........................33 145 5.1.10 Get-Jobs Operation .....................................34 146 5.1.10.1 Get-Jobs Request ..................................34 147 5.1.10.2 Get-Jobs Response .................................34 148 5.2 Operation Status Codes and Messages .........................35 149 6. Object Attributes.................................................35 150 6.1 Attribute Syntaxes ..........................................36 151 6.1.1 Attribute Extensibility..................................37 152 6.2 Job Template Attributes .....................................38 153 6.2.1 job-name (name)..........................................42 154 6.2.2 job-sheets (type4 keyword)...............................43 155 6.2.3 notify-events (1setOf type2 keyword).....................43 156 6.2.4 notify-addresses (1setOf uri)............................43 157 6.2.5 job-priority (integer(1:100))............................44 158 6.2.6 job-hold-until (type4 keyword)...........................44 159 6.2.7 multiple-documents-are (type2 keyword)...................45 160 6.2.8 best-effort (type2 keyword)..............................45 161 6.2.9 media (type4 keyword)....................................47 162 6.2.10 number-up (type3 keyword) ..............................47 163 6.2.11 sides (type2 keyword) ..................................48 164 6.2.12 printer-resolution (type2 keyword) .....................48 165 6.2.13 print-quality (type2 keyword) ..........................49 166 6.2.14 copies (integer(1:2**31 - 1)) ..........................49 167 6.2.15 finishing (1setOf type2 keyword) .......................49 168 6.2.16 document-format (type2 keyword) ........................50 169 6.2.17 compression (type3 keyword) ............................50 170 6.2.18 job-k-octets (integer(0:2**31 - 1)) ....................50 171 6.2.19 job-impressions (integer(0:2**31 - 1)) .................50 172 6.2.20 job- media-sheets (integer(0:2**31 - 1)) ...............51 173 6.3 Job Description Attributes ..................................51 174 6.3.1 job-uri (uri)............................................52 175 6.3.2 job-uri-user (uri).......................................53 176 6.3.3 job-originating-user (name)..............................53 177 6.3.4 job-originating-host (name)..............................53 179 June 23, 1997, Expires December 23, 1997 180 6.3.5 user-locale (type3 keyword)..............................53 181 6.3.6 job-state (type1 keyword)................................53 182 6.3.7 job-state-reasons (1setOf type2 keyword)................53 183 6.3.8 job-state-message (text).................................53 184 6.3.9 output-device-assigned (name)............................53 185 6.3.10 time-since-pending (milliseconds) ......................54 186 6.3.11 time-since-processing (milliseconds) ...................54 187 6.3.12 time-since-completed (milliseconds) ....................54 188 6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) ......54 189 6.3.14 job-message-from-operator (text) .......................54 190 6.3.15 job-k-octets-completed (integer(0:2**31 - 1)) ..........54 191 6.3.16 job-impressions-completed (integer(0:2**31 - 1)) ......55 192 6.3.17 job-media-sheets-completed (integer(0:2**31 - 1)) ......55 193 6.4 Document Attributes .........................................55 194 6.4.1 document-name (name).....................................55 195 6.4.2 document-format (type2 keyword)..........................55 196 6.4.3 document-uri (uri).......................................56 197 6.5 Printer Description Attributes ..............................56 198 6.5.1 printer-uri (uri)........................................57 199 6.5.2 printer-uri-user (uri)...................................58 200 6.5.3 printer-name (name)......................................58 201 6.5.4 printer-location (text)..................................58 202 6.5.5 printer-description (text)...............................58 203 6.5.6 printer-more-info-site (uri).............................58 204 6.5.7 printer-driver-installer (uri)...........................58 205 6.5.8 printer-make-and-model (text)............................58 206 6.5.9 printer-more-info-manufacturer (uri).....................59 207 6.5.10 printer-state (type1 keyword) ..........................59 208 6.5.11 printer-state-reasons (1setOf type2 keyword) ...........60 209 6.5.12 printer-is-accepting-jobs (boolean) ....................62 210 6.5.13 printer-state-message (text) ...........................62 211 6.5.14 queued-job-count (integer(0:2**31 - 1)) ................62 212 6.5.15 printer-message-from-the-operator (text) ...............62 213 6.5.16 printer-locale (locale) ................................62 214 6.5.17 printer-locales-supported (1setOf locale) ..............62 215 6.5.18 color-supported (boolean) ..............................62 216 7. Conformance.......................................................63 217 7.1 Conditionally Mandatory .....................................63 218 7.2 Client Conformance Requirements .............................63 219 7.3 Printer Object Conformance Requirements .....................63 220 7.3.1 Objects..................................................64 221 7.3.2 Operations...............................................64 222 7.3.3 Attributes...............................................64 223 7.3.4 Printer extensions.......................................65 224 7.3.5 Attribute Syntaxes.......................................65 225 7.4 Security Conformance Requirements ...........................65 226 8. IANA Considerations, Registered Extensions, Private Extensions....66 227 9. Security Considerations...........................................66 229 June 23, 1997, Expires December 23, 1997 230 10.References .......................................................66 231 11.Author's Address .................................................67 232 12.APPENDIX A - Status Codes ........................................70 233 12.1 Status Codes (type2 keyword) ................................70 234 12.1.1 Informational ..........................................71 235 12.1.2 Successful Status Codes ................................71 236 12.1.2.1 successful-OK (IPPL1) .............................71 237 12.1.3 Redirection Status Codes ...............................71 238 12.1.4 Client Error Status Codes ..............................71 239 12.1.4.1 client-error-bad-request (IPPL1) ..................71 240 12.1.4.2 client-error-unauthorized .........................71 241 12.1.4.3 client-error-payment-required .....................72 242 12.1.4.4 client-error-forbidden (IPPL1) ....................72 243 12.1.4.5 client-error-method-not-allowed ...................72 244 12.1.4.6 client-error-timeout (NEW) ........................72 245 12.1.4.7 client-error-not-found ............................72 246 12.1.4.8 client-error-gone .................................72 247 12.1.4.9 client-error-request-entity-too-large (IPPL1) .....73 248 12.1.4.10client-error-request-URI-too-long .................73 249 12.1.4.11client-error-unsupported-media-type (IPPL1) .......73 250 12.1.4.12client-error-attribute-value-not-supported ........73 251 12.1.5 Server Error Status Codes ..............................74 252 12.1.5.1 server-error-internal-server-error ................74 253 12.1.5.2 server-error-operation-not-implemented ............74 254 12.1.5.3 server-error-service-unavailable ..................74 255 12.1.5.4 server-error-timeout (NEW) ........................74 256 12.1.5.5 server-error-HTTP-version-not-supported (NEW) .....74 257 12.1.5.6 server-error-IPP-version-not-supported ............75 258 12.1.5.7 server-error-printer-error ........................75 259 12.1.5.8 server-error-write-fault ..........................75 260 12.2 Mapping of HTTP 1.1 Status Codes to IPP Status Keywords .....76 261 12.3 Status Keywords for IPP Operations ..........................77 262 13.APPENDIX B - "document-format" Values ............................77 263 14.APPENDIX C - "media" Values ......................................80 265 June 23, 1997, Expires December 23, 1997 266 1. Introduction 268 The Internet Printing Protocol (IPP) is an application level protocol 269 that can be used for distributed printing on the Internet. The protocol 270 is heavily influenced by the printing model introduced in the Document 271 Printing Application (ISO/IEC 10175 DPA) standard. Although DPA 272 identifies both end user and administrative features, the first version 273 of IPP is focused only on end user functionality. 275 Section 2 introduces the terminology used within this document. 277 Section 3 introduces the simplified IPP model. The IPP model is made 278 simple by exposing only the objects, attributes, and operations that are 279 essential for end user access and control of the print system. When 280 future versions of IPP include features which satisfy operator and 281 administrator requirements, the model can be extended to support the 282 appropriate objects, attributes, and operations. 284 Section 4 introduces the full semantics of the Printer, Job, and 285 Document objects in the IPP model. It covers how instances of these 286 objects are identified, named, and related to each other. 288 Section 5 covers the operations that are part of the IPP model. These 289 operations include: the Create-Job, Send-Document, Print-Job, Cancel, 290 Get-Attributes, and Get-Jobs operations. 292 Section 6 describes the attributes, their syntaxes, and semantics which 293 are part of the IPP model. Each object's attributes are described, and 294 the attributes are grouped into logical groups to help clarify their 295 relationships and meaning. These groups are also used to simplify 296 queries that request multiple attributes. 298 Section 7 is a review of conformance issues and clarifies requirements 299 that apply to client side and server side implementations. 301 Sections 8-11 cover extensibility, security, technical references, and 302 author information. 304 2. Terminology 306 This specification uses the terminology defined in this section. 308 June 23, 1997, Expires December 23, 1997 309 2.1 Conformance Terminology 311 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 312 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 313 document are to be interpreted as described in RFC 2119 [25]. 315 2.1.1 MUST 317 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", mean that 318 the definition is an absolute requirement of the specification. 320 ISSUE: There are too many "SHALLs" in the document right now. Carl-Uno 321 makes the comment: "I think we have gone overboard in the use of SHALL 322 in this version. Every time we need a verb it is preceded by a SHALL, 323 also in places where it does not serve any purpose. I think that this 324 only detracts from the places where SHALL is really useful." These do 325 need to be cleaned up. Also, many of our conformance requirements in 326 the form of MANDATORY, CONDITIONALLY MANDATORY and SHALL statements are 327 too stringent, and needs quite a bit of relaxation. 329 2.1.2 MUST NOT 331 This phrase, or the phrase "SHALL NOT", mean that the definition is an 332 absolute prohibition of the specification. 334 2.1.3 SHOULD 336 This word, or the adjective "RECOMMENDED", mean that there may exist 337 valid reasons in particular circumstances to ignore a particular item, 338 but the full implications must be understood and carefully weighed 339 before choosing a different course. 341 2.1.4 SHOULD NOT 343 This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist 344 valid reasons in particular circumstances when the particular behavior 345 is acceptable or even useful, but the full implications should be 346 understood and the case carefully weighed before implementing any 347 behavior described with this label. 349 2.1.5 MAY 351 This word, or the adjective "OPTIONAL", mean that an item is truly 352 optional. One vendor may choose to include the item because a 353 particular marketplace requires it or because the vendor feels that it 354 enhances the product while another vendor may omit the same item. An 355 implementation which does not include a particular option MUST be 356 prepared to interoperate with another implementation which does include 358 June 23, 1997, Expires December 23, 1997 359 the option, though perhaps with reduced functionality. In the same vein 360 an implementation which does include a particular option MUST be 361 prepared to interoperate with another implementation which does not 362 include the option (except, of course, for the feature the option 363 provides.) 365 2.1.6 CONDITIONALLY MANDATORY 367 This term means that an item MUST be implemented in a conforming 368 implementation if the item corresponds to a feature or behavior that the 369 implementation is capable of realizing. It is also true, that a 370 conforming implementation is not required to implement the items that 371 correspond to features or behaviors that the implementation is not 372 capable of realizing. 374 ISSUE: Should we use the following definition and define an explicit 375 condition for each attribute labeled as CONDITIONALLY MANDATORY? 377 This term means that an item MUST be implemented in a conforming 378 implementation if the specified condition is true. Furthermore, a 379 conforming implementation NEED NOT implement the item if the 380 specified condition is false. 382 2.1.7 NEED NOT 384 The verb "NEED NOT" indicates an action that the subject of the sentence 385 does not have to implement in order to claim conformance to the 386 standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY 387 NOT" sounds like a prohibition. 389 ISSUE: Occasionally in the document the terms MANDATORY and OPTIONAL 390 get used for what a requester shall supply in a request or what a 391 provider shall return in a response. I think that it is confusing to 392 say that such and such input parameter is OPTIONAL meaning that the 393 requester NEED NOT supply it in a request because it sounds like we are 394 saying that the requester NEED not implement the input parameter and 395 that the provide need not support the input parameter. Same for 396 responses. Instead of labeling input parameters and output parameters 397 as MANDATORY and OPTIONAL, just say something like "the requester SHALL 398 supply the xxx input-parameter in the yyy operation" or "the requester 399 MAY supply the zzz input-parameter in the yyy operation" or "the 400 requester NEED NOT supply the zzz input-parameter in the yyy operation". 401 In headings for parameters, how about: "(SHALL be supplied)" and "(MAY 402 be omitted)"? In the description of each parameter we need to also 403 specify whether support of the input parameter is MANDATORY for the 404 provider or whether support is OPTIONAL. 406 June 23, 1997, Expires December 23, 1997 407 2.2 Model Terminology 409 2.2.1 Keyword 411 Keywords are used within this document as identifiers of semantic 412 entities within the abstract model. Attribute names, attribute values, 413 attribute syntaxes, and attribute groups are represented as keywords. In 414 this document, a keyword is a sequence of characters (length of 1 to 415 255) which consists of the following ASCII characters: lower-case 416 letters, digits, hyphen ("-"), and underscore ("_"). A keyword MUST 417 start with a lower-case letter. In the actual protocol, these keywords 418 will be represented using an appropriate protocol encoding (strings, 419 enumerated values, constants, operation codes, identifiers, etc.). 421 2.2.2 Parameters 423 A parameter is an item of information supplied in an operation 424 consisting of a parameter name and parameter value(s) using a specific 425 syntax for that parameter. Clients supply input parameters in an 426 operation request and Printers return output parameters in an operation 427 response. Most parameters have corresponding object attributes, some do 428 not. All parameters are defined in section 5. Parameterare identified 429 as being "MANDATORY", "CONDITIONALLY MANDATORY", or "OPTIONAL" for 430 implementation and "SHALL be supplied" or "MAY be omitted" in operation 431 requests and responses. 433 2.2.2.1 Parameter Name 435 Each parameter is uniquely identified in this document by its parameter 436 name which is a keyword. The keyword parameter name is given in the 437 section header describing that parameter. In running text in this 438 document, parameter names are indicated inside double quotation marks 439 ("). 441 2.2.2.2 Parameter Value 443 Each parameter has one or more values. Parameter values are represented 444 in the syntax type specified for that parameter. In running text in this 445 document, parameter values are indicated inside single quotation marks 446 ('), whether their parameter syntax is keyword, integer, text, etc. 448 2.2.2.3 Parameter Syntax 450 Each parameter is defined using an explicit syntax. In this document, 451 each syntax type is defined as a keyword with specific meaning. The 452 protocol specification document [23] indicates the actual representation 453 for each parameter syntax that SHALL be used for the actual protocol. 455 June 23, 1997, Expires December 23, 1997 456 Parameter syntaxes are the same as attribute syntaxes which are defined 457 in section 6.1. 459 2.2.3 Attributes 461 An attribute is an item of information that is associated with an object 462 instance consisting of an attribute name and attribute value(s) using a 463 specific syntax for that attribute. A requester sets an attribute by 464 supplying an input parameter in an operation request which has the same 465 syntax as the attribute. A provider returns an attribute by supplying 466 an output parameter in an operation response which has the same syntax 467 as the attribute. The attributes that can be set by a client have a 468 corresponding representation as an input parameter. The attributes that 469 can be queires by a client have a corresonding representation as an 470 output parameter. All attributes are defined in section 6. Attributes 471 are identified as being "MANDATORY", "CONDITIONALLY MANDATORY", or 472 "OPTIONAL". 474 2.2.3.1 Attribute Name 476 Each attribute is uniquely identified in this document by its attribute 477 name which is a keyword. The keyword attribute name is given in the 478 section header describing that attribute. In running text in this 479 document, attribute names are indicated inside double quotation marks 480 ("). 482 2.2.3.2 Attribute Group Name 484 Related attributes are grouped into named attribute groups. The name of 485 the group is a keyword. It MAY be used as the value of an input 486 parameter in place of naming all the attributes in the group explicitly. 487 Attribute groups are defined in section 6. 489 2.2.3.3 Attribute Value 491 Each attribute has one or more values. Attribute values are represented 492 in the syntax type specified for that attribute. In running text in this 493 document, attribute values are indicated inside single quotation marks 494 ('), whether their attribute syntax is keyword, integer, text, etc. 496 2.2.3.4 Attribute Syntax 498 Each attribute is defined using an explicit attribute syntax. In this 499 document, each attribute syntax is defined as a keyword with specific 500 meaning. The protocol specification document [23] indicates the actual 501 representation for each attribute syntax that SHALL be used for the 502 actual protocol. Attribute syntaxes are defined in section 6.1. 504 June 23, 1997, Expires December 23, 1997 505 2.2.4 Supports 507 By definition, a job processing behavior or selectable feature is 508 supported by a Printer only if that Printer responds with the 509 corresponding attribute and the associated value in a response to a 510 query for that attribute. A given implementation may exhibit a behavior 511 that corresponds to the value of some supported attribute, but if the 512 implementation, when queried for that attribute, doesn't respond with 513 the supported attribute populated with that specific value, then as far 514 as IPP is concerned, that Printer does not support that feature. A 515 conforming implementation SHALL support all MANDATORY attributes and all 516 CONDITIONALLY MANDATORY attributes whose possible values correspond to 517 the behaviors that the implementation is capable of realizing. Therefore 518 conformance to IPP does not mandate that all implementations support all 519 possible values representing all possible job processing behaviors and 520 features. 522 For example, if a given instance of a Printer supports only certain 523 document formats, then that Printer SHALL respond with the "document- 524 format-supported" attribute populated with a set of values, possibly 525 only one, taken from the entire set of possible values defined in this 526 model document. This set of values represent the Printer's set of 527 supported document formats. Another example is the "finishings- 528 supported" attribute. If a Printer is not physically capable of 529 stapling (there is no stapler in the output device itself), the 530 "finishings-supported" attribute MUST NOT be populated with the value of 531 'staple'. 533 Note: The supported attributes are set (populated) by some 534 administrative process or automatic sensing mechanism which is outside 535 the scope of IPP. 537 3. Simplified Printing Model 539 In order to a achieve its goal of realizing a workable printing protocol 540 for the Internet, IPP is based on a simplified printing model which 541 abstracts the many (often complex) components of real world printing 542 solutions. Many of these systems include features, interfaces, and 543 relationships that are beyond the scope of IPP. IPP has to run in a 544 distributed computing environment where requesters of print services 545 (clients, applications, PC drivers, etc.) cooperate and interact with 546 print service providers. Although the underlying configuration may be a 547 complex n-tier client/server system, an important simplifying step in 548 the IPP model is to expose only the key objects and interfaces required 549 for printing. The IPP model encapsulates these important elements into 550 three simple objects: 552 June 23, 1997, Expires December 23, 1997 553 Printer (Section 4.1) 554 Job (Section 4.2) 555 Document (Section 4.3) 557 Each of these objects has a set of operations associated with it. These 558 include: 560 Printer: 561 Get-Operations (Section 5.1.1) 562 Print-Job (Section 5.1.2) 563 Print-URI (Section 5.1.3) 564 Validate-Job (Section 5.1.4) 565 Create-Job (Section 5.1.5) 566 Get-Attributes (Section 5.1.9) 567 Get-Jobs (Section 5.1.10) 568 Job 569 Send-Document(Section 5.1.6) 570 Send-URI (Section 5.1.7) 571 Cancel-Job (Section 5.1.8) 572 Get-Attributes (Section 5.1.9) 574 There are no operations defined for a Document object. All document 575 information is accessed through a Job object and its operations. 577 It is important, however, to understand that in real system 578 implementations (which lie underneath the abstracted IPP model), there 579 are other components of a print service which are not explicitly defined 580 in the IPP model. The following figure illustrates where IPP fits with 581 respect to these other components. 583 June 23, 1997, Expires December 23, 1997 584 +--------------+ 585 | Application | 586 o +. . . . . . . | 587 \|/ | Spooler | 588 / \ +. . . . . . . | +---------+ 589 End-User | Print Driver |---| File | 590 +-----------+ +-----+ +------+-------+ +----+----+ 591 | Browser | | GUI | | | 592 +-----+-----+ +--+--+ | | 593 | | | | 594 | +---+------------+---+ | 595 N D S | | IPP Client |------------+ 596 O I E | +---------+----------+ 597 T R C | | 598 I E U | 599 F C R -------------- Transport ------------------ 600 I T I 601 C O T | --+ 602 A R Y +--------+--------+ | 603 T Y | IPP Server | | 604 I +--------+--------+ | 605 O | | 606 N +-----------------+ | IPP Printer 607 | Print Service | | 608 +-----------------+ | 609 | --+ 610 +-----------------+ 611 | Output Device(s)| 612 +-----------------+ 614 IPP Printers encapsulate the functions normally associated with physical 615 output devices along with the spooling, scheduling and multiple device 616 management functions associated with a print server. Printers may be 617 registered as entries in a directory where end users find and select 618 them based on some sort of filtered and context based searching. The 619 directory is used to store relatively static information about the 620 Printer, allowing end users to search for and find Printers that match 621 their search criteria (name, context, printer capabilities, etc.). 623 IPP clients implement the IPP protocol on the client side and give end 624 users or programs the ability to query an IPP Printer and submit and 625 manage their print jobs. An IPP server is just that part of the IPP 626 Printer that implements the protocol. The rest of the IPP Printer 627 implements the application semantics of the print service itself. The 628 IPP Printer MAY be embedded in an output device or MAY be embedded in a 629 host on the network that communicates with the output device. All 630 information about the Printer, both static and dynamic information, can 632 June 23, 1997, Expires December 23, 1997 633 be accessed directly from the Printer itself. The more dynamic 634 information associated with a Printer includes state, currently loaded 635 and ready media, number of jobs on the Printer, errors, warnings, etc. 636 When a job is submitted to the Printer, the Printer SHALL create a Job 637 object. The end user then interacts with this new Job to query its 638 status and monitor the progress of the job. End users may also cancel 639 the Job. The end user is able to register to receive certain events 640 which are then routed using the notification service(s). 642 4. IPP Objects 644 An IPP object is defined as set of attributes that can be potentially 645 supported by each instance of the object. The attributes for each 646 object type are identified as MANDATORY, CONDITIONALLY MANDATORY, or 647 OPTIONAL (see section 2). Each instance of an IPP object supports an 648 appropriate set of attributes (with values for each of the attributes) 649 that describe that instance. That is, an IPP Printer object is defined 650 as set of attributes that can potentially be implemented by some entity 651 claiming to be an IPP Printer. In the same manner, a Job object is 652 defined as a set of attributes that are potentially associated with each 653 instance of a Job object. 655 4.1 Printer Object 657 A major component of the IPP model is the Printer object.The 658 capabilities and state of an IPP Printer are described by its 659 attributes. Printer attributes are grouped as follows: 661 "job-template" attributes (section 6.2) 662 "printer-description" attributes (section 6.5) 664 Operations which are invoked on a printer include: 666 Get-Operations (Section 5.1.1) 667 Print-Job (section 5.1.2) 668 Print-URI (Section 5.1.3) 669 Validate-Job (Section 5.1.4) 670 Create-Job (section 5.1.5) 671 Get-Attributes (section 5.1.9) 672 Get-Jobs (section 5.1.10) 674 An instance of a Printer object implements IPP. Using the protocol, end 675 users may query the attributes of the Printer, submit jobs to the 676 Printer, determine subsequent states of submitted and queued jobs, and 677 cancel their own print jobs. The realization of a Printer object may 678 take on different forms for any given configuration of real components. 680 June 23, 1997, Expires December 23, 1997 681 However, the details of the configuration of real components are 682 transparent to the end user. 684 Since a Printer object is an abstraction of a generic document output 685 device or print service provider, an IPP Printer object could be used to 686 represent any real or virtual device with semantics consistent with the 687 Printer object. For example, an instance of a Printer object could be 688 used to front end a fax-out device, any kind of imager, or even a CD 689 writer. 691 Some examples of configurations supporting a Printer object include: 693 1) An output device, with no spooling capabilities 694 2) An output device, with a built-in spooler 695 3) A print server supporting IPP with one or more associated output 696 devices 697 3a) The associated output devices might or might not be capable of 698 spooling jobs 699 3b) The associated output devices might or might not support IPP 701 See the following figures for some examples on how to view Printer 702 objects on top of several print system configurations. The embedded 703 case below represents configurations 1 and 2. The hosted and fan-out 704 figures below represent configuration 3. 706 June 23, 1997, Expires December 23, 1997 707 Legend: 709 ##### indicates a Printer object which is 710 either embedded in an output device or is 711 hosted in a server. The implementation 712 might or might not be capable of queuing/spooling. 714 any indicates any network protocol or direct 715 connect, including IPP 717 embedded printer: 718 output device 719 +---------------+ 720 O +--------+ | ########### | 721 /|\ | client |------------IPP------------># Printer # | 722 / \ +--------+ | # Object # | 723 | ########### | 724 +---------------+ 726 hosted printer: 727 +---------------+ 728 O +--------+ ########### | | 729 /|\ | client |--IPP--># Printer #-any->| output device | 730 / \ +--------+ # Object # | | 731 ########### +---------------+ 733 +---------------+ 734 fan out: | | 735 +-->| output device | 736 any/ | | 737 O +--------+ ########### / +---------------+ 738 /|\ | client |-IPP-># Printer #--* 739 / \ +--------+ # Object # \ +---------------+ 740 ########### any\ | | 741 +-->| output device | 742 | | 743 +---------------+ 745 4.2 Job Object 747 A Job object is used to model a job. A job can contain one or more 748 documents. The information required to create a Job object is sent in a 750 June 23, 1997, Expires December 23, 1997 751 create request from the end user via an IPP client to a Printer. A 752 create request can be either a Print-Job Request, a Print-URI request, 753 or a Create-Job Request. The Printer MUST perform validation checks to 754 verify that the job may indeed be processed. A client MAY send a 755 Validate-Job Request (with no document data) so that the Printer 756 performs all validation checks without the overhead of transferring all 757 of the document data. As an example of some of the validation checks 758 that are performed, the create request may specify that the documents 759 within the job are to be printed duplex (on both sides of the media). 760 However, the Printer might not support such a feature. Once the Printer 761 validates the submitted information, a Job object is created. The 762 instance of the Job object is initialized with information from the 763 create request. If a Create-Job operation is used to create the Job 764 object, subsequent Send-Document operations are used to transfer the 765 document data from the client to the IPP Printer. 767 This model specification defines rules for what MUST be done when: 769 - optional attributes are missing 770 - there are conflicts between what is supported and what is requested 771 - there are conflicts between what the client requests via external 772 attributes in the IPP operation and what the client requests in 773 embedded instructions in the document page description language 774 (PDL). 776 Job attributes are grouped as follows: 778 "job-template" attributes (optionally supplied by the client/end 779 user, section 6.2) 780 "job-description" attributes (set by the Printer, section 6.3) 782 The following operations can be invoked on Jobs: 784 Send-Document (section 5.1.6) 785 Send-URI (Section 5.1.7)Cancel Job (section 5.1.8) 786 Get-Attributes (section 5.1.9) 788 4.3 Document Object 790 A Document object consists of printable data and Document Attributes 791 (see section 6.4). These Document Attributes only describe the data to 792 be printed; they do not include any specialized document processing 793 instructions that apply to only one Document in a multi-document Job. 794 All Job Template attributes (those attributes that describe desired job 795 processing behavior) are defined as part of the Job object, therefore, 796 they apply equally to all Documents within a Job. Currently there are no 797 operations defined for Document objects. 799 June 23, 1997, Expires December 23, 1997 800 4.4 Object Relationships 802 Instances of objects within the system have relationships that MUST be 803 maintained persistently along with the persistent storage of the object 804 attributes. A Printer can represent one or more output devices. An 805 output device can be represented by at most one Printer object. A 806 Printer can contain zero or more Job objects. A Job object is contained 807 in exactly one Printer object. A Job object contains one or more 808 Documents. If the Document is simply a reference to some print data 809 stream, the reference may be used in multiple Documents in the same Job 810 or even in different Jobs. If the Document is not just a reference, but 811 an actual stream of print data, the stream SHALL contain only one 812 document, although there can be copies of the same document data in 813 other Documents in the same or different Jobs. 815 ISSUE: Does "An output device can be represented by at most one Printer 816 object" kill "fan-in" too much? 818 4.5 Object Attributes 820 Each object type is defined by a set of possible attributes which 821 describe the realization of each instance of an object. That is, a 822 Printer object is defined as set of attributes which each instance of a 823 Printer object might potentially support. In the same manner, a Job 824 object is defined as a set of attributes that are associated with each 825 instance of a Job object. Some attributes are OPTIONAL, some are 826 MANDATORY, and some are CONDITIONALLY MANDATORY (see section 2). Object 827 attributes are defined in section 6 of this document. 829 4.5.1 Job Template Attribute Overview 831 Attributes that a client may optionally include in a create request are 832 called Job Template attributes. These are described in detail in 833 section 6.2. The Printer object has associated attributes which define 834 supported and default values for the Printer. 836 - When a Job Template attribute is supplied by a client in a create 837 request, the attribute and its value describe the desired job 838 processing behavior. 840 - The Printer object's supported attribute describes what behaviors 841 are possible. 843 - The Printer object's default value attribute describes what will be 844 done when no other job processing information is supplied by the 845 client. 847 June 23, 1997, Expires December 23, 1997 849 4.5.2 The "best-effort" Job Attribute Overview 851 Client supplied Job Template attributes affect the rendering, 852 production, and finishing of the documents in a job. Similar types of 853 instructions may also be contained within the Page Description Language 854 (PDL) of the document to be printed. The "best-effort" attribute, 855 described in detail in section 6.2.8 is provided to help manage the 856 conflicts between values supplied in IPP Job Template attributes and 857 corresponding instructions contained within the body of the document 858 itself. The "best-effort" attribute SHALL take one of the following 859 values: 861 - 'shall-honor-ipp-attributes': If a Printer supports this value and 862 a client requests this value, the Printer guarantees that all IPP 863 attribute values take precedence over embedded instructions in the 864 job data (the PDL of the job's documents). 865 - 'should-honor-ipp-attributes': If a Printer supports this value, 866 and a client requests this value, the Printer SHOULD try to make 867 sure that IPP attribute values take precedence over embedded PDL 868 instructions, however there is no guarantee 870 This "best-effort" attribute has nothing to do with conflict between 871 what a Printer supports and what an IPP client requests. If there is 872 such a conflict, the Printer SHALL reject the create request. A client 873 SHOULD query the printer to find out what is supported before supplying 874 specific values in a create request. 876 4.6 Object Identity 878 All instances of Printer and Job objects have an identifier attribute 879 whose value is globally unique so that they can persistently and 880 unambiguously referenced. The IPP model requires that these values be 881 URIs as defined by RFC 1738 and RFC 1808. In addition to an identifier 882 attribute, instances of Printer and Job objects may have a name. An 883 object name need not be unique across all instances of all objects. The 884 Printer name is chosen and set by an administrator. If not supplied by 885 the client, tthe Job name is created by the Printer. In all cases, the 886 name only has local meaning, and is not constrained to be unique. 888 To summarize, each instance of Printer and Job objects will have two 889 identifying attributes: 891 - "xxx-uri": The globally unique identifier for this object instance 892 - "xxx-name": The non unique name for this object instance 894 June 23, 1997, Expires December 23, 1997 896 Document objects sent to an IPP Printer only have names, no identifiers. 897 The "document-name" attribute is used to store the name of the Document. 898 This name is just of interest within the context of a Job; it need not 899 be unique. 901 If Documents are printed by reference, they are identified by URIs. 903 5. IPP Operations 905 Jobs and Printers each have a set of associated operations. End users or 906 programs invoke these operations using an IPP client. The operations 907 are: 909 For a Printer object: 910 Get-Operations (section 5.1.1) MANDATORY 911 Print-Job (section 5.1.2) MANDATORY 912 Print-URI (section 5.1.3) OPTIONAL 913 Validate-Job (section 5.1.4) OPTIONAL 914 Create-Job (section 5.1.5) OPTIONAL 915 Get-Jobs (section 5.1.8) OPTIONAL 916 Get-Attributes (section 5.1.9) OPTIONAL 918 For a Job object: 919 Send-Document (section 5.1.6) OPTIONAL 920 Send-URI (section 5.1.7) OPTIONAL 921 Cancel-Job (section 5.1.8) MANDATORY 922 Get-Attributes (section 5.1.9) OPTIONAL 924 When a client communicates with a remote IPP object, it sends an 925 operation request to the URI for that object. Each request carries 926 along with it the input parameters and data required to perform the 927 specified operation. Each request requires a response from the object 928 indicating success or failure of the operation including response data 929 and/or error messages. The representation and encoding of the IPP 930 protocol are contained in "Internet Printing Protocol: Protocol 931 Specification."[23] 933 It is assumed that URIs for IPP Printers are available to end users or 934 programs that wish to invoke Printer operations. Although NOT 935 MANDATORY, it is RECOMMENDED that Printers be registered in a directory 936 service which end users and programs can interrogate. "Internet Printing 937 Protocol: Directory Schema"[24] defines the attributes to be associated 938 with a Printer entry in a directory service. 940 June 23, 1997, Expires December 23, 1997 941 5.1 Operation Semantics 943 In this section, the IPP operations are described in terms of their 944 contents and semantics including both the request and the response. 946 In order to create a new Job object, a client MAY use one of three 947 operations: 949 - The Print-Job operation: This operation is used if the client 950 wants to create a Job with only a single Document and the document 951 data is included in the request. In this case, the client "pushes" 952 the document data to the Printer. 954 - The Print-URI operation: This operation is used if the client wants 955 to create a Job with only a single Document and only a URI 956 reference to the document data (not the document data itself) is 957 included in the request. In this case, the Printer "pulls" the 958 document data from the location identified by the URI. 960 - The Create-Job operation: This operation is used if the client 961 wants to create a Job with one or more Documents. This operation 962 is followed by an arbitrary number of Send-Document or Send-URI 963 operations (each creating another Document for this Job). The 964 Send-Document operation includes the document data with the 965 operation request (client "pushes" the document data to the 966 printer), and the Send-URI operation includes only a reference (a 967 URI) to the document data (the Printer "pulls" the document data 968 from the referenced location). 970 A Create-Job operation followed by a only one Send-Document operation is 971 semantically equivalent to a Print-Job operation, however, for 972 performance reasons, the client SHOULD use the Print-Job operation for 973 all single Document Jobs. Throughout this model specification, the term 974 "create request" is used to refer to any of the three operation requests 975 that creates a new job object (a Print-Job request, a Print-URI request, 976 or a Create-Job request). 978 5.1.1 Get-Operations Operation 980 Since some of the IPP operations defined in this specification are 981 OPTIONAL and therefore some implementations MAY choose to not implement 982 support them, this operation, Get-Operations, is a simple, MANDATORY 983 operation that all implementations MUST support. The client uses this 984 operation to query a specific implementation for a list of supported 985 OPTIONAL operations. 987 June 23, 1997, Expires December 23, 1997 988 5.1.1.1 Get-Operations Request 990 The Get-Operations Request has no parameters. 992 5.1.1.2 Get-Operations Response 994 The Printer SHALL return to the client the following output parameters 995 as part of the Get-Operations Response: 997 Supported Operations: 998 A list of the OPTIONAL operations that this implementation 999 supports. This set of OPTIONAL operations are 'Create-Job', 1000 'Print-URI', 'Submit-Document', 'Submit-URI', 'Get-Jobs', and 'Get- 1001 Attributes'. 1003 Status 1004 Status information including error status 1006 5.1.2 Print-Job Operation 1008 When an end user desires to submit a print job with only one Document, 1009 the client sends a Print-Job Request to a Printer and receives a Print- 1010 Job Response from that Printer. The information in a Print-Job Request 1011 (along with any default information associated with the Printer) is 1012 sufficient for the Printer to create a Job object and then process that 1013 Job. A Print-Job operation differs from a Print-URI operation in that a 1014 Print-Job operation contains the document data to be printed and a 1015 Print-URI operation only contains a reference to the document data. 1017 5.1.2.1 Print-Job Request 1019 The following elements are part of the Print-Job Request: 1021 Job Template Attributes: 1022 An optional set of Job Template attributes as defined in section 1023 6.2. If the client supplies no Job Template attributes in the 1024 Create-Job Request, the Printer uses its default value attributes 1025 when processing the job. Since a Print-Job operation is used for a 1026 Job with only one Document, the Document attributes "document-name" 1027 and "document-format" are also supplied by the client. "document- 1028 name" is MANDATORY; "document-format" is OPTIONAL. 1030 Document Content 1031 The client supplies the document data. 1033 June 23, 1997, Expires December 23, 1997 1035 The simplest Print-Job Request consists of just the Document Content and 1036 nothing else. This means that the Printer SHALL create a new Job object 1037 with no Job Template attributes and a single contained Document. 1039 When a Printer receives a Print-Job Request, the Printer SHALL either 1040 accept or reject the request. The Printer SHALL accept the Print-Job 1041 Request and SHALL create a Job object if it is able to accept all 1042 attributes in the request. The Printer SHALL reject the request and 1043 SHALL NOT create a Job object if the Printer rejects any attribute in 1044 the request. There are six cases to consider when accepting or 1045 rejectingJob and Document attributes: 1047 1. The client supplies a Job Template attribute named "xxx" and the 1048 value supplied by the client is among the values supported by the 1049 Printer (i.e., is among the values of the Printer's "xxx-supported" 1050 attribute): The "xxx" Job Template attribute is accepted. If the 1051 "best-effort-supported" attribute contains the value 'shall-honor- 1052 ipp-attributes' the Printer SHALL guarantee the behavior 1053 represented by the value in the "xxx" attribute (i.e., the IPP 1054 attribute has precedence over any other embedded job instruction). 1055 If the value of the "best-effort-supported" is 'should-honor-ipp- 1056 attributes' then the Printer SHOULD try to realize the behavior 1057 requested by the client, but NEED NOT guarantee the behavior. The 1058 Printer creates the Job object and associates the "xxx" attribute 1059 with the new Job object using the value supplied by the client. 1061 2. The client supplies a Job Template attribute but the attribute is 1062 syntactically bad: The Printer SHALL reject the job and return the 1063 'attribute-unsupported' error code and the name of the badly formed 1064 attribute (if known) in the "unsupported-attributes" response 1065 parameter. 1067 3. The client supplies a Job Template attribute and the attribute 1068 value is not among the values supported by the Printer: The 1069 Printer SHALL reject the Job and return the 'attribute--value- 1070 unsupported' error code and the name of the unsupported attribute 1071 in the "unsupported-attribute-values" response parameter. 1073 4. The client supplies a Job Template attribute and the Printer does 1074 not support the attribute: The Printer rejects the attribute. The 1075 Printer returns the 'attribute-unsupported' error code and the name 1076 of the rejected attribute in the "unsupported-attributes" response 1077 parameter. 1079 5. The client does not supply a Job Template attribute, but the 1080 Printer supports the attribute: The attribute is accepted and when 1081 the Printer creates the Job object, the Printer SHALL NOT associate 1083 June 23, 1997, Expires December 23, 1997 1084 the attribute with the new Job object. When the Printer processes 1085 that Job, the Printer SHOULD attempt to use the behavior implied by 1086 the default value Printer attribute as set at the time of Job 1087 processing (not Job creation). In other words, these rules allow 1088 for a Job object to be created without implementing some of the Job 1089 Template attributes. As the Printer processes the Job, if the 1090 Printer supports a corresponding default value attribute for the 1091 missing Job Template attribute, the Printer uses the default value. 1092 Depending on the value of the Printer's "best-effort" attribute, 1093 the Printer either guarantees the behavior corresponding to the 1094 default value or it does its best to realize the behavior of the 1095 default value. The results of processing a Job are undefined if 1096 the Printer does not support the default value attribute and the 1097 client does not supply a value in the create request. 1099 6. The client does not supply an attribute, and the Printer does not 1100 support the attribute: The Printer accepts the Job but how the Job 1101 is finally processed (with respect to the missing Job Template 1102 attributes) is undefined. 1104 5.1.2.2 Print-Job Response 1106 The Printer SHALL return to the client the following output parameters 1107 as part of the Print-Job Response: 1109 Job Identifier: 1110 A URI which the client SHALL use for all other operations on this 1111 Job 1113 Job Status: 1114 The following Job attributes: job-name, job-state, and job-state- 1115 reasons. The value of each attribute SHALL be from a snapshot 1116 taken sometime after the time the Printer receives the print 1117 request. The "job-state-message" attribute is OPTIONAL. 1119 Note: Since any printer state information which affects a job's 1120 state is reflected in the "job-state" and "job-state-reasons" 1121 attributes, it is sufficient to return only these attributes and no 1122 specific printer status attributes. 1124 ISSUE: Randy suggest that the following are optional returns in a 1125 response: job-originating-user job-originating-host user-locale job- 1126 state job-state-reasons job-state-message output-device-assigned 1127 time-since-submission time-since-processing number-of-intervening-jobs 1128 job-message-from-operator time-since-completion job-k-octets-completed 1129 job-impressions-completed job-media-sheets-completed 1131 June 23, 1997, Expires December 23, 1997 1132 Unsupported Attributes: 1133 A list of attribute names which are unsupported. The existence of 1134 any attribute name in this list implies that the Job was rejected. 1136 Unsupported Attribute Values: 1137 A list of attribute names whose client supplied values are 1138 unsupported. The existence of any attribute name in this list 1139 implies that the Job was rejected. 1141 ISSUE: Should we call both of these "attribute-syntax-invalid'? 1143 Status 1144 Status information including error status 1146 The simplest response SHALL consist of the job identifier, the Job 1147 Status attributes, and an operation status that is either an "ok" status 1148 or an "error" status. 1150 5.1.3 Print-URI Operation 1152 This operation is identical to the Print-Job operation (section 5.1.2) 1153 except that a client supplies a reference (a URI) to the document data 1154 to be printed rather than the document data itself. It is up to the IPP 1155 server to interpret the URI and subsequently "pull" the document from 1156 the source referenced by the URI string. 1158 5.1.3.1 Print-URI Request 1160 The following elements are part of the Print-URI Request: 1162 Job Template Attributes: 1163 (see section 5.1.2.1) 1165 Document Reference: 1166 The client supplies the a URI reference to the document data. 1168 5.1.3.2 Print-URI Response 1170 The Printer SHALL return to the client the following output parameters 1171 as part of the Print-URI Response: 1173 Job Identifier: 1175 June 23, 1997, Expires December 23, 1997 1176 (see section 5.1.2.2) 1178 Job Status: 1179 (see section 5.1.2.2) 1181 Unsupported Attributes: 1182 (see section 5.1.2.2) 1184 Unsupported Attribute Values: 1185 (see section 5.1.2.2) 1187 Status 1188 (see section 5.1.2.2) 1190 5.1.4 Validate-Job Operation 1192 This operation is identical to the Print-Job operation (section 5.1.2) 1193 except that a client supplies no document data or any reference to 1194 document data and the Printer allocates no resources (i.e., a new Job 1195 object) to process the job. The VALIDATE request is only used to verify 1196 capabilities of a printer object against whatever input parameters are 1197 supplied in the Validate-Job request. 1199 5.1.4.1 Validate-Job Request 1201 The following elements are part of the Validate-Job Request: 1203 Job Template Attributes: 1204 (see section 5.1.2.1) 1206 5.1.4.2 Validate-Job Response 1208 The Printer SHALL return to the client the following output parameters 1209 as part of the Validate-Job Response: 1211 Job Identifier: 1212 (see section 5.1.2.2) 1214 Job Status: 1215 (see section 5.1.2.2) 1217 Unsupported Attributes: 1218 (see section 5.1.2.2) 1220 June 23, 1997, Expires December 23, 1997 1222 Unsupported Attribute Values: 1223 (see section 5.1.2.2) 1225 Status 1226 (see section 5.1.2.2) 1228 5.1.5 Create-Job Operation 1230 This operation is similar to the Print-Job operation (section 5.1.2) 1231 except that a client supplies no document data or any reference to 1232 document data in the Create-Job request. This operation is followed by 1233 one or more Send-Document or Send-URI operations. It is possible for a 1234 given implementation to only support either Send-Document or Send-URI 1235 but not both. In that case, a client SHOULD NOT use an unsupported 1236 operation. If a Printer supports the Create-Job operation, it MUST also 1237 support one of the Send-Document or Send-URI operations or both. 1239 5.1.5.1 Create-Job Request 1241 The following elements are part of the Create-Job Request: 1243 Job Template Attributes: 1244 (see section 5.1.2.1) 1246 5.1.5.2 Create Job Response 1248 The Printer SHALL return to the client the following output parameters 1249 as part of the Create-Job Response: 1251 Job Identifier: 1252 (see section 5.1.2.2) 1254 Job Status: 1255 (see section 5.1.2.2) 1257 Unsupported Attributes: 1258 (see section 5.1.2.2) 1260 Unsupported Attribute Values: 1261 (see section 5.1.2.2) 1263 June 23, 1997, Expires December 23, 1997 1265 Status 1266 (see section 5.1.2.2) 1268 (see section 5.1.2.2) 1270 5.1.6 Send-Document Operation 1272 Once a Job object has been created using a Create-Job operation 1273 (returning a "job-uri"), a client directs a Send-Document operation to 1274 the newly create Job object (identified by the returned "job-uri"). The 1275 operation adds a new Document to the Job object. An entire document MUST 1276 be sent in a single Send-Document operation.SEND-DOCUMENT requests are 1277 directed towards the job object referenced by the "job_URI" string 1278 returned in a successful CREATE-JOB-RESP message. 1280 5.1.6.1 Send-Document Request 1282 The client submits the request to a Job URI. 1284 The following abstract data types are part of the Send-Document Request: 1286 Document Attributes: 1287 A set of Document Description attributes (section 6.4). 1288 Last Document Flag 1289 This is a boolean flag that is set if this is the last Document for 1290 the Job. 1292 Document Content: 1293 The client supplies the document data. 1295 5.1.6.2 Send-Document Response 1297 The following output parameters are part of the Send-Document Response: 1299 Job Status: 1300 (see section 5.1.2.2) 1302 Unsupported Attributes: 1303 (see section 5.1.2.2) 1305 Unsupported Attribute Values: 1306 (see section 5.1.2.2) 1308 Status: 1309 (see section 5.1.2.2) 1311 June 23, 1997, Expires December 23, 1997 1313 5.1.7 Send-URI Operation 1315 This operation is identical to the Send-Document operation (see section 1316 5.1.6) except that a client supplies a reference (a URI) to the document 1317 data to be printed rather than the document data itself. It is up to 1318 the IPP server to interpret the URI and subsequently "pull" the document 1319 from the source referenced by the URI string. 1321 5.1.7.1 Send-URI Request 1323 The client submits the request to a Job URI. 1325 The following abstract data types are part of the Send-URI Request: 1327 Document Attributes: 1328 (see section 5.1.6.1) 1330 Last Document Flag 1331 (see section 5.1.6.1) 1333 Document Reference: 1334 The client supplies a URI reference to the document data. 1336 5.1.7.2 Send-URI Response 1338 The following output parameters are part of the Send-URI Response: 1340 Job Status: 1341 (see section 5.1.6.2) 1343 Unsupported Attributes: 1344 (see section 5.1.6.2) 1346 Unsupported Attribute Values: 1347 (see section 5.1.6.2) 1349 Status: 1350 (see section 5.1.6.2) 1352 5.1.8 Cancel Job Operation 1354 This operation allows a user to cancel one specific Print Job any time 1355 after the print job has been established on the Printer. Some pages may 1356 be printed before a job is terminated if printing has already started 1357 when the Cancel Job operation is received. Only the end user who is 1358 also the job originator ("job-originating-user" Job attribute) can 1359 cancel the job using IPP 1.0. 1361 June 23, 1997, Expires December 23, 1997 1362 5.1.8.1 Cancel-Job Request 1364 The client submits the request to a Job URI. 1366 The following abstract data types are part of the Cancel Job Request: 1368 Message: 1369 Optional message to the operator 1371 5.1.8.2 Cancel-Job Response 1373 The following information is part of the Cancel Job Response: 1375 Status: 1376 Status information including error status 1378 ISSUE: Randy suggests that the following might be optionally returned 1379 in a response: job-state job-state-reasons job-state-message job-k- 1380 octets-completed job-impressions-completed job-media-sheets-completed 1381 time-since-submission time-since-processing job-originating-user job- 1382 originating-host 1384 5.1.9 Get-Attributes Operation 1386 The Get-Attributes operation allows a client to obtain information from 1387 a Printer or Job object. The client supplies as an operation parameter 1388 the set of attribute names and/or attribute group names that the 1389 requester is interested in. The Printer SHALL return a corresponding 1390 attribute list in the response with the appropriate attribute values 1391 filled in for each attribute (explicitly named or implicitly included in 1392 an attribute group) that the client supplied in the request. 1394 ISSUE: Should this be broken up into two sections - one for Printer one 1395 for Job? 1397 5.1.9.1 Get-Attributes Request 1399 The client SHALL submit the Get-Attributes request to a Job URI or 1400 Printer URI. 1402 The following input parameters SHALL be part of the Get-Attributes 1403 Request: 1405 Document Format: 1407 June 23, 1997, Expires December 23, 1997 1408 The client SHALL supply this input parameter only when requesting 1409 attributes of the Printer object. The Printer SHALL reject this 1410 request, if this input parameter is supplied for a Job object. 1412 This input parameter conditions the Printer attributes and values 1413 that might depend on the document format. The Printer SHALL return 1414 only (1) those attributes that are supported and (2) the attribute 1415 values that are supported for the specified document format. By 1416 specifying the document format, the client can eliminate the 1417 attributes and values that are not supported. 1419 If the client omits this input parameter, the effect SHALL be the 1420 same as if the value of the Printer's default value document format 1421 attribute were supplied. It is recommended that the client always 1422 supply a value for document-format, since the Printer's default 1423 value for document-format may be 'auto-sense', in which case the 1424 returned attributes and values are for the union of the document 1425 formats that the Printer supports in its 'auto-sense' support." 1427 Requested Attributes: 1428 An optional set of attribute names (without values) or attribute 1429 group names in whose values the requester is interested. If the 1430 client omits this input parameter, the effect SHALL be the same as 1431 if the "all" attribute group were supplied. 1433 Attributes may be requested by name or by group name. For Jobs, the 1434 attribute groups include: 1436 - 'job-template': all of the Job Template attributes that apply to a 1437 Job object (the first column of the table in Section 6.2). 1438 - 'job-description': the Job Description attributes in Section 6.3. 1440 For Printers, the attribute groups include: 1442 - 'job-template': all of the Job Template attributes that apply to a 1443 Printer object (the last two columns of the table in Section 6.2). 1444 - 'printer-description': the attributes specified in Section 6.5. 1446 There are also special groups: 1448 - 'none': no attributes of the specified object. Note: none is 1449 primarily useful in Get-Jobs, but can be used as a "ping" with the 1450 Get-Attributes operation. 1451 - 'all': all attributes of the specified object 1453 June 23, 1997, Expires December 23, 1997 1455 5.1.9.2 Get-Attributes Response 1457 The Printer SHALL return the following response parameters as part of 1458 the Get-Attributes Response: 1460 Result Attributes: 1461 The requested attributes of the object with their current 1462 valuesSHALL 1464 Unknown Attributes: 1465 A list of attribute names included in the Get-Attributes request 1466 which are unknown by the Printer. 1468 Status: 1469 Status information including error status 1471 A Printer MAY be configured, for security reasons, not to return all 1472 attributes that a client requests. It may even return none of the 1473 requested attributes. In such cases, the status returned is the same as 1474 if the Printer had returned all requested attributes. The client cannot 1475 tell by such a response whether the requested attribute was present or 1476 absent on the Printer. 1478 In response to a "Get-Attributes" (or a "Get-Jobs") operation the 1479 following requirements apply to the Printer: 1481 1. If the client supplies an attribute name in the Requested 1482 Attribute input parameter and that attribute is supported by the 1483 Printer, the printer SHALL respond with all current values for that 1484 attribute. 1486 2. If the client supplies an attribute name in the Requested 1487 Attributes input parameter and that attribute is not supported by 1488 the Printer, the Printer SHALL respond with the attribute name in 1489 the "unsupported attributes" response parameter. 1491 3. If the client supplies an attribute group that is supported by the 1492 Printer, the Printer SHALL respond with all current values for each 1493 supported attribute in the group. It SHALL not respond for 1494 unsupported attributes in the group. 1496 4. If the client supplies an attribute group keyword that is not 1497 unsupported, the Printer assumes that it is an unknown attribute 1498 and responds group name in the "unknown attribute list" response 1499 parameter. 1501 June 23, 1997, Expires December 23, 1997 1503 5.1.10 Get-Jobs Operation 1505 The Get-Jobs operation allows a client to retrieve Printer attributes 1506 and a list of print jobs belonging to the target Printer object. A list 1507 of Job attribute names or attribute group names that the client is 1508 interested in seeing may be included in the request. 1510 This operation is like Get-Attributes, except that Get-Jobs operation 1511 returns attributes from more than one object. 1513 5.1.10.1 Get-Jobs Request 1515 The client SHALL submit the Get-Jobs request to a Printer URI. 1517 The following input parameters are part of the Get-Jobs Request: 1519 Limit 1520 This is an integer value which indicates a limit to the number of 1521 Jobs returned. The limit is a "stateless limit" in that if the 1522 limit is n then only the first n jobs are returned in the Get-Jobs 1523 Response; there is no mechanism to allow for the "next" n jobs. 1524 The limit applies across all Job States requested. For example, if 1525 the limit if 50, and there are 75 jobs in the 'completed' state and 1526 25 in the 'pending state' and the client requests first 'completed 1527 jobs' and then 'pending' jobs, only the oldest 50 'completed' jobs 1528 are returned. The other 25 'completed' jobs are not returned and 1529 neither are any of the 'pending' jobs returned. 1531 Requested Job Attributes: 1532 A optional set of attribute names (without values) or attribute 1533 groups names in whose values the requester is interested from each 1534 of the jobs on the specified Printer. The attribute group names 1535 are the same as for the Get-Attributes operation for the Job 1536 object. If the client omits this input parameter, the effect SHALL 1537 be the same as if the "job-uri" attribute were supplied. 1539 5.1.10.2 Get-Jobs Response 1541 The Printer SHALL return the following output parameters as part of the 1542 Get-Jobs Response: 1544 Result Attributes: 1545 The result includes zero or more objects each with zero or more 1546 attributes. Each Job is returned in chronological order. This 1547 order is explicitly defined to be: oldest to newest with respect to 1548 completion time, either actual or expected. Jobs that are in the 1549 'pending-held' state SHALL appear in their position as if they were 1550 'pending' (otherwise, a user might be deceived by jobs that move 1552 June 23, 1997, Expires December 23, 1997 1553 from 'pending-held' to 'pending' as seeming to jump ahead in the 1554 queue). 1556 If the client did not supply any Job attributes, the Printer SHALL 1557 assume that the client is implicitly requesting the "job-uri" 1558 attribute (that is no other Job attributes are returned, but the 1559 Job URI for each Job). 1561 Status 1562 Status information including error status 1564 A Printer MAY be configured, for security reasons, not to return all 1565 attributes that a client requests. It may even return none of the 1566 requested attributes. In such cases, the status returned is the same as 1567 if the Printer had returned all requested attributes. The client cannot 1568 tell by such a response whether the requested attribute was present or 1569 absent on the Printer. 1571 ISSUE: Some people still have complaints about this security statement. 1573 5.2 Operation Status Codes and Messages 1575 An operation status code provides information on the processing of a 1576 request. A message provides a short textual description of the Status. 1577 The status code is intended for use by automata and a message is 1578 intended for the human user. An IPP application (i.e. a browser, GUI, 1579 print driver or gateway) is not required to examine or display the 1580 message. Status codes and suggested corresponding messages are included 1581 in section 12 "APPENDIX A - Status Codes". 1583 6. Object Attributes 1585 This section describes the attributes with their corresponding syntaxes 1586 and values that are part of the IPP model. The sections below show the 1587 objects and their associated attributes which are included within the 1588 scope of this protocol. Many of these attributes are derived from other 1589 relevant specifications: 1591 - ISO/IEC 10175 DPA (Final, June 1996) 1592 - RFC 1759 Printer MIB (Proposed Standard, May 1995) 1593 - Internet-Draft: Printer MIB (Draft Standard in progress, December 1594 1996) 1595 - Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997) 1597 Each attribute is uniquely identified in this document using a "keyword" 1598 (see section 2.2.1). The keyword in included in the section header 1600 June 23, 1997, Expires December 23, 1997 1601 describing that attribute. Not only are attributes uniquely identified 1602 with keywords, some attributes take on a syntax which is a set of 1603 keywords. 1605 6.1 Attribute Syntaxes 1607 The following table shows the basic syntax types that a client and 1608 server SHALL be able to handle. 1610 text: a sequence of characters, length: 0 to 4095, any characters. 1611 This syntax type is used for free form human readable text intended 1612 for human consumption. 1614 name: a sequence of characters, length: 1 to 255, any characters. 1615 This syntax type is used for referencing some object or entity via 1616 a user-friendly string, such as a Printer name, a document name, a 1617 user name, or a host name. 1619 fileName: a sequence of characters, length: 1 to 1024, any 1620 characters. This syntax type is used for referencing some file. 1621 The limit is the same as in POSIX and Microsoft NT. 1623 keyword: a sequence of characters, length: 1 to 255, containing only 1624 the characters ASCII letters, ASCII digits, hyphen ("-"), 1625 underscore ("_"). The first character MUST be an ASCII letter. 1626 This syntax type is used for enumerating semantic identifiers of 1627 entities in the abstract protocol (specified in this document). 1628 These entities can be attribute names or values of attributes. 1629 When a keyword is used to represent an attribute (its name), it 1630 MUST be unique within the full scope of IPP objects and attributes. 1631 When a keyword is used to represent a value of an attribute, it 1632 MUST be unique just within the scope of that attribute. That is, 1633 the same keyword can not be used for two different values within 1634 the same attribute to mean two different semantic ideas. However, 1635 the same keyword can be used across two or more attributes, 1636 representing different semantic ideas for each attribute. 1638 uri: a sequence of characters as defined in rfc1738 and rfc1808. 1639 This syntax type is used for carrying Universal Resource 1640 Identifiers. 1642 uriScheme: a sequence of characters representing the URI Scheme. 1643 These include 'http' for HTTP schemed URIs (e.g., http://...), and 1644 'ftp' for FTP schemed URIs (e.g., ftp://...). 1646 locale: a standard identifier for country and language. The values 1647 for this syntax type are taken from RFC 1766 [26]. 1649 June 23, 1997, Expires December 23, 1997 1651 octetString: a sequence of octets. This syntax type is used for 1652 opaque data, such as the document-content. 1654 boolean: two values of 'true' and 'false'. This syntax type is like 1655 a keywordSet, but there are only two values. Note: An application 1656 might use a checkbox for an attribute with this syntax type. 1658 integer: an integer value that is in the range from -2**31 to 2**31 1659 - 1. Each attribute specifies the range constraint explicitly if 1660 the range is different from the full range of possible integer 1661 values (e.g., 0 - 100 for the "job-priority" attribute). 1663 dateTime: a standard, fixed length representation of date and time 1664 (to the nearest second) as defined in RFC 1123 [27]. For example, 1665 Sun, 06 Nov 1994 08:49:37 GMT. This is a fixed-length subset of 1666 that defined by RFC 1123 (an update to RFC 822). All values MUST 1667 be represented in Greenwich Mean Time (GMT). This is indicated by 1668 the inclusion of "GMT" as the three-letter abbreviation for time. 1670 seconds: a non-negative integer with implicit units of seconds. 1671 This is used for relative time. 1673 milliseconds: a non-negative integer with implicit units of 1674 milliseconds. This is used for relative time. 1676 1setOf X: 1 or more values of type X. This syntax type is used for 1677 multi-valued attributes, whose value is a set of values. Note: 1678 The syntax type is called "1setOf" to indicate that set of values 1679 SHALL NOT be empty (a set of size 0). 1681 rangeOf X: a range of value of type X. This syntax type is used 1682 for ordered values (numeric, lexical, etc.) such as integers. 1684 6.1.1 Attribute Extensibility 1686 This document uses prefixes to the "keyword" basic syntax type in 1687 order to communicate extra information to the reader through its 1688 name. This extra information need not be represented in an 1689 implementation because it is unimportant to a client or Printer. The 1690 table below describes the prefixes and their meaning. 1692 "type1": The editor MUST revise the IPP standard to add a new name. 1693 No private names are allowed. 1695 "type2": Implementers can, at any time, add new values by proposing 1696 them to the PWG for registration (or an IANA-appointed registry 1698 June 23, 1997, Expires December 23, 1997 1699 advisor after the PWG is no longer certified) where they are 1700 reviewed for approval. IANA keeps the registry. Implementers can 1701 support private (unregistered) with a suitable distinguishing 1702 prefix, such as "-xxx-" where xxx is the company name registered 1703 with IANA for use in domain names. 1705 "type3": Implementers can, at any time, add new values by submitting 1706 a registration request directly to IANA, no PWG or IANA-appointed 1707 registry advisor review is required. Implementers can support 1708 private (unregistered) names with a suitable distinguishing prefix, 1709 such as "-xxx-" where xxx is the company name registered with IANA 1710 for use in domain names. 1712 "type4": Anyone (system administrators, system integrators, site 1713 managers, etc.) can, at any time, add new installation-defined 1714 names to a local system. Care SHOULD be taken by the implementers 1715 to see that keywords do not conflict with other keywords defined by 1716 the standard or as defined by the implementing product. There is no 1717 registration or approval procedure for type 4 keywords. 1719 Each of the four types above assert some sort of registry or review 1720 process in order to be valid. "type1" values are only valid if the 1721 specification is updated, "type2" values are only valid if the PWG or an 1722 IANA approved review process approves them, "type3" values are only 1723 valid if IANA registers the value with no review process required, and 1724 "type4" values are always valid (there is no review or registration 1725 process required). Any typeN value MAY be registered using a process 1726 for some typeM where M is less than N, however such registration is NOT 1727 REQUIRED. For example, a type4 value MAY be registered in a type 1 1728 manner (by being included in a future version of an IPP specification) 1729 however it is NOT REQUIRED. 1731 Note: This specification defines keyword values for all of the above 1732 types, including type4 keywords. 1734 6.2 Job Template Attributes 1736 Job Template attributes describe job processing behavior. Take for 1737 example, a generic Job Template attribute called "xxx": 1739 1. "xxx" is optionally supplied by the client in a create request. 1740 If "xxx" is supplied, the client is specifying that the Printer 1741 will apply a specific job processing behavior to this job while 1742 processing the Job. When "xxx" is not supplied, the client expects 1743 the Printer will apply the default job processing behavior. 1745 June 23, 1997, Expires December 23, 1997 1747 2. "xxx-supported" is a Printer attribute that describes which 1748 behaviors are supported by a Printer. "xxx-supported" is a 1749 CONDITIONALLY MANDATORY attribute which means that the Printer 1750 only supports the attribute if it is capable of realizing one or 1751 more of the behaviors associated with the attribute and its values. 1752 A client can query the Printer and find out what behaviors are 1753 supported by inspecting at the values in the "xxx-supported" 1754 attribute. 1756 3. The Printer also supports a default value attribute named "xxx". 1757 This default value attribute describes what will be done when no 1758 other job processing information is supplied by the client (either 1759 explicitly as an IPP attribute in the create request or implicitly 1760 as an embedded instruction within the job data). Along with the 1761 supported attribute, the default value attribute is also 1762 CONDITIONALLY MANDATORY. However, if the Printer supports the 1763 "xxx-supported" attribute, the Printer MUST support the 1764 corresponding default value attribute and vice versa. 1766 4. If a client application wishes to present an end user with a list 1767 of supported and default values from which to choose, the client 1768 program SHOULD query the supported and default value attributes. 1769 The values that the client then supplies in the create request will 1770 all fall within the supported values at the Printer. When querying 1771 the Printer, the client MAY enumerate each attribute by name in the 1772 Get-Attributes Request, or the client MAY just name the "printer- 1773 job-template" group in order to get the complete set of supported 1774 and default value attributes which are supported. 1776 The "job-priority" attribute is an example of a Job Template attribute. 1777 It is an integer in the range from 1 to 100. A client can query the 1778 Printer for the "job-priority-supported" attribute and the "job- 1779 priority" default value attribute. The supported attribute contains a 1780 set of supported priority values (a range). The default value attribute 1781 contains the job priority value that will be used for a new job if the 1782 client does not supply one in the create request. If the client does 1783 supply the "job-priority" attribute, the Printer validates the value to 1784 make sure that it falls within the range of supported values. If the 1785 client-supplied value is supported, the Job object is created and the 1786 "job-priority" attribute is populated with that value. The Job object, 1787 when queried, returns the value supplied by the client. If the client 1788 does not supply a "job-priority" value in the create request, the Job 1789 object is created, but no "job-priority" attribute is associated with 1790 the Job. The client queries the Printer's default value "job-priority" 1791 value to find out at what priority the job will be processed. 1793 June 23, 1997, Expires December 23, 1997 1794 The following table summarize the names, relationships, and conformance 1795 requirements for all Job Template attributes. The following general 1796 rules apply to implementation requirements: 1798 1. In a create request, all Job Template attributes are OPTIONAL. 1800 2. In a Printer Object, all supported attributes are CONDITIONALLY 1801 MANDATORY. 1803 3. All Printer default value attributes are CONDITIONALLY MANDATORY. 1804 However, if the Printer implements that "supported" attribute then 1805 the Printer MUST also implement the default value attribute as 1806 well. and vice versa. 1808 The table only shows exceptions to the above rules. The first column 1809 of the table (Job) shows the name and syntax for each Job Template 1810 attribute in the Job object (in the create request, the same name and 1811 syntax is used). Section All of the attributes in the first column make 1812 up the groupThe last two columns show the name and syntax for each Job 1813 Template attribute in the Printer object (the default value attribute 1814 and the supported attribute). A "No" in the table means the Printer 1815 SHALL NOT support the attribute. A "MAN" indicates that the attribute 1816 is MANDATORY. 1818 June 23, 1997, Expires December 23, 1997 1819 +----------------------+----------------------+----------------------+ 1820 | Job |Printer: Default Value| Printer: Supported | 1821 +----------------------+----------------------+----------------------+ 1822 | job-name | No | No | 1823 | (name, MAN) | | | 1824 +----------------------+----------------------+----------------------+ 1825 | job-sheets | job-sheets |job-sheets-supported | 1826 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1827 | | | | 1828 +----------------------+----------------------+----------------------+ 1829 | notify-events | notify-events | notify-events- | 1830 |(1setOf type2 keyword)|(1setOf type2 keyword)| supported | 1831 | | |(1setOf type2 keyword)| 1832 +----------------------+----------------------+----------------------+ 1833 |notify-addresses |No |notify-addresses | 1834 |(1setOf uri) | |-supported | 1835 | | |(1setOf uri scheme) | 1836 +----------------------+----------------------+----------------------+ 1837 | job-priority | job-priority |job-priority-supported| 1838 | (integer 1-100) | (integer 1-100) |(rangeOf integer | 1839 | | | 1-100) | 1840 +----------------------+----------------------+----------------------+ 1841 | job-hold-until | job-hold-until | job-hold-until- | 1842 | (type4 keyword) | (type4 keyword) | supported | 1843 | | |(1setOf type4 keyword)| 1844 +----------------------+----------------------+----------------------+ 1845 |multiple-documents-are|multiple-documents-are|multiple-documents-are| 1846 | (type2 keyword) | (type2 keyword) |-supported | 1847 | | |(1setOf type2 keyword)| 1848 +----------------------+----------------------+----------------------+ 1849 | best-effort | best-effort | best-effort-supported| 1850 | (type2 keyword) | (type2 keyword, MAN) |(1setOf type2 keyword,| 1851 | | |MAN) | 1852 +----------------------+----------------------+----------------------+ 1853 | media | media | media-supported | 1854 | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| 1855 | | | | 1856 +----------------------+----------------------+----------------------+ 1857 | number-up | number-up | number-up-supported | 1858 | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| 1859 | | | | 1860 +----------------------+----------------------+----------------------+ 1861 | sides | sides | sides-supported | 1862 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1863 | | | | 1864 +----------------------+----------------------+----------------------+ 1865 | resolution | resolution | resolution-supported | 1867 June 23, 1997, Expires December 23, 1997 1868 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1869 | | | | 1870 +----------------------+----------------------+----------------------+ 1871 | quality | quality | quality-supported | 1872 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 1873 | | | | 1874 +----------------------+----------------------+----------------------+ 1875 | finishings | finishings | finishings-supported | 1876 |(1setOf type2 keyword)|(1setOf type2 keyword)|(1setOf type2 keyword)| 1877 | | | | 1878 +----------------------+----------------------+----------------------+ 1879 | copies | copies | copies-supported | 1880 | (integer: 0 - MAX) | (integer: 0 - MAX) | (rangeOf integer | 1881 | | | 0- MAX) | 1882 +----------------------+----------------------+----------------------+ 1883 | document-format | document-format | document-format- | 1884 | (type2 keyword) | (type2 keyword) | supported | 1885 | | |(1setOf type3 keyword)| 1886 +----------------------+----------------------+----------------------+ 1887 | compression | No | compression-supported| 1888 | (type3 keyword) | |(1setOf type3 keyword)| 1889 | | | | 1890 +----------------------+----------------------+----------------------+ 1891 | job-k-octets | No |job-k-octets-supported| 1892 | (integer) | | (rangeOf integer) | 1893 | | | | 1894 +----------------------+----------------------+----------------------+ 1895 | job-impressions | No | job-impressions- | 1896 | (integer) | | supported | 1897 | | | (rangeOf integer) | 1898 +----------------------+----------------------+----------------------+ 1899 | job-media-sheets | No | job-media-sheets- | 1900 | (integer) | | supported | 1901 | | | (rangeOf integer) | 1902 +----------------------+----------------------+----------------------+ 1904 6.2.1 job-name (name) 1906 This attribute is the name of the job. It is a name that is more user 1907 friendly than the "job-uri" attribute value. It does not need to be 1908 unique. 1910 If "job-name" is not supplied in the create request, the Printer, on 1911 creation of the Job, SHALL generate a name. The name MAY be generated 1912 using the name of the first Document in the Job ((the "document-name" 1913 attribute).. If "job-name" is supplied in the create request, the 1914 Printer SHALL use its value as the name of the created Job. 1916 June 23, 1997, Expires December 23, 1997 1917 6.2.2 job-sheets (type4 keyword) 1919 This attribute determines which if any banner page(s) SHALL be printed 1920 with a job. 1922 Standard values are: 1924 'none': no job sheet is printed 1925 'standard': a site specific standard job sheet is printed 1927 To force no job sheets, the system administrator SHALL set the supported 1928 value to only 'none'. To force the use of banner pages, the supported 1929 values SHALL not include 'none'. If a client requests 'none' in the 1930 create request, the request is rejected. 1932 6.2.3 notify-events (1setOf type2 keyword) 1934 This attribute specifies the events for which the end user desires some 1935 sort of notification. The "notify-addresses" attribute is used to 1936 describe the destination addresses for these events. 1938 Standard values are: 1940 'none': the Printer SHALL not notify. 1941 'all': the Printer SHALL notify when any of event occurs. 1942 'job-completion': the Printer SHALL notify when the job containing 1943 this attribute completes with or without errors. 1944 'job-canceled': the Printer SHALL notify when the job containing 1945 this attribute is canceled by the end-user or by the operator, or 1946 aborts before completion. 1947 'job-problems': the Printer SHALL notify when this job has a problem 1948 while this job is printing. Problems include any of the "job-state- 1949 reasons" or "printer-state-reason" values. 1950 'printer-problems': the Printer SHALL notify when any job, including 1951 this job, is affected by a Printer problem (the printer has moved 1952 to the stopped state and there is a reason in the printer-state- 1953 reasons attribute) while this job is waiting to print or printing. 1954 Problems include any of the "job-state-reasons" or "printer-state- 1955 reason" values. 1957 ISSUE: Should these correspond with Job states job-completed, job- 1958 completed-aborted, job-completed-canceled? 1960 6.2.4 notify-addresses (1setOf uri) 1962 This attribute describes both where (the address) and how (the mechanism 1963 for delivery ) events are to be delivered. The Printer SHALL use this 1965 June 23, 1997, Expires December 23, 1997 1966 attribute as the set of addresses and methods for sending messages when 1967 an event occurs that the end user (job submitter) has registered an 1968 interest in. 1970 Standard uri scheme values are: 1972 'mailto': email is used 1973 'http': an HTTP method is used to add HTML formatted events to the 1974 end of the specified HTML file. 1975 'ftp': FTP is used to append a record at the end of a specified text 1976 file. 1978 6.2.5 job-priority (integer(1:100)) 1980 This attribute specifies a priority for scheduling the print-job. A 1981 higher value specifies a higher priority. The value 1 is defined to 1982 indicate the lowest possible priority. The value 100 is defined to 1983 indicate the highest possible priority. Among those jobs that are ready 1984 to print, a Printer SHALL print all jobs with a priority value of n 1985 before printing those with a priority value of n-1 for all n. The 1986 mapping of vendor-defined priority over this range is implementation- 1987 specific. 1989 6.2.6 job-hold-until (type4 keyword) 1991 This job attribute specifies the named time period during which the Job 1992 print job SHALL become a candidate for printing. 1994 Standard values for named time periods are: 1996 'no-hold': immediately, if there are not other reasons to hold the 1997 job. 1998 'day-time': during the day. 1999 'evening': evening 2000 'night': night 2001 'weekend': weekend 2002 'second-shift': second-shift 2003 'third-shift': third-shift (after midnight) 2005 An administrator SHALL associate allowable print times with a named time 2006 period (by means outside IPP 1.0). An administrator is encouraged to 2007 pick names that suggest the type of time period. 2009 If the value of this attribute specifies a time period that is in the 2010 future, the Printer SHALL add the 'job-hold-until-specified' value to 2011 the job's "job-state-reasons" attribute and SHALL NOT schedule the 2012 print-job for printing until the specified time-period arrives. When 2014 June 23, 1997, Expires December 23, 1997 2015 the specified time period arrives, the Printer SHALL remove the 'job- 2016 hold-until-specified' value from the job's "job-state-reason attribute" 2017 and, if no other reasons remain, SHALL consider the job as a candidate 2018 for processing. 2020 If this job attribute value is the named value "'no-hold'", or the time 2021 period has already started , the job SHALL be a candidate for processing 2022 immediately. 2024 6.2.7 multiple-documents-are (type2 keyword) 2026 This job attribute is relevant only if a job consists of two or more 2027 documents. It controls finishing operations, job-sheet placement, and 2028 the order of documents when the copies attribute exceeds 1. 2030 ISSUE: Change name to "finishing-for-multiple-documents"?? 2032 Standard values are: 2034 'single-document': If the files for the job are a and b, then files a 2035 and b SHALL be treated as a single document for finishing 2036 operations. Also, there SHALL be no slip sheets between files a and 2037 b. If more than one copy is made, the ordering SHALL be a, b, a, b, 2038 .... 2039 'separate-documents-uncollated-copies': If the files for the job are 2040 a and b, then each file SHALL be treated as a single document for 2041 finishing operations. Also, a client may specify that a slip sheet 2042 be placed between files a and b. If more than one copy is made, 2043 the ordering SHALL be a, a, b, b, .... 2044 'separate-documents-collated-copies': If the files for the job are a 2045 and b, then each file SHALL be treated as a single document for 2046 finishing operations. Also, a client may specify that a slip sheet 2047 be placed between files a and b. If more than one copy is made, the 2048 ordering SHALL be a, b, a, b, .... 2050 Both of the 'separate-xxx' values force each new document to start on a 2051 new media sheet. 2053 6.2.8 best-effort (type2 keyword) 2055 A client supplies Job Template attributes to affect the rendering, 2056 production and finishing of the documents in the job. Similar types of 2057 instructions may also be contained in the document to be printed, that 2058 is, within the Page Description Language (PDL) of the document data. If 2059 there is a conflict between the value of one of these IPP Job Template 2060 attributes, and a corresponding instruction in the document (either 2061 implicit or explicit), it is desirable that the value of the attribute 2063 June 23, 1997, Expires December 23, 1997 2064 SHALL take precedence over the document instruction. Until companies 2065 that supply interpreters for PDLs, such as PostScript and PCL allow a 2066 way to external attributes (such as IPP attributes) to take precedence 2067 over internal job production instructions, a Printer might not be able 2068 to support the semantics that IPP attributes override (take on a higher 2069 precedence) the embedded PDL instructions. Therefore, this attribute 2070 gives the end user some ability to influence, or at least understand, 2071 how a particular Printer implementation handles these conflicts. 2073 This attribute takes on the following values: 2075 - 'shall-honor-ipp-attributes': If a Printer supports this value and 2076 a client requests this value, the Printer guarantees that all IPP 2077 attribute values take precedence over embedded instructions in the 2078 job data (the PDL of the job's documents). 2079 - 'should-honor-ipp-attributes': If a Printer supports this value, 2080 and a client requests this value, the Printer SHOULD try to make 2081 sure that IPP attribute values take precedence over embedded PDL 2082 instructions, however there is no guarantee 2084 ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should- 2085 honor-attribute-prcedence'? 2087 A Printer SHALL implement the "best-effort-supported" attribute. Notice 2088 that since 'should-honor-ipp-attributes' does not offer any type of 2089 guarantee, a Printer may not do a very "good" job of implementing the 2090 semantics of "should", but it would still be a conforming 2091 implementation. 2093 If there is ever a conflict between what a Printer supports and what an 2094 IPP client requests, the Printer SHALL reject the print request. A 2095 client SHOULD query the printer to find out what is supported before 2096 making a request. This ensures that all requested attribute values are 2097 supported. 2099 ISSUE: Should this be called "effort-level" rather than "best-effort"? 2101 If the value of this attribute is 'shall-honor-ipp-attributes', the 2102 implementation MUST guarantee that the IPP attribute values take 2103 precedence over any related job processing instructions in the PDL Job's 2104 document data. This can be done by modifying the interpreter within the 2105 output device itself to understand IPP attributes, or by merging theses 2106 Job Template attributes directly into the document data, or in any other 2107 implementation specific manner. In any case, the semantics of 'shall- 2108 honor-ipp-attributes' MUST be preserved. 2110 June 23, 1997, Expires December 23, 1997 2111 Note: Since 'should-honor-ipp-attributes' does not offer any type of 2112 guarantee, a Printer may not do a very "good" job of implementing the 2113 semantics of 'should', but it would still be a conforming 2114 implementation. 2116 6.2.9 media (type4 keyword) 2118 This job attribute identifies the medium that the Printer SHALL use for 2119 all pages of the document regardless of what media are specified within 2120 the document. 2122 The values for "media" include medium-names, medium-sizes, input-trays 2123 and electronic forms so that one attribute specifies the media. If a 2124 printer allows a client to specify a medium name as the value of this 2125 attribute, such a medium name implicitly selects an input-tray that 2126 contains the specified medium. If a printer allows a client to specify 2127 a medium size as the value of this attribute, such a medium size 2128 implicitly selects a medium name which in turn implicitly selects an 2129 input-tray that contains the medium with the specified size. If a 2130 printer allows a client to specify an input-tray as the value of this 2131 attribute, such an input-tray implicitly selects the medium that is in 2132 that input-tray at the time the job prints. This case includes manual- 2133 feed input-trays. If a printer allows a client to specify an electronic 2134 form as the value of this attribute, such an electronic form implicitly 2135 selects a medium-name which in turn implicitly selects an input-tray 2136 that contains the medium specified by the electronic form. The 2137 electronic form also implicitly selects an image that the Printer SHALL 2138 merge with the data from the document as its prints each page. 2140 Standard values are (taken from ISO DPA and the Printer MIB) and are 2141 listed in section 14. 2143 6.2.10 number-up (type3 keyword) 2145 This job attribute specifies the number of source page-images to impose 2146 upon a single side of an instance of a selected medium. 2148 Standard values are: 2150 'none': The Printer SHALL not include any embellishments and SHALL 2151 place one logical page on a single side of an instance of the 2152 selected medium without any translation, scaling, or rotation. 2153 'one': The Printer SHALL place one logical page on a single side of 2154 an instance of the selected medium (MAY add some sort of 2155 translation, scaling, or rotation). 2157 June 23, 1997, Expires December 23, 1997 2159 'two': The Printer SHALL place two logical page on a single side of 2160 an instance of the selected medium (MAY add some sort of 2161 translation, scaling, or rotation). 2162 'four': The Printer SHALL place four logical page on a single side of 2163 an instance of the selected medium (MAY add some sort of 2164 translation, scaling, or rotation). 2166 This attribute primarily controls the translation, scaling and rotation 2167 of page images, but a site may choose to add embellishments, such as 2168 borders to each logical page. 2170 6.2.11 sides (type2 keyword) 2172 This attribute specifies how source page-images are to be imposed upon 2173 the sides of an instance of a selected medium. 2175 The standard values are: 2177 'one-sided': imposes each consecutive source page-image upon the same 2178 side of consecutive media sheets. 2179 'two-sided-long-edge': imposes each consecutive pair of source page- 2180 image upon front and back sides of consecutive media sheets, such 2181 that the orientation of each pair of source-pages on the medium 2182 would be correct for the reader as if for binding on the long edge. 2183 This imposition is sometimes called 'duplex'. 2184 'two-sided-short-edge': imposes each consecutive pair of source page- 2185 image upon front and back sides of consecutive media sheets, such 2186 that the orientation of each pair of source-pages on the medium 2187 would be correct for the reader as if for binding on the short 2188 edge. This imposition is sometimes called 'tumble' or 'head-to- 2189 toe'. 2191 'two-sided-long-edge', 'two-sided-short-edge', 'tumble'. 'duplex', and 2192 'head-to-toe' all work the same for portrait or landscape, that is, 2193 'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape. 'head- 2194 to-head' also switches between 'duplex' and 'tumble' when using portrait 2195 and landscape modes. 2197 6.2.12 printer-resolution (type2 keyword) 2199 This job attribute specifies the resolution that the Printer SHOULD use. 2201 The values are type2 keywords which represent single integers or pair of 2202 integers. The latter are to specify the resolution when the x and y 2203 dimensions differ. When two integers are specified, the first is in the 2204 x direction, i.e., in the direction of the shortest dimension of the 2205 medium, so that the value is independent of whether the printer feeds 2206 long edge or short edge first. 2208 June 23, 1997, Expires December 23, 1997 2209 The standard values are: 2211 ISSUE: TBD normal: res-100: res-300x300: ... 2213 'normal': 2214 'res-100': 2215 'res-200': 2216 'res-240': 2217 'res-300': 2218 'res-600': 2219 'res-800': 2220 'res-1200': 2221 'res-1800': 2222 'res-100x200': 2223 'res-300x600': 2224 'res-600x300': 2225 'res-400x800': 2226 'res-800x400': 2227 'res-600x1200': 2228 'res-1200x600': 2229 'res-1800x600': 2231 6.2.13 print-quality (type2 keyword) 2233 This job attribute specifies the print quality that the Printer SHOULD 2234 use. 2236 The standard values are: 2238 draft: lowest quality available on the printer 2239 normal: normal or intermediate quality on the printer 2240 high: highest quality available on the printer 2242 6.2.14 copies (integer(1:2**31 - 1)) 2244 This job attribute specifies the number of copies of the job to be 2245 printed. 2247 Note: The effect of this attribute on jobs and documents is controlled 2248 by the "multiple-documents-are" job attribute (section 6.2.7). 2250 6.2.15 finishing (1setOf type2 keyword) 2252 This job attribute identifies the finishing operations that the Printer 2253 SHOULD apply to each copy of each printed document in the job where the 2255 June 23, 1997, Expires December 23, 1997 2256 definition of a copy is controlled by the "multiple-documents-are" Job 2257 attributes. 2259 Standard values are: 2261 none: 2262 staple: 2263 ... 2264 6.2.16 document-format (type2 keyword) 2266 This optional attribute defines the document format for each Document in 2267 a Job. The standard values for this attribute are keywords. Since the 2268 complete list is rather long, the full enumeration of standard values is 2269 found in section 13 APPENDIX B - "document-format" Values. 2271 6.2.17 compression (type3 keyword) 2273 This attribute identifies compression algorithms used for compressed 2274 document data. 2276 Standard values for this attribute are: 2278 'none': no compression is used. 2279 'zip':ZIP compression technology 2280 'tar': UNIX TAR compression technology 2282 6.2.18 job-k-octets (integer(0:2**31 - 1)) 2284 This Job attribute specifies the total size of the job in K octets, 2285 i.e., in units of 1024 octets. The value SHALL be rounded up, so that a 2286 job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to 2287 2048 SHALL be 2, etc. This attribute is not intended to be a counter as 2288 in the Job Monitoring MIB; it is intended to be useful routing and 2289 scheduling information if known. If the client does not supply this 2290 attribute in the create request, the Printer might not be able to 2291 compute this value at the time the Job is created. 2293 6.2.19 job-impressions (integer(0:2**31 - 1)) 2295 This job attribute specifies the total size of the job in impressions. 2296 This attribute is not intended to be a counter as in the Job Monitoring 2297 MIB; it is intended to be useful routing and scheduling information if 2298 known. The Printer SHALL try to compute the value if it is not supplied 2299 in the create request. The Printer might not be able to compute this 2300 value (if not supplied by the client in the request) at the time the Job 2301 is created. If not, the Printer may support this attribute at any later 2302 time as it is able to compute the total size of the Job. 2304 June 23, 1997, Expires December 23, 1997 2305 6.2.20 job- media-sheets (integer(0:2**31 - 1)) 2307 This job attribute specifies the total size of the job in media-sheets. 2308 This attribute is not intended to be a counter as in the Job Monitoring 2309 MIB; it is intended to be useful routing and scheduling information if 2310 known. The Printer SHALL try to compute the value if it is not supplied 2311 in the creaet request. The Printer might not be able to compute this 2312 value (if not supplied by the client in the request) at the time the Job 2313 is created. If not, the Printer may support this attribute at any later 2314 time as it is able to compute the total size of the Job. 2316 6.3 Job Description Attributes 2318 The attributes in this section form the attribute group called "job- 2319 description". The following table summarizes these attributes. The 2320 third column indicates whether the attribute is a MANDATORY attribute. 2321 If it is not MANDATORY, then it is OPTIONAL. 2323 June 23, 1997, Expires December 23, 1997 2324 +----------------------------+----------------------+----------------+ 2325 | Attribute | Syntax | MANDATORY? | 2326 +----------------------------+----------------------+----------------+ 2327 | job-uri | uri | MANDATORY | 2328 +----------------------------+----------------------+----------------+ 2329 | job-uri-user | uri | | 2330 +----------------------------+----------------------+----------------+ 2331 | job-originating-user | name | MANDATORY | 2332 +----------------------------+----------------------+----------------+ 2333 | job-originating-host | name | | 2334 +----------------------------+----------------------+----------------+ 2335 | user-locale | locale | | 2336 +----------------------------+----------------------+----------------+ 2337 | job-state | type1 keyword | MANDATORY | 2338 +----------------------------+----------------------+----------------+ 2339 | job-state-reasons | 1setOf type2 keyword | | 2340 +----------------------------+----------------------+----------------+ 2341 | job-state-message | text | | 2342 +----------------------------+----------------------+----------------+ 2343 | output-device-assigned | name | | 2344 +----------------------------+----------------------+----------------+ 2345 | time-since-pending | milliseconds | MANDATORY | 2346 +----------------------------+----------------------+----------------+ 2347 | time-since-processing | milliseconds | MANDATORY | 2348 +----------------------------+----------------------+----------------+ 2349 | time-since-completed | milliseconds | MANDATORY | 2350 +----------------------------+----------------------+----------------+ 2351 | number-of-intervening-jobs | integer | MANDATORY | 2352 +----------------------------+----------------------+----------------+ 2353 | job-message-from-operator | text | | 2354 +----------------------------+----------------------+----------------+ 2355 | job-k-octets-completed | integer | | 2356 +----------------------------+----------------------+----------------+ 2357 | job-impressions-completed | integer | | 2358 +----------------------------+----------------------+----------------+ 2359 | job-media-sheets-completed | integer | | 2360 +----------------------------+----------------------+----------------+ 2362 6.3.1 job-uri (uri) 2364 This attribute contains the URI for the job. The Printer, on receipt of 2365 a new job, SHALL generate a URI which identifies the job on the Printer. 2366 The Printer, SHALL return the value of the "job-uri" attribute as part 2367 of the response to a create request. The precise format of a job URI 2368 SHALL be implementation dependent. 2370 June 23, 1997, Expires December 23, 1997 2371 6.3.2 job-uri-user (uri) 2373 Similar to "job-uri", this attribute contains the URI referencing an 2374 HTML page containing information about the Job. 2376 6.3.3 job-originating-user (name) 2378 This attribute specifies the user name of the person submitting the 2379 print job. The Printer SHALL set this attribute to the most authentic 2380 name that it can obtain from the protocol over which the operation was 2381 received from the client. 2383 6.3.4 job-originating-host (name) 2385 This attribute identifies the originating host of the job. The Printer 2386 SHALL set this attribute to the most authentic host name it can obtain 2387 from the protocol over which the operation was received from the 2388 client. 2390 6.3.5 user-locale (type3 keyword) 2392 This attribute identifies the locale of the job, i.e, the country, 2393 language, and coded character set. The Printer sets this attribute to 2394 the most authentic value it can obtain from the protocol over which the 2395 Print operation was received from the client. 2397 The Printer SHALL use this attribute to determine the locale for 2398 notification messages that it sends. 2400 6.3.6 job-state (type1 keyword) 2402 6.3.7 job-state-reasons (1setOf type2 keyword) 2404 6.3.8 job-state-message (text) 2406 This attributes specifies supplemental information about the Job State 2407 in human readable text. It SHALL be set by the Printer. 2409 6.3.9 output-device-assigned (name) 2411 This attribute identifies the Output Device to which the Printer has 2412 assigned this job. If an output device implements an embedded IPP 2413 Printer, the Printer NEED NOT set this attribute. If a Print Server 2415 June 23, 1997, Expires December 23, 1997 2416 implements a Printer, the value MAY be empty until the Printer assigns 2417 an output device to the job. 2419 6.3.10 time-since-pending (milliseconds) 2421 This attribute indicates the amount of time that has passed since the 2422 Job was first put into the pending state.. 2424 6.3.11 time-since-processing (milliseconds) 2426 This attribute indicates the amount of time that has passed since the 2427 Job first entered the processing state. 2429 6.3.12 time-since-completed (milliseconds) 2431 This attribute indicates the amount of time that has passed since the 2432 Job was completed. 2434 6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) 2436 This attribute indicates the number of jobs that are "ahead" of this job 2437 in the current scheduled order. For efficiency, it is only necessary to 2438 calculate this value when an operation is performed that requests this 2439 attribute. 2441 Note: This attribute is necessary since an end user may request just 2442 their own jobs and they need some relative position indicator if there 2443 are other jobs interspersed in the waiting list which are not returned 2444 in the response or cannot be because of site security policy 2445 restrictions. 2447 6.3.14 job-message-from-operator (text) 2449 This attribute provides a message from an operator, system administrator 2450 or "intelligent" process to indicate to the end user the reasons for 2451 modification or other management action taken on a job. 2453 6.3.15 job-k-octets-completed (integer(0:2**31 - 1)) 2455 This attribute specifies the number of octets completed in K octets, 2456 i.e., in units of 1024 octets. The value SHALL be rounded up, so that a 2457 job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to 2458 2048 SHALL be 2, etc. This attribute is intended to be a counter as in 2459 the Job Monitoring MIB. 2461 June 23, 1997, Expires December 23, 1997 2462 6.3.16 job-impressions-completed (integer(0:2**31 - 1)) 2464 This job attribute specifies the number of impressions completed. This 2465 attribute is intended to be a counter as in the Job Monitoring MIB. 2467 6.3.17 job-media-sheets-completed (integer(0:2**31 - 1)) 2469 This job attribute specifies the media-sheets completed. This attribute 2470 is intended to be a counter as in the Job Monitoring MIB. 2472 ISSUE: Should the above three attributes be regularly named as job-size- 2473 in-xxx-yyy where xxx is k-octets, impressions and media sheets and where 2474 yyy is a job state pending, processing and completed. So job-impressions 2475 becomes job-size-in-impressions-pending and job-impressions-completed is 2476 job-size-in-impressions-processing while printing and job-size-in- 2477 impressions-completed when the job completed. Thus job-impressions- 2478 completed doesn't serve two functions. 2480 6.4 Document Attributes 2482 This group of attributes describes the document data for the job. For 2483 single-Document Jobs, they are supplied in the Print-Job or Print-URI 2484 requests. For multi-Document Jobs, they are supplied in each Send- 2485 Document or Send-URI request. 2487 +----------------------------+----------------------+----------------+ 2488 | Attribute | Syntax | MANDATORY? | 2489 +----------------------------+----------------------+----------------+ 2490 | document-name | name | MANDATORY | 2491 +----------------------------+----------------------+----------------+ 2492 | document-format | type 2 keyword | | 2493 +----------------------------+----------------------+----------------+ 2494 | document-uri | uri | | 2495 +----------------------------+----------------------+----------------+ 2497 6.4.1 document-name (name) 2499 This attribute contains the name of the document used by the client to 2500 initially identify the document. When a client prints by reference, i.e. 2501 includes the document-URI attribute and no document content, this 2502 attribute SHALL be absent. 2504 6.4.2 document-format (type2 keyword) 2506 See section 6.2.16 which describes "document-format" as a Job Template 2507 attribute. 2509 June 23, 1997, Expires December 23, 1997 2510 6.4.3 document-uri (uri) 2512 This attribute contains the URI of the document when the document 2513 content is not included in the Send Document operation. Document-number 2514 is the only other attribute allowed when a document-URI attribute is 2515 present in a Send Document operation. 2517 ISSUE: Now that we have Print-URI and Send-URI, do we still need this? 2518 Do we allow for the query of this attribute via Get-Attributes? 2520 6.5 Printer Description Attributes 2522 These attributes form the attribute group called "printer-description". 2523 A Printer object may be realized in either a print server or output 2524 device. Note: How these attributes are set by an Administrator is 2525 outside the scope of this specification. The following table summarizes 2526 these attributes, their syntax, and whether or not they are MANDATORY. 2527 If they are not MANDATORY, they are OPTIONAL. 2529 June 23, 1997, Expires December 23, 1997 2530 +----------------------------+----------------------+----------------+ 2531 | Attribute | Syntax | MANDATORY? | 2532 +----------------------------+----------------------+----------------+ 2533 | printer-uri | uri | MANDATORY | 2534 +----------------------------+----------------------+----------------+ 2535 | printer-uri-user | uri | | 2536 +----------------------------+----------------------+----------------+ 2537 | printer-name | name | MANDATORY | 2538 +----------------------------+----------------------+----------------+ 2539 | printer-location | text | | 2540 +----------------------------+----------------------+----------------+ 2541 | printer-description | text | | 2542 +----------------------------+----------------------+----------------+ 2543 | printer-more-info-site | uri | | 2544 +----------------------------+----------------------+----------------+ 2545 | printer-driver-installer | uri | | 2546 +----------------------------+----------------------+----------------+ 2547 | printer-make-and-model | text | | 2548 +----------------------------+----------------------+----------------+ 2549 | printer-more-info- | uri | | 2550 | manufacturer | uri | | 2551 +----------------------------+----------------------+----------------+ 2552 | printer-state | type1 keyword | MANDATORY | 2553 +----------------------------+----------------------+----------------+ 2554 | printer-state-reasons | type2 keyword | | 2555 +----------------------------+----------------------+----------------+ 2556 | printer-state-message | text | | 2557 +----------------------------+----------------------+----------------+ 2558 | printer-is-accepting-jobs | boolean | MANDATORY | 2559 +----------------------------+----------------------+----------------+ 2560 | queued-job-count | integer | | 2561 +----------------------------+----------------------+----------------+ 2562 | printer-message-from- | text | | 2563 | operator | | | 2564 +----------------------------+----------------------+----------------+ 2565 | printer-locale | locale | MANDATORY | 2566 +----------------------------+----------------------+----------------+ 2567 | printer-locales-supported | 1setOf locale | MANDATORY | 2568 +----------------------------+----------------------+----------------+ 2569 | color-supported | boolean | | 2570 +----------------------------+----------------------+----------------+ 2572 6.5.1 printer-uri (uri) 2574 This attribute contains the URI for the printer. An administrator SHALL 2575 determine a printer's URI and SHALL set this attribute to that URI. The 2576 precise format of a printer URI SHALL be implementation dependent. 2578 June 23, 1997, Expires December 23, 1997 2579 6.5.2 printer-uri-user (uri) 2581 Similar to "printer-uri", this attribute contains the URI for an HTML 2582 page with more information about this printer. 2584 6.5.3 printer-name (name) 2586 This attribute contains the name of the printer. It is a name that is 2587 more user friendly than the printer-URI. An administrator SHALL 2588 determine a printer's name and SHALL set this attribute to that name. 2589 This name may be the last part of the printer's URI or it may be 2590 unrelated. In non-US-English locales, a name may contain characters that 2591 are not allowed in a URI. 2593 6.5.4 printer-location (text) 2595 This attribute identifies the location of this printer. 2597 6.5.5 printer-description (text) 2599 This attribute identifies the descriptive information about the this 2600 Printer. This could include things like: "This printer can be used for 2601 printing color transparencies for HR presentations", or "Out of courtesy 2602 for others, please print only small (1-5 page) jobs at this printer", or 2603 even "This printer is going away on July 1, 1997, please find a new 2604 printer". 2606 6.5.6 printer-more-info-site (uri) 2608 This attribute contains a URI used to obtain more information about this 2609 specific printer. The information obtained from this URI is intended 2610 for end user consumption. Features outside the scope of IPP can be 2611 accessed from this URI. The information is intended to be specific to 2612 this printer instance and site services (e.g. job pricing, services 2613 offered, end user assistance). The printer manufacturer may initially 2614 populate this attribute. 2616 6.5.7 printer-driver-installer (uri) 2618 This attribute contains a URI to use to locate the driver installer for 2619 this printer. This attribute is intended for consumption by automata. 2620 The mechanics of print driver installation is outside the scope of IPP. 2621 The printer manufacturer may initially populate this attribute. 2623 6.5.8 printer-make-and-model (text) 2625 This attribute identifies the make and model of the printer. 2627 June 23, 1997, Expires December 23, 1997 2628 6.5.9 printer-more-info-manufacturer (uri) 2630 This attribute contains a URI used to obtain more information about this 2631 type of printer. The information obtained from this URI is intended for 2632 end user consumption. Features outside the scope of IPP can be accessed 2633 from this URI (e.g., latest firmware, upgrades, print drivers, optional 2634 features available). The information is intended to be germane to this 2635 printer without regard to site specific modifications or services. 2637 6.5.10 printer-state (type1 keyword) 2639 This attribute identifies the current state of the printer. The 2640 "printer-state reasons" attribute augments the "printer-state" attribute 2641 to give more detailed information about the Printer in the given printer 2642 state. 2644 A Printer SHALL continually keep this attribute set to the value in the 2645 table below which most accurately reflects the state of the Printer. A 2646 Printer NEED NOT implement all values if they are not applicable to a 2647 given implementation. 2649 The following standard values are defined: 2651 'unknown': The Printer state is not known, or is indeterminate. A 2652 Printer SHALL use this state only if it cannot determine its actual 2653 state. 2655 'idle': If a Printer receives a job (whose required resources are 2656 ready) while in this state, such a job SHALL transit into the 2657 processing state immediately. If the printer-state-reasons 2658 attribute contains any reasons, they SHALL be reasons that would 2659 not prevent a job from transiting into the processing state 2660 immediately, e.g., toner-low. Note: if a Printer controls more than 2661 one output device, the above definition implies that a Printer is 2662 idle if at least one output device is idle. 2664 'processing': If a Printer receives a job (whose required resources 2665 are ready) while in this state, such a job SHALL transit into the 2666 pending state immediately. Such a job SHALL transit into the 2667 processing state only after jobs ahead of it complete. If the 2668 printer-state-reasons attribute contains any reasons, they SHALL be 2669 reasons that do not prevent the current job from printing, e.g. 2670 toner-low. Note: if a Printer controls more than one output 2671 device, the above definition implies that a Printer is processing 2672 if at least one output device is processing, and none is idle. 2674 'stopped': If a Printer receives a job (whose required resources are 2675 ready) while in this state, such a job SHALL transit into the 2677 June 23, 1997, Expires December 23, 1997 2678 pending state immediately. Such a job SHALL transit into the 2679 processing state only after some human fixes the problem that 2680 stopped the printer and after jobs ahead of it complete printing. 2681 The "printer-state-reasons" attribute SHALL contain at least one 2682 reason, e.g. paper-jam, which prevents it from either processing 2683 the current job or transiting a pending job to the processing 2684 state. 2686 Note: if a Printer controls more than one output device, the above 2687 definition implies that a Printer is stopped only if all output 2688 devices are stopped. Also, it is tempting to define stopped as 2689 when a sufficient number of output devices are stopped and leave it 2690 to an implementation to define the sufficient number. But such a 2691 rule complicates the definition of stopped and processing. For 2692 example, with this alternate definition of stopped, a job can move 2693 from idle to processing without human intervention, even though the 2694 Printer is stopped. 2696 6.5.11 printer-state-reasons (1setOf type2 keyword) 2698 This attribute supplies additional detail about the printer's state. 2700 Each MAY have an adornment to indicate its level of severity. The three 2701 levels are: report (least severe), warning, and error (most severe). 2703 - 'report': it has the adornment of "report". An implementation may 2704 choose to omit some or all reports. Some reports specify finer 2705 granularity about the printer state; others serve as a precursor to 2706 a warning. A report SHALL contain nothing that could affect the 2707 printed output. 2708 - 'warning': it has the adornment of "warning". An implementation may 2709 choose to omit some or all warnings. Warnings serve as a precursor 2710 to an error. A warning SHALL contain nothing that prevents a job 2711 from completing, though in some cases the output may be of lower 2712 quality. 2713 - 'error': it has no adornment. An implementation SHALL include all 2714 errors. If this attribute contains one or more errors, printer 2715 SHALL be in the stopped state. 2717 An implementation may add 'error-', 'warning-', or 'report-' to any of 2718 the reasons below to indicate the level of severity. 2720 If a Printer controls more than one output device, each value of this 2721 attribute SHALL apply to one or more of the output devices. An error on 2722 one output device that does not stop the Printer as a whole appears as a 2723 warning in the Printer's printer-state-reasons attribute. Such a 2724 Printer's printer-state value may be stopped even with no printer-state- 2725 reasons that are errors. 2727 June 23, 1997, Expires December 23, 1997 2728 The following standard values are defined: 2730 'media-needed': A tray has run out of media. 2731 'media-jam': The printer has a media jam. 2732 'paused': Someone has paused the Printer. In this state, a Printer 2733 SHALL not produce printed output, but it SHALL perform other 2734 operations requested by a client. If a Printer had been printing a 2735 job when the Printer was paused, the Printer SHALL resume printing 2736 that job when the Printer is no longer paused and leave no evidence 2737 in the printed output of such a pause. 2738 'shutdown': Someone has removed a Printer from service, and it may be 2739 powered down or physical removed. In this state, a Printer SHALL 2740 not produce printed output, and unless the Printer is realized by a 2741 print server that is still active, the Printer SHALL perform no 2742 other operations requested by a client, including returning this 2743 value. If a Printer had been printing a job when it was shutdown, 2744 the Printer need not resume printing that job when the Printer is 2745 no longer shutdown. If the Printer resumes printing such a job, it 2746 may leave evidence in the printed output of such a shutdown, e.g. 2747 the part printed before the shutdown may be printed a second time 2748 after the shutdown. 2750 ISSUE: Bob suggests: From an English point of view the suffixes 2751 should be -partly and -mostly rather than -report and -warning with 2752 all being -warnings. For example, paused-partly-warning or media- 2753 needed-mostly-warning 2755 'connecting-to-device': The server has scheduled a job on the Printer 2756 and is in the process of connecting to a shared network output 2757 device (and might not be able to actually start printing the job 2758 for an arbitrarily long time depending on the usage of the output 2759 device by other servers on the network). 2760 'timed-out': The server was able to connect to the output device (or 2761 is always connected), but was unable to get a response from the 2762 output device. 2763 'stopping': The printer will be stopping in a while and will change 2764 its reason to printer-stopped. This reason is a non-critical, even 2765 for a Printer with a single output device. When an output-device 2766 ceases accepting jobs, the Printer will have this state while the 2767 output device completes printing. 2768 'stopped-partly': When a Printer controls more than one output 2769 device, this reason indicates that one or more output devices are 2770 stopped. If the reason is a report, fewer than half of the output 2771 devices are stopped. If the reason is a warning, fewer than all of 2772 the output devices are stopped. 2773 'toner-low': The Printer is low on toner. 2775 June 23, 1997, Expires December 23, 1997 2777 6.5.12 printer-is-accepting-jobs (boolean) 2779 This attribute determines whether the printer is currently accepting 2780 job. If the value is true, the printer is accepting jobs. If the value 2781 is false, the printer is currently rejecting any jobs submitted to it. 2783 Note: This value is independent of the printer state and printer-state- 2784 reasons because its value does not affect the current job; rather it 2785 affects future jobs. This attribute may cause the Printer to reject jobs 2786 when the printer-state is idle or it may cause the Printer to accepts 2787 jobs when the printer-state is stopped. 2789 6.5.13 printer-state-message (text) 2791 This attribute specifies the additional information about the printer 2792 state in human readable text and it SHALL be set by the Printer (or the 2793 Administrator by some mechanism outside the scope of IPP). When a 2794 Printer returns the value of this attribute to a client, the Printer 2795 SHALL localize the value of this attribute to be in the locale of the 2796 user, as specified by the Get-Attributes or Get-Jobs operation. 2798 6.5.14 queued-job-count (integer(0:2**31 - 1)) 2800 This attribute contains a count of the number of jobs that are either 2801 pending and/or processing and SHALL be set by the Printer. 2803 6.5.15 printer-message-from-the-operator (text) 2805 This attribute provides a message from an operator, system administrator 2806 or "intelligent" process to indicate to the end user information or 2807 status of the printer, such as why it is unavailable or when it is 2808 expected to be available. 2810 6.5.16 printer-locale (locale) 2812 This attribute specifies the current locale that the Printer is 2813 operating in. 2815 6.5.17 printer-locales-supported (1setOf locale) 2817 This attribute specifies the locales that the Printer operates in. 2819 6.5.18 color-supported (boolean) 2821 This attribute identifies whether the Printer is capable of any type of 2822 color printing at all. All document instructions having to do with 2823 color are embedded within the document PDL (none are external IPP 2824 attributes). 2826 June 23, 1997, Expires December 23, 1997 2827 7. Conformance 2829 This section describes conformance issues and requirements. This 2830 document introduces model entities such as objects, operations, 2831 attributes, and attribute values. These conformance sections describe 2832 the conformance requirements which apply to these model entities. 2834 7.1 Conditionally Mandatory 2836 For example, a conditionally mandatory attribute means that a Printer 2837 implementation need not support the attribute if the attribute controls 2838 a feature that the output device does not implement or expose. For 2839 example, for an output device that can only print on one side, a Printer 2840 need not support the "sides" attribute. For an output device that does 2841 not support any of the finishing attribute values, a Printer need not 2842 support the "finishing" attribute. 2844 7.2 Client Conformance Requirements 2846 There are no conformance requirements placed on the user interfaces 2847 provided by IPP clients or their applications. For example, one 2848 application might not allow an end user to submit multiple documents per 2849 job, while another does. One application might first query a Printer 2850 object in order to supply a graphical user interface (GUI) dialogue box 2851 with supported and default values whereas a different implementation 2852 might not. 2854 When sending a Get-Attributes or create request, an IPP client need not 2855 supply any attributes. 2857 A client SHALL be able to accept any of the attribute syntaxes defined 2858 in Section 6.1 that may be returned to it in a response from a Printer 2860 A query response may contain attributes and values that the client does 2861 not expect. Therefore, a client implementation MUST gracefully handle 2862 such responses and not refuse to interoperate with a conforming Printer 2863 that is returning extended registered or private attributes and/or 2864 attribute values that conform to Section 8. Clients may choose to 2865 ignore any attributes that it does not understand. 2867 7.3 Printer Object Conformance Requirements 2869 This section specifies the conformance requirements for conforming 2870 Printer object implementations with respect to objects, operations, and 2871 attributes. 2873 June 23, 1997, Expires December 23, 1997 2874 7.3.1 Objects 2876 Conforming Printer implementations SHALL implement all of the model 2877 objects as defined in this specification in the indicated sections: 2879 Section 4.1 Printer Object 2880 Section 4.2 Job Object 2881 Section 4.3 Document Object 2883 7.3.2 Operations 2885 Conforming Printer implementations SHALL implement all of the MANDATORY 2886 model operations, including mandatory responses, as defined in this 2887 specification in the indicated sections: 2889 For a Printer object: 2890 Get-Operations (section 5.1.1) MANDATORY 2891 Print-Job (section 5.1.2) MANDATORY 2892 Print-URI (section 5.1.3) OPTIONAL 2893 Validate-Job (section 5.1.4) OPTIONAL 2894 Create-Job (section 5.1.5) OPTIONAL 2895 Get-Jobs (section 5.1.8) OPTIONAL 2896 Get-Attributes (section 5.1.9) OPTIONAL 2898 For a Job object: 2899 Send-Document (section 5.1.6) OPTIONAL 2900 Send-URI (section 5.1.7) OPTIONAL 2901 Cancel-Job (section 5.1.8) MANDATORY 2902 Get-Attributes (section 5.1.9) OPTIONAL 2904 7.3.3 Attributes 2906 ISSUE: Some Printer attributes are purely software, so that 2907 Conditionally Mandatory doesn't apply, such as Printer Description 2908 Attributes. For example, what does it mean for the "printer-location" 2909 to be Conditionally Mandatory? Should we add a "OPTIONAL" in the header 2910 of the few attributes for which Conditionally Mandatory doesn't make 2911 sense? 2913 Conforming Printer implementations SHALL support all of the MANDATORY 2914 attributes, as defined in this specification in the indicated sections. 2916 Conforming Printer implementations SHALL support all CONDITIONALLY 2917 MANDATORY attributes as defined in this specification in the indicated 2918 sections that represent features and behaviors that the actual output 2919 device implements. 2921 June 23, 1997, Expires December 23, 1997 2922 It is not required that a conforming Printer support all values of all 2923 supported attributes. For example, if a Printer supports some of the 2924 "finishing" attribute values in this document, it is not required that a 2925 Printer implement or support all finishing methods indicated by all the 2926 values of the "finishing" attribute contained in this document. 2928 If a Printer implements a "xxx-supported" attribute it MUST implement 2929 the corresponding "xxx" default value attribute and vice versa. 2931 7.3.4 Printer extensions 2933 A conforming Printer may support registered extensions and private 2934 extensions, as long as they meet the requirements specified in Section 2935 8. 2937 7.3.5 Attribute Syntaxes 2939 A Printer SHALL be able to accept any of the attribute syntaxes defined 2940 in Section 6.1 in any operation in which a client may supply attributes. 2941 Furthermore, a Printer SHALL return attributes to the client in 2942 operation responses that conform to the syntax specified in Section 6.1. 2944 7.4 Security Conformance Requirements 2946 The security mechanisms being considered for IPP fall outside the scope 2947 of the application layer protocol itself. There are two mechanisms used 2948 to begin secure communications using IPP: 2950 1. Information in the directory entry for an IPP Printer (or from 2951 additional information at a Web site hosting the IPP Printer) 2952 indicate which, if any, security protocols are used in conjunction 2953 with IPP. 2955 2. The URI for the IPP Printer contains the security protocol 2956 information (https://..., etc.). 2958 In either case, the security protocol (if any) is initiated first which 2959 allows for the negotiation of security features. IPP is then run as an 2960 application protocol on top of the security protocols. One cannot 2961 "bootstrap" the security features from IPP itself. 2963 ISSUE: The above is not quite correct. Waiting for better description 2964 from the security document [22]. 2966 June 23, 1997, Expires December 23, 1997 2967 8. IANA Considerations, Registered Extensions, Private Extensions 2969 IPP is explicitly designed to be extensible. Additional attributes can 2970 be proposed to be registered by going through the type 2 or type 3 2971 keyword process which will register their specification after approval 2972 with IANA. In addition specific implementation instances may support 2973 not only the basic protocol as defined in this specification, but may 2974 add vendor-specific private extensions by prefixing attribute-names with 2975 their company name registered with IANA for use in domains. See 2976 attribute syntax section. However, such private extensions SHALL not 2977 duplicate attribute semantics already in this specification. 2979 9. Security Considerations 2981 There is another Internet-Draft called "Internet Printing Protocol/1.0: 2982 Security" [22]. That document is being drafted and reviewed in parallel 2983 with this document. The mapping of IPP on top of appropriate security 2984 protocols will be described in that document. IPP does not introduce 2985 any new, general purpose security mechanisms for authentication and 2986 encryption. 2988 A Printer may choose, for security reasons, not to return all attributes 2989 that a client requests. It may even return none of the requested 2990 attributes. In such cases, the status returned is the same as if the 2991 Printer had returned all requested attributes. The client cannot tell by 2992 such a response whether the requested attribute was present or absent on 2993 the Printer. 2995 10. References 2997 [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 2998 J., "Printer MIB", RFC 1759, March 1995. 3000 [2] Berners-Lee, T, Fielding, R., and Nielsen, H., "Hypertext Transfer 3001 Protocol - HTTP/1.0", RFC 1945, August 1995. 3003 [3] Crocker, D., "Standard for the Format of ARPA Internet Text 3004 Messages", RFC 822, August 1982. 3006 [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 1993. 3008 [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. 3010 [6] Herriot, R. (editor), X/Open A Printing System Interoperability 3011 Specification (PSIS), August 1995. 3013 June 23, 1997, Expires December 23, 1997 3015 [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing 3016 Interfaces, POSIX 1387.4 D8, 1994. 3018 [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 3019 Extensions) Part One: Mechanism for Specifying and Describing the 3020 Format of Internet Message Bodies", RFC 1521, September, 1993. 3022 [9] Braden, S., "Requirements for Internet Hosts - Application and 3023 Support", RFC 1123, October, 1989, 3025 [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 3026 1179, August 1990. 3028 [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 3029 Locators (URL)", RFC 1738, December, 1994. 3031 [20] Internet Printing Protocol: Requirements 3033 [21] Internet Printing Protocol/1.0: Model and Semantics (This document) 3035 [22] Internet Printing Protocol/1.0: Security 3037 [23] Internet Printing Protocol/1.0: Protocol Specification 3039 [24] Internet Printing Protocol/1.0: Directory Schema 3041 [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3042 Levels", RFC 2119 , March 1997 3044 [26] H. Alvestrand, " Tags for the Identification of Languages", RFC 3045 1766, March 1995. 3047 11. Author's Address 3049 Scott A. Isaacson 3050 Novell, Inc. 3051 122 E 1700 S 3052 Provo, UT 84606 3054 Phone: 801-861-7366 3055 Fax: 801-861-4025 3056 EMail: scott_isaacson@novell.com 3058 Tom Hastings 3059 Xerox Corporation 3061 June 23, 1997, Expires December 23, 1997 3062 701 S. Aviation Blvd. 3063 El Segundo, CA 90245 3065 Phone: 310-333-6413 3066 Fax: 310-333-5514 3067 EMail: hastings@cp10.es.xerox.com 3069 Robert Herriot 3070 Sun Microsystems Inc. 3071 2550 Garcia Ave., MPK-17 3072 Mountain View, CA 94043 3074 Phone: 415-786-8995 3075 Fax: 415-786-7077 3076 Email: robert.herriot@eng.sun.com 3078 Roger deBry 3079 HUC/003G 3080 IBM Corporation 3081 P.O. Box 1900 3082 Boulder, CO 80301-9191 3084 Phone: (303) 924-4080 3085 Fax: (303) 924-9889 3086 Email: debry@vnet.ibm.com 3088 Patrick Powell 3089 San Diego State University 3090 9475 Chesapeake Dr., Suite D 3091 San Diego, CA 95123 3093 Phone: (619) 874-6543 3094 Fax: (619) 279-8424 3095 Email: papowell@sdsu.edu 3097 IPP Mailing List: ipp@pwg.org 3098 IPP Mailing List Subscription: ipp-request@pwg.org 3099 IPP Web Page: http://www.pwg.org/ipp/ 3101 Other Participants: 3103 Chuck Adams - Tektronix 3104 Jeff Barnett - IBM 3105 Ron Bergman - Data Products 3106 Keith Carter, IBM Corporation 3107 Jeff Copeland - QMS 3108 Andy Davidson - Tektronix 3109 Mabry Dozier - QMS 3111 June 23, 1997, Expires December 23, 1997 3112 Lee Farrell - Canon Information Systems 3113 Steve Gebert - IBM 3114 David Kellerman - Northlake Software 3115 Rick Landau - Digital 3116 Harry Lewis - IBM 3117 Pete Loya - HP 3118 Ray Lutz - Cognisys 3119 Mike MacKay, Novell, Inc. 3120 Carl-Uno Manros, Xerox, Corp. 3121 Jay Martin - Underscore 3122 Stan McConnell - Xerox 3123 Pat Nogay - IBM 3124 Bob Pentecost - HP 3125 Rob Rhoads - Intel 3126 David Roach - Unisys 3127 Hiroyuki Sato - Canon 3128 Bob Setterbo - Adobe 3129 Devon Taylor, Novell, Inc. 3130 Mike Timperman - Lexmark 3131 Randy Turner - Sharp 3132 Atsushi Yuki - Kyocera 3133 Lloyd Young - Lexmark 3134 Bill Wagner - DPI 3135 Jim Walker - DAZEL 3136 Chris Wellens - Interworking Labs 3137 Rob Whittle - Novell 3138 Don Wright - Lexmark 3139 Peter Zehler, Xerox, Corp. 3141 June 23, 1997, Expires December 23, 1997 3143 12. APPENDIX A - Status Codes 3145 The Status keyword provides information on the results of a request. The 3146 Message provides a short textual description of the Status. The Status 3147 is intended for use by automata and the Message is intended for the 3148 human user. An IPP application (i.e. a browser, GUI, print driver or 3149 gateway) is not required to examine or display the Message. 3151 The prefix of the Status keyword defines the class of response as 3152 follows: 3154 informational - Request received, continuing process 3156 successful - The action was successfully received, understood, and 3157 accepted 3159 redirection - Further action must be taken in order to complete the 3160 request 3162 client-error - The request contains bad syntax or cannot be fulfilled 3164 server-error - The server failed to fulfill an apparently valid 3165 request 3167 IPP status codes are extensible. IPP applications are not required to 3168 understand the meaning of all registered status codes, though such 3169 understanding is obviously desirable. However, applications shall 3170 understand the class of any status code, as indicated by the prefix, and 3171 treat any unrecognized response as being equivalent to the first status 3172 code of that class, with the exception that an unrecognized response 3173 shall not be cached. For example, if an unrecognized status code of 3174 client-error-foo-bar is received by the client, it can safely assume 3175 that there was something wrong with its request and treat the response 3176 as if it had received a client-error-bad-request status code. In such 3177 cases, IPP applications should present the Message to the user, since 3178 that Message is likely to include human-readable information which will 3179 explain the unusual status. 3181 12.1 Status Codes (type2 keyword) 3183 Each Status is described below, including a description of which 3184 operation(s) it can follow and any metainformation required in the 3185 response. 3187 June 23, 1997, Expires December 23, 1997 3188 12.1.1 Informational 3190 This class of status code indicates a provisional response and is to be 3191 used for informational purposes only. There are no status codes defined 3192 in IPP 1.0 for this class of status code. 3194 12.1.2 Successful Status Codes 3196 This class of status code indicates that the client's request was 3197 successfully received, understood, and accepted. 3199 12.1.2.1 successful-OK (IPPL1) 3201 The request has succeeded. 3203 Note: IPPL1 only includes OK. IPPL1 does not include Created nor No 3204 Content successful status codes. This is consistent with our agreement 3205 at the IPP Model telecon on May 9, but I believe we had this discussion 3206 before Bob Herriot joined the telecon. 3208 12.1.3 Redirection Status Codes 3210 This class of status code indicates that further action needs to be 3211 taken to fulfill the request. There are no status codes defined in IPP 3212 1.0 for this class of status code. 3214 12.1.4 Client Error Status Codes 3216 This class of status code is intended for cases in which the client 3217 seems to have erred. The server should return a Message containing an 3218 explanation of the error situation and whether it is a temporary or 3219 permanent condition. IPP applications should display any returned 3220 Message to the end-user. Unless otherwise noted, these status codes 3221 apply to all operations. 3223 12.1.4.1 client-error-bad-request (IPPL1) 3225 The request could not be understood by the server due to malformed 3226 syntax. The IPP application should not repeat the request without 3227 modifications. 3229 12.1.4.2 client-error-unauthorized 3231 The request requires user authentication. The IPP client may repeat the 3232 request with suitable authorization credentials. If the request already 3233 included authorization credentials, then this status code indicates that 3234 authorization has been refused for those credentials. If this response 3235 contains the same challenge as the prior response, and the user agent 3237 June 23, 1997, Expires December 23, 1997 3238 has already attempted authentication at least once, then the user should 3239 be presented the Message in the response, since that Message may include 3240 relevant diagnostic information. 3242 12.1.4.3 client-error-payment-required 3244 This request requires payment by the end-user to perform the operation. 3246 12.1.4.4 client-error-forbidden (IPPL1) 3248 The server understood the request, but is refusing to fulfill it. 3249 Authorization will not help and the request should not be repeated. 3250 This status code is commonly used when the server does not wish to 3251 reveal exactly why the request has been refused or when no other 3252 response is applicable. 3254 12.1.4.5 client-error-method-not-allowed 3256 The operation specified in the request is not allowed for the object 3257 identified by the request URI. 3259 12.1.4.6 client-error-timeout (NEW) 3261 The client did not produce a request within the time that the server was 3262 prepared to wait. The client MAY repeat the request without 3263 modifications at any later time. 3265 12.1.4.7 client-error-not-found 3267 The server has not found anything matching the request URI. No 3268 indication is given of whether the condition is temporary or permanent. 3270 In practice, an application should avoid this situation by presenting a 3271 list of valid Printer URIs and Job URIs to the end-user. 3273 12.1.4.8 client-error-gone 3275 The requested object is no longer available at the server and no 3276 forwarding address is known. This condition should be considered 3277 permanent. Clients with link editing capabilities should delete 3278 references to the request URI after user approval. If the server does 3279 not know or has no facility to determine,whether or not the condition is 3280 permanent, the status code client-error-not-found should be used 3281 instead. This response is cachable unless indicated otherwise. 3283 This response is primarily intended to assist the task of web 3284 maintenance by notifying the recipient that the resource is 3285 intentionally unavailable and that the server owners desire that remote 3287 June 23, 1997, Expires December 23, 1997 3288 links to that resource be removed. Such an event is common for limited- 3289 time, promotional services and for resources belonging to individuals no 3290 longer working at the server's site. It is not necessary to mark all 3291 permanently unavailable resources as "gone" or to keep the mark for any 3292 length of time -- that is left to the discretion of the server owner. 3294 12.1.4.9 client-error-request-entity-too-large (IPPL1) 3296 The server is refusing to process a request because the request entity 3297 is larger than the server is willing or able to process. An IPP Printer 3298 returns this status code when it limits the size of print jobs and it 3299 receives a print job that exceeds that limit. 3301 12.1.4.10 client-error-request-URI-too-long 3303 The server is refusing to service the request because the request URI is 3304 longer than the server is willing to interpret. This rare condition is 3305 only likely to occur when a client has improperly submitted a request 3306 with long query information (e.g. an IPP application allows an end-user 3307 to enter an invalid URI), when the client has descended into a URL 3308 "black hole" of redirection (e.g., a redirected URL prefix that points 3309 to a suffix of itself), or when the server is under attack by a client 3310 attempting to exploit security holes present in some servers using 3311 fixed-length buffers for reading or manipulating the Request-URI. 3313 12.1.4.11 client-error-unsupported-media-type (IPPL1) 3315 The server is refusing to service the request because the print data is 3316 in a format, as specified in document-format, not supported by the IPP 3317 Printer. 3319 12.1.4.12 client-error-attribute-value-not-supported 3321 For a Create-Job, Print-Job or Validate operation, if the IPP Printer 3322 does not support at least one attribute value specified in the request, 3323 the Printer shall return this status. For example, if the request 3324 requires A4 paper and that paper size is not supported by the Printer, 3325 the Printer shall return this status. 3327 For a Get-Jobs operation, if the IPP Printer does not support at least 3328 one attribute value for Job Owner and/or Job States in the request, the 3329 Printer shall return this status. 3331 In practice, an IPP application should avoid this situation by querying 3332 an IPP Printer for its valid attributes and values before performing an 3333 operation on the Printer. 3335 June 23, 1997, Expires December 23, 1997 3336 12.1.5 Server Error Status Codes 3338 This class of status codes indicates cases in which the server is aware 3339 that it has erred or is incapable of performing the request. The server 3340 should include a Message containing an explanation of the error 3341 situation, and whether it is a temporary or permanent condition. IPP 3342 applications should display any included Message to the user. These 3343 response codes are applicable to any operation. 3345 12.1.5.1 server-error-internal-server-error 3347 The server encountered an unexpected condition which prevented it from 3348 fulfilling the request. 3350 12.1.5.2 server-error-operation-not-implemented 3352 The server does not support the functionality required to fulfill the 3353 request. This is the appropriate response when the server does not 3354 recognize an operation and is not capable of supporting it for any 3355 object. 3357 12.1.5.3 server-error-service-unavailable 3359 The server is currently unable to handle the request due to a temporary 3360 overloading or maintenance of the server. The implication is that this 3361 is a temporary condition which will be alleviated after some delay. If 3362 known, the length of the delay may be indicated in the Message. If no 3363 delay is given, the IPP application should handle the response as it 3364 would for a server-error-internal-server-error response. 3366 12.1.5.4 server-error-timeout (NEW) 3368 The server did not produce a response within the time that the client 3369 was prepared to wait. The client MAY repeat the request without 3370 modifications at any later time. 3372 12.1.5.5 server-error-HTTP-version-not-supported (NEW) 3374 The server does not support, or refuses to support, the HTTP protocol 3375 version that was used in the request message. The server is indicating 3376 that it is unable or unwilling to complete the request using the same 3377 major version as the client other than with this error message. The 3378 response SHOULD contain a message describing why the version is not 3379 supported and what other protocols are supported by that server. 3381 June 23, 1997, Expires December 23, 1997 3382 12.1.5.6 server-error-IPP-version-not-supported 3384 The server does not support, or refuses to support, the IPP protocol 3385 version that was used in the request message. The server is indicating 3386 that it is unable or unwilling to complete the request using the same 3387 major version as the client other than with this error message. The 3388 response should contain a Message describing why that version is not 3389 supported and what other versions are supported by that server. 3391 A conforming IPP client shall specify the valid version for IPP 1.0 on 3392 each request. A conforming IPP server shall not return this status code 3393 to a conforming IPP 1.0 client. An IPP server shall return this status 3394 code to a non-conforming IPP client. 3396 12.1.5.7 server-error-printer-error 3398 A printer error, such as a paper jam, occurs while the IPP Printer 3399 processes a Print or Send operation. The response shall contain the Job 3400 Status with the specific error and should contain a Message describing 3401 the error. An IPP application should check the Job Status in the 3402 response for the specific error. 3404 12.1.5.8 server-error-write-fault 3406 A write error, such as a memory overflow (i.e. the document data exceeds 3407 the memory of the Printer) or a disk full condition, occurs while the 3408 IPP Printer processes a Print or Send operation. 3410 June 23, 1997, Expires December 23, 1997 3411 12.2 Mapping of HTTP 1.1 Status Codes to IPP Status Keywords 3413 HTTP 1.1 Status IPP Keyword 3414 --------------- ----------- 3415 100 Continue none 3416 101 Switching Protocols none 3417 200 OK successful-OK 3418 201 Created successful-OK 3419 202 Accepted successful-OK 3420 203 Non-Authoritive Information successful-OK 3421 204 No Content successful-OK 3422 205 Reset Content none 3423 206 Partial Content (GET) none 3424 300 Multiple Choices none 3425 301 Moved Permanently none 3426 302 Moved Temporarily none 3427 303 See Other none 3428 304 Not Modified (GET) none 3429 305 Use Proxy none 3430 400 Bad Request client-error-bad-request 3431 401 Unauthorized client-error-unauthorized 3432 402 Payment Required client-error-payment-required 3433 403 Forbidden client-error-forbidden 3434 404 Not Found client-error-not-found 3435 405 Method Not Allowed client-error-method-not-allowed 3436 406 Not Acceptable client-error-bad-request 3437 407 Proxy Authentication Required client-error-unauthorized 3438 408 Request Timeout client-error-timeout 3439 409 Conflict (most likely PUT) client-error-bad-request 3440 410 Gone client-error-gone 3441 411 Length Required client-error-bad-request 3442 412 Precondition Failed client-error-bad-request 3443 413 Request Entity Too Large client-error-request-entity- 3444 too-large 3445 414 Request-URI Too Long client-error-request-URI-too-long 3446 415 Unsupported Media Type client-error-unsupported-media- 3447 type 3448 none client-error-attribute-value- 3449 not-supported 3450 500 Internal Server Error server-error-internal-server-error 3451 501 Not Implemented server-error-not-implemented 3452 502 Bad Gateway server-error-internal-server-error 3453 503 Service Unavailable server-error-service-unavailable 3454 504 Gateway Timeout server-error-timeout 3455 505 HTTP Version Not Supported server-error-HTTP-version- 3456 not-supported 3457 none server-error-IPP-version- 3458 not-supported 3460 June 23, 1997, Expires December 23, 1997 3462 none server-error-printer-error 3463 none server-error-write-fault 3465 12.3 Status Keywords for IPP Operations 3467 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 3468 SU = Send-URI, V = Validate, GA = Get-Attributes, GJ = Get-Jobs 3469 GO = Get-Operations, C = Cancel-Job 3471 IPP Operations 3472 IPP Status Keyword PJ PU CJ SD SU V GA GJ GO C 3473 ------------------ -- -- -- -- -- - -- -- -- - 3474 successful-OK x x x x x x x x x x 3475 client-error-bad-request x x x x x x x x x x 3476 client-error-unauthorized x x x x x x x x x x 3477 client-error-payment-required x x x x x x 3478 client-error-forbidden x x x x x x x x x x 3479 client-error-not-found x x x x x x x x x x 3480 client-error-method-not-allowed x x x x x x x x x x 3481 client-error-timeout x x x x x x x x x x 3482 client-error-gone x x x x x x x x x x 3483 client-error-request-entity-too-large x x 3484 client-error-request-URI-too-long x x x x x x x x x x 3485 client-error-unsupported-media-type x x x x 3486 client-error-attribute-value-not- x x x x 3487 supported 3488 server-error-internal-server-error x x x x x x x x x x 3489 server-error-service-unavailable x x x x x x x x x x 3490 server-error-timeout x x x x x x x x x x 3491 server-error-HTTP-version-not-supported x x x x x x x x x x 3492 server-error-IPP-version-not-supported x x x x x x x x x x 3493 server-error-printer-error x x x x x 3494 server-error-write-fault x x x x x 3496 13. APPENDIX B - "document-format" Values 3498 The Printer Working Group has registered a set of values with IANA as 3499 part of the IETF Printer MIB project. The standard value assigned by 3500 the PWG starts with the four letters: "lang", in order to follow SNMP 3501 ASN.1 rules that all enum symbols SHALL start with a lower case letter. 3502 The keyword values in IPP is the same as the PWG standard values 3503 registered with IANA with the "lang" removed. The MIB (integer) value 3504 is included here for reference only, the MIB integer value SHALL NOT be 3505 used in IPP; the keyword value SHALL be used. In the IPP Protocol 3506 Specification [22], the keyword value SHALL be encoded as a MIME type. 3508 June 23, 1997, Expires December 23, 1997 3509 The standard values are: 3511 'other': 1 - 3512 'PCL': 3 - PCL. Starting with PCL version 5, HP-GL/2 is included as 3513 part of the PCL language. PCL and HP-GL/2 are registered 3514 trademarks of Hewlett-Packard Company. 3515 'HPGL': 4 - Hewlett-Packard Graphics Language. HP-GL is a registered 3516 trademark of Hewlett-Packard Company. 3517 'PJL': 5 - Peripheral Job Language. Appears in the data stream 3518 between data intended for a page description language. Hewlett- 3519 Packard Co. 3520 'PS': 6 - PostScript Language (tm) Postscript - a trademark of Adobe 3521 Systems Incorporated which may be registered in certain 3522 jurisdictions 3523 'IPDS': 7 - Intelligent Printer Data Stream Bi-directional print data 3524 stream for documents consisting of data objects (text, image, 3525 graphics, bar codes), resources (fonts, overlays) and page, form 3526 and finishing instructions. Facilitates system level device 3527 control, document tracking and error recovery throughout the print 3528 process. Pennant Systems, IBM 3529 'PPDS': 8 - IBM Personal Printer Data Stream. Originally called IBM 3530 ASCII, the name was changed to PPDS when the Laser Printer was 3531 introduced in 1989. Lexmark International, Inc. 3532 'EscapeP': 9 - Epson Corp. 3533 'Epson': 10 - 3534 'DDIF': 11 - Digital Document Interchange Format Digital Equipment 3535 Corp., Maynard MA 3536 'Interpress': 12 - Xerox Corp. 3537 'ISO6429': 13 - ISO 6429. Control functions for Coded Character Sets 3538 (has ASCII control characters, plus additional controls for 3539 character imaging devices.) ISO Standard, Geneva, Switzerland 3540 'LineData': 14 - line-data: Lines of data as separate ASCII or EBCDIC 3541 records and containing no control functions (no CR, LF, HT, FF, 3542 etc.). For use with traditional line printers. May use CR and/or 3543 LF to delimit lines, instead of records. See ISO 10175 Document 3544 Printing Application (DPA) ISO standard, Geneva, Switzerland 3545 'MODCA': 15 - Mixed Object Document Content Architecture Definitions 3546 that allow the composition, interchange, and presentation of final 3547 form documents as a collection of data objects (text, image, 3548 graphics, bar codes), resources (fonts, overlays) and page, form 3549 and finishing instructions. Pennant Systems, IBM 3550 'REGIS': 16 - Remote Graphics Instruction Set, Digital Equipment 3551 Corp., Maynard MA 3552 'SCS': 17 - SNA Character String Bi-directional print data stream for 3553 SNA LU-1 mode of communications IBM 3554 'SPDL': 18 - ISO 10180 Standard Page Description Language ISO 3555 Standard 3556 'TEK4014': 19 - Tektronix Corp. 3558 June 23, 1997, Expires December 23, 1997 3559 'PDS': 20 - 3560 'IGP': 21 - Printronix Corp. 3561 'CodeV': 22 - Magnum Code-V, Image and printer control language used 3562 to control impact/dot- matrix printers. QMS, Inc., Mobile AL 3563 'DSCDSE': 23 - DSC-DSE: Data Stream Compatible and Emulation Bi- 3564 directional print data stream for non-SNA (DSC) and SNA LU-3 3270 3565 controller (DSE) communications IBM 3566 'WPS': 24 - Windows Printing System, Resource based command/data 3567 stream used by Microsoft At Work Peripherals. Developed by the 3568 Microsoft Corporation. 3569 'LN03': 25 - Early DEC-PPL3, Digital Equipment Corp. 3570 'CCITT': 26 - 3571 'QUIC': 27 - QUIC (Quality Information Code), Page Description 3572 Language for laser printers. Included graphics, printer control 3573 capability and emulation of other well- known printer . QMS, Inc. 3574 'CPAP': 28 - Common Printer Access Protocol Digital Equipment Corp 3575 'DecPPL': 29 - Digital ANSI-Compliant Printing Protocol (DEC-PPL) 3576 Digital Equipment Corp 3577 'SimpleText': 30 - simple-text: character coded data, including NUL, 3578 CR , LF, HT, and FF control characters. See ISO 10175 Document 3579 Printing Application (DPA) ISO standard, Geneva, Switzerlan 3580 'NPAP': 31 - Network Printer Alliance Protocol (NPAP). This protocol 3581 has been superseded by the IEEE 1284.1 TIPSI standard. (ref. 3582 LangTIPSI(49)). 3583 'DOC': 32 - Document Option Commands, Appears in the data stream 3584 between data intended for a page description . QMS, Inc 3585 'imPress': 33 - imPRESS, Page description language originally 3586 developed for the ImageServer line of systems. A binary language 3587 providing representations for text, simple graphics (rules, lines, 3588 conic sections), and some large forms (simple bit-map and CCITT 3589 group 3/4 encoded).The language was intended to be sent over an 8- 3590 bit channel and supported early document preparation languages 3591 (e.g. TeX and TROFF). QMS, Inc. 3592 'Pinwriter': 34 - 24 wire dot matrix printer for USA, Europe, and 3593 Asia except Japan. More widely used in Germany, and some Asian 3594 countries than in US. NEC 3595 'NPDL': 35 - Page printer for Japanese market. NEC 3596 'NEC201PL': 36 - Serial printer language used in the Japanese market. 3597 NEC 3598 'Automatic': 37 - Automatic PDL sensing. Automatic sensing of the 3599 interpreter language family by the printer examining the document 3600 content. Which actual interpreter language families are sensed 3601 depends on the printer implementation. 3602 'Pages': 38 - Page printer Advanced Graphic Escape Set IBM Japan 3603 'LIPS': 39 - LBP Image Processing System 3604 'TIFF': 40 - Tagged Image File Format (Aldus) 3605 'Diagnostic': 41 - A hex dump of the input to the interpreter 3607 June 23, 1997, Expires December 23, 1997 3608 'PSPrinter': 42 - The PostScript Language used for control (with any 3609 PDLs) Adobe Systems Incorporated 3610 'CaPSL': 43 - Canon Print Systems Language 3611 'EXCL': 44 - Extended Command Language Talaris Systems Inc 3612 'LCDS': 45 - Line Conditioned Data Stream Xerox Corporatio 3613 'XES': 46 - Xerox Escape Sequences Xerox Corporation 3614 'PCLXL': 47 - Printer Control Language. Extended language features 3615 for printing, and printer control. Technical reference manual # 3616 TBD. Hewlett-Packard Co. 3617 'ART': 48 - Advanced Rendering Tools (ART). Page Description 3618 language originally developed for the Laser Press printers. 3619 Tehnical reference manual: "ART IV Reference Manual", No F33M. 3620 Fuji Xerox Co., Ltd. 3621 'TIPSI': 49 - Transport Independent Printer System Interface (ref. 3622 IEEE Std. 1284.1) 3623 'Prescribe': 50 - Page description and printer control language. It 3624 can be described with ordinary ASCII characters. Technical 3625 reference manual: "PRESCRIBE II Programming Manual" 3626 'LinePrinter': 51 - A simple-text character stream which supports the 3627 control codes LF, VT, FF and CR plus Centronics or Dataproducts 3628 Vertical Format Unit (VFU). language is commonly used on many 3629 older model line and matrix printers. 3630 'IDP': 52 - Imaging Device Protocol Apple Computer. 3631 'XJCL': 53 - Xerox Corp. 3633 One special value is 'auto-sense'. However a client SHALL NOT supply 3634 the value 'auto-sense' in a create request. If the "document-format" is 3635 unknown for a certain document, the client SHALL NOT supply the 3636 attribute in the create request or the Send-Document Request. 3638 14. APPENDIX C - "media" Values 3640 Standard values are taken from several sources. 3642 Standard values are defined(taken from ISO DPA and the Printer MIB): 3644 'default': The default medium for the output device 3645 'iso-a4-white': Specifies the ISO A4 white medium 3646 'iso-a4-colored': Specifies the ISO A4 coloured medium 3647 'iso-a4-transparent' Specifies the ISO A4 transparent medium 3648 'iso-a3-white': Specifies the ISO A3 white medium 3649 'iso-a3-colored': Specifies the ISO A3 coloured medium 3650 'iso-a5-white': Specifies the ISO A5 white medium 3651 'iso-a5-colored': Specifies the ISO A5 coloured medium 3652 'iso-b4-white': Specifies the ISO B4 white medium 3653 'iso-b4-colored': Specifies the ISO B4 coloured medium 3655 June 23, 1997, Expires December 23, 1997 3656 'iso-b5-white': Specifies the ISO B5 white medium 3657 'iso-b5-colored': Specifies the ISO B5 coloured medium 3658 'jis-b4-white': Specifies the JIS B4 white medium 3659 'jis-b4-colored': Specifies the JIS B4 coloured medium 3660 'jis-b5-white': Specifies the JIS B5 white medium 3661 'jis-b5-colored': Specifies the JIS B5 coloured medium 3663 The following standard values are defined for North American media: 3665 'na-letter-white': Specifies the North American letter white medium 3666 'na-letter-colored': Specifies the North American letter coloured 3667 medium 3668 'na-letter-transparent': Specifies the North American letter 3669 transparent medium 3670 'na-legal-white': Specifies the North American legal white medium 3671 'na-legal-colored': Specifies the North American legal coloured 3672 medium 3674 The following standard values are defined for envelopes: 3676 'iso-b4-envelope': Specifies the ISO B4 envelope medium 3677 'iso-b5-envelope': Specifies the ISO B5 envelope medium 3678 'iso-c3-envelope': Specifies the ISO C3 envelope medium 3679 'iso-c4-envelope': Specifies the ISO C4 envelope medium 3680 'iso-c5-envelope': Specifies the ISO C5 envelope medium 3681 'iso-c6-envelope': Specifies the ISO C6 envelope medium 3682 'iso-designated-long-envelope': Specifies the ISO Designated Long 3683 envelope medium 3684 'na-10x13-envelope': Specifies the North American 10x13 envelope 3685 medium 3686 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 3687 'monarch-envelope': Specifies the Monarch envelope 3688 'na-number-10-envelope': Specifies the North American number 10 3689 business envelope medium 3690 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 3691 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 3692 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 3693 'na-number-9-envelope': Specifies the North American number 9 3694 business envelope 3695 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 3696 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 3698 The following standard values are defined for the less commonly used 3699 media (white-only): 3701 June 23, 1997, Expires December 23, 1997 3702 'executive-white': Specifies the white executive medium 3703 'folio-white': Specifies the folio white medium 3704 'invoice-white': Specifies the white invoice medium 3705 'ledger-white': Specifies the white ledger medium 3706 'quarto-white': Specified the white quarto medium 3707 'iso-a0-white': Specifies the ISO A0 white medium 3708 'iso-a1-white': Specifies the ISO A1 white medium 3709 'iso-a2-white': Specifies the ISO A2 white medium 3710 'iso-a6-white': Specifies the ISO A6 white medium 3711 'iso-a7-white': Specifies the ISO A7 white medium 3712 'iso-a8-white': Specifies the ISO A8 white medium 3713 'iso-a9-white': Specifies the ISO A9 white medium 3714 'iso-10-white': Specifies the ISO A10 white medium 3715 'iso-b0-white': Specifies the ISO B0 white medium 3716 'iso-b1-white': Specifies the ISO B1 white medium 3717 'iso-b2-white': Specifies the ISO B2 white medium 3718 'iso-b3-white': Specifies the ISO B3 white medium 3719 'iso-b6-white': Specifies the ISO B6 white medium 3720 'iso-b7-white': Specifies the ISO B7 white medium 3721 'iso-b8-white': Specifies the ISO B8 white medium 3722 'iso-b9-white': Specifies the ISO B9 white medium 3723 'iso-b10-white': Specifies the ISO B10 white medium 3724 'jis-b0-white': Specifies the JIS B0 white medium 3725 'jis-b1-white': Specifies the JIS B1 white medium 3726 'jis-b2-white': Specifies the JIS B2 white medium 3727 'jis-b3-white': Specifies the JIS B3 white medium 3728 'jis-b6-white': Specifies the JIS B6 white medium 3729 'jis-b7-white': Specifies the JIS B7 white medium 3730 'jis-b8-white': Specifies the JIS B8 white medium 3731 'jis-b9-white': Specifies the JIS B9 white medium 3732 'jis-b10-white': Specifies the JIS B10 white medium 3734 The following standard values are defined for engineering media: 3736 'a': Specifies the engineering A size medium 3737 'b': Specifies the engineering B size medium 3738 'c': Specifies the engineering C size medium 3739 'd': Specifies the engineering D size medium 3740 'e': Specifies the engineering E size medium 3742 The following standard values are defined for input-trays (from ISO DPA 3743 and the Printer MIB): 3745 'top': The top input tray in the printer. 3746 'middle': The middle input tray in the printer. 3747 'bottom': The bottom input tray in the printer. 3749 June 23, 1997, Expires December 23, 1997 3750 'envelope': The envelope input tray in the printer. 3751 'manual': The manual feed input tray in the printer. 3752 'large-capacity': The large capacity input tray in the printer. 3753 'main': The main input tray 3754 'side': The side input tray 3756 The following standard values are defined for media sizes (from ISO 3757 DPA): 3759 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 3760 ISO 216 3761 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 3762 ISO 216 3763 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 3764 ISO 216 3765 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 3766 ISO 216 3767 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 3768 ISO 216 3769 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 3770 ISO 216 3771 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 3772 ISO 216 3773 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 3774 ISO 216 3775 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 3776 216 3777 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 3778 216 3779 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 3780 ISO 216 3781 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 3782 ISO 216 3783 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 3784 ISO 216 3785 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 3786 ISO 216 3787 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 3788 ISO 216 3789 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 3790 ISO 216 3791 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 3792 ISO 216 3793 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 3794 ISO 216 3795 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 3796 ISO 216 3798 June 23, 1997, Expires December 23, 1997 3800 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 3801 216 3802 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 3803 216 3804 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 3805 ISO 216 3806 'na-letter': Specifies the North American letter size: 8.5 inches by 3807 11 inches 3808 'na-legal': Specifies the North American legal size: 8.5 inches by 14 3809 inches 3810 'executive': Specifies the executive size (7.25 X 10.5 in) 3811 'folio': Specifies the folio size (8.5 X 13 in) 3812 'invoice': Specifies the invoice size (5.5 X 8.5 in) 3813 'ledger': Specifies the ledger size (11 X 17 in) 3814 'quarto': Specifies the quarto size (8.5 X 10.83 in) 3815 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 3816 ISO 269 3817 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 3818 ISO 269 3819 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 3820 ISO 269 3821 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 3822 ISO 269 3823 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 3824 by 220 mm as defined in ISO 269 3825 'na-10x13-envelope': Specifies the North American 10x13 size: 10 3826 inches by 13 inches 3827 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 3828 by 12 inches 3829 'na-number-10-envelope': Specifies the North American number 10 3830 business envelope size: 4.125 inches by 9.5 inches 3831 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 3832 size 3833 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 3834 size 3835 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 3836 size 3837 'na-number-9-envelope': Specifies the North American number 9 3838 business envelope size 3839 'na-6x9-envelope': Specifies the North American 6x9 envelope size 3840 'na-10x15-envelope': Specifies the North American 10x15 envelope size 3841 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 3842 in) 3843 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 3844 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 3845 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 3846 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 3847 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 3849 June 23, 1997, Expires December 23, 1997 3850 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 3851 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 3852 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 3853 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 3854 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 3855 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 3857 June 23, 1997, Expires December 23, 1997