idnits 2.17.1 draft-ietf-ipp-model-01.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 == The page length should not exceed 58 lines per page, but there was 2 longer pages, the longest (page 81) being 70 lines 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 1235 instances of too long lines in the document, the longest one being 7 characters in excess of 72. == There are 45 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == Line 167 has weird spacing: '...(1setOf type2...' == Line 431 has weird spacing: '...oes not suppo...' == Line 610 has weird spacing: '... any indi...' == Line 662 has weird spacing: '...ere are confl...' == Line 685 has weird spacing: '...tes are defin...' == (27 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 expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: The verb "NEED NOT" indicates an action that the subject of the sentence does not have to implement in order to claim conformance to the standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 3, 1997) is 9823 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) == Unused Reference: '1' is defined on line 3390, but no explicit reference was found in the text == Unused Reference: '2' is defined on line 3393, but no explicit reference was found in the text == Unused Reference: '3' is defined on line 3396, but no explicit reference was found in the text == Unused Reference: '4' is defined on line 3399, but no explicit reference was found in the text == Unused Reference: '5' is defined on line 3401, but no explicit reference was found in the text == Unused Reference: '6' is defined on line 3404, but no explicit reference was found in the text == Unused Reference: '7' is defined on line 3407, but no explicit reference was found in the text == Unused Reference: '8' is defined on line 3412, but no explicit reference was found in the text == Unused Reference: '9' is defined on line 3416, but no explicit reference was found in the text == Unused Reference: '10' is defined on line 3419, but no explicit reference was found in the text == Unused Reference: '11' is defined on line 3422, but no explicit reference was found in the text == Unused Reference: '20' is defined on line 3425, but no explicit reference was found in the text == Unused Reference: '21' is defined on line 3427, but no explicit reference was found in the text == Unused Reference: '24' is defined on line 3433, 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' Summary: 14 errors (**), 0 flaws (~~), 25 warnings (==), 11 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT 3 R. deBry 4 IBM Corporation 5 T. Hastings 6 Xerox Corporation 7 R. Herriot 8 Sun Microsystems 9 S. Isaacson 10 Novell, Inc. 11 P. Powell 12 San Diego State University 13 June 3, 1997 15 Internet Printing Protocol/1.0: Model and Semantics 16 draft-ietf-ipp-model-01.txt 18 Status of this Memo 20 This document is an Internet-Draft. Internet-Drafts are working 21 documents of the Internet Engineering Task Force (IETF), its areas, and 22 its working groups. Note that other groups may also distribute working 23 documents as Internet-Drafts. 25 Internet-Drafts are draft documents valid for a maximum of six months 26 and may be updated, replaced, or obsoleted by other documents at any 27 time. It is inappropriate to use Internet-Drafts as reference material 28 or to cite them other than as "work in progress". 30 To learn the current status of any Internet-Draft, please check the 31 "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow 32 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), 33 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or 34 ftp.isi.edu (US West Coast). 36 Abstract 38 This document is one of a set of documents, which together describe all 39 aspects of a new Internet Printing Protocol (IPP). IPP is an 40 application level protocol that can be used for distributed printing 41 using Internet tools and technology. The protocol is heavily influenced 42 by the printing model introduced in the Document Printing Application 43 (ISO/IEC 10175 DPA) standard. Although DPA specifies both end user and 44 administrative features, IPP version 1.0 is focused only on end user 45 functionality. 47 The full set of IPP documents includes: 49 June 3, 1997, Expires December 3, 1997 50 Internet Printing Protocol: Requirements 51 Internet Printing Protocol/1.0: Model and Semantics 52 Internet Printing Protocol/1.0: Security 53 Internet Printing Protocol/1.0: Protocol Specification 54 Internet Printing Protocol/1.0: Directory Schema 56 The requirements document takes a broad look at distributed printing 57 functionality, and it enumerates real-life scenarios that help to 58 clarify the features that need to be included in a printing protocol for 59 the Internet. It identifies requirements for three types of users: end 60 users, operators, and administrators. The requirements document calls 61 out a subset of end user requirements that must be satisfied in the 62 first version of IPP. Operator and administrator requirements are out 63 of scope for v1.0. The model and semantics document describes a 64 simplified model with abstract objects, their attributes, and their 65 operations. The model introduces a Printer object and a Job object. The 66 Job object supports multiple documents per job. The security document 67 covers potential threats and proposed counters to those threats. The 68 protocol specification is formal document which incorporates the ideas 69 in all the other documents into a concrete mapping using clearly defined 70 data representations and transport protocol mappings that real 71 implementers can use to develop interoperable client and server side 72 components. Finally, the directory schema document shows a generic 73 schema for directory service entries that represent instances of IPP 74 Printers. 76 This document is the "Internet Printing Protocol/1.0: Model and 77 Semantics" document. 79 June 3, 1997, Expires December 3, 1997 80 Table of Contents 82 1. 6 83 Introduction..........................................................7 84 2. Terminology........................................................7 85 2.1 Conformance Terminology........................................8 86 2.1.1 MUST......................................................8 87 2.1.2 MUST NOT..................................................8 88 2.1.3 SHOULD....................................................8 89 2.1.4 SHOULD NOT................................................8 90 2.1.5 MAY.......................................................8 91 2.1.6 CONDITIONALLY MANDATORY...................................8 92 2.1.7 NEED NOT..................................................9 93 2.2 Model Terminology..............................................9 94 2.2.1 Keyword...................................................9 95 2.2.2 Attributes................................................9 96 2.2.3 Attribute Name............................................9 97 2.2.4 Group Name................................................9 98 2.2.5 Attribute Value..........................................10 99 2.2.6 Attribute Syntax.........................................10 100 2.2.7 Implements...............................................10 101 2.2.8 Supports.................................................10 102 3. Simplified Printing Model.........................................11 103 4. IPP Objects.......................................................13 104 4.1 Printer Object................................................13 105 4.2 Job Object....................................................15 106 4.3 Document Object...............................................16 107 4.4 Object Relationships..........................................17 108 4.5 Object Attributes.............................................17 109 4.5.1 Job Template Attribute Overview..........................17 110 4.5.2 The "best-effort" Job Attribute Overview.................18 111 4.6 Object Identity...............................................19 112 5. IPP Operations....................................................19 113 5.1 Operation Semantics...........................................20 114 5.1.1 Print-Job Operation......................................20 115 5.1.1.1 Print-Job Request...................................20 116 5.1.1.2 Print-Job Response..................................22 117 5.1.2 Create-Job Operation.....................................23 118 5.1.2.1 Create-Job Request..................................23 119 5.1.2.2 Create Job Response.................................24 120 5.1.3 Send-Document Operation..................................25 121 5.1.3.1 Send-Document Request...............................25 122 5.1.3.2 Send-Document Response..............................25 123 5.1.4 Cancel Job Operation.....................................26 124 5.1.4.1 Cancel-Job Request..................................26 125 5.1.4.2 Cancel-Job Response.................................26 126 5.1.5 Get-Attributes Operation.................................26 127 5.1.5.1 Get-Attributes Request..............................27 129 June 3, 1997, Expires December 3, 1997 130 5.1.5.2 Get-Attributes Response.............................28 131 5.1.6 Get-Jobs Operation.......................................29 132 5.1.6.1 Get-Jobs Request....................................29 133 5.1.6.2 Get-Jobs Response...................................30 134 5.2 Operation Status and Messages.................................31 135 5.3 Status Codes (type2 keyword)..................................31 136 6. Object Attributes.................................................31 137 6.1 Attribute Syntaxes............................................32 138 6.1.1 Attribute Extensibility..................................35 139 6.2 Job Template Attributes.......................................36 140 6.2.1 job-name (name)..........................................41 141 6.2.2 job-sheets (type4 keyword)...............................42 142 6.2.3 notification-events (1setOf type2 keyword)...............42 143 6.2.4 notification-addresses (1setOf uri)......................42 144 6.2.5 job-priority (integer(1:100))............................43 145 6.2.6 job-hold-until (type4 keyword)...........................43 146 6.2.7 multiple-documents-are (type2 keyword)...................44 147 6.2.8 best-effort (type2 keyword)..............................44 148 6.2.9 media (type4 keyword)....................................45 149 6.2.10 number-up (type3 keyword)...............................46 150 6.2.11 sides (type2 keyword)...................................46 151 6.2.12 printer-resolution (type2 keyword)......................47 152 6.2.13 print-quality (type2 keyword)...........................47 153 6.2.14 copies (integer(1:2**31 - 1))...........................48 154 6.2.15 finishings (1setOf type2 keyword).......................48 155 6.2.16 compression (type3 keyword).............................48 156 6.2.17 job-k-octets (integer(0:2**31 - 1)).....................48 157 6.2.18 job-impressions (integer(0:2**31 - 1))..................49 158 6.2.19 job- media-sheets (integer(0:2**31 - 1))................49 159 6.3 Job Attributes................................................49 160 6.3.1 Job Template Attributes..................................49 161 6.3.2 Job Description Attributes...............................49 162 6.3.2.1 job-URI (uri).......................................51 163 6.3.2.2 job-originating-user (name).........................51 164 6.3.2.3 job-originating-host (name).........................51 165 6.3.2.4 user-locale (type3 keyword).........................51 166 6.3.2.5 job-state (type1 keyword)...........................51 167 6.3.2.6 job-state-reasons (1setOf type2 keyword)...........55 168 6.3.2.7 job-state-message (text)............................58 169 6.3.2.8 output-device-assigned (uri)........................58 170 6.3.2.9 time-since-submission (milliseconds)................58 171 6.3.2.10 time-since-processing (milliseconds)...............58 172 6.3.2.11 number-of-intervening-jobs (integer(0:2**31 - 1))..58 173 6.3.2.12 job-message-from-operator (text)...................59 174 6.3.2.13 time-since-completion (milliseconds)...............59 175 6.3.2.14 job-k-octets-completed (integer(0:2**31 - 1))......59 176 6.3.2.15 job-impressions-completed (integer(0:2**31 - 1))..59 177 6.3.2.16 job-media-sheets-completed (integer(0:2**31 - 1))..59 179 June 3, 1997, Expires December 3, 1997 181 6.4 Document Attributes...........................................59 182 6.4.1 document-name(name, Mandatory)...........................60 183 6.4.2 document-format (type2 keyword)..........................60 184 6.4.3 document-URI (uri).......................................61 185 6.5 Printer Attributes............................................61 186 6.5.1 Printer Job Template Attributes..........................61 187 6.5.2 Printer Description Attributes..........................61 188 6.5.2.1 printer-URI (uri)...................................63 189 6.5.2.2 printer-name (name).................................63 190 6.5.2.3 printer-location (text).............................63 191 6.5.2.4 printer-description (text)..........................63 192 6.5.2.5 printer-more-info-site (uri)........................64 193 6.5.2.6 printer-driver-installer (uri)......................64 194 6.5.2.7 printer-make-and-model (text).......................64 195 6.5.2.8 maximum-printer-speed (integerUnits)................64 196 6.5.2.9 printer-more-info-manf (uri)........................64 197 6.5.2.10 printer-state (type1 keyword)......................65 198 6.5.2.11 printer-state-reasons (1setOf type2 keyword).......67 199 6.5.2.12 printer-is-accepting-jobs (boolean)................69 200 6.5.2.13 printer-state-message (text).......................69 201 6.5.2.14 queued-job-count (integer(0:2**31 - 1))............70 202 6.5.2.15 printer-message-from-the-operator (text)...........70 203 6.5.2.16 printer-locale (locale)............................70 204 6.5.2.17 printer-locales-supported (1setOf locale)..........70 205 7. Conformance.......................................................70 206 7.1 Conditionally Mandatory.......................................70 207 7.2 Client Conformance Requirements...............................71 208 7.3 Printer Object Conformance Requirements.......................71 209 7.3.1 Objects..................................................71 210 7.3.2 Operations...............................................71 211 7.3.3 Attributes...............................................72 212 7.3.4 Default Value............................................72 213 7.3.5 Availability.............................................73 214 7.3.6 Printer extensions.......................................73 215 7.3.7 Attribute Syntaxes.......................................73 216 7.4 Security Conformance Requirements.............................73 217 8. IANA Considerations, Registered Extensions, Private Extensions....73 218 9. Security Considerations...........................................74 219 10. References.......................................................74 220 11. Author's Address.................................................75 221 12.77 222 Change History.......................................................78 223 12.1 Changes made to version 970512, dated 12-May-1997 to make 224 version 970603, dated 03-June-1997...............................78 225 12.2 Changes made to version 970509, dated 9-May-1997 to make version 226 970512, dated 12-May-1997.........................................78 227 12.3 Changes made to version 2.2, dated 5-May-1997 to make version 228 970509, dated 9-May-1997..........................................79 230 June 3, 1997, Expires December 3, 1997 231 12.4 Changes made to version 2.1, dated 24-April-1997 to make version 232 2.2, dated 5-May-1997.............................................79 233 12.5 Changes made to version 2.0, dated 26-March-1997 to make version 234 2.1, dated 22-April-1997..........................................79 235 12.6 Changes made to version 1.8, dated 24-March-1997 to make version 236 2.0, dated 26-March-1997..........................................79 237 12.7 Changes made to version 1.7, dated 24-Mar-1997 to make version 238 1.8, dated 24-March-1997..........................................79 239 12.8 Changes made to version 1.6, dated 12-Mar-1997 to make version 240 1.7, dated 24-March-1997..........................................80 241 12.9 Changes made to version 1.5, dated 11-Mar-1997 to make version 242 1.6, dated 12-March-1997..........................................80 243 12.10 Changes made to version 1.4, dated 27-Feb-1997 to make version 244 1.5, dated 9-March-1997...........................................82 246 1. 248 June 3, 1997, Expires December 3, 1997 249 Introduction 251 The Internet Printing Protocol (IPP) is an application level protocol 252 that can be used for distributed printing on the Internet. The protocol 253 is heavily influenced by the printing model introduced in the Document 254 Printing Application (ISO/IEC 10175 DPA) standard. Although DPA 255 identifies both end user and administrative features, the first version 256 of IPP is focused only on end user functionality. 258 Section 2. Terminology introduces the terminology used within this 259 document. 261 Section 0 introduces the simplified IPP model. The IPP model is made 262 simple by exposing only the objects, attributes, and operations that are 263 essential for end user access and control of the print subsystem. When 264 future versions of IPP include features which satisfy operator and 265 administrator requirements, the model can be extended to support the 266 appropriate objects, attributes, and operations. 268 Section 0 introduces the full semantics of the Printer, Job, and 269 Document objects in the IPP model. It covers how instances of these 270 objects are identified, named, and related to each other. 272 Section 0 covers the operations that are part of the IPP model. These 273 operations include: the Create-Job, Send-Document, Print-Job, Cancel, 274 Get-Attributes, and Get-Jobs operations. 276 Section 0 describes the attributes, their syntaxes, and semantics which 277 are part of the IPP model. Each object's attributes are described, and 278 the attributes are grouped into logical groups to help clarify their 279 relationships and meaning. These groups are also used to simplify 280 queries that request multiple attributes. 282 Section 7. Conformance is a review of conformance issues and clarifies 283 requirements that apply to client side and server side implementations. 285 Sections 8. IANA Considerations, Registered Extensions, Private 286 Extensions-11. Author's Address cover extensibility, security, technical 287 references, and author information. 289 2. Terminology 291 This specification uses the terminology defined in this section. 293 June 3, 1997, Expires December 3, 1997 294 2.1 Conformance Terminology 296 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 297 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 298 document are to be interpreted as described in RFC 2119 [25]. 300 2.1.1 MUST 302 This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", mean that 303 the definition is an absolute requirement of the specification. 305 2.1.2 MUST NOT 307 This phrase, or the phrase "SHALL NOT", mean that the definition is an 308 absolute prohibition of the specification. 310 2.1.3 SHOULD 312 This word, or the adjective "RECOMMENDED", mean that there may exist 313 valid reasons in particular circumstances to ignore a particular item, 314 but the full implications must be understood and carefully weighed 315 before choosing a different course. 317 2.1.4 SHOULD NOT 319 This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist 320 valid reasons in particular circumstances when the particular behavior 321 is acceptable or even useful, but the full implications should be 322 understood and the case carefully weighed before implementing any 323 behavior described with this label. 325 2.1.5 MAY 327 This word, or the adjective "OPTIONAL", mean that an item is truly 328 optional. One vendor may choose to include the item because a 329 particular marketplace requires it or because the vendor feels that it 330 enhances the product while another vendor may omit the same item. An 331 implementation which does not include a particular option MUST be 332 prepared to interoperate with another implementation which does include 333 the option, though perhaps with reduced functionality. In the same vein 334 an implementation which does include a particular option MUST be 335 prepared to interoperate with another implementation which does not 336 include the option (except, of course, for the feature the option 337 provides.) 339 2.1.6 CONDITIONALLY MANDATORY 341 June 3, 1997, Expires December 3, 1997 342 This term means that an item MUST be implemented in a conforming 343 implementation if the item corresponds to a feature or behavior that the 344 implementation is capable of realizing. It is also true, that a 345 conforming implementation NEED NOT implement the items that correspond 346 to features or behaviors that the implmentation is not capable of 347 realizing. 349 2.1.7 NEED NOT 351 The verb "NEED NOT" indicates an action that the subject of the sentence 352 does not have to implement in order to claim conformance to the 353 standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY 354 NOT" sounds like a prohibition. 356 2.2 Model Terminology 358 2.2.1 Keyword 360 Keywords are used within this document as identifiers of semantic 361 entities within the abstract model. These entities are often attribute 362 names, attribute values, attribute syntaxes, and attribute groups. In 363 this document, a keyword is a sequence of characters (length of 1 to 364 255) which consists of the following ASCII characters: letters, digits, 365 hyphen ("-"), and underscore ("_"). A keyword MUST start with a letter. 366 In the actual protocol, these keywords will be represented using an 367 appropriate protocol encoding (strings, enumerated values, constants, 368 operation codes, identifiers, etc.). 370 2.2.2 Attributes 372 An attribute is an item of information consisting of an attribute name 373 and attribute value(s) using a specific syntax for that attribute. All 374 attributes are defined in section 6. Object Attributes. Attributes 375 are identified as being "MANDATORY", "CONDITIONALLY MANDATORY", or 376 "OPTIONAL". 378 2.2.3 Attribute Name 380 Each attribute is uniquely identified in this document by its attribute 381 name which is a keyword. The keyword attribute name is given in the 382 section header describing that attribute. In running text in this 383 document, attribute names are indicated inside double quotation marks 384 ("). 386 2.2.4 Group Name 388 Related attributes are grouped into named groups. The name of the group 389 is a keyword. It can be used wherever an attribute name is used in 391 June 3, 1997, Expires December 3, 1997 392 place of naming all the attributes in the group explicitly. Attribute 393 groups are defined in section 6. Object Attributes. 395 2.2.5 Attribute Value 397 Each attribute shall have one or more values. Attribute values shall be 398 represented in the syntax type specified for that attribute. In running 399 text in this document, attribute values are indicated inside single 400 quotation marks ('), whether their syntax types are keyword, integer, 401 text, etc. 403 2.2.6 Attribute Syntax 405 Each attribute is defined using an explicit syntax. In this document, 406 each syntax type is defined as a keyword with specific meaning. The 407 protocol specification document [23] shall indicate the actual 408 representation for each syntax type that shall be used for the actual 409 protocol. Attribute syntaxes are defined in section 6.1 Attribute 410 Syntaxes. 412 2.2.7 Implements 414 By definition, an attribute is implemented if, in response to a query 415 for that attribute, an implementation responds with both the attribute 416 and a current value (or values) for that attribute. . A conforming 417 implementation SHALL implement all MANDATORY attributes and it SHALL 418 implement all CONDITIONALLY MANDATORY attributes whose possible values 419 correspond to the behaviors that the implementation is capable of 420 realizing. 422 2.2.8 Supports 424 By definition, a job processing behavior or selectable feature is 425 supported by Printer only if that Printer implements the corresponding 426 "supported" attribute populated with the value representing that 427 behavior or feature. A given implementation may exhibit a behavior that 428 corresponds to the value of some supported attribute, but if the 429 implementation, when queried for that attribute, doesn't respond with 430 the supported attribute populated with that specific value, then as far 431 as IPP is concerned, that Printer does not support that feature. 432 Section 6. Object Attributes describes all of the Printer object's 433 supported attributes. Most of the Printer object's supported attributes 434 are OPTIONAL or CONDITIONALLY MANDATORY, therefore conformance to IPP 435 does not mandate that all implementations support all possible value 436 representing all possible job processing behaviors and features. 438 June 3, 1997, Expires December 3, 1997 439 For example, if a given instance of a Printer supports only certain 440 document formats, then that Printer SHALL implement the "document- 441 format-supported" attribute and that attribute SHALL be populated with a 442 set of values, possibly only one, taken from the entire set of possible 443 values defined in this model document. This implemented set of values 444 represent the Printer's set of supported document formats. Another 445 example is the "finishings-supported" attribute. If a Printer is not 446 physically capable of stapling (there is no stapler in the output device 447 itself), the "finishings-supported" attribute MUST NOT be implemented 448 with the value of 'staple'. Note: The supported attributes are set 449 (populated) by some administrative process or automatic sensing 450 mechanism which is outside the scope of IPP. 452 3. Simplified Printing Model 454 In order to a achieve its goal of realizing a workable printing protocol 455 for the Internet, IPP is based on a simplified printing model which 456 abstracts the many (often complex) components of real world printing 457 solutions. Many of these systems include features, interfaces, and 458 relationships that are beyond the scope of IPP. IPP has to run in a 459 distributed computing environment where requesters of print services 460 (clients, applications, PC drivers, etc.) cooperate and interact with 461 print service providers. Although the underlying configuration may be a 462 complex n-tier client/server system, an important simplifying step in 463 the IPP model is to expose only the key objects and interfaces required 464 for printing. The IPP model encapsulates these important elements into 465 three simple objects: 467 Printer (Section 0) 468 Job (Section 0) 469 Document (Section 0) 471 Each of these objects has a set of operations associated with it. These 472 include: 474 Printer: 475 Create-Job (Section 0) 476 Print-Job (Section ???) 477 Get-Attributes (Section 0) 478 Get-Jobs (Section 0) 479 Job 480 Send-Document(section ???) 481 Get-Attributes (Section 0) 482 Cancel Job (Section 0) 484 June 3, 1997, Expires December 3, 1997 486 There are no operations defined for a Document object. All document 487 information is accessed through a Job object and its operations. 489 It is important, however, to understand that in real system 490 implementations (which lie underneath the abstracted IPP model), there 491 are other components of a print service which are not explicitly defined 492 in the IPP model. The following figure illustrates where IPP fits with 493 respect to these other components. 495 +--------------+ 496 | Application | 497 o +. . . . . . . | 498 \|/ | Spooler | 499 / \ +. . . . . . . | +---------+ 500 End-User | Print Driver |---| File | 501 +-----------+ +-----+ +------+-------+ +----+----+ 502 | Browser | | GUI | | | 503 +-----+-----+ +--+--+ | | 504 | | | | 505 | +---+------------+---+ | 506 N D S | | IPP Client |------------+ 507 O I E | +---------+----------+ 508 T R C | | 509 I E U | 510 F C R -------------- Transport ------------------ 511 I T I 512 C O T | --+ 513 A R Y +--------+--------+ | 514 T Y | IPP Server | | 515 I +--------+--------+ | 516 O | | 517 N +.................+ | IPP Printer 518 | Print Service | | 519 +.................+ | 520 | | 521 Output Device(s) | 522 --+ 524 IPP Printers encapsulate the functions normally associated with physical 525 output devices along with the spooling, scheduling and multiple device 526 management functions associated with a print server. Printers may be 527 registered as entries in a directory where end users find and select 528 them based on some sort of filtered and context based searching. The 529 directory is used to store relatively static information about the 531 June 3, 1997, Expires December 3, 1997 532 Printer, allowing end users to search for and find Printers that match 533 their search criteria (name, context, printer capabilities, etc.) 535 IPP clients implement the IPP protocol on the client side and give end 536 users or programs the ability to query an IPP Printer and submit and 537 manage their print jobs. An IPP server is just that part of the IPP 538 Printer that implements the protocol. The rest of the IPP Printer 539 implements the application semantics of the print service itself. All 540 information about the Printer, both static and dynamic information, can 541 be accessed directly from the Printer itself. The more dynamic 542 information associated with a Printer includes state, currently loaded 543 and ready media, number of jobs on the Printer, errors, warnings, etc.. 544 When a job is submitted to the Printer, a Job object is created. The 545 end user then interacts with this new Job to query its status and 546 monitor the progress of the job. End users may also cancel the Job. 547 The end user is able to register to receive certain events which are 548 then routed using the notification service(s). 550 4. IPP Objects 552 4.1 Printer Object 554 A major component of the IPP model is the Printer object. 556 The capabilities and state of an IPP Printer are described by its 557 attributes. Printer attributes are defined in the following categories: 559 Job Template Attributes (section 6.5.1 Printer Job Template 560 Attributes) 561 Printer Description Attributes (section 6.5.2 Printer Description 562 Attributes) 564 Operations which are invoked on a printer include: 566 Create-Job (section 0) 567 Print-Job (section ???) 568 Get-Attributes (section 0) 569 Get-Jobs (section 0) 571 An instance of a Printer object implements IPP. Using the protocol, end 572 users may query the attributes of the Printer, submit jobs to the 573 Printer, determine subsequent states of submitted and queued jobs, and 574 cancel their own print jobs. The realization of a Printer object may 575 take on different forms for any given configuration of real components. 576 However, the details of the configuration of real components must be 577 transparent to the end user. 579 June 3, 1997, Expires December 3, 1997 580 Since a Printer object is an abstraction of a generic document output 581 device or print service provider, an IPP Printer object could be used to 582 represent any real or virtual device with semantics consistent with the 583 Printer object. For example, an instance of a Printer object could be 584 used to front end a fax-out device, any kind of imager, or even a CD 585 writer. 587 Some examples of configurations supporting a Printer object include: 589 1) An output device, with no spooling capabilities 590 2) An output device, with a built-in spooler 591 3) A print server supporting IPP with one or more associated output 592 devices 593 3a) The associated output devices might or might not be capable of 594 spooling jobs 595 3b) The associated output devices might or might not support IPP 597 See the following figures for some examples on how to view Printer 598 objects on top of several print system configurations. The embedded 599 case below represents configurations 1 and 2. The hosted and fan-out 600 figures below represent configuration 3. 602 June 3, 1997, Expires December 3, 1997 603 Legend: 605 ##### indicates a Printer object which is 606 either embedded in an output device or is 607 hosted in a server. The implementation 608 might or might not be capable of queuing/spooling. 610 any indicates any network protocol or direct 611 connect, including IPP 613 embedded printer: 614 output device 615 +---------------+ 616 O +--------+ | ########### | 617 /|\ | client |------------IPP------------># Printer # | 618 / \ +--------+ | # Object # | 619 | ########### | 620 +---------------+ 622 hosted printer: 623 +---------------+ 624 O +--------+ ########### | | 625 /|\ | client |--IPP--># Printer #-any->| output device | 626 / \ +--------+ # Object # | | 627 ########### +---------------+ 629 +---------------+ 630 fan out: | | 631 +-->| output device | 632 any/ | | 633 O +--------+ ########### / +---------------+ 634 /|\ | client |-IPP-># Printer #--* 635 / \ +--------+ # Object # \ +---------------+ 636 ########### any\ | | 637 +-->| output device | 638 | | 639 +---------------+ 641 4.2 Job Object 643 A Job object is used to model a job. A job can contain one or more 644 documents. The information required to create a Job object is sent in a 645 create request from the end user via an IPP client to a Printer. A 647 June 3, 1997, Expires December 3, 1997 648 create request can be either a Create-Job Request or a Print-Job 649 Request. The Printer may perform some validation checks to verify that 650 the job may indeed be processed. For example, the create request may 651 specify that the documents within the job are to be printed duplex (on 652 both sides of the media). However, the Printer might not support such a 653 feature. Once the Printer validates the submitted information, a Job 654 object is created. The instance of the Job object is initialized with 655 information from the create request. If a Create-Job operation is used 656 to create the Job object, subsequent Send-Document operations are used 657 to transfer the document data from the client to the IPP Printer. 659 This model specification defines rules for what MUST be done when: 661 - optional attributes are missing 662 - there are conflicts between what is supported and what is 663 requested 664 - there are conflicts between what the client requests via external 665 attributes in the IPP operation and what the client requests in 666 embedded instructions in the document page description language 667 (PDL). 669 Job attributes are broken up into the following groups: 671 Job Template Attributes (optionally supplied by the client/end user, 672 section 6.3.1 Job Template Attributes 673 Job Description Attributes (set by the Printer, section 6.3.2 Job 674 Description Attributes) 676 The following operations can be invoked on Jobs: 677 Send-Document(section 5.1.3 Send-Document Operation) 678 Cancel Job (section 0) 679 Get-Attributes (section 0) 681 4.3 Document Object 683 Documents consist of printable data and attributes that describe the 684 data to be printed. In this version of the protocol only the attributes 685 in section 6.4 Document Attributes are defined for individual 686 documents. Documents are sent in a Send-Document operation or in a 687 Print-Job operation. 689 Document attributes include: 691 Document Attributes (section 0) 693 Currently no operations are defined on documents. 695 June 3, 1997, Expires December 3, 1997 696 4.4 Object Relationships 698 Instances of objects within the system have relationships that must be 699 maintained persistently along with the persistent storage of the object 700 attributes. A Printer can represent one or more output devices. An 701 output device can be represented by at most one Printer object. A 702 Printer can contain zero or more Job objects. A Job object is contained 703 in exactly one Printer object. A Job object contains one or more 704 Documents. If the Document is simply a reference to some print data 705 stream, the reference may be used in multiple documents in the same Job 706 or even in different Jobs. If the Document is not just a reference, but 707 an actual stream of print data, it shall only be contained in one 708 Document, although there can be copies of it in other Documents. 710 4.5 Object Attributes 712 Each object type is defined by a set of attributes which describe the 713 realization of each instance of an object. That is, a Printer object is 714 defined as set of attributes that are associated with each instance of a 715 Printer object. In the same manner, a Job object is defined by defining 716 the set of attributes that are associated with each instance of a Job 717 object. Some attributes are OPTIONAL, some are MANDATORY, and some are 718 CONDITIONALLY MANDATORY (see section 2). Object attributes are defined 719 in section 0 of this document. 721 4.5.1 Job Template Attribute Overview 723 Attributes that a client may optionally include in a create request are 724 called Job Template attributes. These are described in detail in 725 section 0. The Printer object has associated attributes which define 726 supported and default values for the Printer. 728 - When a Job Template attribute is supplied by a client in a create 729 request, the attribute and its value describe the desired job 730 processing behavior. 732 - The Printer object's supported attribute describes what behaviors 733 are possible. 735 - The Printer object's default value attribute describes what will be 736 done when no other job processing information is supplied by the 737 client. 739 June 3, 1997, Expires December 3, 1997 741 4.5.2 The "best-effort" Job Attribute Overview 743 A client supplies Job Template attributes to affect the rendering, 744 production and finishing of the documents in the job. Similar types of 745 instructions may also be contained in the document to be printed, that 746 is, within the Page Description Language (PDL) of the document data. If 747 there is a conflict between the value of one of these IPP Job Template 748 attributes, and a corresponding instruction in the document (either 749 implicit or explicit), it is desirable that the value of the attribute 750 shall take precedence over the document instruction. Until companies 751 that supply interpreters for PDLs, such as PostScript and PCL allow a 752 way to external attributes (such as IPP attributes) to take precedence 753 over internal job production instructions, a Printer might not be able 754 to implement the semantics that IPP attributes override (take on a 755 higher precedence) the embedded PDL instructions. Therefore, IPP 756 introduces a special Job Template attribute named "best-effort". This 757 attribute gives the end user some ability to influence, or at least 758 understand, how a particular Printer implementation handles these 759 conflicts. 761 This attribute takes on the following values: 763 - 'shall-honor-ipp-attributes': If a Printer supports this value and 764 a client requests this value, the Printer guarantees that all IPP 765 attribute values take precedence over embedded instructions in the 766 job data (the PDL of the job's documents). 767 - 'should-honor-ipp-attributes': If a Printer supports this value, 768 and a client requests this value, the Printer should try to make 769 sure that IPP attribute values take precedence over embedded PDL 770 instructions, however there is no guarantee 772 ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should- 773 honor-attribute-prcedence'? 775 A Printer SHALL implement the "best-effort-supported" attribute. Notice 776 that since 'should-honor-ipp-attributes' does not offer any type of 777 guarantee, a Printer may not do a very "good" job of implementing the 778 semantics of "should", but it would still be a conforming 779 implementation. 781 If there is ever a conflict between what a Printer supports and what an 782 IPP client requests, the Printer shall reject the print request. A 783 client should query the printer to find out what is supported before 784 making a request. This ensures that all requested attribute values are 785 supported. 787 ISSUE: Should this be called "effort-level" rather than "best-effort"? 789 June 3, 1997, Expires December 3, 1997 790 4.6 Object Identity 792 All instances of Printer and Job objects have an identifier attribute 793 whose value is globally unique so that they can persistently and 794 unambiguously referenced. The IPP model requires that these values be 795 URIs as defined by RFC 1738 and RFC 1808. In addition to an identifier 796 attribute, instances of Printer and Job objects may have a name. An 797 object name need not be unique across all instances of all objects. 798 The Printer name is chosen and set by an administrator. The Job name is 799 created by the Printer using the name of the first document in the job. 800 In all cases, the name only has local meaning, and is not constrained to 801 be globally unique. 803 To summarize, each instance of Printer and Job objects will have two 804 identifying attributes: 806 - "xxx-URI": The globally unique identifier for this object instance 807 - "xxx-name": The non-globally unique name for this object instance 809 Document objects only have names, no identifiers. The "document-name" 810 attribute is used to store the name of the Document. This name is just 811 of interest within the context of a Job. It need not be globally 812 unique. 814 If Documents are printed by reference, they are identified by URIs. 816 5. IPP Operations 818 Jobs and Printers each have a set of associated operations. End users or 819 programs invoke these operations using an IPP client. The operations 820 are: 822 For a Printer object: 823 Create-Job (section 0) 824 Print-Job (section ???) 825 Get-Attributes (section 0) 826 Get-Jobs (section 0). 828 For a Job object: 829 Send-Document (section ??) 830 Cancel-Job (section 0) 831 Get-Attributes (section 0) 833 IPP Job and Printer objects are identified by URIs. When a client 834 communicates with a remote IPP object, it sends an operation request to 835 the URI for that object. Each request carries along with it the input 836 parameters and data required to perform the specified operation. Each 837 request requires a response from the object indicating success or 839 June 3, 1997, Expires December 3, 1997 840 failure of the operation including response data and/or error messages. 841 The representation and encoding of the IPP protocol are contained in 842 "Internet Printing Protocol: Protocol Specification."[23] 844 It is assumed that URIs for IPP Printers are available to end users or 845 programs that wish to invoke Printer operations. Although NOT 846 MANDATORY, it is RECOMMENDED that Printers be registered in a directory 847 service which end users and programs can interrogate. "Internet Printing 848 Protocol: Directory Schema"[24] defines the attributes to be associated 849 with a Printer entry in a directory service. 851 5.1 Operation Semantics 853 In this section, the IPP operations are described in terms of their 854 contents and semantics including both the request and the response. 856 In order to create a new Job object, a client MAY use one of two 857 operations: either the Create-Job operation or the Print-Job operation. 858 If the client wants to create a Job with only a single Document, the 859 client MAY use the Print-Job operation or a Create-Job operation 860 followed by a single Send-Document operation. For performance reasons, 861 the client SHOULD use the Print-Job operation for all single Document 862 Jobs. If the client wants to create a Job with more than one Document, 863 the client SHALL use the Create-Job operation followed by as many Send- 864 Document operations as needed (on Document per Send-Document operation). 865 The Print-Job operation is a convenience operation for creating a Job 866 with only one Document. Throughout this model specification, the term 867 create request is used to refer to either a Create-Job Request or a 868 Print-Job Request. 870 5.1.1 Print-Job Operation 872 When an end user desires to submit a print job with only one document, 873 the client sends a Print-Job Request to a Printer and receives a Print- 874 Job Response from that Printer. The information in a Print-Job Request 875 (along with any default information associated with the Printer) is 876 sufficient for the Printer to create a Job object and then process that 877 Job. 879 5.1.1.1 Print-Job Request 881 The following elements are part of the Print-Job Request: 883 Job Template Attributes: 884 An optional set of Job Template attributes as defined in section 885 6.2 Job Template Attributes. If the client supplies no Job 886 Template attributes in the Create-Job Request, the Printer uses its 887 default value attributes when processing the job. 889 June 3, 1997, Expires December 3, 1997 891 Document Content 892 The client either supplies the raw document data or a URI reference 893 to the data but not both. 895 The simplest Print-Job Request consists of just the Document Content and 896 nothing else. This means that the Printer SHALL create a new Job object 897 with no Job Template attributes and a single contained Document. 899 When a Printer receives a Print-Job Request, the Printer SHALL either 900 accept or reject the request. The Printer SHALL accept the Print-Job 901 Request and SHALL create a Job object if it is able to accept all 902 attributes in the request. The Printer SHALL reject the request and 903 SHALL NOT create a Job object if the Printer rejects any attribute in 904 the request. There are six cases to consider with respect to each Job 905 and Document attributes: 907 1. The client supplies a Job Template attribute named "xxx" and the 908 value supplied by the client is among the values supported by the 909 Printer (i.e., is among the values of the Printer's "xxx-supported" 910 attribute): The "xxx" Job Template attribute is accepted. If the 911 "best-effort-supported" attribute contains the value 'shall-honor- 912 ipp-attributes' the Printer SHALL guarantee the behavior 913 represented by the value in the "xxx" attribute (i.e., the IPP 914 attribute has precedence over any other embedded job instruction). 915 If the value of the "best-effort-supported" is 'should-honor-ipp- 916 attributes' then the Printer SHOULD try to realize the behavior 917 requested by the client, but NEED NOT guarantee the behavior. The 918 Printer creates the Job object and implements the "xxx" attribute 919 in the new Job object and uses the value supplied by the client. 921 2. The client supplies an attribute value but the attribute is 922 syntactically bad: The Printer shall reject the job and return the 923 ??? error code. 925 3. The client supplies an attribute value and the attribute value is 926 not among the values supported by the Printer: The Printer SHALL 927 reject the job and return the 'attribute-unsupported' error code. 929 4. The client supplies an attribute value and the Printer does not 930 implement the attribute: The attribute is ignored. The Printer 931 behaves as if the attribute was never supplied by the client in the 932 Print-Job Request. In the response, the Printer SHALL return the 933 names of all ignored attributes. The final result of the Job is 934 undefined for an ignored attribute (that is the desired behavior 935 might or might not be realized). 937 ISSUE: Should the printer just reject the job? 939 June 3, 1997, Expires December 3, 1997 940 5. The client does not supply an attribute, but the Printer 941 implements the attribute: The attribute is accepted and when the 942 Printer creates the Job object, the Printer SHALL NOT implement the 943 attribute in the Job object. When the Printer processes that Job, 944 the Printer SHOULD attempt to use the behavior implied by the 945 default value Printer attribute as set at the time of Job 946 processing (not Job creation). In other words, these rules allow 947 for a Job object to be created without implementing some of the Job 948 Template attributes. As the Printer processes the Job, if the 949 Printer implements a default value attribute for the missing Job 950 Template attribute, the Printer does its best to realize the 951 behavior of the default value. If the Printer does not implement 952 the default value attribute, the results are undefined. 954 Note: For each Job Template attribute, this specification REQUIRES 955 that a Printer to implement the CONDITIONALLY MANDATORY attributes. 957 6. The client does not supply an attribute, and the Printer does not 958 implement the attribute: The Printer accepts the Job and creates a 959 Job object. When the Job is processed, the actual behavior 960 realized with respect to the missing Job Template attribute is 961 undefined. 963 5.1.1.2 Print-Job Response 965 The Printer shall return to the client the following output parameters 966 as part of the Print-Job Response: 968 Job Identifier: 969 A URI which the client shall use for all other operations on this 970 Job 972 Job Status: 973 The following Job attributes: job-name, job-state, and job-state- 974 reasons. The value of each attribute shall be from a snapshot 975 taken sometime after the time the Printer receives the print 976 request. The "job-state-message" attribute is OPTIONAL. 978 Note: Since any job affecting printer state information is 979 reflected in the "job-state" and "job-state-reasons" job 980 attributes, it is sufficient to return only job status attributes 981 and no printer status attributes at Job creation time. 983 Ignored Attributes: 984 A list of attribute names which were ignored in the creation of the 985 Job object. 987 June 3, 1997, Expires December 3, 1997 989 Unsupported Attributes: 990 A list of attribute names which are unsupported. Any attributes in 991 this list imply that the Job object was not created. 993 Bad Attributes: 994 A list of attribute names which were syntactically incorrect. Any 995 attributes in this list imply that the Job object was not created. 997 Status 998 Status information including error status 1000 The simplest response shall consist of the job identifier, the Job 1001 Status attributes, and an operation status that is either an "ok" status 1002 or an "error" status. 1004 5.1.2 Create-Job Operation 1006 When an end user desires to submit a print job, the client sends a 1007 Create-Job Request to a Printer and receives a Create-Job Response from 1008 that Printer. The information in a Create-Job Request along with any 1009 default information associated with the Printer is sufficient for the 1010 Printer to create a Job object. An instance of a Job object contains 1011 all the information needed by the Printer to print one or more documents 1012 as a print job. If the client follows the Create-Job operations with as 1013 many Send-Document operations as needed. 1015 5.1.2.1 Create-Job Request 1017 The following elements are part of the Create-Job Request: 1019 Number of Documents: 1020 An optional integer value specifying the number of Documents for 1021 this Job. The document data is transferred in a series of 1022 subsequent Send-Document operations (one document per Send-Document 1023 operation). If this value is not supplied by the client, the 1024 Printer waits to receive an empty Send-Document operation signaling 1025 the end of Documents for this Job. If the client wants to create a 1026 Job with only a single document, the client MAY use the Print-Job 1027 operation. This is a convenience operation for creating a Job with 1028 only one Document. The Print-Job Operation is semantically the 1029 same as a Create-Job operation followed by one Send-Document 1030 operation. 1032 Job Template Attributes: 1033 An optional set of Job Template attributes as defined in section 1034 6.2 Job Template Attributes. If the client supplies no Job 1036 June 3, 1997, Expires December 3, 1997 1037 Template attributes in the Create-Job Request, the implemented 1038 Printer defaults are used. 1040 The simplest Create-Job Request has no data which means that the Printer 1041 SHALL create a new Job object with no Job Template attributes and the 1042 number of Documents is yet to be determined. 1044 When a Printer receives a Create-Job Request, the Printer SHALL 1045 either accept or reject the request. The rules for accepting or 1046 rejecting a Create-Job Request are the same as the rules for 1047 accepting or rejecting the Print-Job Request (see section 5.1.1.1 1048 Print-Job Request). 1050 5.1.2.2 Create Job Response 1052 The Printer shall return to the client the following output parameters 1053 as part of the Create-Job Response: 1055 Job Identifier: 1056 A URI which the client shall use for all other operations on this 1057 Job 1059 Job Status: 1060 The following Job attributes: job-name, job-state, and job-state- 1061 reasons. The value of each attribute shall be from a snapshot 1062 taken sometime after the time the Printer receives the print 1063 request. 1065 Note: Since any job affecting printer state information is 1066 reflected in the "job-state" and "job-state-reasons" job 1067 attributes, it is sufficient to return only job status attributes 1068 and no printer status attributes at Job creation time. 1070 Ignored Attributes: 1071 A list of attribute names which were ignored in the creation of the 1072 Job object. 1074 Unsupported Attributes: 1075 A list of attribute names which are unsupported. Any attributes in 1076 this list imply that the Job object was not created. 1078 Bad Attributes: 1079 A list of attribute names which were syntactically incorrect. Any 1080 attributes in this list imply that the Job object was not created. 1082 Status 1083 Status information including error status 1085 June 3, 1997, Expires December 3, 1997 1087 The simplest response shall consist of the job identifier, the Job 1088 Status attributes, and an operation status that is either an "ok" status 1089 or an "error" status. 1091 5.1.3 Send-Document Operation 1093 Once a Job object has been created using a Create-Job operation, a 1094 client uses the Send-Document operation to transport the documents to be 1095 printed and add them to the named Job object. A document MUST be sent 1096 in a single Send-Document operation. 1098 5.1.3.1 Send-Document Request 1100 The client submits the request to a Job URI. 1102 The following abstract data types are part of the Send-Document Request: 1104 Document Attributes: 1105 An optional set of Document Description attributes (section 6.4 1106 Document Attributes). 1108 Document Content: 1109 The client either supplies the raw document data or a URI reference 1110 to the data but not both. 1112 5.1.3.2 Send-Document Response 1114 The following abstract data types are part of the Send-Document 1115 Response: 1117 Job Status: 1118 The following Job attributes: job-name, job-state, and job-state- 1119 reasons. The value of each attribute shall be from a snapshot 1120 taken sometime after the time the Printer receives the print 1121 request. 1123 Note: Since any job affecting printer state information is 1124 reflected in the "job-state" and "job-state-reasons" job 1125 attributes, it is sufficient to return only job status attributes 1126 and no printer status attributes at Job creation time. 1128 Ignored Attributes: 1129 A list of attribute names which were ignored in the creation of the 1130 Job object. 1132 June 3, 1997, Expires December 3, 1997 1134 Unsupported Attributes: 1135 A list of attribute names which are unsupported. Any attributes in 1136 this list imply that the Job object was not created. 1138 Bad Attributes: 1139 A list of attribute names which were syntactically incorrect. Any 1140 attributes in this list imply that the Job object was not created. 1142 Status: 1143 Status information including error status 1145 5.1.4 Cancel Job Operation 1147 This operation allows a user to cancel one specific Print Job any time 1148 after the print job has been established on the Printer. Some pages may 1149 be printed before a job is terminated if printing has already started 1150 when the Cancel Job operation is received. Only the end user who is 1151 also the job originator ("job-originating-user" Job attribute) can 1152 cancel the job using IPP 1.0. 1154 5.1.4.1 Cancel-Job Request 1156 The client submits the request to a Job URI. 1158 The following abstract data types are part of the Cancel Job Request: 1160 Message: 1161 Optional message to the operator 1163 5.1.4.2 Cancel-Job Response 1165 The following information is part of the Cancel Job Response: 1167 Status: 1168 Status information including error status 1170 5.1.5 Get-Attributes Operation 1172 The Get-Attributes operation allows client to obtain information from a 1173 Printer or Job object. The client supplies the set of attributes names 1174 and/or attribute group names that the requester is interested in as 1175 operation input parameters. The Printer shall return a corresponding 1176 attribute list in the response with the appropriate attribute values 1177 filled in for each attribute (explicitly named or implicitly included in 1178 an attribute group) that the client supplied in the request. 1180 June 3, 1997, Expires December 3, 1997 1181 5.1.5.1 Get-Attributes Request 1183 The client shall submit the Get-Attributes request to a Job URI or 1184 Printer URI. 1186 The following input parameters shall be part of the Get-Attributes 1187 Request: 1189 Document Format: 1190 The client shall supply this input parameter only when requesting 1191 attributes of the Printer object. The Printer shall reject this 1192 request, if this input parameter is supplied for a Job object. 1194 This input parameter conditions the Printer attributes and values 1195 that might depend on the document format. The Printer shall return 1196 only (1) those attributes that are implemented and (2) the 1197 attribute values that are supported for the specified document 1198 format. By specifying the document format, the client can 1199 eliminate the attributes that are not implemented and values that 1200 are not supported for the document format that the client has or is 1201 able to generate. 1203 If the client omits this input parameter, the effect shall be the 1204 same as if the value of the Printer's document format attribute 1205 were supplied. It is recommended that the client always supply a 1206 value for document-format, since the Printer's default value for 1207 document-format may be 'auto-sense', in which case the returned 1208 attributes and values are for the union of the document formats 1209 that the Printer supports in its 'auto-sense' support." 1211 Requested Attributes: 1212 An optional set of attribute names (without values) or attribute 1213 group names in whose values the requester is interested. If the 1214 client omits this input parameter, the effect shall be the same as 1215 if the "all" attribute group were supplied. 1217 Attributes may be requested by name or by group name. For Jobs, the 1218 attribute groups include: 1220 - 'job-template': the attributes specified in Section 6.3.1 Job 1221 Template Attributes. 1222 - 'job-description': the attributes specified in Section 6.3.2 Job 1223 Description Attributes. 1225 For Printers, the attribute groups include: 1227 - 'printer-job-template': the attributes specified in Section 6.5.1 1228 Printer Job Template Attributes. 1230 June 3, 1997, Expires December 3, 1997 1232 - 'printer-description': the attributes specified in Section 6.5.2 1233 Printer Description Attributes. 1235 There are also special groups: 1237 - 'none': no attributes of the specified object. Note: none is 1238 primarily useful in Get-Jobs, but can be used as a "ping" with the 1239 Get-Attributes operation. 1240 - 'all': all attributes of the specified object 1242 5.1.5.2 Get-Attributes Response 1244 The Printer shall return the following output parameters as part of the 1245 Get-Attributes Response: 1247 Result Attributes: 1248 The requested attributes of the object with their current values, 1249 if the requester supplied any Requested Attributes. If the request 1250 did not supply any attribute names, the Printer shall assume that 1251 the client is implicitly requesting the default group of "all" and 1252 shall return all attributes implemented for the specified Job or 1253 Printer object. 1255 Unimplemented Attributes: 1256 A list of attribute names which are unimplemented. 1258 Unknown: 1259 A list of attribute names which are unknown. 1261 Status: 1262 Status information including error status 1264 A Printer may choose, for security reasons, not to return all attributes 1265 that a client requests. It may even return none of the requested 1266 attributes. In such cases, the status returned is the same as if the 1267 Printer had returned all requested attributes. The client cannot tell by 1268 such a response whether the requested attribute was present or absent on 1269 the Printer. 1271 In response to a "Get-Attributes" (or a "Get-Jobs") operation the 1272 following requirements apply to the Printer: 1274 1. If the client supplies an attribute name in the Requested 1275 Attribute input parameter and that attribute is implemented by the 1276 Printer, the printer shall respond with all current values for that 1277 attribute. If the value of an implemented attribute is unknown for 1279 June 3, 1997, Expires December 3, 1997 1280 some reason, the Printer shall respond with the attribute name in 1281 the "unknown attribute list" response parameter. 1283 2. If the client supplies an attribute name in the Requested 1284 Attribute input parameter that attributed is not implemented by the 1285 Printer, the Printer shall respond with the attribute name in the 1286 "unimplemented attribute list" response parameter. 1288 3. If the client supplies an attribute group that is implemented by 1289 the Printer, the Printer shall respond with all current values for 1290 each implemented attribute in the group. It shall not respond for 1291 unimplemented attributes in the group. If the value of an attribute 1292 is unknown for some reason, the Printer shall respond with the 1293 attribute name in the "unknown attribute list" response parameter. 1295 4. If the client supplies an attribute group keyword that is not 1296 implemented, the Printer has no means for determining if it is an 1297 unimplemented attribute or attribute group. In this case, the 1298 Printer assumes that it is an unimplemented attribute and responds 1299 as if it is an unimplemented attribute (the Printer responds with 1300 the attribute name in the "unknown attribute list" response 1301 parameter). 1303 5.1.6 Get-Jobs Operation 1305 The Get-Jobs operation allows a client to retrieve Printer attributes 1306 and a list of print jobs belonging to the target Printer object. A list 1307 of Job attribute names or attribute group names that the client is 1308 interested in seeing may be included in the request. 1310 This operation is like Get-Attributes, except that Get-Jobs operation 1311 returns attributes from more than one object. 1313 5.1.6.1 Get-Jobs Request 1315 The client shall submit the Get-Jobs request to a Printer URI. 1317 The following input parameters are part of the Get-Jobs Request: 1319 Job Owner 1320 This is the user-name. If the value is non-null, then the 1321 requester wants only those jobs whose job-originating-owner is the 1322 same as the specified user-name. If the value is null, then the 1323 requester wants all jobs. 1325 Limit 1326 This is an integer value which indicates a limit to the number of 1327 Jobs returned. The limit is a "stateless limit" in that if the 1329 June 3, 1997, Expires December 3, 1997 1330 limit is n then only the first n jobs are returned in the Get-Jobs 1331 Response; there is no mechanism to allow for the "next" n jobs. 1332 The limit applies across all Job States requested. For example, if 1333 the limit if 50, and there are 75 jobs in the 'completed' state and 1334 25 in the 'pending state' and the client requests first 'completed 1335 jobs' and then 'pending' jobs, only the first 50 'completed' jobs 1336 are returned. The other 25 'completed' jobs are not returned and 1337 neither are any of the 'pending' jobs returned. 1339 Job States 1340 A possibly empty set of job state values. If the set is not empty, 1341 then the requester wants only those jobs whose job-state is the 1342 same as one of the specified job state values. If this operation 1343 parameter has more than one value, the Printer SHALL return the 1344 jobs grouped by state with each group being in the same order as 1345 supplied by the client in this parameter. Within each group, the 1346 jobs are ordered from oldest to newest with respect to completion 1347 time (either actual or expected). For example, if the client 1348 requests all 'pending' and 'completed' jobs, first all jobs in the 1349 'pending' state are returned (ordered from oldest to newest) and 1350 then all jobs in the 'completed' state are returned (ordered from 1351 oldest to newest). If the client request all 'completed' and 1352 'processing' jobs, first all jobs in the 'completed' state are 1353 returned (ordered from oldest to newest) and then all jobs in the 1354 'processing' state are returned (oldest to newest). If the client 1355 does not supply this operation parameter, the value SHALL be 1356 assumed to be (by both the client and the Printer) first 'pending' 1357 and then 'processing'. 1359 Requested Job Attributes: 1360 A optional set of attribute names (without values) or attribute 1361 groups names in whose values the requester is interested from each 1362 of the jobs on the specified Printer. The attribute group names 1363 are the same as for the Get-Attributes operation for the Job 1364 object. If the client omits this input parameter, the effect shall 1365 be the same as if the 'none' attribute group were supplied. 1367 5.1.6.2 Get-Jobs Response 1369 The Printer shall return the following output parameters as part of the 1370 Get-Jobs Response: 1372 Result Attributes: 1373 The result includes zero or more objects each with zero or more 1374 attributes. Each Job is returned in chronological order. This 1376 June 3, 1997, Expires December 3, 1997 1377 order is explicitly defined to be: oldest to newest with respect to 1378 completion time, either actual or expected. 1380 If the client did not supply any Job attributes, the Printer shall 1381 assume that the client is implicitly requesting the 'none' group 1382 (that is no Job attributes are returned, just the Job URI for each 1383 Job). 1385 Status 1386 Status information including error status 1388 A Printer may choose, for security reasons, not to return all attributes 1389 that a client requests. It may even return none of the requested 1390 attributes. In such cases, the status returned is the same as if the 1391 Printer had returned all requested attributes. The client cannot tell by 1392 such a response whether the requested attribute was present or absent on 1393 the Printer. 1395 5.2 Operation Status and Messages 1397 The Status code provides information on the results of a request. 1398 The Message provides a short textual description of the Status. The 1399 Status is intended for use by automata and the Message is intended 1400 for the human user. An IPP application (i.e. a browser, GUI, print 1401 driver or gateway) is not required to examine or display the Message. 1403 5.3 Status Codes (type2 keyword) 1405 Each Status is described below, including a description of which 1406 operation(s) it can follow and any meta-information required in the 1407 response. 1409 ISSUE: Keith's doc still need to go here. 1411 6. Object Attributes 1413 This section describes the attributes with their corresponding syntaxes 1414 and values that are part of the IPP model. The sections below show the 1415 objects and their associated attributes which are included within the 1416 scope of this protocol. Many of these attributes are derived from other 1417 relevant specifications: 1419 - ISO/IEC 10175 DPA (Final, June 1996) 1420 - RFC 1759 Printer MIB (Proposed Standard, May 1995) 1421 - Internet-Draft: Printer MIB (Draft Standard in progress, December 1422 1996) 1423 - Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997) 1425 June 3, 1997, Expires December 3, 1997 1427 Each attribute is uniquely identified in this document using a "keyword" 1428 in the section header describing that attribute. A keyword is a 1429 sequence of characters (length of 1 to 255) which consists of just 1430 letters, digits, hyphen ("-"), and underscore ("_"). With these 1431 restrictions, there will be a straight forward encoding of these 1432 keywords onto real values in the protocol specification. Not only are 1433 attributes uniquely identified with keywords, some attributes take on a 1434 syntax which is a set of keywords. This set of keywords represents the 1435 domain of the attribute. 1437 6.1 Attribute Syntaxes 1439 The following table shows the basic syntax types that a client and 1440 server shall be able to handle. 1442 Table 1 - Attribute Syntaxes 1444 Basic Type Description Comments 1446 text a sequence of For free form human 1447 characters; readable text 1448 length: 0 to intended for human 1449 4095; consumption. 1450 characters: any 1452 name a sequence of For referencing some 1453 characters; object via a user- 1454 length: 1 to friendly string, 1455 255; such as a Printer 1456 characters: any name, a document 1457 name, a user name, 1458 or a host name. May 1459 include the SPACE 1460 character. 1462 Note: The protocol 1463 may need to provide 1464 means to quote the 1465 SPACE character if 1466 the protocol uses 1467 SPACE for other 1468 purposes. 1470 fileName a sequence of For referencing some 1471 characters; file. The limit is 1472 length: 1 to the same as POSIX 1473 1024; 1475 June 3, 1997, Expires December 3, 1997 1477 Basic Type Description Comments 1479 characters: any and NT. 1481 keyword a sequence of 1482 characters; identifiers of 1483 length: 1 to entities in the 1484 255; abstract protocol 1485 characters: (specified in this 1486 letters, digits, document). These 1487 hyphen ("-"), entities can be 1488 For semantic 1489 underscore ("_") attribute names or 1490 values of 1491 attributes, When a 1492 keyword is used to 1493 represent an 1494 attribute (its 1495 name), it must be 1496 unique within the 1497 full scope of IPP 1498 objects and 1499 attributes. When a 1500 keyword is used to 1501 represent a value of 1502 an attribute, it 1503 must be unique just 1504 within the scope of 1505 that attribute. 1506 That is, a keyword 1507 can not be used for 1508 two different values 1509 of the same 1510 attribute to mean 1511 two different 1512 semantic ideas. 1513 However, the same 1514 keyword can be used 1515 across two or more 1516 attributes, 1517 representing 1518 different semantic 1519 ideas for each 1520 attribute. 1522 uri a sequence of Universal Resource 1523 characters as Identifier 1524 defined in 1525 rfc1738 and 1527 June 3, 1997, Expires December 3, 1997 1529 Basic Type Description Comments 1531 rfc1808 1533 uriScheme a sequence of "http" for HTTP 1534 characters schemed URIs (e.g., 1535 representing the http://...). "ftp" 1536 URI Scheme for FTP schemed URIs 1537 (e.g., ftp://...). 1539 locale a standard ISSUE: What standard 1540 identifier for values will be used 1541 language and for locale? 1542 character set 1544 octetString a sequence of Used for opaque 1545 octets data, such as the 1546 document-content. 1548 boolean two values of like an keywordSet, 1549 'true' and but there are only 1550 'false' two values. Note: An 1551 application might 1552 use a checkbox for 1553 such a value. 1555 integer an integer value each attribute 1556 that is in the specifies the range 1557 range from - constraint 1558 2**31 to 2**31 - explicitly. 1559 1 1561 dateTime a value that absolute date and 1562 holds the date time 1563 and time to the 1564 nearest second. 1566 seconds a non-negative a relative time 1567 integer with 1568 implicit units 1569 of seconds 1571 milliseconds a non-negative a relative time 1572 interger with 1573 implicit units 1574 of milliseconds 1576 June 3, 1997, Expires December 3, 1997 1578 Basic Type Description Comments 1580 integerUnits an integer with an integer value 1581 explicit units expressed in units 1583 ISSUE: we have two 1584 types with implicit 1585 units and one with 1586 explicit units where 1587 the units are 1588 specific for one 1589 attribute: 1590 "printer-speed". 1592 1setOf X 1 or more values for sets of values 1593 of type X. 1595 rangeOf X a range of value for a range of 1596 of type X values, such as 1597 integers 1599 6.1.1 Attribute Extensibility 1601 This document uses prefixes to the keyword basic syntax type in order 1602 to communicate extra information to the reader through its name. This 1603 extra information need not be represented in an implementation 1604 because it is unimportant to a client or Printer. The table below 1605 describes the prefixes and their meaning. 1607 ISSUE: There are some references to the Printer Working Group (PWG). 1608 How do we describe in this document the process for the PWG to 1609 approve type 2 extensions? 1611 Basic Prefix Comments 1612 Type 1614 keyword type1 someone must revise the IPP standard 1615 to add a new name. No private names 1616 are allowed. 1618 keyword type2 implementers can, at any time, add new 1619 values by proposing them to the PWG 1620 for registration (or an IANA-appointed 1621 registry advisor after the PWG is no 1623 June 3, 1997, Expires December 3, 1997 1625 Basic Prefix Comments 1626 Type 1628 longer certified) where they are 1629 reviewed for approval. IANA keeps the 1630 registry. Implementers can support 1631 private (unregistered) with a suitable 1632 distinguishing prefix, such as -xxx- 1633 where xxx is the company name 1634 registered with IANA for use in domain 1635 names. 1637 keyword type3 implementers can, at any time, add new 1638 values by submitting a registration 1639 request directly to IANA, no PWG or 1640 IANA-appointed registry advisor review 1641 is required. Implementers can support 1642 private (unregistered) names with a 1643 suitable distinguishing prefix, such 1644 as -xxx- where xxx is the company name 1645 registered with IANA for use in domain 1646 names. 1648 keyword type4 system administrators can, at any 1649 time, add new installation-defined 1650 names to a local system. Care should 1651 be taken by the administrator to see 1652 that keywords do not conflict with 1653 other keywords defined by the standard 1654 or as defined by the implementing 1655 product. There is no registration or 1656 approval procedure for type 4 1657 keywords. 1659 ISSUE: Since the standard specifies 1660 some of the type 4 values, shouldn't 1661 it be possible to register additional 1662 type 4 values after the standard is 1663 approved? 1665 Note: This standard defines keyword values for all of the above types. 1667 6.2 Job Template Attributes 1669 Job Template attributes describe job processing behavior. Take for 1670 example, a generic Job Template attribute called "xxx": 1672 June 3, 1997, Expires December 3, 1997 1673 1. "xxx" is optionally supplied by the client in a create request. 1674 If "xxx" is supplied, the client is specifying that the Printer 1675 will apply a specific job processing behavior to this job while 1676 processing the Job. When "xxx" is not supplied, the client expects 1677 the Printer will apply the default job processing behavior. 1679 2. "xxx-supported" is a Printer attribute that describes what is 1680 behaviors are supported by that Printer. "xxx-supported" is a 1681 CONDITIONALLY MANDATORY attribute which means that the Printer 1682 only implements the attribute if it is capable of realizing one or 1683 more of the behaviors associated with the attribute and its values. 1684 A client can query the Printer and find out what behaviors are 1685 supported by inspecting at the values in the "xxx-supported" 1686 attribute. 1688 3. The Printer also implements a default value attribute named "xxx". 1689 This default value attribute describes what will be done when no 1690 other job processing information is supplied by the client (either 1691 explicitly as an IPP attribute in the create request or implicitly 1692 as an embedded instruction within the job data). Along with the 1693 supported attribute, the default value attribute is also 1694 CONDITIONALLY MANDATORY. However, if the Printer implements the 1695 "xxx-supported" attribute, the Printer MUST implement the 1696 corresponding default value attribute and vice versa. 1698 4. The Printer OPTIONALLY implements the "xxx-available" attribute. 1699 This attribute describes a state of readiness for each supported 1700 attribute. The supported and available attributes have the same 1701 number of attributes and are ordered so that there is a set of 1702 ordered value pairs between the two attributes. The availability 1703 state of a supported attribute value indicates the level of effort 1704 required by the Printer to actually use resource indicated by the 1705 supported value. The following values are used in the "xxx- 1706 available" attributes: 1708 'ready' - the resource can be used by a Job without human 1709 intervention (the resource is not exhausted) 1710 'not-ready' - the use of the resource requires human intervention 1711 (the resource may be exhausted or not automatically available) 1713 Note: The "xxx-available" attribute only applies to the "media" and 1714 "finishings" attributes. 1716 5. If a client application wishes to present an end user with a list 1717 of supported and default values from which to choose, the client 1718 program should query the supported, default values, and possibly 1719 the available attributes. The values that the client then sends in 1720 the create request will all fall within the supported values at the 1722 June 3, 1997, Expires December 3, 1997 1723 Printer. When querying the Printer, the client MAY enumerate each 1724 attribute by name in the Get-Attributes Request, or the client MAY 1725 just name the "printer-job-template" group in order to get the 1726 complete set of supported, default value, and available attributes 1727 which are implemented. 1729 The "job-priority" attribute is an example of a Job Template attribute. 1730 It is an integer in the range from 1 to 100. A client can query the 1731 Printer for the "job-priority-supported" attribute and the "job- 1732 priority" default value attribute. The supported attribute contains a 1733 set of supported priority values (a range). The default value attribute 1734 contains job priority value that will be used for a new job if the 1735 client does not supply one in the create request. If the client does 1736 supply the "job-priority" attribute, the Printer validates the value to 1737 make sure that it falls within the range of supported values. If the 1738 client-supplied value is supported, the Job object is created and the 1739 "job-priority" attribute is populated with that value. The Job object, 1740 when queried, returns the value supplied by the client. If the client 1741 does not supply a "job-priority" value in the create request, the Job 1742 object is created, but no "job-priority" attribute is implemented for 1743 the Job. The client queries the Printer's default value "job-priority" 1744 value to find out at what priority the job will be processed. 1746 The following table summarize the names, relationships, and conformance 1747 requirements for all Job Template attributes. The following general 1748 rules apply to implementation requirements: 1750 1. In a create request, all Job Template attributes are OPTIONAL. 1752 2. In a Printer Object, all supported attributes are CONDITIONALLY 1753 MANDATORY. 1755 3. All Printer default value attributes are CONDITIONALLY MANDATORY. 1756 However, if the supported attribute is implemented then the default 1757 value attribute MUST be implemented and vice versa. 1759 4. All "available" attributes are OPTIONAL. 1761 The table only shows exceptions to the above rules. The first column 1762 of the table (Job) shows the name and syntax for each Job Template 1764 June 3, 1997, Expires December 3, 1997 1765 attribute in the Job object (in the create request, the same name and 1766 syntax is used). The next three columns show the name and syntax for 1767 each Job Template attribute in the Printer object (the default value 1768 attribute, the supported attribute, and the available attribute). A 1769 "No" in the table means the Printer SHALL NOT implement the attribute. 1771 Job Printer Printer Printer 1772 Default Value Supported Available 1774 job-name No No No 1775 (name, MAN)) 1777 job-sheets job-sheets job-sheets- No 1778 (type4 keyword) (type4 keyword) supported 1779 (1setOf type4 1780 keyword) 1782 notificaiton- notification- No 1783 events events events 1784 (1setOf type2 (1setOf type2 1785 notification- 1786 (1setOf type2 1787 keyword) keyword) keyword) 1789 notification- No notification- No 1790 addresses addresses- 1791 (1setOf uri) supported 1792 (1setOf uri 1793 scheme) 1795 job-priority job-priority job-priority- No 1796 (int) (int) supported 1797 (rangeOf int) 1799 job-hold-until job-hold-until job-hold-until- No 1800 (type4 keyword) (type4 keyword) supported 1801 (1setOf type4 1802 keyword) 1804 multiple- multiple- multiple- No 1805 documents-are documents-are documents-are- 1806 (type2 keyword) (type2 keyword) supported 1807 (1setOf type2 1809 June 3, 1997, Expires December 3, 1997 1811 Job Printer Printer Printer 1812 Default Value Supported Available 1814 keyword) 1816 best-effort best-effort best-effort- No 1817 (type2 keyword) (type2 keyword, supported 1818 MAN) (1setOf type2 1819 keyword, MAN) 1821 media media media-supported media-available 1822 (type4 keyword) (type4 keyword) (1setOf type2 (1setOf avail 1823 keyword) keyword) 1825 number-up number-up number-up- 1826 (type3 keyword) (type3 keyword) supported 1827 (1setOf type3 1828 keyword) 1830 sides sides sides-supported 1831 (type2 keyword) (type2 keyword) (1setOf type2 1832 keyword) 1834 printer- printer- printer- 1835 resolution resolution resolution- 1836 (type2 keyword) (type2 keyword) supported 1837 (1setOf type2 1838 keyword) 1840 print-quality print-quality print-quality - 1841 (type2 keyword) (type2 keyword) supported 1842 (1setOf type2 1843 keyword) 1845 finishings finishings finishings- finishings- 1846 (setOf type2 (setOf type2 supported available 1847 keyword) keyword) (setOf type2 (setOf avail 1848 keyword) keyword) 1850 copies copies copies-supported No 1851 (int) (int) (rangeOf int) 1853 June 3, 1997, Expires December 3, 1997 1854 Job Printer Printer Printer 1855 Default Value Supported Available 1857 compression compression compression- No 1858 (type3 keyword) (type3 keyword) supported 1859 (1setOf type3 1860 keyword) 1862 job-k-octets No job-k-octets- 1863 supported 1864 No 1865 (int) 1866 (rangeOf int) 1868 job-impressions No job-impressions- No 1869 (int) supported 1870 (rangeOf int) 1872 job-media-sheets No job-media- No 1873 (int) sheets-supported 1874 (rangeOf int) 1876 6.2.1 job-name (name) 1878 This attribute defines the name of the job. It is a name that is more 1879 user friendly than the job-URI. 1881 If "job-name" is not supplied in the in the create request, the Printer, 1882 on creation of the Job, shall generate a name which is the name of the 1883 first document in the job. This name comes from the "document-name" 1884 attribute or "document-URI" attribute depending on which attribute is 1885 supplied in the Create-Job Request for the first document. If "job- 1886 name" is supplied in the Create-Job Request, the Printer uses its value 1887 as the name of the created Job. 1889 June 3, 1997, Expires December 3, 1997 1890 6.2.2 job-sheets (type4 keyword) 1892 This attribute determines which of any banner page(s) shall be printed 1893 with a job. 1895 Standard values are: 1897 'none': no job sheet is printed 1898 'standard': a site specific standard job sheet is printed 1899 extensions: names the specific job sheet (banner page) 1901 To force no job sheets, the system administrator SHALL set the only 1902 supported value to 'none'.. To force the use of banner pages, the 1903 supported values shall not include 'none'. If a client requests 'none' 1904 in the create request, the request is rejected. 1906 6.2.3 notification-events (1setOf type2 keyword) 1908 This attribute specifies the events for which the end user desires some 1909 sort of notification. The "notification-addresses" attribute is used to 1910 describe the destination addresses for these events. 1912 Standard values are: 1914 'none': the Printer shall not notify 1915 'all': the Printer shall notify when any of event occurs. 1916 'job-completion': the Printer shall notify when the job containing 1917 this attribute completes with or without errors. 1918 'job-canceled': the Printer shall notify when the job containing 1919 this attribute is canceled by the end-user or by the operator, or 1920 aborts before completion. 1921 'job-problems': the Printer shall notify when this job has a problem 1922 while this job is printing. Problems include any of the "job-state- 1923 reasons" or "printer-state-reason" values 1924 'printer-problems': the Printer shall notify when any job, including 1925 this job, is affected by a Printer problem (the printer has moved 1926 to the stopped state and there is a reason in the printer-state- 1927 reasons attribute) while this job is waiting to print or printing. 1928 Problems include any of the "job-state-reasons" or "printer-state- 1929 reason" values 1931 6.2.4 notification-addresses (1setOf uri) 1933 This attribute describes both where (the address) and how (the mechanism 1934 for delivery ) notification events are to be delivered. The Printer 1935 shall use this attribute as the set of addresses and methods for sending 1936 messages when an event occurs that the end user (job submitter) has 1937 registered an interest in. 1939 June 3, 1997, Expires December 3, 1997 1940 Standard uri scheme values are: 1942 'mailto': email is used 1943 'http': an HTTP method is used to add HTML formatted events to the 1944 end of the specified HTML file. 1945 'ftp': FTP is used to append a record at the end of a specified text 1946 file. 1948 6.2.5 job-priority (integer(1:100)) 1950 This attribute specifies a priority for scheduling the print-job. A 1951 higher value specifies a higher priority. The value 1 is defined to 1952 indicate the lowest possible priority. The value 100 is defined to 1953 indicate the highest possible priority. Priority is expected to be 1954 evenly or "normally" distributed across this range. Among those jobs 1955 that are ready to print, a Printer shall print all jobs with a priority 1956 value of n before printing those with a priority value of n-1 for all n. 1957 The mapping of vendor-defined priority over this range is 1958 implementation-specific. 1960 6.2.6 job-hold-until (type4 keyword) 1962 This job attribute specifies the named time period during which the Job 1963 print job shall become a candidate for printing. 1965 Standard values for named time periods are: 1967 'no-hold': immediately, if there are not other reasons to hold the 1968 job. 1969 'day-time': during the day. 1970 'evening': evening 1971 'night': night 1972 'weekend': weekend (Saturday or Sunday) 1973 'second-shift': second-shift 1974 'third-shift': third-shift (after midnight) 1976 An administrator shall associate allowable print times with a named time 1977 period (by means outside IPP 1.0). An administrator is encouraged to 1978 pick names that suggest the type of time period. 1980 If the value of this attribute specifies a time period that is in the 1981 future, the Printer shall add the 'job-hold-until-specified' value to 1982 the job's "job-state-reasons" attribute and shall not schedule the 1983 print-job for printing until the specified time-period arrives. When 1984 the specified time period arrives, the Printer shall remove the 'job- 1985 hold-until-specified' value from the job's "job-state-reason attribute" 1987 June 3, 1997, Expires December 3, 1997 1988 and, if no other reasons remain, shall consider the job as a candidate 1989 for processing. 1991 If this job attribute value is the named value "'no-hold'", or the time 1992 period has already started , the job shall be a candidate for processing 1993 immediately. 1995 6.2.7 multiple-documents-are (type2 keyword) 1997 This job attribute is relevant only if a job consists of two or more 1998 documents. It controls finishing operations, job-sheet placement, and 1999 the order of documents when the copies attribute exceeds 1. 2001 Standard values are: 2003 'single-document': If the files for the job are a and b, then files a 2004 and b are treated as a single document for finishing operations. 2005 Also, there will be no slip sheets between files a and b. If more 2006 than one copy is made, the ordering shall be a, b, a, b, .... 2007 'separate-documents-uncollated-copies': If the files for the job are 2008 a and b, then each file is treated as a single document for 2009 finishing operations. Also, a client may specify that a slip sheet 2010 be placed between files a and b. If more than one copy is made, 2011 the ordering shall be a, a, b, b, .... 2012 'separate-documents-collated-copies': If the files for the job are a 2013 and b, then each file is treated as a single document for finishing 2014 operations. Also, a client may specify that a slip sheet be placed 2015 between files a and b. If more than one copy is made, the ordering 2016 shall be a, b, a, b, .... 2018 Both of the 'separate-xxx' values force each new document to start on a 2019 new media sheet. 2021 6.2.8 best-effort (type2 keyword) 2023 This attribute determines what to do if there is a conflict between what 2024 a client requests and what a Printer supports. 2026 Standard values for this attribute are: 2028 - 'shall-honor-ipp-attributes': If a Printer supports this value and 2029 a client requests this value, the Printer guarantees that all IPP 2030 attribute values take precedence over embedded instructions in the 2031 job data (the PDL of the job's documents). 2032 - 'should-honor-ipp-attributes': If a Printer supports this value, 2033 and a client requests this value, the Printer should try to make 2035 June 3, 1997, Expires December 3, 1997 2036 sure that IPP attribute values take precedence over embedded PDL 2037 instructions, however there is no guarantee 2039 The client supplies Job Template attributes in the create request to 2040 affect the rendering, production and finishing of the documents in the 2041 job. Similar types of instructions may also be contained in the 2042 document to be printed, that is, within the Page Description Language 2043 (PDL) of the document data. If there is a conflict between the value of 2044 one of these attributes, and a corresponding instruction in the document 2045 (either implicit or explicit), it is desireable that the value of the 2046 attribute shall take precedence over the document instruction. Many of 2047 these job template attributes provides a client with a way to request 2048 some feature at print time that might not have been embedded within the 2049 document data when the document was created. Job template attribute 2050 also provides a client with a way to override a feature at print time 2051 that was embedded within the document data when the document was 2052 created. Note: until companies that supply interpreters for PDLs, such 2053 as PostScript and PCL allow a way to specify overrides for internal job 2054 production instructions, a Printer might not be able to implement these 2055 attributes for some PDLs. 2057 In order to solve this problem, the IPP Printer implements the MANDATORY 2058 best-effort-supported" attribute. If the value of this attribute is 2059 'shall-honor-ipp-attributes', the implementation MUST guarantee that the 2060 IPP attribute values take precedence over any related job processing 2061 instructions in the PDL Job's document data. This can be done by 2062 modifying the interpreter within the output device itself to understand 2063 IPP attributes, or by mergeing theses Job Template attributes directly 2064 into the document data, or in any other implementation specific manner. 2065 In any case, the semantics of 'shall-honor-ipp-attributes' MUST be 2066 preserved. 2068 Note: Since 'should-honor-ipp-attributes' does not offer any type of 2069 guarantee, a Printer may not do a very "good" job of implementing the 2070 semantics of "should", but it would still be a conforming 2071 implementation. 2073 This "best-effort" attribute has nothing to do with conflict between 2074 what a Printer supports and what an IPP client requests. If there is 2075 such a conflict, the Printer shall reject the create request. A client 2076 SHOULD query the printer to find out what is supported before supplying 2077 specific values in a create request. 2079 6.2.9 media (type4 keyword) 2081 This job attribute identifies the medium that the Printer shall use for 2082 all pages of the document regardless of what media are specified within 2083 the document. 2085 June 3, 1997, Expires December 3, 1997 2086 The values for medium include medium-names, medium-sizes, input-trays 2087 and electronic forms so that one attribute specifies the media. If a 2088 printer allows a client to specify a medium name as the value of this 2089 attribute, such a medium name implicitly selects an input-tray that 2090 contains the specified medium. If a printer allows a client to specify 2091 a medium size as the value of this attribute, such a medium size 2092 implicitly selects a medium name which in turn implicitly selects an 2093 input-tray that contains the medium with the specified size. If a 2094 printer allows a client to specify an input-tray as the value of this 2095 attribute, such an input-tray implicitly selects the medium that is in 2096 that input-tray at the time the job prints. This case includes manual- 2097 freed input-trays. If a printer allows a client to specify an 2098 electronic form as the value of this attribute, such an electronic form 2099 implicitly selects a medium-name which in turn implicitly selects an 2100 input-tray that contains the medium specified by the electronic form. 2101 The electronic form also implicitly selects an image that the Printer 2102 shall merge with the data from the document as its prints each page. 2104 Standard values are (taken from ISO DPA and the Printer MIB): 2106 default: 2107 iso-a4-white: 2108 ... 2110 6.2.10 number-up (type3 keyword) 2112 This job attribute specifies the number of source page-images to impose 2113 upon a single side of an instance of a selected medium. 2115 Standard values are: 2117 'none': The Printer shall not include any embellishments and shall 2118 place one logical page on a single side of an instance of the 2119 selected medium without any translation, scaling, or rotation. 2120 'one': The Printer shall place one logical page on a single side of 2121 an instance of the selected medium but is allowed to add 2122 embellishments or some sort of translation, scaling, or rotation. 2123 'two': 2124 'four': 2126 This attribute primarily controls the translation, scaling and rotation 2127 of page images, but a site may choose to add embellishments, such as 2128 borders to each logical page. 2130 6.2.11 sides (type2 keyword) 2132 This attribute specifies how source page-images are to be imposed upon 2133 the sides of an instance of a selected medium. 2135 June 3, 1997, Expires December 3, 1997 2136 The standard values are: 2138 'one-sided': imposes each consecutive source page-image upon the same 2139 side of consecutive media sheets. 2140 'two-sided-long-edge': imposes each consecutive pair of source page- 2141 image upon front and back sides of consecutive media sheets, such 2142 that the orientation of each pair of source-pages on the medium 2143 would be correct for the reader as if for binding on the long edge. 2144 This imposition is sometimes called "duplex". 2145 'two-sided-short-edge': imposes each consecutive pair of source page- 2146 image upon front and back sides of consecutive media sheets, such 2147 that the orientation of each pair of source-pages on the medium 2148 would be correct for the reader as if for binding on the short 2149 edge. This imposition is sometimes called "tumble" or "head-to- 2150 toe". 2152 'two-sided-long-edge' and 'two-sided-short-edge' work the same for 2153 portrait or landscape. That is, "head-to-toe" is "tumble" in portrait 2154 but "duplex" in landscape. "head-to-head" also switches between 2155 "duplex" and "tumble" when using portrait and landscape modes. 2157 6.2.12 printer-resolution (type2 keyword) 2159 This job attribute specifies the resolution that the Printer should use. 2161 The values are type2 keywords which represent single integers or pair of 2162 integers. The latter are to specify the resolution when the x and y 2163 dimensions differ. When two integers are specified, the first is in the 2164 x direction, i.e., in the direction of the shortest dimension of the 2165 medium, so that the value is independent of whether the printer feeds 2166 long edge or short edge first. 2168 The standard values are: 2170 normal: 2171 res-100: 2172 res-300x300: 2173 ... 2175 6.2.13 print-quality (type2 keyword) 2177 This job attribute specifies the print quality that the Printer should 2178 use. 2180 The standard values are: 2182 draft: lowest quality available on the printer 2184 June 3, 1997, Expires December 3, 1997 2185 normal: normal or intermediate quality on the printer 2186 high: highest quality available on the printer 2188 6.2.14 copies (integer(1:2**31 - 1)) 2190 This job attribute specifies the number of copies of the job to be 2191 printed. Note: The effect of this attribute on jobs and documents is 2192 controlled by the multiple-files-are job attribute. 2194 6.2.15 finishings (1setOf type2 keyword) 2196 This job attribute identifies the finishing operation that the Printer 2197 should apply to each copy of each printed document in the job where the 2198 definition of a copy is controlled by the "multiple-documents-are" Job 2199 attributes. 2201 Standard values are: 2203 none: 2204 staple: 2205 ... 2207 6.2.16 compression (type3 keyword) 2209 This attribute identifies compression algorithms used for compressed 2210 document data. 2212 Standard values for this attribute are: 2214 'none': 2215 'zip': 2216 'tar': 2217 ... 2219 6.2.17 job-k-octets (integer(0:2**31 - 1)) 2221 This Job attribute specifies the total size of the job in K octets, 2222 i.e., in units of 1024 octets. The value shall be rounded up, so that a 2223 job between 1 and 1024 octets shall be indicated as being 1K, 1025 to 2224 2048 shall be 2, etc. This attribute is not intended to be a counter as 2225 in the Job Monitoring MIB; it is intended to be useful routing and 2226 scheduling information if known. The Printer might not be able to 2228 June 3, 1997, Expires December 3, 1997 2229 compute this value (if not supplied by the client in the request) at the 2230 time the Job is created. If not, the Printer may implement this 2231 attribute at any later time as it is able to compute the total size of 2232 the Job. 2234 6.2.18 job-impressions (integer(0:2**31 - 1)) 2236 This job attribute specifies the total size of the job in impressions. 2237 This attribute is not intended to be a counter as in the Job Monitoring 2238 MIB; it is intended to be useful routing and scheduling information if 2239 known. The Printer shall try to compute the value if it is not supplied 2240 in the create request. The Printer might not be able to compute this 2241 value (if not supplied by the client in the request) at the time the Job 2242 is created. If not, the Printer may implement this attribute at any 2243 later time as it is able to compute the total size of the Job. 2245 6.2.19 job- media-sheets (integer(0:2**31 - 1)) 2247 This job attribute specifies the total size of the job in media-sheets. 2248 This attribute is not intended to be a counter as in the Job Monitoring 2249 MIB; it is intended to be useful routing and scheduling information if 2250 known. The Printer shall try to compute the value if it is not supplied 2251 in the Create-Job Request. The Printer might not be able to compute 2252 this value (if not supplied by the client in the request) at the time 2253 the Job is created. If not, the Printer may implement this attribute at 2254 any later time as it is able to compute the total size of the Job. 2256 6.3 Job Attributes 2258 The attributes in this section are associated with a Job. 2260 6.3.1 Job Template Attributes 2262 The Job Template attributes which apply specifically to a Job object are 2263 described in section 6.2 Job Template Attributes. These Job specific 2264 attributes form the attribute group called "job-template". 2266 6.3.2 Job Description Attributes 2268 These attributes form the attribute group called "job-description". 2270 Attribute Man 2271 ? 2273 June 3, 1997, Expires December 3, 1997 2275 job-URI Man 2276 (uri) 2278 job-originating- Man 2279 user 2280 (name) 2282 job-originating- 2283 host 2284 (name) 2286 user-locale 2287 (type2 keyword) 2289 job-state Man 2290 (type1 keyword) 2292 job-state-reasons Man 2293 (1setOf type2 2294 keyword) 2296 job-state-message 2297 (text) 2299 output-device- 2300 assigned 2301 (name) 2303 time-since- Man 2304 submission 2305 (milliseconds) 2307 number-of- Man 2308 intervening-jobs 2309 (int) 2311 job-message-from- 2312 operator 2313 (text) 2315 time-since- Man 2316 completion 2317 (milliseconds) 2319 job-k-octets- 2320 completed 2321 (int) 2323 June 3, 1997, Expires December 3, 1997 2324 job-impressions- 2325 completed 2326 (int) 2328 job-media-sheets- 2329 completed 2330 (int) 2332 6.3.2.1 job-URI (uri) 2334 This attribute contains the URI for the job. The Printer, on receipt of 2335 a new job, shall generate a URI which identifies the job on the Printer. 2336 The Printer, shall return the value of the URI job attribute as part of 2337 the PrintResult in the Print operation. The precise format of a job URI 2338 shall be implementation dependent. 2340 6.3.2.2 job-originating-user (name) 2342 This attribute specifies the user name of the person submitting the 2343 print job. The Printer shall set this attribute to the most authentic 2344 name that it can obtain from the protocol over which the operation was 2345 received from the client. 2347 6.3.2.3 job-originating-host (name) 2349 This attribute identifies the originating host of the job. The Printer 2350 shall set this attribute to the most authentic host name it can obtain 2351 from the protocol over which the operation was received from the 2352 client. 2354 6.3.2.4 user-locale (type3 keyword) 2356 This attribute identifies the locale of the job, i.e, the country, 2357 language, and coded character set. The Printer sets this attribute to 2358 the most authentic value it can obtain from the protocol over which the 2359 Print operation was received from the client. 2361 The Printer shall use this attribute to determine the locale for 2362 notification messages that it sends. 2364 6.3.2.5 job-state (type1 keyword) 2366 This attribute identifies the current state of the job. 2368 June 3, 1997, Expires December 3, 1997 2369 The Printer may provide additional information about each state value by 2370 supplying one or more values of the job's companion "job-state-reasons" 2371 attribute depending on implementation. While the job states cannot be 2372 added to without impacting deployed clients that take actions upon 2373 receiving job state values, it is the intent that additional "job-state- 2374 reasons" values can be defined without impacting such deployed clients. 2375 In other words, the "job-state-reasons" attribute is intended to be 2376 extensible. 2378 Standard values are: 2380 unknown The job state is not known, or its 2381 state is indeterminate. 2382 pending The job is a candidate to start 2383 processing, but is not yet 2384 processing.. 2385 pending- The job is not a candidate for 2386 stopped processing for any number of reasons 2387 and will resume pending as soon as the 2388 reasons are no longer present. The 2389 job's "job-state-reason" attribute 2390 shall indicate why the job is no 2391 longer a candidate for processing. 2393 June 3, 1997, Expires December 3, 1997 2395 processing Either: 2396 1. the job is using, or is attempting 2397 to use, one or more document 2398 transforms which include (1) purely 2399 software processes that are 2400 interpreting a PDL, and (2) hardware 2401 devices that are interpreting a PDL, 2402 making marks on a medium, and/or 2403 performing finishing, such as stapling 2404 OR 2405 2. the server has made the job ready 2406 for printing, but the output device is 2407 not yet printing it, either because 2408 the job hasn't reached the output 2409 device or because the job is queued in 2410 the output device or some other 2411 spooler, awaiting the output device to 2412 print it. 2413 ISSUE: The "job-state-reasons" 2414 specification is that the job is in 2415 'pending' state not 'processing' 2416 state. 2417 When the job is in the 'processing' 2418 state, the entire job state includes 2419 the detailed status represented in the 2420 printer's "printer-state", "printer- 2421 state-reasons", and "printer-state- 2422 message attributes. 2423 Implementations may include additional 2424 values in the job's "job-state- 2425 reasons" attribute to indicate the 2426 progress of the job, such as adding 2427 the 'job-printing' value to indicate 2428 when the output device is actually 2429 making marks on paper. Most 2430 implementations won't bother with this 2431 nuance. 2433 June 3, 1997, Expires December 3, 1997 2435 processing The job has stopped while processing 2436 -stopped for any number of reasons and will 2437 continue processing as soon as the 2438 reasons are no longer present. The 2439 job's "job-state-reason" attribute 2440 shall indicate why the job has stopped 2441 processing. 2442 If the output device is stopped, the 2443 'printer-stopped' value shall be 2444 included in the job's "job-state- 2445 reasons" attribute. When the output 2446 device is stopped, the device usually 2447 indicates its condition in human 2448 readable form locally at the device. 2449 A client can obtain more complete 2450 device status remotely by querying the 2451 printer's "printer-state-reasons" 2452 attribute. 2453 canceled The job has been canceled by a Cancel- 2454 Job operation and is either (1) in the 2455 process of terminating or (2) has 2456 completed terminating. The job's 2457 "job-state-reasons" attribute shall 2458 contain either the 'canceled-by-user' 2459 or 'canceled-by-operator' value. 2460 aborted The job has been aborted by the 2461 system, usually while the job was in 2462 the 'processing' state. 2463 completed The job has completed successfully or 2464 with warnings or errors and all of the 2465 job media sheets have been properly 2466 stacked in the appropriate output tray 2467 or bin. The job's "job-state-reasons" 2468 attribute shall contain one of: 2469 'completed-successfully', 'completed- 2470 with-warnings', or 'completed-with- 2471 errors'. 2473 The length of time that jobs remain in the 'canceled', 'aborted', and 2474 'completed' states depends on implementation. 2476 The following figure shows the normal job state transitions. Other 2477 transitions are unlikely, but are not forbidden. 2479 June 3, 1997, Expires December 3, 1997 2480 +--> canceled 2481 / 2482 +----> pending --------> processing --+----> aborted 2483 | ^ ^ \ 2484 ----+ | | +--> completed 2485 | v v 2486 +----> pending-stopped processing-stopped 2488 Figure 1 - Normal job state transitions 2490 Normally a job progresses only from left to right through three states. 2492 Even though the IPP protocol defines seven values for job states, 2493 Printers SHALL only implement those states which are appropriate for the 2494 particular implementation. 2496 6.3.2.6 job-state-reasons (1setOf type2 keyword) 2498 This attribute identifies the reason or reasons that the job is in the 2499 state that it is in (e.g., 'pending', 'processing', 'completed', etc.). 2500 The Printer shall indicate the particular reason(s) by setting the value 2501 of the job's "job-state-reasons" attribute. 2503 The following standard values are defined for use with the job states 2504 indicated as applicable. 2506 NOTE - For easy of understanding the order of the reasons is presented 2507 in the normal order of job state progression: 2509 none Mandatory: There are no reasons 2510 for the job's current state. 2511 Applicable job states: 2512 'pending', 'processing', 2513 'aborted'. 2514 job-incoming Mandatory. The PrintJob or 2515 CreateJob operation has been 2516 accepted by the Printer, but the 2517 Printer is waiting for additional 2518 SendDocument operations and/or 2519 the transfer of the remainder of 2520 the job or document data. 2521 Applicable job states: 'pending- 2522 stopped' 2523 job-outgoing Optional. The Printer is 2524 transmitting the job to the 2525 output device. 2526 Applicable job states: 'pending' 2528 June 3, 1997, Expires December 3, 1997 2530 job-hold-until- Conditionally mandatory. 2531 specified Mandatory if the "job-hold-until" 2532 job attribute is implemented. 2533 The value of the job's "job-hold- 2534 until" attribute has specified a 2535 time period that has not yet 2536 arrived, so that the Printer 2537 shall not consider the job as a 2538 candidate for processing. 2539 Applicable job states: 'pending- 2540 stopped'. 2541 job-hold-until- Optional. At least one of the 2542 resources-are- resources needed by the job, such 2543 ready as media, fonts, resource 2544 objects, etc., is not ready on 2545 any of the physical printer's for 2546 which the job is a candidate. 2547 Usually such a condition is 2548 detected while the job is in the 2549 'pending' state. If a job starts 2550 processing and encounters a 2551 resource that is not ready, there 2552 are two possible implementations: 2553 (1) the device is stopped and no 2554 jobs can run until the 2555 resource(s) are made ready, in 2556 which case the Printer shall keep 2557 the job in the 'processing' state 2558 and shall add the 'printer- 2559 stopped' reason to the job's 2560 "job-state-reasons" attribute 2561 (not the 'job-hold-until- 2562 resources-are-ready' value) OR 2563 (2) another job is found to use 2564 the device while the current job 2565 goes back to waiting for its turn 2566 and for the resources to be made 2567 ready, in which case the Printer 2568 shall change the job's "job- 2569 state" attribute to 'pending' and 2570 add the 'job-hold-until- 2571 resources-are-ready' value to the 2572 job's "job-state-reasons" 2573 attribute. 2574 Applicable job states: 'pending- 2575 stopped'. 2577 June 3, 1997, Expires December 3, 1997 2579 printer-stopped- Optional. This reason appears in 2580 partly all jobs in the 'pending' state 2581 when the value of the Printer's 2582 "printer-state-reasons" attribute 2583 contains the value 'stopped- 2584 partly'. 2585 Applicable job states: 'pending' 2586 printer-stopped Mandatory. The output device is 2587 stopped. This reason appears in 2588 all jobs in the 'pending' and 2589 'processing' states when the 2590 value of the Printer's "printer- 2591 state" attribute is 'stopped'. 2592 Applicable job states: 'pending- 2593 stopped', 'processing-stopped' 2594 job-printing Optional. The output device is 2595 marking media. This value is 2596 useful for Printers which spend a 2597 great deal of time processing 2598 when no marking is happening and 2599 then want to show that marking is 2600 now happening. 2601 Applicable job states: 2602 'processing', 'processing- 2603 stopped' 2604 job-cancelled-by- Level 2 Mandatory. The job was 2605 user cancelled by the user using the 2606 CancelJob request. 2607 Applicable job states: 2608 'canceled'. 2609 job-cancelled-by- Level 2 Mandatory. The job was 2610 operator cancelled by the operator using 2611 the CancelJob request. 2612 Applicable job states: 2613 'canceled'. 2614 logfile-pending Optional. The job's logfile is 2615 pending file transfer. 2616 Applicable job states: 2617 'canceled', 'aborted', and 2618 'completed'. 2619 logfile- Optional. The job's logfile is 2620 transferring being transferred. 2621 Applicable job states: 2622 'canceled', 'aborted', and 2623 'completed'. 2625 June 3, 1997, Expires December 3, 1997 2627 job-completed- Mandatory. The job completed 2628 successfully successfully. 2629 Applicable job states: 2630 'completed'. 2631 job-completed- Mandatory. The job completed 2632 with-warnings with warnings. 2633 Applicable job states: 2634 'completed'. 2635 job-completed- Mandatory. The job completed 2636 with-errors with errors (and possibly 2637 warnings too). 2638 Applicable job states: 2639 'completed'. 2641 6.3.2.7 job-state-message (text) 2643 This attributes specifies suplimental information about the Job State in 2644 human readable text. It SHALL be set by the Printer. 2646 6.3.2.8 output-device-assigned (uri) 2648 This attribute identifies the Output Device to which the Printer has 2649 assigned this job. If an output device implements an embedded IPP 2650 Printer, the Printer NEED NOT set this attribute. If a Print Server 2651 implements a Printer, the value MAY be empty until the Printer assigns 2652 an output device to the job. 2654 ISSUE: Why is this a uri? 2656 6.3.2.9 time-since-submission (milliseconds) 2658 This attribute indicates the amount of time that has passed since the 2659 Job was first created. 2661 6.3.2.10 time-since-processing (milliseconds) 2663 This attribute indicates the amount of time that has passed since the 2664 Job first entered the processing state. 2666 6.3.2.11 number-of-intervening-jobs (integer(0:2**31 - 1)) 2668 This attribute indicates the number of jobs that are "ahead" of this job 2669 in the current scheduled order. For efficiency, it is only necessary to 2670 calculate this value when an operation if performed that requests this 2671 attribute. 2673 June 3, 1997, Expires December 3, 1997 2674 Note: This attribute is necessary since an end user may request just 2675 their own jobs and they need some relative position indicator if there 2676 are other jobs interspersed in the waiting list which are not returned 2677 in the response or cannot be because of site security policy 2678 restrictions. 2680 6.3.2.12 job-message-from-operator (text) 2682 This attribute provides a message from an operator, system administrator 2683 or "intelligent" process to indicate to the end user the reasons for 2684 modification or other management action taken on a job. 2686 6.3.2.13 time-since-completion (milliseconds) 2688 This attribute indicates the amount of time that has passed since the 2689 Job was first created. 2691 6.3.2.14 job-k-octets-completed (integer(0:2**31 - 1)) 2693 This attribute specifies the number of octets completed in K octets, 2694 i.e., in units of 1024 octets. The value shall be rounded up, so that a 2695 job between 1 and 1024 octets shall be indicated as being 1K, 1025 to 2696 2048 shall be 2, etc. This attribute is intended to be a counter as in 2697 the Job Monitoring MIB. 2699 6.3.2.15 job-impressions-completed (integer(0:2**31 - 1)) 2701 This job attribute specifies the number of impressions completed. This 2702 attribute is intended to be a counter as in the Job Monitoring MIB. 2704 6.3.2.16 job-media-sheets-completed (integer(0:2**31 - 1)) 2706 This job attribute specifies the media-sheets completed. This attribute 2707 is intended to be a counter as in the Job Monitoring MIB. 2709 6.4 Document Attributes 2711 This group of attributes describes the document data for the job. They 2712 are supplied in the Send-Document request. 2714 June 3, 1997, Expires December 3, 1997 2715 Attribute Man 2716 ? 2718 document-name Man 2719 (name) 2721 document-format 2722 (type2 keyword 2724 document-URI 2725 (uri) 2727 6.4.1 document-name(name, Mandatory) 2729 This attribute contains the name of the document used by the client to 2730 initially identify the document. When a client prints by reference, i.e. 2731 includes the document-URI attribute and no document content, this 2732 attribute shall be absent. When a document's contents are spread across 2733 multiple Send Document operations "document-name" is ignored by the 2734 Printer in all but the first Send-Document operation. 2736 6.4.2 document-format (type2 keyword) 2738 This attribute defines the document format of this document. When a 2739 client prints by reference, i.e. includes the document-URI attribute and 2740 no document content, this attribute shall be absent. When a document's 2741 contents are spread across multiple Send-Document operations, document- 2742 format is ignored by the Printer in all but the first Send Document 2743 operation for that document. 2745 This attribute identifies the document format of this document. One 2746 possible supported and default value is 'auto-sense'. However, 'auto- 2747 sense' shall not be sent in the Send-Document Request. 2749 The following standard values have been reviewed with the Printer 2750 Working Group and are registered with IANA as part of the IETF Printer 2751 MIB project. The standard value assigned by the PWG starts with the 2752 four letters: "lang", in order to follow SNMP ASN.1 rules that all enum 2753 symbols shall start with a lower case letter. The keyword values in IPP 2754 shall be the same as the PWG standard values registered with IANA with 2755 the "lang" removed. The MIB (integer) value is included here for 2757 June 3, 1997, Expires December 3, 1997 2758 reference only, the MIB integer value shall not be used in IPP; the 2759 keyword value shall be used instead: 2761 Note: In the protocol specification [22], these keywords will be 2762 encoded as MIME types. 2764 6.4.3 document-URI (uri) 2766 This attribute contains the URI of the document when the document 2767 content is not included in the Send Document operation. Document-number 2768 is the only other attribute allowed when a document-URI attribute is 2769 present in a Send Document operation. 2771 6.5 Printer Attributes 2773 The attributes in this section are associated with a Printer object. 2775 6.5.1 Printer Job Template Attributes 2777 The Job Template attributes which apply specifically to a Printer object 2778 are described in section 6.2 Job Template Attributes. 2780 These Printer attributes form the attribute group named "printer-job- 2781 template". 2783 6.5.2 Printer Description Attributes 2785 These attributes form the attribute group called "printer-description". 2787 A Printer object may be realized in either a print server or output 2788 device. Note: How these attributes are set by an Administrator is 2789 outside the scope of this specification. 2791 Attribute Man? 2793 printer-URI Man 2794 (uri) 2796 printer-name Man 2797 (name) 2799 June 3, 1997, Expires December 3, 1997 2800 printer-location 2801 (text) 2803 printer-description 2804 (text) 2806 printer-more-info- 2807 site 2808 (uri) 2810 printer-driver- 2811 installer 2812 (uri) 2814 printer-make-and- 2815 model 2816 (text) 2818 maximum-printer- 2819 speed 2820 (integerUnits) 2822 printer-more-info- 2823 manf 2824 (uri) 2826 printer-state Man 2827 (type1 keyword) 2829 printer-state- Man 2830 reasons 2831 (type2 keyword) 2833 printer-is- Man 2834 accepting-job 2835 (boolean)s 2837 printer-state- 2838 message 2839 (text) 2841 queued-job-count 2842 (int) 2844 printer-message- 2845 from-operator 2847 June 3, 1997, Expires December 3, 1997 2848 (text) 2850 printer-locale Man 2851 (locale) 2853 printer-locales- Man 2854 supported 2855 (1setOf locale) 2857 multiple-documents- 2858 are-supported 2859 (boolean) 2861 6.5.2.1 printer-URI (uri) 2863 This attribute contains the URI for the printer. An administrator shall 2864 determine a printer's URI and shall set this attribute to that URI. The 2865 precise format of a printer URI shall be implementation dependent. 2867 6.5.2.2 printer-name (name) 2869 This attribute contains the name of the printer. It is a name that is 2870 more user friendly than the printer-URI. An administrator shall 2871 determine a printer's name and shall set this attribute to that name. 2872 This name may be the last part of the printer's URI or it may be 2873 unrelated. In non-US-English locales, a name may contain characters that 2874 are not allowed in a URI. 2876 6.5.2.3 printer-location (text) 2878 This attribute identifies the location of this printer. 2880 6.5.2.4 printer-description (text) 2882 This attribute identifies the descriptive information about the this 2883 Printer. This could include things like: "This printer can be used for 2884 printing color transparencies for HR presentations", or "Out of courtesy 2885 for others, please print only small (1-5 page) jobs at this printer", or 2886 even "This printer is going away on July 1, 1997, please find a new 2887 printer". 2889 June 3, 1997, Expires December 3, 1997 2890 6.5.2.5 printer-more-info-site (uri) 2892 This attribute contains a URI used to obtain more information about this 2893 specific printer. The information obtained from this URI is intended 2894 for end user consumption. Features outside the scope of IPP can be 2895 accessed from this URI. The information is intended to be specific to 2896 this printer instance and site services (e.g. job pricing, services 2897 offered, end user assistance). The manufacturer may initially populate 2898 this attribute. 2900 6.5.2.6 printer-driver-installer (uri) 2902 This attribute contains a URI to use to locate the driver installer for 2903 this printer. This attribute is intended for consumption by automata. 2904 The mechanics of print driver installation is outside the scope of IPP. 2905 The manufacturer may initially populate this attribute. 2907 6.5.2.7 printer-make-and-model (text) 2909 This attribute identifies the make and model of the printer. 2911 ISSUE: Several comments that we should break this up into two 2912 attributes. It is just a text string, so it could really be anything. 2914 6.5.2.8 maximum-printer-speed (integerUnits) 2916 This attribute indicates the maximum printer speed of the Printer in 2917 units of pages per minute, impressions per minute, lines per minute, and 2918 characters per second. A job cannot control a Printer's speed, but a 2919 Printer Browser can use printer speed as a criteria. 2921 The standard units are a type2 setOf keyword : ppm, ipm, spm, lpm, and 2922 cps. These mean pages per minute, impressions per minutes, sides per 2923 minutes, lines per minute, and characters-per-second, respectively. 2925 6.5.2.9 printer-more-info-manf (uri) 2927 This attribute contains a URI used to obtain more information about this 2928 type of printer. The information obtained from this URI is intended for 2929 end user consumption. Features outside the scope of IPP can be accessed 2930 from this URI (e.g., latest firmware, upgrades, print drivers, optional 2931 features available). The information is intended to be germane to this 2932 printer without regard to site specific modifications or services. 2934 June 3, 1997, Expires December 3, 1997 2935 6.5.2.10 printer-state (type1 keyword) 2937 This attribute identifies the current state of the printer. The 2938 printer-state reasons attribute augments the printer-state attribute to 2939 give more detailed information about the Printer is in the given printer 2940 state. 2942 The protocol shall support all values for printer states. A Printer 2943 shall continually keep this attribute set to the value in the table 2944 below which most accurately reflects the state of the Printer. 2946 The following standard values are defined: 2948 unknown The Printer state is not known, or is 2949 indeterminate. A Printer shall use 2950 this state only if it cannot 2951 determine its actual state. 2953 idle If a Printer receives a job (whose 2954 required resources are ready) while 2955 in this state, such a job shall 2956 transit into the processing state 2957 immediately. 2959 If the printer-state-reasons 2960 attribute contains any reasons, they 2961 shall be reasons that would not 2962 prevent a job from transiting into 2963 the processing state immediately, 2964 e.g., toner-low. 2966 Note: if a Printer controls more than 2967 one output device, the above 2968 definition implies that a Printer is 2969 idle if at least one output device is 2970 idle. 2972 June 3, 1997, Expires December 3, 1997 2974 processing If a Printer receives a job (whose 2975 required resources are ready) while 2976 in this state, such a job shall 2977 transit into the pending state 2978 immediately. Such a job shall transit 2979 into the processing state only after 2980 jobs ahead of it complete printing. 2982 If the printer-state-reasons 2983 attribute contains any reasons, they 2984 shall be reasons that do not prevent 2985 the current job from printing, e.g. 2986 toner-low. 2988 Note: if a Printer controls more than 2989 one output device, the above 2990 definition implies that a Printer is 2991 processing if at least one output 2992 device is processing, and none is 2993 idle. 2995 stopped If a Printer receives a job (whose 2996 required resources are ready) while 2997 in this state, such a job shall 2998 transit into the pending state 2999 immediately. Such a job shall transit 3000 into the processing state only after 3001 some human fixes the problem that 3002 stopped the printer and after jobs 3003 ahead of it complete printing. 3005 The printer-state-reasons attribute 3006 shall contain at least one reason, 3007 e.g. paper-jam, which prevents it 3008 from either processing the current 3009 job or transiting a pending job to 3010 the processing state. 3012 Note: if a Printer controls more than 3013 one output device, the above 3014 definition implies that a Printer is 3015 stopped only if all output devices 3016 are stopped. 3018 Note: In the case where a Printer controls more than one output device, 3019 it is tempting to define stopped as when a sufficient number of output 3020 devices are stopped and leave it to an implementation to define the 3022 June 3, 1997, Expires December 3, 1997 3023 sufficient number. But such a rule complicates the definition of 3024 stopped and processing. For example, with this alternate definition of 3025 stopped, a job can move from idle to processing without human 3026 intervention, even though the Printer is stopped. 3028 6.5.2.11 printer-state-reasons (1setOf type2 keyword) 3030 This attribute supplies additional detail about the printer's state. 3032 Each value shall have an adornment to indicate its level of severity. 3033 The three levels are: report (least severe), warning and error (most 3034 severe). 3036 - 'report': it has the adornment of "report". An implementation may 3037 choose to omit some or all reports. Some reports specify finer 3038 granularity about the printer state; others serve as a precursor to 3039 a warning. A report shall contain nothing that could affect the 3040 printed output. 3041 - 'warning': it has the adornment of "warning". An implementation may 3042 choose to omit some or all warnings. Warnings serve as a precursor 3043 to an error. A warning shall contain nothing that prevents a job 3044 from completing, though in some cases the output may be of lower 3045 quality. 3046 - 'error': it has no adornment. An implementation shall include all 3047 errors. If this attribute contains one or more errors, printer 3048 shall be in the stopped state. 3050 ISSUE: How do we indicate report, warning, or error without adornments? 3051 Proposal add a parallel attribute to print-state-reasons and name it 3052 "printer-state-reasons-severity-level". The ith element of the reasons 3053 attribute has the severity level of the ith element of the severity 3054 level attribute. Another proposal: an implementation may add 'error-', 3055 'warning-', or 'report-' to any of the reasons to indicate the level of 3056 severity. 3058 ISSUE: Toner-low should be a warning because it allows printing to 3059 proceed, but in some printers, toner-low may also produce degraded 3060 output. Do we want a fourth category, perhaps severe-warning which 3061 allows a job to continue printing but with reduced quality? 3063 If a Printer controls more than one output device, each value of this 3064 attribute shall apply to one more of the output devices. An error on one 3065 output device that does not stop the Printer as a whole appears as a 3066 warning in the Printer's printer-state-reasons attribute. Such a 3067 Printer's printer-state value may be stopped even with no printer-state- 3068 reasons that are errors. 3070 The following standard values are defined: 3072 June 3, 1997, Expires December 3, 1997 3073 stopped-partly When a Printer controls more than 3074 one output device, this reason 3075 indicates that one or more output 3076 devices are stopped. If the 3077 reason is a report, fewer than 3078 half of the output devices are 3079 stopped. If the reason is a 3080 warning, fewer than all of the 3081 output devices are stopped. 3082 media-needed A tray has run out of media 3083 paper-jam The printer has a paper jam. 3084 paused Someone has paused the Printer. 3085 In this state, a Printer shall 3086 not produce printed output, but 3087 it shall perform other operations 3088 requested by a client. If a 3089 Printer had been printing a job 3090 when the Printer was paused, the 3091 Printer shall resume printing 3092 that job when the Printer is no 3093 longer paused and leave no 3094 evidence in the printed output of 3095 such a pause . 3096 shutdown Someone has removed a Printer 3097 from service, and it may be 3098 powered down or physical removed. 3099 In this state, a Printer shall 3100 not produce printed output, and 3101 unless the Printer is realized by 3102 a print server that is still 3103 active, the Printer shall perform 3104 no other operations requested by 3105 a client, including returning 3106 this value. If a Printer had been 3107 printing a job when it was 3108 shutdown, the Printer need not 3109 resume printing that job when the 3110 Printer is no longer shutdown. If 3111 the Printer resumes printing such 3112 a job, it may leave evidence in 3113 the printed output of such a 3114 shutdown, e.g. the part printed 3115 before the shutdown may be 3116 printed a second time after the 3117 shutdown.. 3119 June 3, 1997, Expires December 3, 1997 3121 connecting-to- The server has scheduled a job on 3122 printer the Printer and is in the process 3123 of connecting to a shared network 3124 output device (and might not be 3125 able to actually start printing 3126 the job for an arbitrarily long 3127 time depending on the usage of 3128 the output device by other 3129 servers on the network). 3130 timed-out The server was able to connect to 3131 the output device (or is always 3132 connected), but was unable to get 3133 a response from the output device 3134 in the time specified by the 3135 printer's printer-timeout-period 3136 attribute. 3137 stopping The printer will be stopping in a 3138 while and will change its reason 3139 to printer-stopped. This reason 3140 is a non-critical, even for a 3141 Printer with a single output 3142 device. When an output-device 3143 ceases accepting jobs, the 3144 Printer will have this state 3145 while the output device completes 3146 printing. 3148 6.5.2.12 printer-is-accepting-jobs (boolean) 3150 This attribute determines whether the printer is currently accepting 3151 job. If the value is true, the printer is accepting jobs. If the value 3152 is false, the printer is currently rejecting any jobs submitted to it. 3154 Note: This value is independent of the printer state and printer-state- 3155 reasons because its value does not affect the current job; rather it 3156 affects future jobs. This attribute may cause the Printer to reject jobs 3157 when the printer-state is idle or it may cause the Printer to accepts 3158 jobs when the printer-state is stopped. 3160 6.5.2.13 printer-state-message (text) 3162 This attribute specifies the additional informaion about the printer 3163 state in human readable text and it shall be set by the Printer (or the 3164 Administrator by some mechanism outside the scope of IPP). When a 3165 Printer returns the value of this attribute to a client, the Printer 3167 June 3, 1997, Expires December 3, 1997 3168 shall localize the value of this attribute to be in the locale of the 3169 user, as specified by the Get-Attributes or Get-Jobs operation. 3171 6.5.2.14 queued-job-count (integer(0:2**31 - 1)) 3173 This attribute contains a count of the number of jobs that are either 3174 pending and/or processing and shall be set by the Printer. 3176 6.5.2.15 printer-message-from-the-operator (text) 3178 This attribute provides a message from an operator, system administrator 3179 or "intelligent" process to indicate to the end user information or 3180 status of the printer, such as why it is unavailable or when it is 3181 expected to be available. 3183 6.5.2.16 printer-locale (locale) 3185 This attribute specifies the current locale that the Printer is 3186 operating in. 3188 6.5.2.17 printer-locales-supported (1setOf locale) 3190 This attribute specifies the locales that the Printer operates in. 3192 7. Conformance 3194 This section describes conformance issues and requirements. This 3195 document introduces model entities such as objects, operations, 3196 attributes, and attribute values. These conformance sections 3197 describe the conformance requirements which apply to these model 3198 entities. 3200 7.1 Conditionally Mandatory 3202 For example, a conditionally mandatory attribute means that a Printer 3203 implementation need not implement the attribute if the attribute 3204 controls a feature that the output device does not implement or 3205 expose. For example, for an output device that can only print on one 3206 side, a Printer need not implement the "sides" attribute. For an 3207 output device that does not support any of the finishing attribute 3208 values, a Printer need not implement the "finishing" attribute. An 3209 implementation that does not allow for 'not-ready' supported values 3210 in addition to 'ready' values, need not implement the corresponding 3211 "xxx-availability" Printer attribute. For an output device with only 3212 a single input tray with only one media type in that tray, a Printer 3213 need not implement the "media" attribute. 3215 June 3, 1997, Expires December 3, 1997 3217 7.2 Client Conformance Requirements 3219 There are no conformance requirements placed on the user interfaces 3220 provided by IPP clients or their applications. For example, one 3221 application might not allow an end user to submit multiple documents 3222 per job, while another does. One application might first query a 3223 Printer object in order to supply a graphical user interface (GUI) 3224 dialogue box with supported and default values whereas a different 3225 application might not. 3227 When sending a Get-Attributes or Create-Job request, an IPP client 3228 need not supply any attributes. 3230 A client shall be able to accept any of the attribute syntaxes 3231 defined in Section 0 that may be returned to it in a response from a 3232 Printer 3234 ISSUE: Are there any attributes that are mandatory for a client to 3235 set in a Print request? 3237 A query response may contain attributes and values that the client 3238 does not implement or expect. Therefore, a client implementation 3239 must gracefully handle such responses and not refuse to interoperate 3240 with a conforming Printer that is returning extended registered or 3241 private attributes and/or attribute values that conform to Section 8. 3242 IANA Considerations, Registered Extensions, Private 3243 Extensions. Some clients may choose to ignore any attributes that it 3244 does not implement. 3246 7.3 Printer Object Conformance Requirements 3248 This section specifies the conformance requirements for conforming 3249 Printer object implementations with respect to objects, operations, 3250 and attributes. 3252 7.3.1 Objects 3254 Conforming Printer implementations shall implement all of the model 3255 objects as defined in this specification in the indicated sections: 3257 Section 0 4.1 Printer Object 3258 Section 0 4.2 Job Object 3259 Section 0 4.3 Document Object 3260 7.3.2 Operations 3262 Conforming Printer implementations shall implement all of the model 3263 operations, including mandatory responses, as defined in this 3264 specification in the indicated sections: 3266 June 3, 1997, Expires December 3, 1997 3267 Section 0 3268 Section Job 0 5.1.4 Cancel Job Operation 3269 Section 0 5.1.5 Get-Attributes Operation 3270 Section 0 5.1.6 Get-Jobs Operation 3271 7.3.3 Attributes 3273 ISSUE: Some Printer attributes are purely software, so that 3274 Conditionally Mandatory doesn't apply, such as Printer Description 3275 Attributes. For example, what does it mean for the "printer- 3276 location" to be Conditionally Mandatory? Should we add a "OPTIONAL" 3277 in the header of the few attributes for which Conditionally Mandatory 3278 doesn't make sense? 3280 Conforming Printer implementations shall implement all of the 3281 mandatory attributes, as defined in this specification in the 3282 indicated sections. Mandatory attributes are indicated as 3283 "MANDATORY" in the header of each sub-section of Section 0 that 3284 specifies the attribute which is copied into the Table of Contents: 3286 ISSUE: What if this list differs from the headers, which wins? 3287 Wouldn't it be safer and more compact to replace the above list with 3288 a reference to section 6 attributes that are flagged as MANDATORY in 3289 the header line (and automatically copied to the Table of Contents)? 3291 Conforming Printer implementations shall implement all conditionally 3292 mandatory attributes in Section 0, i.e., the additional Job and 3293 Printer attributes that represent features that the output device 3294 implements. 3296 It is not required that a conforming Printer implement or support all 3297 values of all implemented attributes. For example, if a Printer 3298 supports some of the "finishing" attribute values in this document, 3299 it is not required that a Printer implement or support all finishing 3300 methods indicated by all the values of the "finishing" attribute 3301 contained in this document. 3303 If a Printer implements a "xxx-supported" attribute it must implement 3304 the corresponding "xxx" default value attribute and vice versa. 3306 7.3.4 Default Value 3308 If the output device itself does not support the concept of a default 3309 value or the output device's default value is unpredictable, or 3310 unknown, the implementation of the Printer shall always supply its 3311 default value to the physical device each time the Printer submits 3313 June 3, 1997, Expires December 3, 1997 3314 the job to the output device. The default value specified by a 3315 Printer shall not be 'unknown'. 3317 7.3.5 Availability 3319 Conforming implementation need not implement the "xxx-available" 3320 attributes since if an "xxx-supported" printer attribute does not 3321 have have an associated "xxx-available" Printer attribute, all 3322 supported values shall be 'ready'. 3324 7.3.6 Printer extensions 3326 A conforming Printer may implement registered extensions and private 3327 extensions, as long as they meet the requirements specified in 3328 Section 8. IANA Considerations, Registered Extensions, Private 3329 Extensions. 3331 7.3.7 Attribute Syntaxes 3333 A Printer shall be able to accept any of the attribute syntaxes 3334 defined in Section 0 in any operation in which a client may supply 3335 attributes. Furthermore, a Printer shall return attributes to the 3336 client in operation responses that conform to the syntax specified in 3337 Section 0. 3339 7.4 Security Conformance Requirements 3341 The security mechanisms being considered for IPP fall outside the 3342 scope of the application layer protocol itself. There are two 3343 mechanisms used to begin secure communications using IPP: 3345 1. Information in the directory entry for an IPP Printer (or from 3346 additional information at a Web site hosting the IPP Priner) indicate 3347 which, if any, security protocols are used in conjunction with IPP. 3349 2. The URI for the IPP Printer contains the security protocol 3350 information (https://..., etc.) 3352 In either case, the security protocol (if any) is initiated first 3353 which allows for the negotiation of security features. IPP is then 3354 run as an application protocol on top of the security protocols. One 3355 cannot "bootstrap" the security features from IPP itself. 3357 8. IANA Considerations, Registered Extensions, Private Extensions 3359 IPP is explicitly designed to be extensible. Additional attributes 3360 can be proposed to be registered by going through the type 2 or type 3361 3 keyword process which will register their specification after 3363 June 3, 1997, Expires December 3, 1997 3364 approval with IANA. In addition specific implementation instances 3365 may support not only the basic protocol as defined in this 3366 specification, but may add vendor-specific private extensions by 3367 prefixing attribute-names with their company name registered with 3368 IANA for use in domains. See attribute syntax section. However, 3369 such private extensions shall not duplicate attribute semantics 3370 already in this specification. 3372 9. Security Considerations 3374 There is another Internet-Draft called "Internet Printing 3375 Protocol/1.0: Security" [22]. That document is being drafted and 3376 reviewed in parallel with this document. The mapping of IPP on top 3377 of appropriate security protocols will be described in that document. 3378 IPP does not introduce any new, general purpose security mechanisms 3379 for authentication and encryption. 3381 A Printer may choose, for security reasons, not to return all 3382 attributes that a client requests. It may even return none of the 3383 requested attributes. In such cases, the status returned is the same 3384 as if the Printer had returned all requested attributes. The client 3385 cannot tell by such a response whether the requested attribute was 3386 present or absent on the Printer. 3388 10. References 3390 [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 3391 J., "Printer MIB", RFC 1759, March 1995. 3393 [2] Berners-Lee, T, Fielding, R., and Nielsen, H., "Hypertext Transfer 3394 Protocol - HTTP/1.0", RFC 1945, August 1995. 3396 [3] Crocker, D., "Standard for the Format of ARPA Internet Text 3397 Messages", RFC 822, August 1982. 3399 [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 1993. 3401 [5] ISO/IEC 10175 Document Printing Application (DPA), Final, June 3402 1996. 3404 [6] Herriot, R. (editor), X/Open A Printing System Interoperability 3405 Specification (PSIS), August 1995. 3407 [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing 3408 Interfaces, POSIX 1387.4 D8, 1994. 3410 June 3, 1997, Expires December 3, 1997 3412 [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail 3413 Extensions) Part One: Mechanism for Specifying and Describing the 3414 Format of Internet Message Bodies", RFC 1521, September, 1993. 3416 [9] Braden, S., "Requirements for Internet Hosts - Application and 3417 Support", RFC 1123, October, 1989, 3419 [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 3420 1179, August 1990. 3422 [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource 3423 Locators (URL)", RFC 1738, December, 1994. 3425 [20] Internet Printing Protocol: Requirements 3427 [21] Internet Printing Protocol/1.0: Model and Semantics (This document) 3429 [22] Internet Printing Protocol/1.0: Security 3431 [23] Internet Printing Protocol/1.0: Protocol Specification 3433 [24] Internet Printing Protocol/1.0: Directory Schema 3435 [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement 3436 Levels", RFC 2119 , March 1997 3438 11. Author's Address 3440 Scott A. Isaacson 3441 Novell, Inc. 3442 122 E 1700 S 3443 Provo, UT 84606 3445 Phone: 801-861-7366 3446 Fax: 801-861-4025 3447 EMail: scott_isaacson@novell.com 3449 Tom Hastings 3450 Xerox Corporation 3451 701 S. Aviation Blvd. 3452 El Segundo, CA 90245 3454 Phone: 310-333-6413 3455 Fax: 310-333-5514 3456 EMail: hastings@cp10.es.xerox.com 3458 June 3, 1997, Expires December 3, 1997 3459 Robert Herriot 3460 Sun Microsystems Inc. 3461 2550 Garcia Ave., MPK-17 3462 Mountain View, CA 94043 3464 Phone: 415-786-8995 3465 Fax: 415-786-7077 3466 Email: robert.herriot@eng.sun.com 3468 Roger deBry 3469 HUC/003G 3470 IBM Corporation 3471 P.O. Box 1900 3472 Boulder, CO 80301-9191 3474 Phone: (303) 924-4080 3475 Fax: (303) 924-9889 3476 Email: debry@vnet.ibm.com 3478 Patrick Powell 3479 San Diego State University 3480 9475 Chesapeake Dr. Suite D 3481 San Diego, CA 92123 3483 Phone: (619) 874-6543 3484 Fax: (619) 279-8424 3485 Email: papowell@sdsu.edu 3487 IPP Mailing List: ipp@pwg.org 3488 IPP Mailing List Subscription: ipp-request@pwg.org 3489 IPP Web Page: http://www.pwg.org/ipp/ 3491 Other Participants: 3493 Chuck Adams - Tektronix 3494 Jeff Barnett - IBM 3495 Ron Bergman - Data Products 3496 Keith Carter, IBM Corporation 3497 Jeff Copeland - QMS 3498 Andy Davidson - Tektronix 3499 Mabry Dozier - QMS 3500 Lee Farrell - Canon Information Systems 3501 Steve Gebert - IBM 3502 David Kellerman - Northlake Software 3503 Rick Landau - Digital 3504 Harry Lewis - IBM 3505 Pete Loya - HP 3507 June 3, 1997, Expires December 3, 1997 3508 Ray Lutz - Cognisys 3509 Mike MacKay, Novell, Inc. 3510 Carl-Uno Manros, Xerox, Corp. 3511 Jay Martin - Underscore 3512 Stan McConnell - Xerox 3513 Pat Nogay - IBM 3514 Bob Pentecost - HP 3515 Rob Rhoads - Intel 3516 David Roach - Unisys 3517 Hiroyuki Sato - Canon 3518 Bob Setterbo - Adobe 3519 Devon Taylor, Novell, Inc. 3520 Mike Timperman - Lexmark 3521 Randy Turner - Sharp 3522 Atsushi Yuki - Kyocera 3523 Lloyd Young - Lexmark 3524 Bill Wagner - DPI 3525 Jim Walker - DAZEL 3526 Chris Wellens - Interworking Labs 3527 Rob Whittle - Novell 3528 Don Wright - Lexmark 3529 Peter Zehler, Xerox, Corp. 3531 12. 3533 June 3, 1997, Expires December 3, 1997 3534 Change History 3536 This section will be deleted when the document is forwarded to the 3537 IESG to be considered for becoming an RFC. The changes are 3538 summarized in reverse chronological order. 3540 12.1 Changes made to version 970512, dated 12-May-1997 to make version 3541 970603, dated 03-June-1997. 3543 1. Removed the idea of "default beahvior" 3545 2. Removed the idea of "best-effort" 'substitute-as-needed' and 'do-not- 3546 substitute' 3548 3. Deleted all of the definitions from section 3 and changed the figures 3550 4. Added references to RFC 2119 (standard conformance language) and 3551 started to capitalize all of the implementation requirement words such 3552 as SHALL, NEED NOT, MUST, etc. 3554 5. Removed font Printer attributes and scheduling algorithm 3556 6. Reformated all the of 6.2 (Job Template) 3558 7. Consolidated the 3 sections on Job Template down into just one 3559 section. 3561 8. Added attribute tables to be beginning of each first level section in 3562 6.0. These tables show attribute name, syntax, and MAND/OPT/etc. 3564 9. Fixed the definitions for Implements and Supports 3566 10. Added Create-Job, Print-Job, and Send-Document operations 3568 11. Reformatted the whole Operations section 3570 12. Reformatted most of the standard values sections for keyword 3571 attributes. This needs to be finished for the next rev of the document. 3573 13. Changed URL to URI. 3575 12.2 Changes made to version 970509, dated 9-May-1997 to make version 3576 970512, dated 12-May-1997. 3578 1. Replaced Print with Create-Job and Send-Document 3580 2. Added status codes (ok, error, and messages) 3582 June 3, 1997, Expires December 3, 1997 3583 3. Removed all "may not" language (replace with might not) 3585 4. Fixed attribute sections to show more detail 3587 5. Misc. typos and edits 3589 12.3 Changes made to version 2.2, dated 5-May-1997 to make version 3590 970509, dated 9-May-1997. 3592 1. 3593 Too many to mention. 3595 12.4 Changes made to version 2.1, dated 24-April-1997 to make version 3596 2.2, dated 5-May-1997. 3598 Added terminology to the conformance section for keyword, attribute, 3599 attribute name, attribute value(s), default, default behavior, 3600 availabilty. 3602 Removed most discussion about adornments and tags, except for 3603 embedded tag and job-state-reasons, report, warning, error tags. 3605 Moved Conformance description to the appropriate operation sections, 3606 so that the Conformance section is a checklist with references to the 3607 sections where the semantics are described. 3609 Changed the job-size attributes into xxx-requested, xxx-completed Job 3610 attributes, and xxx-supported Printer attributes. 3612 12.5 Changes made to version 2.0, dated 26-March-1997 to make version 3613 2.1, dated 22-April-1997. 3615 1. 3616 Added terminology to the conformance section for supported and 3617 implemented. 3619 12.6 Changes made to version 1.8, dated 24-March-1997 to make version 3620 2.0, dated 26-March-1997. 3622 The following changes were made to version 1.8 to make version 2.0: 3624 1. Minor editing fixes 3626 2. Submitted 2.0 as draft-ietf-ipp-model-00.txt 3628 12.7 Changes made to version 1.7, dated 24-Mar-1997 to make version 1.8, 3629 dated 24-March-1997. 3631 The following changes were made to version 1.7 to make version 1.8: 3633 June 3, 1997, Expires December 3, 1997 3634 1. Minor editing fixes 3636 12.8 Changes made to version 1.6, dated 12-Mar-1997 to make version 1.7, 3637 dated 24-March-1997. 3639 The following changes were made to version 1.6 to make version 1.7: 3641 1. Removed Text Handling attributes 3643 2. Removed best-effort tag, added best-effort Job attribute 3645 3. Moved job-name from Job Template to Job Identification 3647 4. Fixed many typos, spelling errors, etc. 3649 5. Removed enum and added keyword 3651 6. Print Response returns Job Status not Printer Status (since Job 3652 status includes interesting Printer 3654 Status) 3656 7. Removed file type, added format to Get-Attributes 3658 8. Added Patrick Powell as author 3660 9. Move conformance to section 1, added client and server 3661 considerations 3663 10. Added a IANA considerations section 3665 11. Added a type4 keyword 3667 12. Removed the notion of "secondary tags" 3669 13. Added more section headers 3671 14. Merged the Job Production Attributes and Document Production 3672 Attributes section 3674 12.9 Changes made to version 1.5, dated 11-Mar-1997 to make version 1.6, 3675 dated 12-March-1997. 3677 The following changes were made to version 1.5, dated 11-Feb-1997 to 3678 make version 1.6, dated 12-March-1997 from the miscellaneous e-mail 3679 messages, suggestions, and agreements: 3681 June 3, 1997, Expires December 3, 1997 3682 1. 3683 Added a new abstract with includes a reference to other IPP 3684 documents 3686 2. 3687 Added Roger deBry's "new intro" document. 3689 3. 3690 Added a modified text diagram showing IPP mapped onto a generic 3691 distributed printing model in section 2.0 3693 4. 3694 Added some new summary and introductory comments to 2.0 to clarify 3695 that this section is not only meant to introduce the IPP model but 3696 to show a mapping onto the various architecture and product 3697 solutions on which IPP will be implemented. 3699 5. 3700 Added a new section (3.4) summarizing the role of object attributes 3701 and introduced the notion of Job Template (Printer and Job) 3702 attributes along with "adornments" 3704 6. 3705 Fixed up section 3.3 on Object relationships. 3707 7. 3708 Fixed Section 3.5 on object identity. This section now shows that 3709 Jobs and Printers have both URLs and Names. Documents have Names 3710 and Ids 3712 8. 3713 Added the correct references to Printer attributes in section 3.1 3715 9. 3716 Fixed the references to Job attributes in section 3.2 3718 10. 3719 Added a high level over view of the IPP operations and their 3720 purpose and interactions to section 4.1 (Roger deBry worked on this 3721 section) 3723 11. 3724 Replaced the security section with a reference to a new IPP 3725 Security document which will eventually be merged back into this 3726 document 3728 12. 3729 In section 5.2 I added subheading for each attribute to more 3730 easily locate the text associated with the attribute as a Job 3731 object attribute and then the text associated with the attribute as 3732 a Printer object attribute. 3734 13. 3735 Reorganized section 3 to include a Document object. 3737 14. 3738 Added IPP Mailing list info to contact list 3740 June 3, 1997, Expires December 3, 1997 3742 12.10 Changes made to version 1.4, dated 27-Feb-1997 to make version 3743 1.5, dated 9-March-1997. 3745 The following changes were made to version 1.4, dated 27-Feb-1997 to 3746 make version 1.5, dated 9-March-1997 from the 3/6/97 telecon 3747 agreements: 3749 1. 3750 Replaced the data types with the ones discussed on the 3/6/97 3751 telecon. Added back octetString, type1Enum, type2Enum, type3Enum 3752 types as well. 3754 2. 3755 Added range constraints to the integer data type. 3757 3. 3758 Changed the xxx-locale attributes to be type3Enum. 3760 4. 3761 Added standard printer-resolution enum values. 3763 5. 3764 Added standard document-format enum values from the Printer MIB and 3765 IANA registries. 3767 6. 3768 Added back job-hold-until attribute using named periods only and 3769 added back the job-hold-until-specified value to the job-state- 3770 reasons attribute. 3772 7. 3773 Changed the job state from printing to processing to agree with the 3774 Printer state and changed the optional job-processing job-state- 3775 reasons value to job-printing for use with Printers that take a lot 3776 of time processing while not marking. 3778 8. 3779 Deleted the second occurrence of the job-name attribute, since we 3780 removed any attributes that are common to both Job and Printer. 3782 9. 3783 Changed job-priority from a type1Enum to integer(1:100) so as to 3784 have more levels so as to be able to match existing systems. 3786 10. 3787 Changed job-retention-period to use integerSeconds, instead of 3788 minutes. 3790 11. 3791 Changed the Text Formatting attributes to take only the computer 3792 points as units. 3794 12. 3795 Changed job-octets to job-K-octets, in order to be able to print 3796 large documents. Aligns with the IETF Job Monitoring MIB. 3798 13. 3799 Clarified that the job-incomplete value of job-state-reasons is 3800 waiting for document data, as opposed waiting for the job to be 3801 closed. 3803 June 3, 1997, Expires December 3, 1997