idnits 2.17.1 draft-ietf-ipp-model-v11-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** 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 Shadow Directories -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 206 longer pages, the longest (page 9) being 68 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 207 pages 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. ** The abstract seems to contain references ([RFC2568], [RFC2616], [RFC2569], [IPP-PRO], [IPP-IIG], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 8 instances of lines with non-RFC2606-compliant FQDNs in the document. == There are 85 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 222 has weird spacing: '...(1setOf type2...' == Line 711 has weird spacing: '...any indicate...' == Line 954 has weird spacing: '... object which...' == Line 1555 has weird spacing: '...charset clien...' == Line 1720 has weird spacing: '...client to ide...' == (15 more instances...) == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The exact meaning of the all-uppercase expression 'NOT REQUIRED' is not defined in RFC 2119. If it is intended as a requirements expression, it should be rewritten using one of the combinations defined in RFC 2119; otherwise it should not be all-uppercase. == The expression 'MAY NOT', while looking like RFC 2119 requirements text, is not defined in RFC 2119, and should not be used. Consider using 'MUST NOT' instead (if that is what you mean). Found 'MAY NOT' in this paragraph: This term is not included in RFC 2119. 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 (February 23, 2000) is 8827 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) -- Looks like a reference, but probably isn't: '52' on line 4122 -- Looks like a reference, but probably isn't: '56' on line 4122 == Unused Reference: 'BCP-11' is defined on line 7691, but no explicit reference was found in the text == Unused Reference: 'ISO10646-1' is defined on line 7723, but no explicit reference was found in the text == Unused Reference: 'PWG' is defined on line 7750, but no explicit reference was found in the text == Unused Reference: 'RFC2277' is defined on line 7806, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ASCII' ** Obsolete normative reference: RFC 2028 (ref. 'BCP-11') (Obsoleted by RFC 9281) -- Possible downref: Non-RFC (?) normative reference: ref. 'HTPP' == Outdated reference: A later version (-05) exists of draft-iesg-iana-considerations-04 -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-CS' -- Possible downref: Non-RFC (?) normative reference: ref. 'IANA-MT' == Outdated reference: A later version (-02) exists of draft-ietf-ipp-implementers-guide-v11-00 ** Downref: Normative reference to an Informational draft: draft-ietf-ipp-implementers-guide-v11 (ref. 'IPP-IIG') == Outdated reference: A later version (-06) exists of draft-ietf-ipp-protocol-v11-04 -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10646-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO8859-1' -- Possible downref: Non-RFC (?) normative reference: ref. 'ISO10175' -- Possible downref: Non-RFC (?) normative reference: ref. 'LDPA' -- Possible downref: Non-RFC (?) normative reference: ref. 'PSIS' -- Possible downref: Non-RFC (?) normative reference: ref. 'PWG' ** Downref: Normative reference to an Informational RFC: RFC 1179 ** Obsolete normative reference: RFC 1759 (Obsoleted by RFC 3805) ** Obsolete normative reference: RFC 1766 (Obsoleted by RFC 3066, RFC 3282) ** Downref: Normative reference to an Informational RFC: RFC 1952 ** Obsolete normative reference: RFC 2048 (Obsoleted by RFC 4288, RFC 4289) ** Obsolete normative reference: RFC 2246 (Obsoleted by RFC 4346) ** Obsolete normative reference: RFC 2278 (Obsoleted by RFC 2978) ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Downref: Normative reference to an Informational RFC: RFC 2316 ** Obsolete normative reference: RFC 2396 (Obsoleted by RFC 3986) ** Obsolete normative reference: RFC 2565 (Obsoleted by RFC 2910) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Downref: Normative reference to an Experimental RFC: RFC 2567 ** Downref: Normative reference to an Experimental RFC: RFC 2568 ** Downref: Normative reference to an Experimental RFC: RFC 2569 ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) ** Obsolete normative reference: RFC 2617 (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617) -- Possible downref: Non-RFC (?) normative reference: ref. 'SSL' -- Possible downref: Non-RFC (?) normative reference: ref. 'SWP' Summary: 25 errors (**), 0 flaws (~~), 21 warnings (==), 18 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 draft-ietf-ipp-model-v11-05.txt 3 R. deBry 4 Utah Valley State College 5 T. Hastings (editor) 6 Xerox Corporation 7 R. Herriot 8 Xerox Corporation 9 S. Isaacson 10 Novell, Inc. 11 P. Powell 12 Astart Technologies 13 February 23, 2000 15 Internet Printing Protocol/1.1: Model and Semantics 17 Copyright (C) The Internet Society (2000). All Rights Reserved. 19 Status of this Memo 21 This document is an Internet-Draft and is in full conformance with all 22 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 23 documents of the Internet Engineering Task Force (IETF), its areas, and 24 its working groups. Note that other groups may also distribute working 25 documents as Internet-Drafts. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference material 30 or to cite them other than as "work in progress". 32 The list of current Internet-Drafts can be accessed at 33 http://www.ietf.org/ietf/1id-abstracts.txt 35 The list of Internet-Draft Shadow Directories can be accessed as 36 http://www.ietf.org/shadow.html. 38 Abstract 40 This document is one of a set of documents, which together describe all 41 aspects of a new Internet Printing Protocol (IPP). IPP is an 42 application level protocol that can be used for distributed printing 43 using Internet tools and technologies. This document describes a 44 simplified model consisting of abstract objects, their attributes, and 45 their operations that is independent of encoding and transport. The 46 model consists of a Printer and a Job object. A Job optionally supports 47 multiple documents. IPP 1.1 semantics allow end-users and operators to 48 query printer capabilities, submit print jobs, inquire about the status 49 of print jobs and printers, cancel, hold, release, and restart print 50 jobs. IPP 1.1 semantics allow operators to pause, resume, and purge 51 (jobs from) Printer objects. This document also addresses security, 52 internationalization, and directory issues. 54 deBry, Hastings, Herriot, Isaacson, Powell 55 Expires August 23, 2000 56 The full set of IPP documents includes: 57 Design Goals for an Internet Printing Protocol [RFC2567] 58 Rationale for the Structure and Model and Protocol for the Internet 59 Printing Protocol [RFC2568] 60 Internet Printing Protocol/1.1: Model and Semantics (this document) 61 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 62 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 63 Mapping between LPD and IPP Protocols [RFC2569] 65 The "Design Goals for an Internet Printing Protocol" document takes a 66 broad look at distributed printing functionality, and it enumerates 67 real-life scenarios that help to clarify the features that need to be 68 included in a printing protocol for the Internet. It identifies 69 requirements for three types of users: end users, operators, and 70 administrators. It calls out a subset of end user requirements that are 71 satisfied in IPP/1.0. A few OPTIONAL operator operations have been 72 added to IPP/1.1. 74 The "Rationale for the Structure and Model and Protocol for the Internet 75 Printing Protocol" document describes IPP from a high level view, 76 defines a roadmap for the various documents that form the suite of IPP 77 specification documents, and gives background and rationale for the IETF 78 working group's major decisions. 80 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 81 a formal mapping of the abstract operations and attributes defined in 82 the model document onto HTTP/1.1 [RFC2616]. It defines the encoding 83 rules for a new Internet MIME media type called "application/ipp". This 84 document also defines the rules for transporting over HTTP a message 85 body whose Content-Type is "application/ipp". This document defines a 86 new scheme named 'ipp' for identifying IPP printers and jobs. 88 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 89 insight and advice to implementers of IPP clients and IPP objects. It 90 is intended to help them understand IPP/1.1 and some of the 91 considerations that may assist them in the design of their client and/or 92 IPP object implementations. For example, a typical order of processing 93 requests is given, including error checking. Motivation for some of the 94 specification decisions is also included. 96 The "Mapping between LPD and IPP Protocols" document gives some advice 97 to implementers of gateways between IPP and LPD (Line Printer Daemon) 98 implementations. 100 deBry, Hastings, Herriot, Isaacson, Powell 101 Expires August 23, 2000 102 Table of Contents 104 1. Introduction.....................................................9 105 1.1 Simplified Printing Model....................................10 107 2. IPP Objects.....................................................12 108 2.1 Printer Object...............................................13 109 2.2 Job Object...................................................15 110 2.3 Object Relationships.........................................16 111 2.4 Object Identity..............................................17 113 3. IPP Operations..................................................20 114 3.1 Common Semantics.............................................21 115 3.1.1 Required Parameters......................................21 116 3.1.2 Operation IDs and Request IDs............................21 117 3.1.3 Attributes...............................................22 118 3.1.4 Character Set and Natural Language Operation Attributes..23 119 3.1.4.1 Request Operation Attributes..........................24 120 3.1.4.2 Response Operation Attributes.........................27 121 3.1.5 Operation Targets........................................28 122 3.1.6 Operation Response Status Codes and Status Messages......30 123 3.1.6.1 "status-code" (type2 enum)............................30 124 3.1.6.2 "status-message" (text(255))..........................30 125 3.1.6.3 "detailed-status-message" (text(MAX)).................31 126 3.1.6.4 "document-access-error" (text(MAX))...................31 127 3.1.7 Unsupported Attributes...................................32 128 3.1.8 Versions.................................................33 129 3.1.9 Job Creation Operations..................................35 130 3.2 Printer Operations...........................................38 131 3.2.1 Print-Job Operation......................................38 132 3.2.1.1 Print-Job Request.....................................38 133 3.2.1.2 Print-Job Response....................................42 134 3.2.2 Print-URI Operation......................................44 135 3.2.3 Validate-Job Operation...................................45 136 3.2.4 Create-Job Operation.....................................45 137 3.2.5 Get-Printer-Attributes Operation.........................46 138 3.2.5.1 Get-Printer-Attributes Request........................47 139 3.2.5.2 Get-Printer-Attributes Response.......................48 140 3.2.6 Get-Jobs Operation.......................................49 141 3.2.6.1 Get-Jobs Request......................................49 142 3.2.6.2 Get-Jobs Response.....................................51 143 3.2.7 Pause-Printer Operation..................................52 144 3.2.7.1 Pause-Printer Request.................................54 145 3.2.7.2 Pause-Printer Response................................54 146 3.2.8 Resume-Printer Operation.................................54 147 3.2.9 Purge-Jobs Operation.....................................55 148 3.3 Job Operations...............................................56 149 3.3.1 Send-Document Operation..................................56 150 3.3.1.1 Send-Document Request.................................57 151 3.3.1.2 Send-Document Response................................59 152 3.3.2 Send-URI Operation.......................................59 153 3.3.3 Cancel-Job Operation.....................................59 155 deBry, Hastings, Herriot, Isaacson, Powell 156 Expires August 23, 2000 157 3.3.3.1 Cancel-Job Request....................................60 158 3.3.3.2 Cancel-Job Response...................................61 159 3.3.4 Get-Job-Attributes Operation.............................62 160 3.3.4.1 Get-Job-Attributes Request............................62 161 3.3.4.2 Get-Job-Attributes Response...........................63 162 3.3.5 Hold-Job Operation.......................................64 163 3.3.5.1 Hold-Job Request......................................65 164 3.3.5.2 Hold-Job Response.....................................65 165 3.3.6 Release-Job Operation....................................66 166 3.3.7 Restart-Job Operation....................................67 167 3.3.7.1 Restart-Job Request...................................68 168 3.3.7.2 Restart-Job Response..................................69 170 4. Object Attributes...............................................69 171 4.1 Attribute Syntaxes...........................................69 172 4.1.1 'text'...................................................70 173 4.1.1.1 'textWithoutLanguage'.................................71 174 4.1.1.2 'textWithLanguage'....................................71 175 4.1.2 'name'...................................................72 176 4.1.2.1 'nameWithoutLanguage'.................................73 177 4.1.2.2 'nameWithLanguage'....................................73 178 4.1.2.3 Matching 'name' attribute values......................74 179 4.1.3 'keyword'................................................74 180 4.1.4 'enum'...................................................75 181 4.1.5 'uri'....................................................75 182 4.1.6 'uriScheme'..............................................76 183 4.1.7 'charset'................................................76 184 4.1.8 'naturalLanguage'........................................77 185 4.1.9 'mimeMediaType'..........................................77 186 4.1.9.1 Application/octet-stream -- Auto-Sensing the document 187 format 78 188 4.1.10 'octetString'............................................79 189 4.1.11 'boolean'................................................79 190 4.1.12 'integer'................................................79 191 4.1.13 'rangeOfInteger'.........................................79 192 4.1.14 'dateTime'...............................................79 193 4.1.15 'resolution'.............................................80 194 4.1.16 '1setOf X'..............................................80 195 4.2 Job Template Attributes......................................80 196 4.2.1 job-priority (integer(1:100))............................84 197 4.2.2 job-hold-until (type3 keyword | name (MAX))..............85 198 4.2.3 job-sheets (type3 keyword | name(MAX))...................86 199 4.2.4 multiple-document-handling (type2 keyword)...............86 200 4.2.5 copies (integer(1:MAX))..................................87 201 4.2.6 finishings (1setOf type2 enum)...........................88 202 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............90 203 4.2.8 sides (type2 keyword)....................................90 204 4.2.9 number-up (integer(1:MAX))...............................91 205 4.2.10 orientation-requested (type2 enum).......................92 206 4.2.11 media (type3 keyword | name(MAX))........................93 207 4.2.12 printer-resolution (resolution)..........................93 208 4.2.13 print-quality (type2 enum)...............................94 209 4.3 Job Description Attributes...................................94 211 deBry, Hastings, Herriot, Isaacson, Powell 212 Expires August 23, 2000 213 4.3.1 job-uri (uri)............................................96 214 4.3.2 job-id (integer(1:MAX))..................................96 215 4.3.3 job-printer-uri (uri)....................................96 216 4.3.4 job-more-info (uri)......................................97 217 4.3.5 job-name (name(MAX)).....................................97 218 4.3.6 job-originating-user-name (name(MAX))....................97 219 4.3.7 job-state (type1 enum)...................................98 220 4.3.7.1 Forwarding Servers...................................100 221 4.3.7.2 Partitioning of Job States...........................100 222 4.3.8 job-state-reasons (1setOf type2 keyword)...............101 223 4.3.9 job-state-message (text(MAX))...........................105 224 4.3.10 job-detailed-status-messages (1setOf text(MAX)).........105 225 4.3.11 job-document-access-errors (1setOf text(MAX))...........105 226 4.3.12 number-of-documents (integer(0:MAX))....................106 227 4.3.13 output-device-assigned (name(127))......................106 228 4.3.14 Event Time Job Description Attributes...................106 229 4.3.14.1 time-at-creation (integer(MIN:MAX))..................107 230 4.3.14.2 time-at-processing (integer(MIN:MAX))................107 231 4.3.14.3 time-at-completed (integer(MIN:MAX)).................107 232 4.3.14.4 job-printer-up-time (integer(1:MAX)).................107 233 4.3.14.5 date-time-at-creation (dateTime).....................108 234 4.3.14.6 date-time-at-processing (dateTime)...................108 235 4.3.14.7 date-time-at-completed (dateTime)....................108 236 4.3.15 number-of-intervening-jobs (integer(0:MAX)).............108 237 4.3.16 job-message-from-operator (text(127))...................108 238 4.3.17 Job Size Attributes.....................................108 239 4.3.17.1 job-k-octets (integer(0:MAX))........................109 240 4.3.17.2 job-impressions (integer(0:MAX)).....................109 241 4.3.17.3 job-media-sheets (integer(0:MAX))....................109 242 4.3.18 Job Progress Attributes.................................110 243 4.3.18.1 job-k-octets-processed (integer(0:MAX))..............110 244 4.3.18.2 job-impressions-completed (integer(0:MAX))...........110 245 4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........110 246 4.3.19 attributes-charset (charset)............................110 247 4.3.20 attributes-natural-language (naturalLanguage)...........111 248 4.4 Printer Description Attributes..............................111 249 4.4.1 printer-uri-supported (1setOf uri)......................113 250 4.4.2 uri-authentication-supported (1setOf type2 keyword).....113 251 4.4.3 uri-security-supported (1setOf type2 keyword)...........114 252 4.4.4 printer-name (name(127))................................116 253 4.4.5 printer-location (text(127))............................116 254 4.4.6 printer-info (text(127))................................116 255 4.4.7 printer-more-info (uri).................................116 256 4.4.8 printer-driver-installer (uri)..........................116 257 4.4.9 printer-make-and-model (text(127))......................117 258 4.4.10 printer-more-info-manufacturer (uri)....................117 259 4.4.11 printer-state (type1 enum)..............................117 260 4.4.12 printer-state-reasons (1setOf type2 keyword)............117 261 4.4.13 printer-state-message (text(MAX)).......................120 262 4.4.14 ipp-versions-supported (1setOf type2 keyword)...........120 263 4.4.15 operations-supported (1setOf type2 enum)................121 264 4.4.16 multiple-document-jobs-supported (boolean)..............121 265 4.4.17 charset-configured (charset)............................122 267 deBry, Hastings, Herriot, Isaacson, Powell 268 Expires August 23, 2000 269 4.4.18 charset-supported (1setOf charset)......................122 270 4.4.19 natural-language-configured (naturalLanguage)...........122 271 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 272 122 273 4.4.21 document-format-default (mimeMediaType).................123 274 4.4.22 document-format-supported (1setOf mimeMediaType)........123 275 4.4.23 printer-is-accepting-jobs (boolean).....................123 276 4.4.24 queued-job-count (integer(0:MAX)).......................123 277 4.4.25 printer-message-from-operator (text(127))...............124 278 4.4.26 color-supported (boolean)...............................124 279 4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......124 280 4.4.28 pdl-override-supported (type2 keyword)..................124 281 4.4.29 printer-up-time (integer(1:MAX))........................125 282 4.4.30 printer-current-time (dateTime).........................125 283 4.4.31 multiple-operation-time-out (integer(1:MAX))............126 284 4.4.32 compression-supported (1setOf type3 keyword)............126 285 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........126 286 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......126 287 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......127 288 4.4.36 pages-per-minute (integer(0:MAX)).......................127 289 4.4.37 pages-per-minute-color (integer(0:MAX)).................127 291 5. Conformance....................................................128 292 5.1 Client Conformance Requirements.............................128 293 5.2 IPP Object Conformance Requirements.........................129 294 5.2.1 Objects.................................................129 295 5.2.2 Operations..............................................129 296 5.2.3 IPP Object Attributes...................................130 297 5.2.4 Versions................................................130 298 5.2.5 Extensions..............................................131 299 5.2.6 Attribute Syntaxes......................................131 300 5.2.7 Security................................................132 301 5.3 Charset and Natural Language Requirements...................132 303 6. IANA Considerations............................................132 304 6.1 Typed 'keyword' and 'enum' Extensions.......................133 305 6.2 Attribute Extensibility.....................................135 306 6.3 Attribute Syntax Extensibility..............................135 307 6.4 Operation Extensibility.....................................136 308 6.5 Attribute Group Extensibility...............................136 309 6.6 Status Code Extensibility...................................137 310 6.7 Out-of-band Attribute Value Extensibility...................137 311 6.8 Registration of MIME types/sub-types for document-formats...138 312 6.9 Registration of charsets for use in 'charset' attribute values138 314 7. Internationalization Considerations............................138 316 8. Security Considerations........................................142 317 8.1 Security Scenarios..........................................143 318 8.1.1 Client and Server in the Same Security Domain...........143 319 8.1.2 Client and Server in Different Security Domains.........143 320 8.1.3 Print by Reference......................................143 321 8.2 URIs in Operation, Job, and Printer attributes..............143 323 deBry, Hastings, Herriot, Isaacson, Powell 324 Expires August 23, 2000 325 8.3 URIs for each authentication mechanisms.....................144 326 8.4 Restricted Queries..........................................145 327 8.5 Operations performed by operators and system administrators.145 328 8.6 Queries on jobs submitted using non-IPP protocols...........145 330 9. References.....................................................146 332 10.Author's Address..............................................149 334 11.Formats for IPP Registration Proposals........................153 335 11.1Type2 keyword attribute values registration.................153 336 11.2Type3 keyword attribute values registration.................153 337 11.3Type2 enum attribute values registration....................153 338 11.4Type3 enum attribute values registration....................154 339 11.5Attribute registration......................................154 340 11.6Attribute Syntax registration...............................155 341 11.7Operation registration......................................155 342 11.8Attribute Group registration................................155 343 11.9Status code registration....................................156 344 11.10.......................Out-of-band Attribute Value registration 345 156 347 12.APPENDIX A: Terminology.......................................156 348 12.1Conformance Terminology.....................................156 349 12.1.1 NEED NOT................................................157 350 12.2Model Terminology...........................................157 351 12.2.1 Keyword.................................................157 352 12.2.2 Attributes..............................................157 353 12.2.2.1 Attribute Name.......................................157 354 12.2.2.2 Attribute Group Name.................................157 355 12.2.2.3 Attribute Value......................................157 356 12.2.2.4 Attribute Syntax.....................................158 357 12.2.3 Supports................................................158 358 12.2.4 print-stream page.......................................160 359 12.2.5 impression..............................................160 361 13.APPENDIX B: Status Codes and Suggested Status Code Messages..160 362 13.1Status Codes................................................161 363 13.1.1 Informational...........................................161 364 13.1.2 Successful Status Codes.................................161 365 13.1.2.1 successful-ok (0x0000)...............................161 366 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)162 367 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........162 368 13.1.3 Redirection Status Codes................................162 369 13.1.4 Client Error Status Codes...............................162 370 13.1.4.1 client-error-bad-request (0x0400)....................162 371 13.1.4.2 client-error-forbidden (0x0401)......................163 372 13.1.4.3 client-error-not-authenticated (0x0402)..............163 373 13.1.4.4 client-error-not-authorized (0x0403).................163 374 13.1.4.5 client-error-not-possible (0x0404)...................163 375 13.1.4.6 client-error-timeout (0x0405)........................163 376 13.1.4.7 client-error-not-found (0x0406)......................164 377 13.1.4.8 client-error-gone (0x0407)...........................164 379 deBry, Hastings, Herriot, Isaacson, Powell 380 Expires August 23, 2000 381 13.1.4.9 client-error-request-entity-too-large (0x0408).......164 382 13.1.4.10client-error-request-value-too-long (0x0409).........164 383 13.1.4.11client-error-document-format-not-supported (0x040A)..165 384 13.1.4.12client-error-attributes-or-values-not-supported (0x040B)165 385 13.1.4.13client-error-uri-scheme-not-supported (0x040C).......166 386 13.1.4.14client-error-charset-not-supported (0x040D)..........166 387 13.1.4.15client-error-conflicting-attributes (0x040E).........166 388 13.1.4.16client-error-compression-not-supported (0x040F)......166 389 13.1.4.17client-error-compression-error (0x0410)..............166 390 13.1.4.18client-error-document-format-error (0x0411)..........166 391 13.1.4.19client-error-document-access-error (0x0412)..........167 392 13.1.5 Server Error Status Codes...............................167 393 13.1.5.1 server-error-internal-error (0x0500).................167 394 13.1.5.2 server-error-operation-not-supported (0x0501)........167 395 13.1.5.3 server-error-service-unavailable (0x0502)............167 396 13.1.5.4 server-error-version-not-supported (0x0503)..........168 397 13.1.5.5 server-error-device-error (0x0504)...................168 398 13.1.5.6 server-error-temporary-error (0x0505)................168 399 13.1.5.7 server-error-not-accepting-jobs (0x0506).............169 400 13.1.5.8 server-error-busy (0x0507)...........................169 401 13.1.5.9 server-error-job-canceled (0x0508)...................169 402 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509) 403 169 404 13.2Status Codes for IPP Operations.............................170 406 14.APPENDIX C: "media" keyword values...........................172 408 15.APPENDIX D: Processing IPP Attributes.........................194 409 15.1Fidelity....................................................194 410 15.2Page Description Language (PDL) Override....................195 411 15.3Using Job Template Attributes During Document Processing....197 413 16.APPENDIX E: Generic Directory Schema..........................198 415 17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 416 Semantics" Documents..............................................201 418 18.Full Copyright Statement......................................207 420 deBry, Hastings, Herriot, Isaacson, Powell 421 Expires August 23, 2000 422 1. Introduction 424 The Internet Printing Protocol (IPP) is an application level protocol 425 that can be used for distributed printing using Internet tools and 426 technologies. IPP version 1.1 (IPP/1.1) focuses primarily on end user 427 functionality with a few administrative operations included. This 428 document is just one of a suite of documents that fully define IPP. The 429 full set of IPP documents includes: 431 Design Goals for an Internet Printing Protocol [RFC2567] 432 Rationale for the Structure and Model and Protocol for the Internet 433 Printing Protocol [RFC2568] 434 Internet Printing Protocol/1.1: Model and Semantics (this document) 435 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 436 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 437 Mapping between LPD and IPP Protocols [RFC2569] 439 Anyone reading these documents for the first time is strongly encouraged 440 to read the IPP documents in the above order. 442 This document is laid out as follows: 444 - The rest of Section 1 is an introduction to the IPP simplified 445 model for distributed printing. 446 - Section 2 introduces the object types covered in the model with 447 their basic behaviors, attributes, and interactions. 448 - Section 3 defines the operations included in IPP/1.1. IPP 449 operations are synchronous, therefore, for each operation, there is 450 a both request and a response. 451 - Section 4 defines the attributes (and their syntaxes) that are used 452 in the model. 453 - Sections 5 - 6 summarizes the implementation conformance 454 requirements for objects that support the protocol and IANA 455 considerations, respectively. 456 - Sections 7 - 11 cover the Internationalization and Security 457 considerations as well as References, Author contact information, 458 and Formats for Registration Proposals. 459 - Sections 12 - 14 are appendices that cover Terminology, Status 460 Codes and Messages, and "media" keyword values. 462 Note: This document uses terms such as "attributes", 463 "keywords", and "support". These terms have special meaning 464 and are defined in the model terminology section 12.2. 465 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, 466 SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning 467 relating to conformance. These terms are defined in section 468 12.1 on conformance terminology, most of which is taken from 469 RFC 2119 [RFC2119]. 471 - Section 15 is an appendix that helps to clarify the effects of 472 interactions between related attributes and their values. 473 - Section 16 is an appendix that enumerates the subset of Printer 474 attributes that form a generic directory schema. These attributes 476 deBry, Hastings, Herriot, Isaacson, Powell 477 Expires August 23, 2000 478 are useful when registering a Printer so that a client can find the 479 Printer not just by name, but by filtered searches as well. 480 - Section 17 is an appendix summarizing the additions and changes 481 from the IPP/1.0 "Model and Semantics" document [RFC2566] to make 482 this IPP/1.1 document. 483 - Section 18 is the full copyright notice. 485 1.1 Simplified Printing Model 487 In order to achieve its goal of realizing a workable printing protocol 488 for the Internet, the Internet Printing Protocol (IPP) is based on a 489 simplified printing model that abstracts the many components of real 490 world printing solutions. The Internet is a distributed computing 491 environment where requesters of print services (clients, applications, 492 printer drivers, etc.) cooperate and interact with print service 493 providers. This model and semantics document describes a simple, 494 abstract model for IPP even though the underlying configurations may be 495 complex "n-tier" client/server systems. An important simplifying step 496 in the IPP model is to expose only the key objects and interfaces 497 required for printing. The model described in this model document does 498 not include features, interfaces, and relationships that are beyond the 499 scope of the first version of IPP (IPP/1.1). IPP/1.1 incorporates many 500 of the relevant ideas and lessons learned from other specification and 501 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] 502 [SWP]. IPP is heavily influenced by the printing model introduced in 503 the Document Printing Application (DPA) [ISO10175] standard. Although 504 DPA specifies both end user and administrative features, IPP version 1.1 505 (IPP/1.1) focuses primarily on end user functionality with a few 506 additional OPTIONAL operator operations. 508 The IPP/1.1 model encapsulates the important components of distributed 509 printing into two object types: 511 - Printer (Section 2.1) 512 - Job (Section 2.2) 514 Each object type has an associated set of operations (see section 3) and 515 attributes (see section 4). 517 It is important, however, to understand that in real system 518 implementations (which lie underneath the abstracted IPP/1.1 model), 519 there are other components of a print service which are not explicitly 520 defined in the IPP/1.1 model. The following figure illustrates where 521 IPP/1.1 fits with respect to these other components. 523 deBry, Hastings, Herriot, Isaacson, Powell 524 Expires August 23, 2000 525 +--------------+ 526 | Application | 527 o +. . . . . . . | 528 \|/ | Spooler | 529 / \ +. . . . . . . | +---------+ 530 End-User | Print Driver |---| File | 531 +-----------+ +-----+ +------+-------+ +----+----+ 532 | Browser | | GUI | | | 533 +-----+-----+ +--+--+ | | 534 | | | | 535 | +---+------------+---+ | 536 N D S | | IPP Client |------------+ 537 O I E | +---------+----------+ 538 T R C | | 539 I E U | 540 F C R -------------- Transport ------------------ 541 I T I 542 C O T | --+ 543 A R Y +--------+--------+ | 544 T Y | IPP Server | | 545 I +--------+--------+ | 546 O | | 547 N +-----------------+ | IPP Printer 548 | Print Service | | 549 +-----------------+ | 550 | --+ 551 +-----------------+ 552 | Output Device(s)| 553 +-----------------+ 555 An IPP Printer object encapsulates the functions normally associated 556 with physical output devices along with the spooling, scheduling and 557 multiple device management functions often associated with a print 558 server. Printer objects are optionally registered as entries in a 559 directory where end users find and select them based on some sort of 560 filtered and context based searching mechanism (see section 16). The 561 directory is used to store relatively static information about the 562 Printer, allowing end users to search for and find Printers that match 563 their search criteria, for example: name, context, printer capabilities, 564 etc. The more dynamic information, such as state, currently loaded and 565 ready media, number of jobs at the Printer, errors, warnings, and so 566 forth, is directly associated with the Printer object itself rather than 567 with the entry in the directory which only represents the Printer 568 object. 570 IPP clients implement the IPP protocol on the client side and give end 571 users (or programs running on behalf of end users) the ability to query 572 Printer objects and submit and manage print jobs. An IPP server is just 573 that part of the Printer object that implements the server-side 574 protocol. The rest of the Printer object implements (or gateways into) 575 the application semantics of the print service itself. The Printer 577 deBry, Hastings, Herriot, Isaacson, Powell 578 Expires August 23, 2000 579 objects may be embedded in an output device or may be implemented on a 580 host on the network that communicates with an output device. 582 When a job is submitted to the Printer object and the Printer object 583 validates the attributes in the submission request, the Printer object 584 creates a new Job object. The end user then interacts with this new Job 585 object to query its status and monitor the progress of the job. An end 586 user can also cancel their print jobs by using the Job object's Cancel- 587 Job operation. An end-user can also hold, release, and restart their 588 print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and 589 Restart-Job operations, if implemented. 591 A privileged operator or administrator of a Printer object can cancel, 592 hold, release, and restart any user's job using the REQUIRED Cancel-Job 593 and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In 594 additional privileged operator or administrator of a Printer object can 595 pause, resume, or purge (jobs from) a Printer object using the OPTIONAL 596 Pause-Printer, Resume-Printer, and Purge-Jobs operations, if 597 implemented. 599 The notification service is out of scope for this IPP/1.1 document, but 600 using such a notification service, the end user is able to register for 601 and receive Printer specific and Job specific events. An end user can 602 query the status of Printer objects and can follow the progress of Job 603 objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get- 604 Job-Attributes operations. 606 2. IPP Objects 608 The IPP/1.1 model introduces objects of type Printer and Job. Each type 609 of object models relevant aspects of a real-world entity such as a real 610 printer or real print job. Each object type is defined as a set of 611 possible attributes that may be supported by instances of that object 612 type. For each object (instance), the actual set of supported 613 attributes and values describe a specific implementation. The object's 614 attributes and values describe its state, capabilities, realizable 615 features, job processing functions, and default behaviors and 616 characteristics. For example, the Printer object type is defined as a 617 set of attributes that each Printer object potentially supports. In the 618 same manner, the Job object type is defined as a set of attributes that 619 are potentially supported by each Job object. 621 Each attribute included in the set of attributes defining an object type 622 is labeled as: 624 - "REQUIRED": each object MUST support the attribute. 625 - "RECOMMENDED": each object SHOULD support the attribute. 626 - "OPTIONAL": each object MAY support the attribute. 628 Some definitions of attribute values indicate that an object MUST or 629 SHOULD support the value; otherwise, support of the value is OPTIONAL. 631 deBry, Hastings, Herriot, Isaacson, Powell 632 Expires August 23, 2000 633 However, if an implementation supports an attribute, it MUST support at 634 least one of the possible values for that attribute. 636 2.1 Printer Object 638 The major component of the IPP/1.1 model is the Printer object. A 639 Printer object implements the server-side of the IPP/1.1 protocol. 640 Using the protocol, end users may query the attributes of the Printer 641 object and submit print jobs to the Printer object. The actual 642 implementation components behind the Printer abstraction may take on 643 different forms and different configurations. However, the model 644 abstraction allows the details of the configuration of real components 645 to remain opaque to the end user. Section 3 describes each of the 646 Printer operations in detail. 648 The capabilities and state of a Printer object are described by its 649 attributes. Printer attributes are divided into two groups: 651 - "job-template" attributes: These attributes describe supported job 652 processing capabilities and defaults for the Printer object. (See 653 section 4.2) 654 - "printer-description" attributes: These attributes describe the 655 Printer object's identification, state, location, references to 656 other sources of information about the Printer object, etc. (see 657 section 4.4) 659 Since a Printer object is an abstraction of a generic document output 660 device and print service provider, a Printer object could be used to 661 represent any real or virtual device with semantics consistent with the 662 Printer object, such as a fax device, an imager, or even a CD writer. 664 Some examples of configurations supporting a Printer object include: 666 1) An output device with no spooling capabilities 667 2) An output device with a built-in spooler 668 3) A print server supporting IPP with one or more associated output 669 devices 670 3a) The associated output devices may or may not be capable of 671 spooling jobs 672 3b) The associated output devices may or may not support IPP 674 The following figures show some examples of how Printer objects can be 675 realized on top of various distributed printing configurations. The 676 embedded case below represents configurations 1 and 2. The hosted and 677 fan-out figures below represent configurations 3a and 3b. 679 In this document the term "client" refers to a software entity that 680 sends IPP operation requests to an IPP Printer object and accepts IPP 681 operation responses. A client MAY be: 683 1. contained within software controlled by an end user, e.g. activated 684 by the "Print" menu item in an application or 686 deBry, Hastings, Herriot, Isaacson, Powell 687 Expires August 23, 2000 688 2. the print server component that sends IPP requests to either an 689 output device or another "downstream" print server. 691 The term "IPP Printer" is a network entity that accepts IPP operation 692 requests and returns IPP operation responses. As such, an IPP object 693 MAY be: 695 1. an (embedded) device component that accepts IPP requests and 696 controls the device or 698 2. a component of a print server that accepts IPP requests (where the 699 print server controls one or more networked devices using IPP or 700 other protocols). 702 deBry, Hastings, Herriot, Isaacson, Powell 703 Expires August 23, 2000 704 Legend: 706 ##### indicates a Printer object which is 707 either embedded in an output device or is 708 hosted in a server. The Printer object 709 might or might not be capable of queuing/spooling. 711 any indicates any network protocol or direct 712 connect, including IPP 714 embedded printer: 715 output device 716 +---------------+ 717 O +--------+ | ########### | 718 /|\ | client |------------IPP------------># Printer # | 719 / \ +--------+ | # Object # | 720 | ########### | 721 +---------------+ 723 hosted printer: 724 +---------------+ 725 O +--------+ ########### | | 726 /|\ | client |--IPP--># Printer #-any->| output device | 727 / \ +--------+ # Object # | | 728 ########### +---------------+ 730 +---------------+ 731 fan out: | | 732 +-->| output device | 733 any/ | | 734 O +--------+ ########### / +---------------+ 735 /|\ | client |-IPP-># Printer #--* 736 / \ +--------+ # Object # \ +---------------+ 737 ########### any\ | | 738 +-->| output device | 739 | | 740 +---------------+ 742 2.2 Job Object 744 A Job object is used to model a print job. A Job object contains 745 documents. The information required to create a Job object is sent in a 746 create request from the end user via an IPP Client to the Printer 747 object. The Printer object validates the create request, and if the 748 Printer object accepts the request, the Printer object creates the new 749 Job object. Section 3 describes each of the Job operations in detail. 751 deBry, Hastings, Herriot, Isaacson, Powell 752 Expires August 23, 2000 753 The characteristics and state of a Job object are described by its 754 attributes. Job attributes are grouped into two groups as follows: 756 - "job-template" attributes: These attributes can be supplied by the 757 client or end user and include job processing instructions which 758 are intended to override any Printer object defaults and/or 759 instructions embedded within the document data. (See section 4.2) 760 - "job-description" attributes: These attributes describe the Job 761 object's identification, state, size, etc. The client supplies some 762 of these attributes, and the Printer object generates others. (See 763 section 4.3) 765 An implementation MUST support at least one document per Job object. An 766 implementation MAY support multiple documents per Job object. A 767 document is either: 769 - a stream of document data in a format supported by the Printer 770 object (typically a Page Description Language - PDL), or 771 - a reference to such a stream of document data 773 In IPP/1.1, a document is not modeled as an IPP object, therefore it has 774 no object identifier or associated attributes. All job processing 775 instructions are modeled as Job object attributes. These attributes are 776 called Job Template attributes and they apply equally to all documents 777 within a Job object. 779 2.3 Object Relationships 781 IPP objects have relationships that are maintained persistently along 782 with the persistent storage of the object attributes. 784 A Printer object can represent either one or more physical output 785 devices or a logical device which "processes" jobs but never actually 786 uses a physical output device to put marks on paper. Examples of 787 logical devices include a Web page publisher or a gateway into an online 788 document archive or repository. A Printer object contains zero or more 789 Job objects. 791 A Job object is contained by exactly one Printer object, however the 792 identical document data associated with a Job object could be sent to 793 either the same or a different Printer object. In this case, a second 794 Job object would be created which would be almost identical to the first 795 Job object, however it would have new (different) Job object identifiers 796 (see section 2.4). 798 A Job object is either empty (before any documents have been added) or 799 contains one or more documents. If the contained document is a stream 800 of document data, that stream can be contained in only one document. 801 However, there can be identical copies of the stream in other documents 802 in the same or different Job objects. If the contained document is just 803 a reference to a stream of document data, other documents (in the same 804 or different Job object(s)) may contain the same reference. 806 deBry, Hastings, Herriot, Isaacson, Powell 807 Expires August 23, 2000 808 2.4 Object Identity 810 All Printer and Job objects are identified by a Uniform Resource 811 Identifier (URI) [RFC2396] so that they can be persistently and 812 unambiguously referenced. The notion of a URI is a useful concept, 813 however, until the notion of URI is more stable (i.e., defined more 814 completely and deployed more widely), it is expected that the URIs used 815 for IPP objects will actually be URLs [RFC2396]. Since every URL is a 816 specialized form of a URI, even though the more generic term URI is used 817 throughout the rest of this document, its usage is intended to cover the 818 more specific notion of URL as well. 820 An administrator configures Printer objects to either support or not 821 support authentication and/or message privacy using Transport Layer 822 Security (TLS) [RFC2246] (the mechanism for security configuration is 823 outside the scope of this IPP/1.1 document). In some situations, both 824 types of connections (both authenticated and unauthenticated) can be 825 established using a single communication channel that has some sort of 826 negotiation mechanism. In other situations, multiple communication 827 channels are used, one for each type of security configuration. Section 828 8 provides a full description of all security considerations and 829 configurations. 831 If a Printer object supports more than one communication channel, some 832 or all of those channels might support and/or require different security 833 mechanisms. In such cases, an administrator could expose the 834 simultaneous support for these multiple communication channels as 835 multiple URIs for a single Printer object where each URI represents one 836 of the communication channels to the Printer object. To support this 837 flexibility, the IPP Printer object type defines a multi-valued 838 identification attribute called the "printer-uri-supported" attribute. 839 It MUST contain at least one URI. It MAY contain more than one URI. 840 That is, every Printer object will have at least one URI that identifies 841 at least one communication channel to the Printer object, but it may 842 have more than one URI where each URI identifies a different 843 communication channel to the Printer object. The "printer-uri- 844 supported" attribute has two companion attributes, the "uri-security- 845 supported" attribute and the "uri-authentication-supported". Both have 846 the same cardinality as "printer-uri-supported". The purpose of the 847 "uri-security-supported" attribute is to indicate the security 848 mechanisms (if any) used for each URI listed in "printer-uri-supported". 849 The purpose of the "uri-authentication-supported" attribute is to 850 indicate the authentication mechanisms (if any) used for each URI listed 851 in "printer-uri-supported". These three attributes are fully described 852 in sections 4.4.1, 4.4.2, and 4.4.3. 854 When a job is submitted to the Printer object via a create request, the 855 client supplies only a single Printer object URI. The client supplied 856 Printer object URI MUST be one of the values in the "printer-uri- 857 supported" Printer attribute. 859 deBry, Hastings, Herriot, Isaacson, Powell 860 Expires August 23, 2000 861 IPP/1.1 does not specify how the client obtains the client supplied URI, 862 but it is RECOMMENDED that a Printer object be registered as an entry in 863 a directory service. End-users and programs can then interrogate the 864 directory searching for Printers. Section 16 defines a generic schema 865 for Printer object entries in the directory service and describes how 866 the entry acts as a bridge to the actual IPP Printer object. The entry 867 in the directory that represents the IPP Printer object includes the 868 possibly many URIs for that Printer object as values in one its 869 attributes. 871 When a client submits a create request to the Printer object, the 872 Printer object validates the request and creates a new Job object. The 873 Printer object assigns the new Job object a URI which is stored in the 874 "job-uri" Job attribute. This URI is then used by clients as the target 875 for subsequent Job operations. The Printer object generates a Job URI 876 based on its configured security policy and the URI used by the client 877 in the create request. 879 For example, consider a Printer object that supports both a 880 communication channel secured by the use of SSL3 (using HTTP over SSL3 881 with an "https" schemed URI) and another open communication channel that 882 is not secured with SSL3 (using a simple "http" schemed URI). If a 883 client were to submit a job using the secure URI, the Printer object 884 would assign the new Job object a secure URI as well. If a client were 885 to submit a job using the open-channel URI, the Printer would assign the 886 new Job object an open-channel URI. 888 In addition, the Printer object also populates the Job object's "job- 889 printer-uri" attribute. This is a reference back to the Printer object 890 that created the Job object. If a client only has access to a Job 891 object's "job-uri" identifier, the client can query the Job's "job- 892 printer-uri" attribute in order to determine which Printer object 893 created the Job object. If the Printer object supports more than one 894 URI, the Printer object picks the one URI supplied by the client when 895 creating the job to build the value for and to populate the Job's "job- 896 printer-uri" attribute. 898 Allowing Job objects to have URIs allows for flexibility and 899 scalability. For example, in some implementations, the Printer object 900 might create Jobs that are processed in the same local environment as 901 the Printer object itself. In this case, the Job URI might just be a 902 composition of the Printer's URI and some unique component for the Job 903 object, such as the unique 32-bit positive integer mentioned later in 904 this paragraph. In other implementations, the Printer object might be a 905 central clearing-house for validating all Job object creation requests, 906 but the Job object itself might be created in some environment that is 907 remote from the Printer object. In this case, the Job object's URI may 908 have no physical-location relationship at all to the Printer object's 909 URI. Again, the fact that Job objects have URIs allows for flexibility 910 and scalability, however, many existing printing systems have local 911 models or interface constraints that force print jobs to be identified 912 using only a 32-bit positive integer rather than an independent URI. 913 This numeric Job ID is only unique within the context of the Printer 915 deBry, Hastings, Herriot, Isaacson, Powell 916 Expires August 23, 2000 917 object to which the create request was originally submitted. Therefore, 918 in order to allow both types of client access to IPP Job objects (either 919 by Job URI or by numeric Job ID), when the Printer object successfully 920 processes a create request and creates a new Job object, the Printer 921 object MUST generate both a Job URI and a Job ID. The Job ID (stored in 922 the "job-id" attribute) only has meaning in the context of the Printer 923 object to which the create request was originally submitted. This 924 requirement to support both Job URIs and Job IDs allows all types of 925 clients to access Printer objects and Job objects no matter the local 926 constraints imposed on the client implementation. 928 In addition to identifiers, Printer objects and Job objects have names 929 ("printer-name" and "job-name"). An object name NEED NOT be unique 930 across all instances of all objects. A Printer object's name is chosen 931 and set by an administrator through some mechanism outside the scope of 932 this IPP/1.1 document. A Job object's name is optionally chosen and 933 supplied by the IPP client submitting the job. If the client does not 934 supply a Job object name, the Printer object generates a name for the 935 new Job object. In all cases, the name only has local meaning. 937 To summarize: 939 - Each Printer object is identified with one or more URIs. The 940 Printer's "printer-uri-supported" attribute contains the URI(s). 941 - The Printer object's "uri-security-supported" attribute identifies 942 the communication channel security protocols that may or may not 943 have been configured for the various Printer object URIs (e.g., 944 'tls' or 'none'). 945 - The Printer object's "uri-authentication-supported" attribute 946 identifies the authentication mechanisms that may or may not have 947 been configured for the various Printer object URIs (e.g., 'digest' 948 or 'none'). 949 - Each Job object is identified with a Job URI. The Job's "job-uri" 950 attribute contains the URI. 951 - Each Job object is also identified with Job ID which is a 32-bit, 952 positive integer. The Job's "job-id" attribute contains the Job 953 ID. The Job ID is only unique within the context of the Printer 954 object which created the Job object. 955 - Each Job object has a "job-printer-uri" attribute which contains 956 the URI of the Printer object that was used to create the Job 957 object. This attribute is used to determine the Printer object 958 that created a Job object when given only the URI for the Job 959 object. This linkage is necessary to determine the languages, 960 charsets, and operations which are supported on that Job (the basis 961 for such support comes from the creating Printer object). 962 - Each Printer object has a name (which is not necessarily unique). 963 The administrator chooses and sets this name through some mechanism 964 outside the scope of this IPP/1.1 document. The Printer object's 965 "printer-name" attribute contains the name. 966 - Each Job object has a name (which is not necessarily unique). The 967 client optionally supplies this name in the create request. If the 968 client does not supply this name, the Printer object generates a 970 deBry, Hastings, Herriot, Isaacson, Powell 971 Expires August 23, 2000 972 name for the Job object. The Job object's "job-name" attribute 973 contains the name. 975 3. IPP Operations 977 IPP objects support operations. An operation consists of a request and 978 a response. When a client communicates with an IPP object, the client 979 issues an operation request to the URI for that object. Operation 980 requests and responses have parameters that identify the operation. 981 Operations also have attributes that affect the run-time characteristics 982 of the operation (the intended target, localization information, etc.). 983 These operation-specific attributes are called operation attributes (as 984 compared to object attributes such as Printer object attributes or Job 985 object attributes). Each request carries along with it any operation 986 attributes, object attributes, and/or document data required to perform 987 the operation. Each request requires a response from the object. Each 988 response indicates success or failure of the operation with a status 989 code as a response parameter. The response contains any operation 990 attributes, object attributes, and/or status messages generated during 991 the execution of the operation request. 993 This section describes the semantics of the IPP operations, both 994 requests and responses, in terms of the parameters, attributes, and 995 other data associated with each operation. 997 The IPP/1.1 Printer operations are: 999 Print-Job (section 3.2.1) 1000 Print-URI (section 3.2.2) 1001 Validate-Job (section 3.2.3) 1002 Create-Job (section 3.2.4) 1003 Get-Printer-Attributes (section 3.2.5) 1004 Get-Jobs (section 3.2.6) 1005 Pause-Printer (section 3.3.5) 1006 Resume-Printer (section 3.3.6) 1007 Purge-Jobs (section 3.3.7) 1009 The Job operations are: 1011 Send-Document (section 3.3.1) 1012 Send-URI (section 3.3.2) 1013 Cancel-Job (section 3.3.3) 1014 Get-Job-Attributes (section 3.3.4) 1015 Hold-Job (section 3.3.5) 1016 Release-Job (section 3.3.6) 1017 Restart-Job (section 3.3.7) 1019 The Send-Document and Send-URI Job operations are used to add a new 1020 document to an existing multi-document Job object created using the 1021 Create-Job operation. 1023 deBry, Hastings, Herriot, Isaacson, Powell 1024 Expires August 23, 2000 1025 3.1 Common Semantics 1027 All IPP operations require some common parameters and operation 1028 attributes. These common elements and their semantic characteristics 1029 are defined and described in more detail in the following sections. 1031 3.1.1 Required Parameters 1033 Every operation request contains the following REQUIRED parameters: 1035 - a "version-number", 1036 - an "operation-id", 1037 - a "request-id", and 1038 - the attributes that are REQUIRED for that type of request. 1040 Every operation response contains the following REQUIRED parameters: 1042 - a "version-number", 1043 - a "status-code", 1044 - the "request-id" that was supplied in the corresponding request, 1045 and 1046 - the attributes that are REQUIRED for that type of response. 1048 The "Encoding and Transport" document [IPP-PRO] defines special rules 1049 for the encoding of these parameters. All other operation elements are 1050 represented using the more generic encoding rules for attributes and 1051 groups of attributes. 1053 3.1.2 Operation IDs and Request IDs 1055 Each IPP operation request includes an identifying "operation-id" value. 1056 Valid values are defined in the "operations-supported" Printer attribute 1057 section (see section 4.4.15). The client specifies which operation is 1058 being requested by supplying the correct "operation-id" value. 1060 In addition, every invocation of an operation is identified by a 1061 "request-id" value. For each request, the client chooses the "request- 1062 id" which MUST be an integer (possibly unique depending on client 1063 requirements) in the range from 1 to 2**31 - 1 (inclusive). This 1064 "request-id" allows clients to manage multiple outstanding requests. The 1065 receiving IPP object copies all 32-bits of the client-supplied "request- 1066 id" attribute into the response so that the client can match the 1067 response with the correct outstanding request, even if the "request-id" 1068 is out of range. If the request is terminated before the complete 1069 "request-id" is received, the IPP object rejects the request and returns 1070 a response with a "request-id" of 0. 1072 Note: In some cases, the transport protocol underneath IPP might be a 1073 connection oriented protocol that would make it impossible for a client 1074 to receive responses in any order other than the order in which the 1075 corresponding requests were sent. In such cases, the "request-id" 1076 attribute would not be essential for correct protocol operation. 1078 deBry, Hastings, Herriot, Isaacson, Powell 1079 Expires August 23, 2000 1080 However, in other mappings, the operation responses can come back in any 1081 order. In these cases, the "request-id" would be essential. 1083 3.1.3 Attributes 1085 Operation requests and responses are both composed of groups of 1086 attributes and/or document data. The attributes groups are: 1088 - Operation Attributes: These attributes are passed in the operation 1089 and affect the IPP object's behavior while processing the operation 1090 request and may affect other attributes or groups of attributes. 1091 Some operation attributes describe the document data associated 1092 with the print job and are associated with new Job objects, however 1093 most operation attributes do not persist beyond the life of the 1094 operation. The description of each operation attribute includes 1095 conformance statements indicating which operation attributes are 1096 REQUIRED and which are OPTIONAL for an IPP object to support and 1097 which attributes a client MUST supply in a request and an IPP 1098 object MUST supply in a response. 1099 - Job Template Attributes: These attributes affect the processing of 1100 a job. A client OPTIONALLY supplies Job Template Attributes in a 1101 create request, and the receiving object MUST be prepared to 1102 receive all supported attributes. The Job object can later be 1103 queried to find out what Job Template attributes were originally 1104 requested in the create request, and such attributes are returned 1105 in the response as Job Object Attributes. The Printer object can 1106 be queried about its Job Template attributes to find out what type 1107 of job processing capabilities are supported and/or what the 1108 default job processing behaviors are, though such attributes are 1109 returned in the response as Printer Object Attributes. The "ipp- 1110 attribute-fidelity" operation attribute affects processing of all 1111 client-supplied Job Template attributes (see sections 3.2.1.2 and 1112 15 for a full description of "ipp-attribute-fidelity" and its 1113 relationship to other attributes). 1114 - Job Object Attributes: These attributes are returned in response to 1115 a query operation directed at a Job object. 1116 - Printer Object Attributes: These attributes are returned in 1117 response to a query operation directed at a Printer object. 1118 - Unsupported Attributes: In a create request, the client supplies a 1119 set of Operation and Job Template attributes. If any of these 1120 attributes or their values is unsupported by the Printer object, 1121 the Printer object returns the set of unsupported attributes in the 1122 response. Sections 3.1.7, 3.2.1.2, and 15 give a full description 1123 of how Job Template attributes supplied by the client in a create 1124 request are processed by the Printer object and how unsupported 1125 attributes are returned to the client. Because of extensibility, 1126 any IPP object might receive a request that contains new or unknown 1127 attributes or values for which it has no support. In such cases, 1128 the IPP object processes what it can and returns the unsupported 1129 attributes in the response. The Unsupported Attribute group is 1130 defined for all operation responses for returning unsupported 1131 attributes that the client supplied in the request. 1133 deBry, Hastings, Herriot, Isaacson, Powell 1134 Expires August 23, 2000 1135 Later in this section, each operation is formally defined by identifying 1136 the allowed and expected groups of attributes for each request and 1137 response. The model identifies a specific order for each group in each 1138 request or response, but the attributes within each group may be in any 1139 order, unless specified otherwise. 1141 The attributes within a group MUST be unique; if an attribute with the 1142 same name occurs more than once, the group is mal-formed. Clients MUST 1143 NOT submit such malformed requests and Printers MUST NOT return such 1144 malformed responses. If such a malformed request is submitted to a 1145 Printer, the Printer MUST either (1) reject the request with the 1146 'client-error-bad-request' status code (see section 13.1.4.1) or (2) 1147 process the request normally after selecting only one of the attribute 1148 instances, depending on implementation. Which attribute is selected 1149 when there are duplicate attributes depends on implementation. The IPP 1150 Printer MUST NOT use the values from more than one such duplicate 1151 attribute instance. 1153 Each attribute definition includes the attribute's name followed by the 1154 name of its attribute syntax(es) in parenthesizes. In addition, each 1155 'integer' attribute is followed by the allowed range in parentheses, 1156 (m:n), for values of that attribute. Each 'text' or 'name' attribute is 1157 followed by the maximum size in octets in parentheses, (size), for 1158 values of that attribute. For more details on attribute syntax notation, 1159 see the descriptions of these attributes syntaxes in section 4.1. 1161 Note: Document data included in the operation is not strictly an 1162 attribute, but it is treated as a special attribute group for ordering 1163 purposes. The only operations that support supplying the document data 1164 within an operation request are Print-Job and Send-Document. There are 1165 no operation responses that include document data. 1167 Some operations are REQUIRED for IPP objects to support; the others are 1168 OPTIONAL (see section 5.2.2). Therefore, before using an OPTIONAL 1169 operation, a client SHOULD first use the REQUIRED Get-Printer-Attributes 1170 operation to query the Printer's "operations-supported" attribute in 1171 order to determine which OPTIONAL Printer and Job operations are 1172 actually supported. The client SHOULD NOT use an OPTIONAL operation 1173 that is not supported. When an IPP object receives a request to perform 1174 an operation it does not support, it returns the 'server-error- 1175 operation-not-supported' status code (see section 13.1.5.2). An IPP 1176 object is non-conformant if it does not support a REQUIRED operation. 1178 3.1.4 Character Set and Natural Language Operation Attributes 1180 Some Job and Printer attributes have values that are text strings and 1181 names intended for human understanding rather than machine understanding 1182 (see the 'text' and 'name' attribute syntax descriptions in section 1183 4.1). The following sections describe two special Operation Attributes 1184 called "attributes-charset" and "attributes-natural-language". These 1185 attributes are always part of the Operation Attributes group. For most 1186 attribute groups, the order of the attributes within the group is not 1188 deBry, Hastings, Herriot, Isaacson, Powell 1189 Expires August 23, 2000 1190 important. However, for these two attributes within the Operation 1191 Attributes group, the order is critical. The "attributes-charset" 1192 attribute MUST be the first attribute in the group and the "attributes- 1193 natural-language" attribute MUST be the second attribute in the group. 1194 In other words, these attributes MUST be supplied in every IPP request 1195 and response, they MUST come first in the group, and MUST come in the 1196 specified order. For job creation operations, the IPP Printer 1197 implementation saves these two attributes with the new Job object as Job 1198 Description attributes. For the sake of brevity in this document, these 1199 operation attribute descriptions are not repeated with every operation 1200 request and response, but have a reference back to this section instead. 1202 3.1.4.1 Request Operation Attributes 1204 The client MUST supply and the Printer object MUST support the following 1205 REQUIRED operation attributes in every IPP/1.1 operation request: 1207 "attributes-charset" (charset): 1208 This operation attribute identifies the charset (coded character 1209 set and encoding method) used by any 'text' and 'name' attributes 1210 that the client is supplying in this request. It also identifies 1211 the charset that the Printer object MUST use (if supported) for all 1212 'text' and 'name' attributes and status messages that the Printer 1213 object returns in the response to this request. See Sections 4.1.1 1214 and 4.1.2 for the definition of the 'text' and 'name' attribute 1215 syntaxes. 1217 All clients and IPP objects MUST support the 'utf-8' charset 1218 [RFC2279] and MAY support additional charsets provided that they 1219 are registered with IANA [IANA-CS]. If the Printer object does not 1220 support the client supplied charset value, the Printer object MUST 1221 reject the request, set the "attributes-charset" to 'utf-8' in the 1222 response, and return the 'client-error-charset-not-supported' 1223 status code and any 'text' or 'name' attributes using the 'utf-8' 1224 charset. The Printer NEED NOT return any attributes in the 1225 Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The 1226 Printer object MUST indicate the charset(s) supported as the values 1227 of the "charset-supported" Printer attribute (see Section 4.4.18), 1228 so that the client can query to determine which charset(s) are 1229 supported. 1231 Note to client implementers: Since IPP objects are only required to 1232 support the 'utf-8' charset, in order to maximize interoperability 1233 with multiple IPP object implementations, a client may want to 1234 supply 'utf-8' in the "attributes-charset" operation attribute, 1235 even though the client is only passing and able to present a 1236 simpler charset, such as US-ASCII or ISO-8859-1. Then the client 1237 will have to filter out (or charset convert) those characters that 1238 are returned in the response that it cannot present to its user. 1239 On the other hand, if both the client and the IPP objects also 1240 support a charset in common besides utf-8, the client may want to 1241 use that charset in order to avoid charset conversion or data loss. 1243 deBry, Hastings, Herriot, Isaacson, Powell 1244 Expires August 23, 2000 1245 See the 'charset' attribute syntax description in Section 4.1.7 for 1246 the syntax and semantic interpretation of the values of this 1247 attribute and for example values. 1249 "attributes-natural-language" (naturalLanguage): 1250 This operation attribute identifies the natural language used by 1251 any 'text' and 'name' attributes that the client is supplying in 1252 this request. This attribute also identifies the natural language 1253 that the Printer object SHOULD use for all 'text' and 'name' 1254 attributes and status messages that the Printer object returns in 1255 the response to this request. 1257 There are no REQUIRED natural languages required for the Printer 1258 object to support. However, the Printer object's "generated- 1259 natural-language-supported" attribute identifies the natural 1260 languages supported by the Printer object and any contained Job 1261 objects for all text strings generated by the IPP object. A client 1262 MAY query this attribute to determine which natural language(s) are 1263 supported for generated messages. 1265 For any of the attributes for which the Printer object generates 1266 text, i.e., for the "job-state-message", "printer-state-message", 1267 and status messages (see Section 3.1.6), the Printer object MUST be 1268 able to generate these text strings in any of its supported natural 1269 languages. If the client requests a natural language that is not 1270 supported, the Printer object MUST return these generated messages 1271 in the Printer's configured natural language as specified by the 1272 Printer's "natural-language-configured" attribute" (see Section 1273 4.4.19). 1275 For other 'text' and 'name' attributes supplied by the client, 1276 authentication system, operator, system administrator, or 1277 manufacturer (i.e., for "job-originating-user-name", "printer-name" 1278 (name), "printer-location" (text), "printer-info" (text), and 1279 "printer-make-and-model" (text)), the Printer object is only 1280 required to support the configured natural language of the Printer 1281 identified by the Printer object's "natural-language-configured" 1282 attribute, though support of additional natural languages for these 1283 attributes is permitted. 1285 For any 'text' or 'name' attribute in the request that is in a 1286 different natural language than the value supplied in the 1287 "attributes-natural-language" operation attribute, the client MUST 1288 use the Natural Language Override mechanism (see sections 4.1.1.2 1289 and 4.1.2.2) for each such attribute value supplied. The client 1290 MAY use the Natural Language Override mechanism redundantly, i.e., 1291 use it even when the value is in the same natural language as the 1292 value supplied in the "attributes-natural-language" operation 1293 attribute of the request. 1295 The IPP object MUST accept any natural language and any Natural 1296 Language Override, whether the IPP object supports that natural 1297 language or not (and independent of the value of the "ipp- 1299 deBry, Hastings, Herriot, Isaacson, Powell 1300 Expires August 23, 2000 1301 attribute-fidelity" Operation attribute). That is the IPP object 1302 accepts all client supplied values no matter what the values are in 1303 the Printer object's "generated-natural-language-supported" 1304 attribute. That attribute, "generated-natural-language-supported", 1305 only applies to generated messages, not client supplied messages. 1306 The IPP object MUST remember that natural language for all client- 1307 supplied attributes, and when returning those attributes in 1308 response to a query, the IPP object MUST indicate that natural 1309 language. 1311 Each value whose attribute syntax type is 'text' or 'name' (see 1312 sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This 1313 document does not specify how this association is stored in a 1314 Printer or Job object. When such a value is encoded in a request 1315 or response, the natural language is either implicit or explicit: 1317 @ In the implicit case, the value contains only the text/name 1318 value, and the language is specified by the "attributes- 1319 natural-language" operation attribute in the request or 1320 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1 1321 nameWithoutLanguage). 1323 @ In the explicit case (also known as the Natural-Language 1324 Override case), the value contains both the language and the 1325 text/name value (see sections 4.1.1.2 textWithLanguage and 1326 4.1.2.2 nameWithLanguage). 1328 For example, the "job-name" attribute MAY be supplied by the client 1329 in a create request. The text value for this attribute will be in 1330 the natural language identified by the "attribute-natural-language" 1331 attribute, or if different, as identified by the Natural Language 1332 Override mechanism. If supplied, the IPP object will use the value 1333 of the "job-name" attribute to populate the Job object's "job-name" 1334 attribute. Whenever any client queries the Job object's "job-name" 1335 attribute, the IPP object returns the attribute as stored and uses 1336 the Natural Language Override mechanism to specify the natural 1337 language, if it is different from that reported in the "attributes- 1338 natural-language" operation attribute of the response. The IPP 1339 object MAY use the Natural Language Override mechanism redundantly, 1340 i.e., use it even when the value is in the same natural language 1341 as the value supplied in the "attributes-natural-language" 1342 operation attribute of the response. 1344 An IPP object MUST NOT reject a request based on a supplied natural 1345 language in an "attributes-natural-language" Operation attribute or 1346 in any attribute that uses the Natural Language Override. 1348 See the 'naturalLanguage' attribute syntax description in section 1349 4.1.8 for the syntax and semantic interpretation of the values of 1350 this attribute and for example values. 1352 deBry, Hastings, Herriot, Isaacson, Powell 1353 Expires August 23, 2000 1354 Clients SHOULD NOT supply 'text' or 'name' attributes that use an 1355 illegal combination of natural language and charset. For example, 1356 suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and 1357 'iso-8859-7'. Suppose also, that it supports natural languages 'en' 1358 (English), 'fr' (French), and 'el' (Greek). Although the Printer object 1359 supports the charset 'iso-8859-1' and natural language 'el', it probably 1360 does not support the combination of Greek text strings using the 'iso- 1361 8859-1' charset. The Printer object handles this apparent 1362 incompatibility differently depending on the context in which it occurs: 1364 - In a create request: If the client supplies a text or name 1365 attribute (for example, the "job-name" operation attribute) that 1366 uses an apparently incompatible combination, it is a client choice 1367 that does not affect the Printer object or its correct operation. 1368 Therefore, the Printer object simply accepts the client supplied 1369 value, stores it with the Job object, and responds back with the 1370 same combination whenever the client (or any client) queries for 1371 that attribute. 1372 - In a query-type operation, like Get-Printer-Attributes: If the 1373 client requests an apparently incompatible combination, the Printer 1374 object responds (as described in section 3.1.4.2) using the 1375 Printer's configured natural language rather than the natural 1376 language requested by the client. 1378 In either case, the Printer object does not reject the request because 1379 of the apparent incompatibility. The potential incompatible combination 1380 of charset and natural language can occur either at the global operation 1381 level or at the Natural Language Override attribute-by-attribute level. 1382 In addition, since the response always includes explicit charset and 1383 natural language information, there is never any question or ambiguity 1384 in how the client interprets the response. 1386 3.1.4.2 Response Operation Attributes 1388 The Printer object MUST supply and the client MUST support the following 1389 REQUIRED operation attributes in every IPP/1.1 operation response: 1391 "attributes-charset" (charset): 1392 This operation attribute identifies the charset used by any 'text' 1393 and 'name' attributes that the Printer object is returning in this 1394 response. The value in this response MUST be the same value as the 1395 "attributes-charset" operation attribute supplied by the client in 1396 the request. If this is not possible (i.e., the charset requested 1397 is not supported), the request would have been rejected. See 1398 "attributes-charset" described in Section 3.1.4.1 above. 1400 If the Printer object supports more than just the 'utf-8' charset, 1401 the Printer object MUST be able to code convert between each of the 1402 charsets supported on a highest fidelity possible basis in order to 1403 return the 'text' and 'name' attributes in the charset requested by 1404 the client. However, some information loss MAY occur during the 1405 charset conversion depending on the charsets involved. For 1406 example, the Printer object may convert from a UTF-8 'a' to a US- 1408 deBry, Hastings, Herriot, Isaacson, Powell 1409 Expires August 23, 2000 1410 ASCII 'a' (with no loss of information), from an ISO Latin 1 1411 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the 1412 accent), or from a UTF-8 Japanese Kanji character to some ISO Latin 1413 1 error character indication such as '?', decimal code equivalent, 1414 or to the absence of a character, depending on implementation. 1416 Whether an implementation that supports more than one charset 1417 stores the data in the charset supplied by the client or code 1418 converts to one of the other supported charsets, depends on 1419 implementation. The strategy should try to minimize loss of 1420 information during code conversion. On each response, such an 1421 implementation converts from its internal charset to that 1422 requested. 1424 "attributes-natural-language" (naturalLanguage): 1425 This operation attribute identifies the natural language used by 1426 any 'text' and 'name' attributes that the IPP object is returning 1427 in this response. Unlike the "attributes-charset" operation 1428 attribute, the IPP object NEED NOT return the same value as that 1429 supplied by the client in the request. The IPP object MAY return 1430 the natural language of the Job object or the Printer's configured 1431 natural language as identified by the Printer object's "natural- 1432 language-configured" attribute, rather than the natural language 1433 supplied by the client. For any 'text' or 'name' attribute or 1434 status message in the response that is in a different natural 1435 language than the value returned in the "attributes-natural- 1436 language" operation attribute, the IPP object MUST use the Natural 1437 Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on 1438 each attribute value returned. The IPP object MAY use the Natural 1439 Language Override mechanism redundantly, i.e., use it even when the 1440 value is in the same natural language as the value supplied in the 1441 "attributes-natural-language" operation attribute of the response. 1443 3.1.5 Operation Targets 1445 All IPP operations are directed at IPP objects. For Printer operations, 1446 the operation is always directed at a Printer object using one of its 1447 URIs (i.e., one of the values in the Printer object's "printer-uri- 1448 supported" attribute). Even if the Printer object supports more than 1449 one URI, the client supplies only one URI as the target of the 1450 operation. The client identifies the target object by supplying the 1451 correct URI in the "printer-uri (uri)" operation attribute. 1453 For Job operations, the operation is directed at either: 1455 - The Job object itself using the Job object's URI. In this case, 1456 the client identifies the target object by supplying the correct 1457 URI in the "job-uri (uri)" operation attribute. 1458 - The Printer object that created the Job object using both the 1459 Printer objects URI and the Job object's Job ID. Since the Printer 1460 object that created the Job object generated the Job ID, it MUST be 1461 able to correctly associate the client supplied Job ID with the 1462 correct Job object. The client supplies the Printer object's URI 1464 deBry, Hastings, Herriot, Isaacson, Powell 1465 Expires August 23, 2000 1466 in the "printer-uri (uri)" operation attribute and the Job object's 1467 Job ID in the "job-id (integer(1:MAX))" operation attribute. 1469 If the operation is directed at the Job object directly using the Job 1470 object's URI, the client MUST NOT include the redundant "job-id" 1471 operation attribute. 1473 The operation target attributes are REQUIRED operation attributes that 1474 MUST be included in every operation request. Like the charset and 1475 natural language attributes (see section 3.1.4), the operation target 1476 attributes are specially ordered operation attributes. In all cases, 1477 the operation target attributes immediately follow the "attributes- 1478 charset" and "attributes-natural-language" attributes within the 1479 operation attribute group, however the specific ordering rules are: 1481 - In the case where there is only one operation target attribute 1482 (i.e., either only the "printer-uri" attribute or only the "job- 1483 uri" attribute), that attribute MUST be the third attribute in the 1484 operation attributes group. 1485 - In the case where Job operations use two operation target 1486 attributes (i.e., the "printer-uri" and "job-id" attributes), the 1487 "printer-uri" attribute MUST be the third attribute and the "job- 1488 id" attribute MUST be the fourth attribute. 1490 In all cases, the target URIs contained within the body of IPP operation 1491 requests and responses must be in absolute format rather than relative 1492 format (a relative URL identifies a resource with the scope of the HTTP 1493 server, but does not include scheme, host or port). 1495 The following rules apply to the use of port numbers in URIs that 1496 identify IPP objects: 1498 1. If the URI scheme allows the port number to be explicitly included 1499 in the URI string, and a port number is specified within the URI, 1500 then that port number MUST be used by the client to contact the IPP 1501 object. 1503 2. If the URI scheme allows the port number to be explicitly included 1504 in the URI string, and a port number is not specified within the 1505 URI, then default port number implied by that URI scheme MUST be 1506 used by the client to contact the IPP object. 1508 3. If the URI scheme does not allow an explicit port number to be 1509 specified within the URI, then the default port number implied by 1510 that URI MUST be used by the client to contact the IPP object. 1512 Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping 1513 of IPP onto HTTP/1.1 [RFC2616] and defines a new default port number for 1514 using IPP over HTTP/1.1. 1516 deBry, Hastings, Herriot, Isaacson, Powell 1517 Expires August 23, 2000 1518 3.1.6 Operation Response Status Codes and Status Messages 1520 Every operation response includes a REQUIRED "status-code" parameter and 1521 an OPTIONAL "status-message" operation attribute, and an OPTIONAL 1522 "detailed-status-message" operation attribute. The Print-URI and Send- 1523 URI response MAY include an OPTIONAL "document-access-error" operation 1524 attribute. 1526 3.1.6.1 "status-code" (type2 enum) 1528 The REQUIRED "status-code" parameter provides information on the 1529 processing of a request. 1531 The status code is intended for use by automata. A client 1532 implementation of IPP SHOULD convert status code values into any 1533 localized message that has semantic meaning to the end user. 1535 The "status-code" value is a numeric value that has semantic meaning. 1536 The "status-code" syntax is similar to a "type2 enum" (see section 4.1 1537 on "Attribute Syntaxes") except that values can range only from 0x0000 1538 to 0x7FFF. Section 13 describes the status codes, assigns the numeric 1539 values, and suggests a corresponding status message for each status code 1540 for use by the client when the user's natural language is English. 1542 If the Printer performs an operation with no errors and it encounters no 1543 problems, it MUST return the status code 'successful-ok' in the 1544 response. See section 13. 1546 If the client supplies unsupported values for the following parameters 1547 or Operation attributes, the Printer object MUST reject the operation, 1548 NEED NOT return the unsupported attribute value in the Unsupported 1549 Attributes group, and MUST return the indicated status code: 1551 Parameter/Attribute Status code 1553 version-number server-error-version-not-supported 1554 operation-id server-error-operation-not-supported 1555 attributes-charset client-error-charset-not-supported 1556 compression client-error-compression-not-supported 1557 document-format client-error-document-format-not-supported 1558 document-uri client-error-uri-scheme-not-supported, 1559 client-error-document-access-error 1561 If the client supplies unsupported values for other attributes, or 1562 unsupported attributes, the Printer returns the status code defined in 1563 section 3.1.7 on Unsupported Attributes. 1565 3.1.6.2 "status-message" (text(255)) 1567 The OPTIONAL "status-message" operation attribute provides a short 1568 textual description of the status of the operation. The "status- 1569 message" attribute's syntax is "text(255)", so the maximum length is 255 1571 deBry, Hastings, Herriot, Isaacson, Powell 1572 Expires August 23, 2000 1573 octets (see section 4.1.1). The status message is intended for the 1574 human end user. If a response does include a "status-message" 1575 attribute, an IPP client NEED NOT examine or display the messages, 1576 however it SHOULD do so in some implementation specific manner. The 1577 "status-message" is especially useful for a later version of a Printer 1578 object to return as supplemental information for the human user to 1579 accompany a status code that an earlier version of a client might not 1580 understand. 1582 If the Printer object supports the "status-message" operation attribute, 1583 the Printer object MUST be able to generate this message in any of the 1584 natural languages identified by the Printer object's "generated-natural- 1585 language-supported" attribute (see the "attributes-natural-language" 1586 operation attribute specified in section 3.1.4.1. Section 13 suggests 1587 the text for the status message returned by the Printer for use with the 1588 English natural language. 1590 As described in section 3.1.4.1 for any returned 'text' attribute, if 1591 there is a choice for generating this message, the Printer object uses 1592 the natural language indicated by the value of the "attributes-natural- 1593 language" in the client request if supported, otherwise the Printer 1594 object uses the value in the Printer object's own "natural-language- 1595 configured" attribute. 1597 If the Printer object supports the "status-message" operation attribute, 1598 it SHOULD use the REQUIRED 'utf-8' charset to return a status message 1599 for the following error status codes (see section 13): 'client-error- 1600 bad-request', 'client-error-charset-not-supported', 'server-error- 1601 internal-error', 'server-error-operation-not-supported', and 'server- 1602 error-version-not-supported'. In this case, it MUST set the value of 1603 the "attributes-charset" operation attribute to 'utf-8' in the error 1604 response. 1606 3.1.6.3 "detailed-status-message" (text(MAX)) 1608 The OPTIONAL "detailed-status-message" operation attribute provides 1609 additional more detailed technical and implementation-specific 1610 information about the operation. The "detailed-status-message" 1611 attribute's syntax is "text(MAX)", so the maximum length is 1023 octets 1612 (see section 4.1.1). If the Printer objects supports the "detailed- 1613 status-message" operation attribute, neither the Printer nor the client 1614 localizes the message, since it is intended for use by the system 1615 administrator or other experienced technical persons. Clients MUST NOT 1616 attempt to parse the value of this attribute. See the "document-access- 1617 error" operation attribute (section 3.1.6.4) for additional errors that 1618 a program can process. 1620 3.1.6.4 "document-access-error" (text(MAX)) 1622 This OPTIONAL operation attribute provides additional information about 1623 any document access errors encountered by the Printer before it returned 1624 a response to the Print-URI (section 3.2.2) or Send-URI (section 3.3.1) 1626 deBry, Hastings, Herriot, Isaacson, Powell 1627 Expires August 23, 2000 1628 operation. For errors in the protocol identified by the URI scheme in 1629 the "document-uri" operation attribute, such as 'http:' or 'ftp:', the 1630 error code is returned in parentheses, followed by the URI. For 1631 example: 1633 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 1634 990510.pdf 1636 Most Internet protocols use decimal error codes (unlike IPP), so the 1637 ASCII error code representation is in decimal. 1639 3.1.7 Unsupported Attributes 1641 The Unsupported Attributes group contains attributes that are not 1642 supported by the operation. This group is primarily for the job creation 1643 operations, but all operations can return this group. 1645 A Printer object MUST include an Unsupported Attributes group in a 1646 response if the status code is one of the following: 'successful-ok- 1647 ignored-or-substituted-attributes', 'successful-ok-conflicting- 1648 attributes', 'client-error-attributes-or-values-not-supported' or 1649 'client-error-conflicting-attributes'. 1651 If the status code is one of the four specified in the preceding 1652 paragraph, the Unsupported Attributes group MUST contain all of those 1653 attributes and only those attributes that are: 1655 a. an Operation or Job Template attribute supplied in the request, and 1657 b. unsupported by the printer. See below for details on the three 1658 categories .unsupported. attributes. 1660 If the status code is one of those in the table in section 3.1.6.1, the 1661 Unsupported Attributes group NEED NOT contain the unsupported parameter 1662 or attribute indicated in that table. 1664 If the Printer object is not returning any Unsupported Attributes in the 1665 response, the Printer object SHOULD omit Group 2 rather than sending an 1666 empty group. However, a client MUST be able to accept an empty group. 1668 Unsupported attributes fall into three categories: 1670 1. The Printer object does not support the supplied attribute (no 1671 matter what the attribute syntax or value). 1673 2. The Printer object does support the attribute, but does not support 1674 some or all of the particular attribute syntaxes or values supplied 1675 by the client (i.e., the Printer object does not have those 1676 attribute syntaxes or values in its corresponding "xxx-supported" 1677 attribute). 1679 3. The Printer object does support the attributes and values supplied, 1680 but the particular values are in conflict with one another, because 1682 deBry, Hastings, Herriot, Isaacson, Powell 1683 Expires August 23, 2000 1684 they violate a constraint, such as not being able to staple 1685 transparencies. 1687 In the case of an unsupported attribute name, the Printer object returns 1688 the client-supplied attribute with a substituted value of 'unsupported'. 1689 This value's syntax type is "out-of-band" and its encoding is defined by 1690 special rules for "out-of-band" values in the "Encoding and Transport" 1691 document [IPP-PRO]. Its value indicates no support for the attribute 1692 itself (see the beginning of section 4.1). 1694 In the case of a supported attribute with one or more unsupported 1695 attribute syntaxes or values, the Printer object simply returns the 1696 client-supplied attribute with the unsupported attribute syntaxes or 1697 values as supplied by the client. This indicates support for the 1698 attribute, but no support for that particular attribute syntax or value. 1699 If the client supplies a multi-valued attribute with more than one value 1700 and the Printer object supports the attribute but only supports a subset 1701 of the client-supplied attribute syntaxes or values, the Printer object 1702 MUST return only those attribute syntaxes or values that are 1703 unsupported. 1705 In the case of two (or more) supported attribute values that are in 1706 conflict with one another (although each is supported independently, the 1707 values conflict when requested together within the same job), the 1708 Printer object MUST return all the values that it ignores or substitutes 1709 to resolve the conflict, but not any of the values that it is still 1710 using. The choice for exactly how to resolve the conflict is 1711 implementation dependent. See sections 3.2.1.2 and 15. See The 1712 Implementer's Guide [IPP-IIG] for an example. 1714 3.1.8 Versions 1716 Each operation request and response carries with it a "version-number" 1717 parameter. Each value of the "version-number" is in the form "X.Y" 1718 where X is the major version number and Y is the minor version number. 1719 By including a version number in the client request, it allows the 1720 client to identify which version of IPP it is interested in using, 1721 i.e., the version whose conformance requirements the client may be 1722 depending upon the Printer to meet. 1724 If the IPP object does not support that major version number supplied by 1725 the client, i.e., the major version field of the "version-number" 1726 parameter does not match any of the values of the Printer's "ipp- 1727 versions-supported" (see section 4.4.14), the object MUST respond with a 1728 status code of 'server-error-version-not-supported' along with the 1729 closest version number that is supported (see section 13.1.5.4). If the 1730 major version number is supported, but the minor version number is not, 1731 the IPP object SHOULD accept and attempt to perform the request (or 1732 reject the request if the operation is not supported), else it rejects 1733 the request and returns the 'server-error-version-not-supported' status 1734 code. In all cases, the IPP object MUST return the "version-number" 1736 deBry, Hastings, Herriot, Isaacson, Powell 1737 Expires August 23, 2000 1738 that it supports that is closest to the version number supplied by the 1739 client in the request. 1741 There is no version negotiation per se. However, if after receiving a 1742 'server-error-version-not-supported' status code from an IPP object, a 1743 client SHOULD try again with a different version number. A client MAY 1744 also determine the versions supported either from a directory that 1745 conforms to Appendix E (see section 16) or by querying the Printer 1746 object's "ipp-versions-supported" attribute (see section 4.4.14) to 1747 determine which versions are supported. 1749 An IPP object implementation MUST support version '1.1', i.e., meet the 1750 conformance requirements for IPP/1.1 as specified in this document and 1751 [IPP-PRO]. It is recommended that IPP object implementations accept any 1752 request with the major version '1' (or reject the request if the 1753 operation is not supported). 1755 There is only one notion of "version number" that covers both IPP Model 1756 and IPP Protocol changes. Thus the version number MUST change when 1757 introducing a new version of the Model and Semantics document (this 1758 document) or a new version of the "Encoding and Transport" document 1759 [IPP-PRO]. 1761 Changes to the major version number of the Model and Semantics document 1762 indicate structural or syntactic changes that make it impossible for 1763 older version of IPP clients and Printer objects to correctly parse and 1764 correctly process the new or changed attributes, operations and 1765 responses. If the major version number changes, the minor version 1766 numbers is set to zero. As an example, adding the REQUIRED "ipp- 1767 attribute-fidelity" attribute to version '1.1' (if it had not been part 1768 of version '1.0'), would have required a change to the major version 1769 number, since an IPP/1.0 Printer would not have processed a request with 1770 the correct semantics that contained the "ipp-attribute-fidelity" 1771 attribute that it did not know about. Items that might affect the 1772 changing of the major version number include any changes to the Model 1773 and Semantics document (this document) or the "Encoding and Transport" 1774 document [IPP-PRO] itself, such as: 1776 - reordering of ordered attributes or attribute sets 1777 - changes to the syntax of existing attributes 1778 - adding REQUIRED (for an IPP object to support) operation attribute 1779 groups 1780 - adding values to existing REQUIRED operation attributes 1781 - adding REQUIRED operations 1783 Changes to the minor version number indicate the addition of new 1784 features, attributes and attribute values that may not be understood by 1785 all IPP objects, but which can be ignored if not understood. Items that 1786 might affect the changing of the minor version number include any 1787 changes to the model objects and attributes but not the encoding and 1788 transport rules [IPP-PRO] (except adding attribute syntaxes). Examples 1789 of such changes are: 1791 deBry, Hastings, Herriot, Isaacson, Powell 1792 Expires August 23, 2000 1793 - grouping all extensions not included in a previous version into a 1794 new version 1795 - adding new attribute values 1796 - adding new object attributes 1797 - adding OPTIONAL (for an IPP object to support) operation attributes 1798 (i.e., those attributes that an IPP object can ignore without 1799 confusing clients) 1800 - adding OPTIONAL (for an IPP object to support) operation attribute 1801 groups (i.e., those attributes that an IPP object can ignore 1802 without confusing clients) 1803 - adding new attribute syntaxes 1804 - adding OPTIONAL operations 1805 - changing Job Description attributes or Printer Description 1806 attributes from OPTIONAL to REQUIRED or vice versa. 1807 - adding OPTIONAL attribute syntaxes to an existing attribute. 1809 The encoding of the "version-number" MUST NOT change over any version 1810 number (either major or minor). This rule guarantees that all future 1811 versions will be backwards compatible with all previous versions (at 1812 least for checking the "version-number"). In addition, any protocol 1813 elements (attributes, error codes, tags, etc.) that are not carried 1814 forward from one version to the next are deprecated so that they can 1815 never be reused with new semantics. 1817 Implementations that support a certain version NEED NOT support ALL 1818 previous versions. As each new version is defined (through the release 1819 of a new IPP specification document), that version will specify which 1820 previous versions MUST and which versions SHOULD be supported in 1821 compliant implementations. 1823 3.1.9 Job Creation Operations 1825 In order to "submit a print job" and create a new Job object, a client 1826 issues a create request. A create request is any one of following three 1827 operation requests: 1829 - The Print-Job Request: A client that wants to submit a print job 1830 with only a single document uses the Print-Job operation. The 1831 operation allows for the client to "push" the document data to the 1832 Printer object by including the document data in the request 1833 itself. 1835 - The Print-URI Request: A client that wants to submit a print job 1836 with only a single document (where the Printer object "pulls" the 1837 document data instead of the client "pushing" the data to the 1838 Printer object) uses the Print-URI operation. In this case, the 1839 client includes in the request only a URI reference to the document 1840 data (not the document data itself). 1842 - The Create-Job Request: A client that wants to submit a print job 1843 with multiple documents uses the Create-Job operation. This 1844 operation is followed by an arbitrary number of Send-Document 1845 and/or Send-URI operations (each creating another document for the 1847 deBry, Hastings, Herriot, Isaacson, Powell 1848 Expires August 23, 2000 1849 newly create Job object). The Send-Document operation includes the 1850 document data in the request (the client "pushes" the document data 1851 to the printer), and the Send-URI operation includes only a URI 1852 reference to the document data in the request (the Printer "pulls" 1853 the document data from the referenced location). The last Send- 1854 Document or Send-URI request for a given Job object includes a 1855 "last-document" operation attribute set to 'true' indicating that 1856 this is the last request. 1858 Throughout this model document, the term "create request" is used to 1859 refer to any of these three operation requests. 1861 A Create-Job operation followed by only one Send-Document operation is 1862 semantically equivalent to a Print-Job operation, however, for 1863 performance reasons, the client SHOULD use the Print-Job operation for 1864 all single document jobs. Also, Print-Job is a REQUIRED operation (all 1865 implementations MUST support it) whereas Create-Job is an OPTIONAL 1866 operation, hence some implementations might not support it. 1868 Job submission time is the point in time when a client issues a create 1869 request. The initial state of every Job object is the 'pending', 1870 'pending-held', or 'processing' state (see section 4.3.7). When the 1871 Printer object begins processing the print job, the Job object's state 1872 moves to 'processing'. This is known as job processing time. There are 1873 validation checks that must be done at job submission time and others 1874 that must be performed at job processing time. 1876 At job submission time and at the time a Validate-Job operation is 1877 received, the Printer MUST do the following: 1879 1. Process the client supplied attributes and either accept or reject 1880 the request 1881 2. Validate the syntax of and support for the scheme of any client 1882 supplied URI 1884 At job submission time the Printer object MUST validate whether or not 1885 the supplied attributes, attribute syntaxes, and values are supported by 1886 matching them with the Printer object's corresponding "xxx-supported" 1887 attributes. See section 3.1.7 for details. [IPP-IIG] presents 1888 suggested steps for an IPP object to either accept or reject any request 1889 and additional steps for processing create requests. 1891 At job submission time the Printer object NEED NOT perform the 1892 validation checks reserved for job processing time such as: 1894 1. Validating the document data 1895 2. Validating the actual contents of any client supplied URI (resolve 1896 the reference and follow the link to the document data) 1898 At job submission time, these additional job processing time validation 1899 checks are essentially useless, since they require actually parsing and 1900 interpreting the document data, are not guaranteed to be 100% accurate, 1902 deBry, Hastings, Herriot, Isaacson, Powell 1903 Expires August 23, 2000 1904 and MUST be done, yet again, at job processing time. Also, in the case 1905 of a URI, checking for availability at job submission time does not 1906 guarantee availability at job processing time. In addition, at job 1907 processing time, the Printer object might discover any of the following 1908 conditions that were not detectable at job submission time: 1910 - runtime errors in the document data, 1911 - nested document data that is in an unsupported format, 1912 - the URI reference is no longer valid (i.e., the server hosting the 1913 document might be down), or 1914 - any other job processing error 1916 At job submission time, a Printer object, especially a non-spooling 1917 Printer, MAY accept jobs that it does not have enough space for. In 1918 such a situation, a Printer object MAY stop reading data from a client 1919 for an indefinite period of time. A client MUST be prepared for a write 1920 operation to block for an indefinite period of time (see section 5.1 on 1921 client conformance). 1923 When a Printer object has too little space for starting a new job, it 1924 MAY reject a new create request. In this case, a Printer object MUST 1925 return a response (in reply to the rejected request) with a status-code 1926 of 'server-error-busy' (see section 14.1.5.8) and it MAY close the 1927 connection before receiving all bytes of the operation. A Printer 1928 SHOULD indicate that it is temporarily unable to accept jobs by setting 1929 the 'spool-space-full' value in its "printer-state-reasons" attribute 1930 and removing the value when it can accept another job (see section 1931 4.4.12). 1933 When receiving a 'server-error-busy' status-code in an operation 1934 response, a client MUST be prepared for the Printer object to close the 1935 connection before the client has sent all of the data (especially for 1936 the Print-Job operation). A client MUST be prepared to keep submitting a 1937 create request until the IPP Printer object accepts the create request. 1939 At job processing time, since the Printer object has already responded 1940 with a successful status code in the response to the create request, if 1941 the Printer object detects an error, the Printer object is unable to 1942 inform the end user of the error with an operation status code. In 1943 this case, the Printer, depending on the error, can set the job object's 1944 "job-state", "job-state-reasons", or "job-state-message" attributes to 1945 the appropriate value(s) so that later queries can report the correct 1946 job status. 1948 Note: Asynchronous notification of events is outside the scope of this 1949 IPP/1.1 document. 1951 deBry, Hastings, Herriot, Isaacson, Powell 1952 Expires August 23, 2000 1953 3.2 Printer Operations 1955 All Printer operations are directed at Printer objects. A client MUST 1956 always supply the "printer-uri" operation attribute in order to identify 1957 the correct target of the operation. 1959 3.2.1 Print-Job Operation 1961 This REQUIRED operation allows a client to submit a print job with only 1962 one document and supply the document data (rather than just a reference 1963 to the data). See Section 15 for the suggested steps for processing 1964 create operations and their Operation and Job Template attributes. 1966 3.2.1.1 Print-Job Request 1968 The following groups of attributes are supplied as part of the Print-Job 1969 Request: 1971 Group 1: Operation Attributes 1973 Natural Language and Character Set: 1974 The "attributes-charset" and "attributes-natural-language" 1975 attributes as described in section 3.1.4.1. The Printer object 1976 MUST copy these values to the corresponding Job Description 1977 attributes described in sections 4.3.19 and 4.3.20. 1979 Target: 1980 The "printer-uri" (uri) operation attribute which is the target for 1981 this operation as described in section 3.1.5. 1983 Requesting User Name: 1984 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 1985 by the client as described in section 8.3. 1987 "job-name" (name(MAX)): 1988 The client OPTIONALLY supplies this attribute. The Printer object 1989 MUST support this attribute. It contains the client supplied Job 1990 name. If this attribute is supplied by the client, its value is 1991 used for the "job-name" attribute of the newly created Job object. 1992 The client MAY automatically include any information that will help 1993 the end-user distinguish amongst his/her jobs, such as the name of 1994 the application program along with information from the document, 1995 such as the document name, document subject, or source file name. 1996 If this attribute is not supplied by the client, the Printer 1997 generates a name to use in the "job-name" attribute of the newly 1998 created Job object (see Section 4.3.5). 2000 "ipp-attribute-fidelity" (boolean): 2001 The client OPTIONALLY supplies this attribute. The Printer object 2002 MUST support this attribute. The value 'true' indicates that total 2003 fidelity to client supplied Job Template attributes and values is 2004 required, else the Printer object MUST reject the Print-Job 2006 deBry, Hastings, Herriot, Isaacson, Powell 2007 Expires August 23, 2000 2008 request. The value 'false' indicates that a reasonable attempt to 2009 print the Job object is acceptable and the Printer object MUST 2010 accept the Print-Job request. If not supplied, the Printer object 2011 assumes the value is 'false'. All Printer objects MUST support 2012 both types of job processing. See section 15 for a full 2013 description of "ipp-attribute-fidelity" and its relationship to 2014 other attributes, especially the Printer object's "pdl-override- 2015 supported" attribute. 2017 "document-name" (name(MAX)): 2018 The client OPTIONALLY supplies this attribute. The Printer object 2019 MUST support this attribute. It contains the client supplied 2020 document name. The document name MAY be different than the Job 2021 name. Typically, the client software automatically supplies the 2022 document name on behalf of the end user by using a file name or an 2023 application generated name. If this attribute is supplied, its 2024 value can be used in a manner defined by each implementation. 2025 Examples include: printed along with the Job (job start sheet, page 2026 adornments, etc.), used by accounting or resource tracking 2027 management tools, or even stored along with the document as a 2028 document level attribute. IPP/1.1 does not support the concept of 2029 document level attributes. 2031 "compression" (type3 keyword) 2032 The client OPTIONALLY supplies this attribute. The Printer object 2033 MUST support this attribute and the "compression-supported" 2034 attribute (see section 4.4.32). The client supplied "compression" 2035 operation attribute identifies the compression algorithm used on 2036 the document data. The following cases exist: 2037 a)If the client omits this attribute, the Printer object MUST 2038 assume that the data is not compressed (i.e. the Printer 2039 follows the rules below as if the client supplied the 2040 "compression" attribute with a value of 'none'). 2041 b)If the client supplies this attribute, but the value is not 2042 supported by the Printer object, i.e., the value is not one 2043 of the values of the Printer object's "compression- 2044 supported" attribute, the Printer object MUST reject the 2045 request, and return the 'client-error-compression-not- 2046 supported' status code. See section 3.1.7 for returning 2047 unsupported attributes and values. 2048 c)If the client supplies the attribute and the Printer object 2049 supports the attribute value, the Printer object uses the 2050 corresponding decompression algorithm on the document data. 2051 d)If the decompression algorithm fails before the Printer 2052 returns an operation response, the Printer object MUST 2053 reject the request and return the 'client-error- 2054 compression-error' status code. 2055 e)If the decompression algorithm fails after the Printer 2056 returns an operation response, the Printer object MUST 2057 abort the job and add the 'compression-error' value to the 2058 job's "job-state-reasons" attribute. 2059 f)If the decompression algorithm succeeds, the document data 2060 MUST then have the format specified by the job's "document- 2062 deBry, Hastings, Herriot, Isaacson, Powell 2063 Expires August 23, 2000 2064 format" attribute, if supplied (see "document-format" 2065 operation attribute definition below). 2067 "document-format" (mimeMediaType) : 2068 The client OPTIONALLY supplies this attribute. The Printer object 2069 MUST support this attribute. The value of this attribute 2070 identifies the format of the supplied document data. The following 2071 cases exist: 2072 a)If the client does not supply this attribute, the Printer 2073 object assumes that the document data is in the format 2074 defined by the Printer object's "document-format-default" 2075 attribute. (i.e. the Printer follows the rules below as if 2076 the client supplied the "document-format" attribute with a 2077 value equal to the printer's default value). 2078 b)If the client supplies this attribute, but the value is not 2079 supported by the Printer object, i.e., the value is not one 2080 of the values of the Printer object's "document-format- 2081 supported" attribute, the Printer object MUST reject the 2082 request and return the 'client-error-document-format-not- 2083 supported' status code. 2084 c)If the client supplies this attribute and its value is 2085 'application/octet-stream' (i.e. to be auto-sensed, see 2086 Section 4.1.9.1), and the format is not one of the 2087 document-formats that the Printer can auto-sense, and this 2088 check occurs before the Printer returns an operation 2089 response, then the Printer MUST reject the request and 2090 return the 'client-error-document-format-not-supported' 2091 status code. 2092 d)If the client supplies this attribute, and the value is 2093 supported by the Printer object, the document data, the 2094 Printer is capable of interpreting the document data. 2095 e)If interpreting of the document data fails before the 2096 Printer returns an operation response, the Printer object 2097 MUST reject the request and return the 'client-error- 2098 document-format-error' status code. 2099 f)If interpreting of the document data fails after the 2100 Printer returns an operation response, the Printer object 2101 MUST abort the job and add the 'document-format-error' 2102 value to the job's "job-state-reasons" attribute. 2104 "document-natural-language" (naturalLanguage): 2105 The client OPTIONALLY supplies this attribute. The Printer object 2106 OPTIONALLY supports this attribute. This attribute specifies the 2107 natural language of the document for those document-formats that 2108 require a specification of the natural language in order to image 2109 the document unambiguously. There are no particular values required 2110 for the Printer object to support. 2112 "job-k-octets" (integer(0:MAX)) 2113 The client OPTIONALLY supplies this attribute. The Printer object 2114 OPTIONALLY supports this attribute and the "job-k-octets-supported" 2115 attribute (see section 4.4.33). The client supplied "job-k-octets" 2116 operation attribute identifies the total size of the document(s) in 2118 deBry, Hastings, Herriot, Isaacson, Powell 2119 Expires August 23, 2000 2120 K octets being submitted (see section 4.3.17.1 for the complete 2121 semantics). If the client supplies the attribute and the Printer 2122 object supports the attribute, the value of the attribute is used 2123 to populate the Job object's "job-k-octets" Job Description 2124 attribute. 2126 For this attribute and the following two attributes ("job- 2127 impressions", and "job-media-sheets"), if the client supplies the 2128 attribute, but the Printer object does not support the attribute, 2129 the Printer object ignores the client-supplied value. If the 2130 client supplies the attribute and the Printer supports the 2131 attribute, and the value is within the range of the corresponding 2132 Printer object's "xxx-supported" attribute, the Printer object MUST 2133 use the value to populate the Job object's "xxx" attribute. If the 2134 client supplies the attribute and the Printer supports the 2135 attribute, but the value is outside the range of the corresponding 2136 Printer object's "xxx-supported" attribute, the Printer object MUST 2137 copy the attribute and its value to the Unsupported Attributes 2138 response group, reject the request, and return the 'client-error- 2139 attributes-or-values-not-supported' status code. If the client 2140 does not supply the attribute, the Printer object MAY choose to 2141 populate the corresponding Job object attribute depending on 2142 whether the Printer object supports the attribute and is able to 2143 calculate or discern the correct value. 2145 "job-impressions" (integer(0:MAX)) 2146 The client OPTIONALLY supplies this attribute. The Printer object 2147 OPTIONALLY supports this attribute and the "job-impressions- 2148 supported" attribute (see section 4.4.34). The client supplied 2149 "job-impressions" operation attribute identifies the total size in 2150 number of impressions of the document(s) being submitted (see 2151 section 4.3.17.2 for the complete semantics). 2153 See last paragraph under "job-k-octets". 2155 "job-media-sheets" (integer(0:MAX)) 2156 The client OPTIONALLY supplies this attribute. The Printer object 2157 OPTIONALLY supports this attribute and the "job-media-sheets- 2158 supported" attribute (see section 4.4.35). The client supplied 2159 "job-media-sheets" operation attribute identifies the total number 2160 of media sheets to be produced for this job (see section 4.3.17.3 2161 for the complete semantics). 2163 See last paragraph under "job-k-octets". 2165 Group 2: Job Template Attributes 2167 The client OPTIONALLY supplies a set of Job Template attributes as 2168 defined in section 4.2. If the client is not supplying any Job 2169 Template attributes in the request, the client SHOULD omit Group 2 2170 rather than sending an empty group. However, a Printer object MUST 2171 be able to accept an empty group. 2173 deBry, Hastings, Herriot, Isaacson, Powell 2174 Expires August 23, 2000 2175 Group 3: Document Content 2177 The client MUST supply the document data to be processed. 2179 In addition to the MANDATORY parameters required for every operation 2180 request, the simplest Print-Job Request consists of just the 2181 "attributes-charset" and "attributes-natural-language" operation 2182 attributes; the "printer-uri" target operation attribute; the Document 2183 Content and nothing else. In this simple case, the Printer object: 2185 - creates a new Job object (the Job object contains a single 2186 document), 2187 - stores a generated Job name in the "job-name" attribute in the 2188 natural language and charset requested (see Section 3.1.4.1) (if 2189 those are supported, otherwise using the Printer object's default 2190 natural language and charset), and 2191 - at job processing time, uses its corresponding default value 2192 attributes for the supported Job Template attributes that were not 2193 supplied by the client as IPP attribute or embedded instructions in 2194 the document data. 2196 3.2.1.2 Print-Job Response 2198 The Printer object MUST return to the client the following sets of 2199 attributes as part of the Print-Job Response: 2201 Group 1: Operation Attributes 2203 Status Message: 2204 In addition to the REQUIRED status code returned in every response, 2205 the response OPTIONALLY includes a "status-message" (text(255)) 2206 and/or a "detailed-status-message" (text(MAX)) operation attribute 2207 as described in sections 13 and 3.1.6. If the client supplies 2208 unsupported or conflicting Job Template attributes or values, the 2209 Printer object MUST reject or accept the Print-Job request 2210 depending on the whether the client supplied a 'true' or 'false' 2211 value for the "ipp-attribute-fidelity" operation attribute. See 2212 the Implementer's Guide [IPP-IIG] for a complete description of the 2213 suggested steps for processing a create request. 2215 Natural Language and Character Set: 2216 The "attributes-charset" and "attributes-natural-language" 2217 attributes as described in section 3.1.4.2. 2219 Group 2: Unsupported Attributes 2221 See section 3.1.7 for details on returning Unsupported Attributes. 2223 The value of the "ipp-attribute-fidelity" supplied by the client 2224 does not affect what attributes the Printer object returns in this 2225 group. The value of "ipp-attribute-fidelity" only affects whether 2226 the Print-Job operation is accepted or rejected. If the job is 2228 deBry, Hastings, Herriot, Isaacson, Powell 2229 Expires August 23, 2000 2230 accepted, the client may query the job using the Get-Job-Attributes 2231 operation requesting the unsupported attributes that were returned 2232 in the create response to see which attributes were ignored (not 2233 stored on the Job object) and which attributes were stored with 2234 other (substituted) values. 2236 Group 3: Job Object Attributes 2238 "job-uri" (uri): 2239 The Printer object MUST return the Job object's URI by returning 2240 the contents of the REQUIRED "job-uri" Job object attribute. The 2241 client uses the Job object's URI when directing operations at the 2242 Job object. The Printer object always uses its configured security 2243 policy when creating the new URI. However, if the Printer object 2244 supports more than one URI, the Printer object also uses 2245 information about which URI was used in the Print-Job Request to 2246 generated the new URI so that the new URI references the correct 2247 access channel. In other words, if the Print-Job Request comes in 2248 over a secure channel, the Printer object MUST generate a Job URI 2249 that uses the secure channel as well. 2251 "job-id" (integer(1:MAX)): 2252 The Printer object MUST return the Job object's Job ID by returning 2253 the REQUIRED "job-id" Job object attribute. The client uses this 2254 "job-id" attribute in conjunction with the "printer-uri" attribute 2255 used in the Print-Job Request when directing Job operations at the 2256 Printer object. 2258 "job-state": 2259 The Printer object MUST return the Job object's REQUIRED "job- 2260 state" attribute. The value of this attribute (along with the value 2261 of the next attribute: "job-state-reasons") is taken from a 2262 "snapshot" of the new Job object at some meaningful point in time 2263 (implementation defined) between when the Printer object receives 2264 the Print-Job Request and when the Printer object returns the 2265 response. 2267 "job-state-reasons": 2268 The Printer object MUST return the Job object's REQUIRED "job- 2269 state-reasons" attribute. 2271 "job-state-message": 2272 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2273 "job-state-message" attribute. If the Printer object supports this 2274 attribute then it MUST be returned in the response. If this 2275 attribute is not returned in the response, the client can assume 2276 that the "job-state-message" attribute is not supported and will 2277 not be returned in a subsequent Job object query. 2279 "number-of-intervening-jobs": 2280 The Printer object OPTIONALLY returns the Job object's OPTIONAL 2281 "number-of-intervening-jobs" attribute. If the Printer object 2282 supports this attribute then it MUST be returned in the response. 2284 deBry, Hastings, Herriot, Isaacson, Powell 2285 Expires August 23, 2000 2286 If this attribute is not returned in the response, the client can 2287 assume that the "number-of-intervening-jobs" attribute is not 2288 supported and will not be returned in a subsequent Job object 2289 query. 2291 Note: Since any printer state information which affects a job's 2292 state is reflected in the "job-state" and "job-state-reasons" 2293 attributes, it is sufficient to return only these attributes and no 2294 specific printer status attributes. 2296 Note: In addition to the MANDATORY parameters required for every 2297 operation response, the simplest response consists of the just the 2298 "attributes-charset" and "attributes-natural-language" operation 2299 attributes and the "job-uri", "job-id", and "job-state" Job Object 2300 Attributes. In this simplest case, the status code is 'successful-ok' 2301 and there is no "status-message" or "detailed-status-message" operation 2302 attribute. 2304 3.2.2 Print-URI Operation 2306 This OPTIONAL operation is identical to the Print-Job operation (section 2307 3.2.1) except that a client supplies a URI reference to the document 2308 data using the "document-uri" (uri) operation attribute (in Group 1) 2309 rather than including the document data itself. Before returning the 2310 response, the Printer MUST validate that the Printer supports the 2311 retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST 2312 check for valid URI syntax. If the client-supplied URI scheme is not 2313 supported, i.e. the value is not in the Printer object's "referenced- 2314 uri-scheme-supported" attribute, the Printer object MUST reject the 2315 request and return the 'client-error-uri-scheme-not-supported' status 2316 code. 2318 The IPP Printer MAY validate the accessibility of the document as part 2319 of the operation or subsequently. If the Printer determines an 2320 accessibility problem before returning an operation response, it rejects 2321 the request and returns the 'client-error-document-access-error' status 2322 code. The Printer MAY also return a specific document access error code 2323 using the "document-access-error" operation attribute (see section 2324 3.1.6.4). 2326 If the Printer determines this document accessibility problem after 2327 accepting the request and returning an operation response with one of 2328 the successful status codes, the Printer adds the 'document-access- 2329 error' value to the job's "job-state-reasons" attribute and MAY populate 2330 the job's "job-document-access-errors" Job Description attribute (see 2331 section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested 2332 additional checks. 2334 If the Printer object supports this operation, it MUST support the 2335 "reference-uri-schemes-supported" Printer attribute (see section 2336 4.4.27). 2338 deBry, Hastings, Herriot, Isaacson, Powell 2339 Expires August 23, 2000 2340 It is up to the IPP object to interpret the URI and subsequently "pull" 2341 the document from the source referenced by the URI string. 2343 3.2.3 Validate-Job Operation 2345 This REQUIRED operation is similar to the Print-Job operation (section 2346 3.2.1) except that a client supplies no document data and the Printer 2347 allocates no resources (i.e., it does not create a new Job object). 2348 This operation is used only to verify capabilities of a printer object 2349 against whatever attributes are supplied by the client in the Validate- 2350 Job request. By using the Validate-Job operation a client can validate 2351 that an identical Print-Job operation (with the document data) would be 2352 accepted. The Validate-Job operation also performs the same security 2353 negotiation as the Print-Job operation (see section 8), so that a client 2354 can check that the client and Printer object security requirements can 2355 be met before performing a Print-Job operation. 2357 The Validate-Job operation does not accept a "document-uri" attribute in 2358 order to allow a client to check that the same Print-URI operation will 2359 be accepted, since the client doesn't send the data with the Print-URI 2360 operation. The client SHOULD just issue the Print-URI request. 2362 The Printer object returns the same status codes, Operation Attributes 2363 (Group 1) and Unsupported Attributes (Group 2) as the Print-Job 2364 operation. However, no Job Object Attributes (Group 3) are returned, 2365 since no Job object is created. 2367 3.2.4 Create-Job Operation 2369 This OPTIONAL operation is similar to the Print-Job operation (section 2370 3.2.1) except that in the Create-Job request, a client does not supply 2371 document data or any reference to document data. Also, the client does 2372 not supply any of the "document-name", "document-format", "compression", 2373 or "document-natural-language" operation attributes. This operation is 2374 followed by one or more Send-Document or Send-URI operations. In each 2375 of those operation requests, the client OPTIONALLY supplies the 2376 "document-name", "document-format", and "document-natural-language" 2377 attributes for each document in the multi-document Job object. 2379 If a Printer object supports the Create-Job operation, it MUST also 2380 support the Send-Document operation and also MAY support the Send-URI 2381 operation. 2383 If the Printer object supports this operation, it MUST support the 2384 "multiple-operation-time-out" Printer attribute (see section 4.4.31). 2386 If the Printer object supports this operation, then it MUST support the 2387 "multiple-document-jobs-supported" Printer Description attribute (see 2388 section 4.4.16) and indicate whether or not it supports multiple- 2389 document jobs. 2391 deBry, Hastings, Herriot, Isaacson, Powell 2392 Expires August 23, 2000 2393 If the Printer object supports this operation and supports multiple 2394 documents in a job, then it MUST support the "multiple-document- 2395 handling" Job Template job attribute with at least one value (see 2396 section 4.2.4) and the associated "multiple-document-handling-default" 2397 and "multiple-document-handling-supported" Job Template Printer 2398 attributes (see section 4.2). 2400 After the Create-Job operation has completed, the value of the "job- 2401 state" attribute is similar to the "job-state" after a Print-Job, even 2402 though no document-data has arrived. A Printer MAY set the 'job-data- 2403 insufficient' value of the job's "job-state-reason" attribute to 2404 indicate that processing cannot begin until sufficient data has arrived 2405 and set the "job-state" to either 'pending' or 'pending-held'. A non- 2406 spooling printer that doesn't implement the 'pending' job state may even 2407 set the "job-state" to 'processing', even though there is not yet any 2408 data to process. See sections 4.3.7 and 4.3.8. 2410 3.2.5 Get-Printer-Attributes Operation 2412 This REQUIRED operation allows a client to request the values of the 2413 attributes of a Printer object. In the request, the client supplies 2414 the set of Printer attribute names and/or attribute group names in which 2415 the requester is interested. In the response, the Printer object 2416 returns a corresponding attribute set with the appropriate attribute 2417 values filled in. 2419 For Printer objects, the possible names of attribute groups are: 2421 - 'job-template': the subset of the Job Template attributes that 2422 apply to a Printer object (the last two columns of the table in 2423 Section 4.2) that the implementation supports for Printer objects. 2424 - 'printer-description': the subset of the attributes specified in 2425 Section 4.4 that the implementation supports for Printer objects. 2426 - 'all': the special group 'all' that includes all attributes that 2427 the implementation supports for Printer objects. 2429 Since a client MAY request specific attributes or named groups, there is 2430 a potential that there is some overlap. For example, if a client 2431 requests, 'printer-name' and 'all', the client is actually requesting 2432 the "printer-name" attribute twice: once by naming it explicitly, and 2433 once by inclusion in the 'all' group. In such cases, the Printer object 2434 NEED NOT return each attribute only once in the response even if it is 2435 requested multiple times. The client SHOULD NOT request the same 2436 attribute in multiple ways. 2438 It is NOT REQUIRED that a Printer object support all attributes 2439 belonging to a group (since some attributes are OPTIONAL). However, it 2440 is REQUIRED that each Printer object support all group names. 2442 deBry, Hastings, Herriot, Isaacson, Powell 2443 Expires August 23, 2000 2444 3.2.5.1 Get-Printer-Attributes Request 2446 The following sets of attributes are part of the Get-Printer-Attributes 2447 Request: 2449 Group 1: Operation Attributes 2451 Natural Language and Character Set: 2452 The "attributes-charset" and "attributes-natural-language" 2453 attributes as described in section 3.1.4.1. 2455 Target: 2456 The "printer-uri" (uri) operation attribute which is the target for 2457 this operation as described in section 3.1.5. 2459 Requesting User Name: 2460 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2461 by the client as described in section 8.3. 2463 "requested-attributes" (1setOf keyword) : 2464 The client OPTIONALLY supplies a set of attribute names and/or 2465 attribute group names in whose values the requester is interested. 2466 The Printer object MUST support this attribute. If the client 2467 omits this attribute, the Printer MUST respond as if this attribute 2468 had been supplied with a value of 'all'. 2470 "document-format" (mimeMediaType) : 2471 The client OPTIONALLY supplies this attribute. The Printer object 2472 MUST support this attribute. This attribute is useful for a 2473 Printer object to determine the set of supported attribute values 2474 that relate to the requested document format. The Printer object 2475 MUST return the attributes and values that it uses to validate a 2476 job on a create or Validate-Job operation in which this document 2477 format is supplied. The Printer object SHOULD return only (1) those 2478 attributes that are supported for the specified format and (2) the 2479 attribute values that are supported for the specified document 2480 format. By specifying the document format, the client can get the 2481 Printer object to eliminate the attributes and values that are not 2482 supported for a specific document format. For example, a Printer 2483 object might have multiple interpreters to support both 2484 'application/postscript' (for PostScript) and 'text/plain' (for 2485 text) documents. However, for only one of those interpreters might 2486 the Printer object be able to support "number-up" with values of 2487 '1', '2', and '4'. For the other interpreter it might be able to 2488 only support "number-up" with a value of '1'. Thus a client can use 2489 the Get-Printer-Attributes operation to obtain the attributes and 2490 values that will be used to accept/reject a create job operation. 2492 If the Printer object does not distinguish between different sets 2493 of supported values for each different document format when 2494 validating jobs in the create and Validate-Job operations, it MUST 2495 NOT distinguish between different document formats in the Get- 2496 Printer-Attributes operation. If the Printer object does 2498 deBry, Hastings, Herriot, Isaacson, Powell 2499 Expires August 23, 2000 2500 distinguish between different sets of supported values for each 2501 different document format specified by the client, this 2502 specialization applies only to the following Printer object 2503 attributes: 2505 - Printer attributes that are Job Template attributes ("xxx- 2506 default" "xxx-supported", and "xxx-ready" in the Table in 2507 Section 4.2), 2508 - "pdl-override-supported", 2509 - "compression-supported", 2510 - "job-k-octets-supported", 2511 - "job-impressions-supported, 2512 - "job-media-sheets-supported" 2513 - "printer-driver-installer", 2514 - "color-supported", and 2515 - "reference-uri-schemes-supported" 2517 The values of all other Printer object attributes (including 2518 "document-format-supported") remain invariant with respect to the 2519 client supplied document format (except for new Printer description 2520 attribute as registered according to section 6.2). 2522 If the client omits this "document-format" operation attribute, the 2523 Printer object MUST respond as if the attribute had been supplied 2524 with the value of the Printer object's "document-format-default" 2525 attribute. It is recommended that the client always supply a value 2526 for "document-format", since the Printer object's "document-format- 2527 default" may be 'application/octet-stream', in which case the 2528 returned attributes and values are for the union of the document 2529 formats that the Printer can automatically sense. For more 2530 details, see the description of the 'mimeMediaType' attribute 2531 syntax in section 4.1.9. 2533 If the client supplies a value for the "document-format" Operation 2534 attribute that is not supported by the Printer, i.e., is not among 2535 the values of the Printer object's "document-format-supported" 2536 attribute, the Printer object MUST reject the operation and return 2537 the 'client-error-document-format-not-supported' status code. 2539 3.2.5.2 Get-Printer-Attributes Response 2541 The Printer object returns the following sets of attributes as part of 2542 the Get-Printer-Attributes Response: 2544 Group 1: Operation Attributes 2546 Status Message: 2547 In addition to the REQUIRED status code returned in every response, 2548 the response OPTIONALLY includes a "status-message" (text(255)) 2549 and/or a "detailed-status-message" (text(MAX)) operation attribute 2550 as described in sections 13 and 3.1.6. 2552 deBry, Hastings, Herriot, Isaacson, Powell 2553 Expires August 23, 2000 2554 Natural Language and Character Set: 2555 The "attributes-charset" and "attributes-natural-language" 2556 attributes as described in section 3.1.4.2. 2558 Group 2: Unsupported Attributes 2560 See section 3.1.7 for details on returning Unsupported Attributes. 2562 The response NEED NOT contain the "requested-attributes" operation 2563 attribute with any supplied values (attribute keywords) that were 2564 requested by the client but are not supported by the IPP object. If 2565 the Printer object does include unsupported attributes referenced 2566 in "requested-attributes" and such attributes include group names, 2567 such as 'all', the unsupported attributes MUST NOT include 2568 attributes described in the standard but not supported by the 2569 implementation. 2571 Group 3: Printer Object Attributes 2573 This is the set of requested attributes and their current values. 2574 The Printer object ignores (does not respond with) any requested 2575 attribute which is not supported. The Printer object MAY respond 2576 with a subset of the supported attributes and values, depending on 2577 the security policy in force. However, the Printer object MUST 2578 respond with the 'unknown' value for any supported attribute 2579 (including all REQUIRED attributes) for which the Printer object 2580 does not know the value. Also the Printer object MUST respond with 2581 the 'no-value' for any supported attribute (including all REQUIRED 2582 attributes) for which the system administrator has not configured a 2583 value. See the description of the "out-of-band" values in the 2584 beginning of Section 4.1. 2586 3.2.6 Get-Jobs Operation 2588 This REQUIRED operation allows a client to retrieve the list of Job 2589 objects belonging to the target Printer object. The client may also 2590 supply a list of Job attribute names and/or attribute group names. A 2591 group of Job object attributes will be returned for each Job object that 2592 is returned. 2594 This operation is similar to the Get-Job-Attributes operation, except 2595 that this Get-Jobs operation returns attributes from possibly more than 2596 one object (see the description of Job attribute group names in section 2597 3.3.4). 2599 3.2.6.1 Get-Jobs Request 2601 The client submits the Get-Jobs request to a Printer object. 2603 The following groups of attributes are part of the Get-Jobs Request: 2605 deBry, Hastings, Herriot, Isaacson, Powell 2606 Expires August 23, 2000 2607 Group 1: Operation Attributes 2609 Natural Language and Character Set: 2610 The "attributes-charset" and "attributes-natural-language" 2611 attributes as described in section 3.1.4.1. 2613 Target: 2614 The "printer-uri" (uri) operation attribute which is the target for 2615 this operation as described in section 3.1.5. 2617 Requesting User Name: 2618 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2619 by the client as described in section 8.3. 2621 "limit" (integer(1:MAX)): 2622 The client OPTIONALLY supplies this attribute. The Printer object 2623 MUST support this attribute. It is an integer value that determines 2624 the maximum number of jobs that a client will receive from the 2625 Printer even if "which-jobs" or "my-jobs" constrain which jobs are 2626 returned. The limit is a "stateless limit" in that if the value 2627 supplied by the client is 'N', then only the first 'N' jobs are 2628 returned in the Get-Jobs Response. There is no mechanism to allow 2629 for the next 'M' jobs after the first 'N' jobs. If the client does 2630 not supply this attribute, the Printer object responds with all 2631 applicable jobs. 2633 "requested-attributes" (1setOf keyword): 2634 The client OPTIONALLY supplies this attribute. The Printer object 2635 MUST support this attribute. It is a set of Job attribute names 2636 and/or attribute groups names in whose values the requester is 2637 interested. This set of attributes is returned for each Job object 2638 that is returned. The allowed attribute group names are the same 2639 as those defined in the Get-Job-Attributes operation in section 2640 3.3.4. If the client does not supply this attribute, the Printer 2641 MUST respond as if the client had supplied this attribute with two 2642 values: 'job-uri' and 'job-id'. 2644 "which-jobs" (type2 keyword): 2645 The client OPTIONALLY supplies this attribute. The Printer object 2646 MUST support this attribute. It indicates which Job objects MUST 2647 be returned by the Printer object. The values for this attribute 2648 are: 2650 'completed': This includes any Job object whose state is 2651 'completed', 'canceled', or 'aborted'. 2652 'not-completed': This includes any Job object whose state is 2653 'pending', 'processing', 'processing-stopped', or 'pending- 2654 held'. 2656 A Printer object MUST support both values. However, if the 2657 implementation does not keep jobs in the 'completed', 'canceled', 2658 and 'aborted' states, then it returns no jobs when the 'completed' 2659 value is supplied. 2661 deBry, Hastings, Herriot, Isaacson, Powell 2662 Expires August 23, 2000 2663 If a client supplies some other value, the Printer object MUST copy 2664 the attribute and the unsupported value to the Unsupported 2665 Attributes response group, reject the request, and return the 2666 'client-error-attributes-or-values-not-supported' status code. 2668 If the client does not supply this attribute, the Printer object 2669 MUST respond as if the client had supplied the attribute with a 2670 value of 'not-completed'. 2672 "my-jobs" (boolean): 2673 The client OPTIONALLY supplies this attribute. The Printer object 2674 MUST support this attribute. It indicates whether jobs from all 2675 users or just the jobs submitted by the requesting user of this 2676 request MUST be returned by the Printer object. If the client does 2677 not supply this attribute, the Printer object MUST respond as if 2678 the client had supplied the attribute with a value of 'false', 2679 i.e., jobs from all users. The means for authenticating the 2680 requesting user and matching the jobs is described in section 8. 2682 3.2.6.2 Get-Jobs Response 2684 The Printer object returns all of the Job objects up to the number 2685 specified by the "limit" attribute that match the criteria as defined by 2686 the attribute values supplied by the client in the request. It is 2687 possible that no Job objects are returned since there may literally be 2688 no Job objects at the Printer, or there may be no Job objects that match 2689 the criteria supplied by the client. If the client requests any Job 2690 attributes at all, there is a set of Job Object Attributes returned for 2691 each Job object. 2693 It is not an error for the Printer to return 0 jobs. If the response 2694 returns 0 jobs because there are no jobs matching the criteria, and the 2695 request would have returned 1 or more jobs with a status code of 2696 'successful-ok' if there had been jobs matching the criteria, then the 2697 status code for 0 jobs MUST be 'successful-ok'. 2699 Group 1: Operation Attributes 2701 Status Message: 2702 In addition to the REQUIRED status code returned in every response, 2703 the response OPTIONALLY includes a "status-message" (text(255)) 2704 and/or a "detailed-status-message" (text(MAX)) operation attribute 2705 as described in sections 13 and 3.1.6. 2707 Natural Language and Character Set: 2708 The "attributes-charset" and "attributes-natural-language" 2709 attributes as described in section 3.1.4.2. 2711 Group 2: Unsupported Attributes 2713 See section 3.1.7 for details on returning Unsupported Attributes. 2715 deBry, Hastings, Herriot, Isaacson, Powell 2716 Expires August 23, 2000 2717 The response NEED NOT contain the "requested-attributes" operation 2718 attribute with any supplied values (attribute keywords) that were 2719 requested by the client but are not supported by the IPP object. If 2720 the Printer object does include unsupported attributes referenced 2721 in "requested-attributes" and such attributes include group names, 2722 such as 'all', the unsupported attributes MUST NOT include 2723 attributes described in the standard but not supported by the 2724 implementation. 2726 Groups 3 to N: Job Object Attributes 2728 The Printer object responds with one set of Job Object Attributes 2729 for each returned Job object. The Printer object ignores (does not 2730 respond with) any requested attribute or value which is not 2731 supported or which is restricted by the security policy in force, 2732 including whether the requesting user is the user that submitted 2733 the job (job originating user) or not (see section 8). However, 2734 the Printer object MUST respond with the 'unknown' value for any 2735 supported attribute (including all REQUIRED attributes) for which 2736 the Printer object does not know the value, unless it would violate 2737 the security policy. See the description of the "out-of-band" 2738 values in the beginning of Section 4.1. 2740 Jobs are returned in the following order: 2742 - If the client requests all 'completed' Jobs (Jobs in the 2743 'completed', 'aborted', or 'canceled' states), then the Jobs 2744 are returned newest to oldest (with respect to actual 2745 completion time) 2746 - If the client requests all 'not-completed' Jobs (Jobs in the 2747 'pending', 'processing', 'pending-held', and 'processing- 2748 stopped' states), then Jobs are returned in relative 2749 chronological order of expected time to complete (based on 2750 whatever scheduling algorithm is configured for the Printer 2751 object). 2753 3.2.7 Pause-Printer Operation 2755 This OPTIONAL operation allows a client to stop the Printer object from 2756 scheduling jobs on all its devices. Depending on implementation, the 2757 Pause-Printer operation MAY also stop the Printer from processing the 2758 current job or jobs. Any job that is currently being printed is either 2759 stopped as soon as the implementation permits or is completed, depending 2760 on implementation. The Printer object MUST still accept create 2761 operations to create new jobs, but MUST prevent any jobs from entering 2762 the 'processing' state. 2764 If the Pause-Printer operation is supported, then the Resume-Printer 2765 operation MUST be supported, and vice-versa. 2767 The IPP Printer stops the current job(s) on its device(s) that were in 2768 the 'processing' or 'processing-stopped' states as soon as the 2769 implementation permits. If the implementation will take appreciable 2771 deBry, Hastings, Herriot, Isaacson, Powell 2772 Expires August 23, 2000 2773 time to stop, the IPP Printer adds the 'moving-to-paused' value to the 2774 Printer object's "printer-state-reasons" attribute (see section 4.4.12). 2775 When the device(s) have all stopped, the IPP Printer transitions the 2776 Printer object to the 'stopped' state, removes the 'moving-to-paused' 2777 value, if present, and adds the 'paused' value to the Printer object's 2778 "printer-state-reasons" attribute. 2780 When the current job(s) complete that were in the 'processing' state, 2781 the IPP Printer transitions them to the 'completed' state. When the 2782 current job(s) stop in mid processing that were in the 'processing' 2783 state, the IPP Printer transitions them to the 'processing-stopped' 2784 state and adds the 'printer-stopped' value to the job's "job-state- 2785 reasons" attribute. 2787 For any jobs that are 'pending' or 'pending-held', the 'printer-stopped' 2788 value of the jobs' "job-state-reasons" attribute also applies. However, 2789 the IPP Printer NEED NOT update those jobs' "job-state-reasons" 2790 attributes and only need return the 'printer-stopped' value when those 2791 jobs are queried (so-called "lazy evaluation"). 2793 Whether the Pause-Printer operation affects jobs that were submitted to 2794 the device from other sources than the IPP Printer object in the same 2795 way that the Pause-Printer operation affects jobs that were submitted to 2796 the IPP Printer object using IPP, depends on implementation, i.e., on 2797 whether the IPP protocol is being used as a universal management 2798 protocol or just to manage IPP jobs, respectively. 2800 The IPP Printer MUST accept the request in any state and transition the 2801 Printer to the indicated new "printer-state" before returning as 2802 follows: 2804 Current New "printer IPP Printer's response status 2805 "printer- "printer- -state- code and action: 2806 state" state" reasons" 2808 'idle' 'stopped' 'paused' 'successful-ok' 2809 'processing' 'processing' 'moving- OPTION 1: 'successful-ok'; 2810 to- Later, when all output has 2811 paused' stopped, the "printer-state" 2812 becomes 'stopped', and the 2813 'paused' value replaces the 2814 'moving-to-paused' value in the 2815 "printer-state-reasons" 2816 attribute 2817 'processing' 'stopped' 'paused' OPTION 2: 'successful-ok'; 2818 all device output stopped 2819 immediately 2820 'stopped' 'stopped' 'paused' 'successful-ok' 2822 Access Rights: The authenticated user (see section 8.3) performing this 2823 operation must be an operator or administrator of the Printer object 2824 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2825 operation and return: 'client-error-forbidden', 'client-error-not- 2826 authenticated', or 'client-error-not-authorized' as appropriate. 2828 deBry, Hastings, Herriot, Isaacson, Powell 2829 Expires August 23, 2000 2830 3.2.7.1 Pause-Printer Request 2832 The following groups of attributes are part of the Pause-Printer 2833 Request: 2835 Group 1: Operation Attributes 2837 Natural Language and Character Set: 2838 The "attributes-charset" and "attributes-natural-language" 2839 attributes as described in section 3.1.4.1. 2841 Target: 2842 The "printer-uri" (uri) operation attribute which is the target for 2843 this operation as described in section 3.1.5. 2845 Requesting User Name: 2846 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 2847 by the client as described in section 8.3. 2849 3.2.7.2 Pause-Printer Response 2851 The following groups of attributes are part of the Pause-Printer 2852 Response: 2854 Group 1: Operation Attributes 2856 Status Message: 2857 In addition to the REQUIRED status code returned in every response, 2858 the response OPTIONALLY includes a "status-message" (text(255)) 2859 and/or a "detailed-status-message" (text(MAX)) operation attribute 2860 as described in sections 13 and 3.1.6. 2862 Natural Language and Character Set: 2863 The "attributes-charset" and "attributes-natural-language" 2864 attributes as described in section 3.1.4.2. 2866 Group 2: Unsupported Attributes 2868 See section 3.1.7 for details on returning Unsupported Attributes. 2870 3.2.8 Resume-Printer Operation 2872 This operation allows a client to resume the Printer object scheduling 2873 jobs on all its devices. The Printer object MUST remove the 'paused' 2874 and 'moving-to-paused' values from the Printer object's "printer-state- 2875 reasons" attribute, if present. If there are no other reasons to keep a 2876 device paused (such as media-jam), the IPP Printer transitions itself to 2877 the 'processing' or 'idle' states, depending on whether there are jobs 2878 to be processed or not, respectively, and the device(s) resume 2879 processing jobs. 2881 If the Pause-Printer operation is supported, then the Resume-Printer 2882 operation MUST be supported, and vice-versa. 2884 deBry, Hastings, Herriot, Isaacson, Powell 2885 Expires August 23, 2000 2886 The IPP Printer removes the 'printer-stopped' value from any job's "job- 2887 state-reasons" attributes contained in that Printer. 2889 The IPP Printer MUST accept the request in any state, transition the 2890 Printer object to the indicated new state as follows: 2892 Current New "printer- IPP Printer's response status code and 2893 "printer- state" action: 2894 state" 2896 'idle' 'idle' 'successful-ok' 2897 'processing 'processing' 'successful-ok' 2898 ' 2899 'stopped' 'processing' 'successful-ok'; 2900 when there are jobs to be processed 2901 'stopped' 'idle' 'successful-ok'; 2902 when there are no jobs to be processed. 2904 Access Rights: The authenticated user (see section 8.3) performing this 2905 operation must be an operator or administrator of the Printer object 2906 (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the 2907 operation and return: 'client-error-forbidden', 'client-error-not- 2908 authenticated', or 'client-error-not-authorized' as appropriate. 2910 The Resume-Printer Request and Resume-Printer Response have the same 2911 attribute groups and attributes as the Pause-Printer operation (see 2912 sections 3.2.7.1 and 3.2.7.2). 2914 3.2.9 Purge-Jobs Operation 2916 This OPTIONAL operation allows a client to remove all jobs from an IPP 2917 Printer object, regardless of their job states, including jobs in the 2918 Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs 2919 operation has been performed, a Printer object MUST return no jobs in 2920 subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are 2921 submitted). 2923 Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were 2924 submitted to the device from other sources than the IPP Printer object 2925 in the same way that the Purge-Jobs operation affects jobs that were 2926 submitted to the IPP Printer object using IPP, depends on 2927 implementation, i.e., on whether the IPP protocol is being used as a 2928 universal management protocol or just to manage IPP jobs, respectively. 2930 Note: if an operator wants to cancel all jobs without clearing out the 2931 Job History, the operator uses the Cancel-Job operation on each job 2932 instead of using the Purge-Jobs operation. 2934 The Printer object MUST accept this operation in any state and 2935 transition the Printer object to the 'idle' state. 2937 Access Rights: The authenticated user (see section 8.3) performing this 2938 operation must be an operator or administrator of the Printer object 2940 deBry, Hastings, Herriot, Isaacson, Powell 2941 Expires August 23, 2000 2942 (see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 2943 operation and return: client-error-forbidden, client-error-not- 2944 authenticated, and client-error-not-authorized as appropriate. 2946 The Purge-Jobs Request and Purge-Jobs Response have the same attribute 2947 groups and attributes as the Pause-Printer operation (see sections 2948 3.2.7.1 and 3.2.7.2). 2950 3.3 Job Operations 2952 All Job operations are directed at Job objects. A client MUST always 2953 supply some means of identifying the Job object in order to identify the 2954 correct target of the operation. That job identification MAY either be 2955 a single Job URI or a combination of a Printer URI with a Job ID. The 2956 IPP object implementation MUST support both forms of identification for 2957 every job. 2959 3.3.1 Send-Document Operation 2961 This OPTIONAL operation allows a client to create a multi-document Job 2962 object that is initially "empty" (contains no documents). In the 2963 Create-Job response, the Printer object returns the Job object's URI 2964 (the "job-uri" attribute) and the Job object's 32-bit identifier (the 2965 "job-id" attribute). For each new document that the client desires to 2966 add, the client uses a Send-Document operation. Each Send-Document 2967 Request contains the entire stream of document data for one document. 2969 If the Printer supports this operation but does not support multiple 2970 documents per job, the Printer MUST reject subsequent Send-Document 2971 operations supplied with data and return the 'server-error-multiple- 2972 document-jobs-not-supported'. However, the Printer MUST accept the 2973 first document with a 'true' or 'false' value for the "last-document" 2974 operation attribute (see below), so that clients MAY always submit one 2975 document jobs with a 'false' value for "last-document" in the first 2976 Send-Document and a 'true' for "last-document" in the second Send- 2977 Document (with no data). 2979 Since the Create-Job and the send operations (Send-Document or Send-URI 2980 operations) that follow could occur over an arbitrarily long period of 2981 time for a particular job, a client MUST send another send operation 2982 within an IPP Printer defined minimum time interval after the receipt of 2983 the previous request for the job. If a Printer object supports multiple 2984 document jobs, the Printer object MUST support the "multiple-operation- 2985 time-out" attribute (see section 4.4.31). This attribute indicates the 2986 minimum number of seconds the Printer object will wait for the next send 2987 operation before taking some recovery action. 2989 An IPP object MUST recover from an errant client that does not supply a 2990 send operation, sometime after the minimum time interval specified by 2991 the Printer object's "multiple-operation-time-out" attribute. Such 2992 recovery MAY include any of the following or other recovery actions: 2994 deBry, Hastings, Herriot, Isaacson, Powell 2995 Expires August 23, 2000 2996 1. Assume that the Job is an invalid job, start the process of 2997 changing the job state to 'aborted', add the 'aborted-by-system' 2998 value to the job's "job-state-reasons" attribute (see section 2999 4.3.8), and clean up all resources associated with the Job. In 3000 this case, if another send operation is finally received, the 3001 Printer responds with an "client-error-not-possible" or "client- 3002 error-not-found" depending on whether or not the Job object is 3003 still around when the send operation finally arrives. 3004 2. Assume that the last send operation received was in fact the last 3005 document (as if the "last-document" flag had been set to 'true'), 3006 close the Job object, and proceed to process it (i.e., move the 3007 Job's state to 'pending'). 3008 3. Assume that the last send operation received was in fact the last 3009 document, close the Job, but move it to the 'pending-held' and add 3010 the 'submission-interrupted' value to the job's "job-state-reasons" 3011 attribute (see section 4.3.8). This action allows the user or an 3012 operator to determine whether to continue processing the Job by 3013 moving it back to the 'pending' state using the Release-Job 3014 operation (see section 3.3.6) or to cancel the job using the 3015 Cancel-Job operation (see section 3.3.3). 3017 Each implementation is free to decide the "best" action to take 3018 depending on local policy, whether any documents have been added, 3019 whether the implementation spools jobs or not, and/or any other piece 3020 of information available to it. If the choice is to abort the Job 3021 object, it is possible that the Job object may already have been 3022 processed to the point that some media sheet pages have been printed. 3024 Access Rights: The authenticated user (see section 8.3) performing this 3025 operation must either be the job owner (as determined in the Create-Job 3026 operation) or an operator or administrator of the Printer object (see 3027 Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 3028 operation and return: 'client-error-forbidden', 'client-error-not- 3029 authenticated', or 'client-error-not-authorized' as appropriate. 3031 3.3.1.1 Send-Document Request 3033 The following attribute sets are part of the Send-Document Request: 3035 Group 1: Operation Attributes 3037 Natural Language and Character Set: 3038 The "attributes-charset" and "attributes-natural-language" 3039 attributes as described in section 3.1.4.1. 3041 Target: 3042 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or 3043 (2) the "job-uri" (uri) operation attribute(s) which define the 3044 target for this operation as described in section 3.1.5. 3046 deBry, Hastings, Herriot, Isaacson, Powell 3047 Expires August 23, 2000 3048 Requesting User Name: 3049 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3050 by the client as described in section 8.3. 3052 "document-name" (name(MAX)): 3053 The client OPTIONALLY supplies this attribute. The Printer object 3054 MUST support this attribute. It contains the client supplied 3055 document name. The document name MAY be different than the Job 3056 name. It might be helpful, but NEED NOT be unique across multiple 3057 documents in the same Job. Typically, the client software 3058 automatically supplies the document name on behalf of the end user 3059 by using a file name or an application generated name. See the 3060 description of the "document-name" operation attribute in the 3061 Print-Job Request (section 3.2.1.1) for more information about this 3062 attribute. 3064 "compression" (type3 keyword) 3065 See the description of "compression" for the Print-Job operation in 3066 Section 3.2.1.1. 3068 "document-format" (mimeMediaType) : 3069 See the description of "document-format" for the Print-Job 3070 operation in Section 3.2.1.1. 3072 "document-natural-language" (naturalLanguage): 3073 The client OPTIONALLY supplies this attribute. The Printer object 3074 OPTIONALLY supports this attribute. This attribute specifies the 3075 natural language of the document for those document-formats that 3076 require a specification of the natural language in order to image 3077 the document unambiguously. There are no particular values 3078 required for the Printer object to support. 3080 "last-document" (boolean): 3081 The client MUST supply this attribute. The Printer object MUST 3082 support this attribute. It is a boolean flag that is set to 'true' 3083 if this is the last document for the Job, 'false' otherwise. 3085 Group 2: Document Content 3087 The client MUST supply the document data if the "last-document" 3088 flag is set to 'false'. However, since a client might not know 3089 that the previous document sent with a Send-Document (or Send-URI) 3090 operation was the last document (i.e., the "last-document" 3091 attribute was set to 'false'), it is legal to send a Send-Document 3092 request with no document data where the "last-document" flag is set 3093 to 'true'. Such a request MUST NOT increment the value of the Job 3094 object's "number-of-documents" attribute, since no real document 3095 was added to the job. It is not an error for a client to submit a 3096 job with no actual document data, i.e., only a single Create-Job 3097 and Send-Document request with a "last-document" operation 3098 attribute set to 'true' with no document data. 3100 deBry, Hastings, Herriot, Isaacson, Powell 3101 Expires August 23, 2000 3102 3.3.1.2 Send-Document Response 3104 The following sets of attributes are part of the Send-Document Response: 3106 Group 1: Operation Attributes 3108 Status Message: 3109 In addition to the REQUIRED status code returned in every response, 3110 the response OPTIONALLY includes a "status-message" (text(255)) 3111 and/or a "detailed-status-message" (text(MAX)) operation attribute 3112 as described in sections 13 and 3.1.6. 3114 Natural Language and Character Set: 3115 The "attributes-charset" and "attributes-natural-language" 3116 attributes as described in section 3.1.4.2. 3118 Group 2: Unsupported Attributes 3120 See section 3.1.7 for details on returning Unsupported Attributes. 3122 Group 3: Job Object Attributes 3124 This is the same set of attributes as described in the Print-Job 3125 response (see section 3.2.1.2). 3127 3.3.2 Send-URI Operation 3129 This OPTIONAL operation is identical to the Send-Document operation (see 3130 section 3.3.1) except that a client MUST supply a URI reference 3131 ("document-uri" operation attribute) rather than the document data 3132 itself. If a Printer object supports this operation, clients can use 3133 both Send-URI or Send-Document operations to add new documents to an 3134 existing multi-document Job object. However, if a client needs to 3135 indicate that the previous Send-URI or Send-Document was the last 3136 document, the client MUST use the Send-Document operation with no 3137 document data and the "last-document" flag set to 'true' (rather than 3138 using a Send-URI operation with no "document-uri" operation attribute). 3140 If a Printer object supports this operation, it MUST also support the 3141 Print-URI operation (see section 3.2.2). 3143 The Printer object MUST validate the syntax and URI scheme of the 3144 supplied URI before returning a response, just as in the Print-URI 3145 operation. The IPP Printer MAY validate the accessibility of the 3146 document as part of the operation or subsequently (see section 3.2.2). 3148 3.3.3 Cancel-Job Operation 3150 This REQUIRED operation allows a client to cancel a Print Job from the 3151 time the job is created up to the time it is completed, canceled, or 3152 aborted. Since a Job might already be printing by the time a Cancel-Job 3153 is received, some media sheet pages might be printed before the job is 3154 actually terminated. 3156 deBry, Hastings, Herriot, Isaacson, Powell 3157 Expires August 23, 2000 3158 The IPP object MUST accept or reject the request based on the job's 3159 current state and transition the job to the indicated new state as 3160 follows: 3162 Current "job- New "job- IPP object's response status 3163 state" state" code and action: 3165 'pending' 'canceled' 'successful-ok' 3166 'pending-held' 'canceled' 'successful-ok' 3167 'processing' 'canceled' 'successful-ok' 3168 'processing' 'processing' 'successful-ok' See Rule 1 3169 'processing' 'processing' 'client-error-not-possible' 3170 See Rule 2 3171 'processing- 'canceled' 'successful-ok' 3172 stopped' 3173 'processing- 'processing- 'successful-ok' See Rule 1 3174 stopped' stopped' 3175 'processing- 'processing- 'client-error-not-possible' 3176 stopped' stopped' See Rule 2 3177 'completed' 'completed' 'client-error-not-possible' 3178 'canceled' 'canceled' 'client-error-not-possible' 3179 'aborted' 'aborted' 'client-error-not-possible' 3181 Rule 1: If the implementation requires some measurable time to cancel 3182 the job in the 'processing' or 'processing-stopped' job states, the IPP 3183 object MUST add the 'processing-to-stop-point' value to the job's "job- 3184 state-reasons" attribute and then transition the job to the 'canceled' 3185 state when the processing ceases (see section 4.3.8). 3187 Rule 2: If the Job object already has the 'processing-to-stop-point' 3188 value in its "job-state-reasons" attribute, then the Printer object MUST 3189 reject a Cancel-Job operation. 3191 Access Rights: The authenticated user (see section 8.3) performing this 3192 operation must either be the job owner or an operator or administrator 3193 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3194 object MUST reject the operation and return: 'client-error-forbidden', 3195 'client-error-not-authenticated', or 'client-error-not-authorized' as 3196 appropriate. 3198 3.3.3.1 Cancel-Job Request 3200 The following groups of attributes are part of the Cancel-Job Request: 3202 Group 1: Operation Attributes 3204 Natural Language and Character Set: 3205 The "attributes-charset" and "attributes-natural-language" 3206 attributes as described in section 3.1.4.1. 3208 Target: 3209 Either (1) the "printer-uri" (uri) plus "job-id" 3210 (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) 3212 deBry, Hastings, Herriot, Isaacson, Powell 3213 Expires August 23, 2000 3214 which define the target for this operation as described in section 3215 3.1.5. 3217 Requesting User Name: 3218 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3219 by the client as described in section 8.3. 3221 "message" (text(127)): 3222 The client OPTIONALLY supplies this attribute. The Printer object 3223 OPTIONALLY supports this attribute. It is a message to the 3224 operator. This "message" attribute is not the same as the "job- 3225 message-from-operator" attribute. That attribute is used to report 3226 a message from the operator to the end user that queries that 3227 attribute. This "message" operation attribute is used to send a 3228 message from the client to the operator along with the operation 3229 request. It is an implementation decision of how or where to 3230 display this message to the operator (if at all). 3232 3.3.3.2 Cancel-Job Response 3234 The following sets of attributes are part of the Cancel-Job Response: 3236 Group 1: Operation Attributes 3238 Status Message: 3239 In addition to the REQUIRED status code returned in every response, 3240 the response OPTIONALLY includes a "status-message" (text(255)) 3241 and/or a "detailed-status-message" (text(MAX)) operation attribute 3242 as described in sections 13 and 3.1.6. 3244 Natural Language and Character Set: 3245 The "attributes-charset" and "attributes-natural-language" 3246 attributes as described in section 3.1.4.2. 3248 Group 2: Unsupported Attributes 3250 See section 3.1.7 for details on returning Unsupported Attributes. 3252 Once a successful response has been sent, the implementation guarantees 3253 that the Job will eventually end up in the 'canceled' state. Between the 3254 time of the Cancel-Job operation is accepted and when the job enters the 3255 'canceled' job-state (see section 4.3.7), the "job-state-reasons" 3256 attribute SHOULD contain the 'processing-to-stop-point' value which 3257 indicates to later queries that although the Job might still be 3258 'processing', it will eventually end up in the 'canceled' state, not the 3259 'completed' state. 3261 deBry, Hastings, Herriot, Isaacson, Powell 3262 Expires August 23, 2000 3263 3.3.4 Get-Job-Attributes Operation 3265 This REQUIRED operation allows a client to request the values of 3266 attributes of a Job object and it is almost identical to the Get- 3267 Printer-Attributes operation (see section 3.2.5). The only differences 3268 are that the operation is directed at a Job object rather than a Printer 3269 object, there is no "document-format" operation attribute used when 3270 querying a Job object, and the returned attribute group is a set of Job 3271 object attributes rather than a set of Printer object attributes. 3273 For Jobs, the possible names of attribute groups are: 3275 - 'job-template': the subset of the Job Template attributes that 3276 apply to a Job object (the first column of the table in Section 3277 4.2) that the implementation supports for Job objects. 3278 - 'job-description': the subset of the Job Description attributes 3279 specified in Section 4.3 that the implementation supports for Job 3280 objects. 3281 - 'all': the special group 'all' that includes all attributes that 3282 the implementation supports for Job objects. 3284 Since a client MAY request specific attributes or named groups, there is 3285 a potential that there is some overlap. For example, if a client 3286 requests, 'job-name' and 'job-description', the client is actually 3287 requesting the "job-name" attribute once by naming it explicitly, and 3288 once by inclusion in the 'job-description' group. In such cases, the 3289 Printer object NEED NOT return the attribute only once in the response 3290 even if it is requested multiple times. The client SHOULD NOT request 3291 the same attribute in multiple ways. 3293 It is NOT REQUIRED that a Job object support all attributes belonging to 3294 a group (since some attributes are OPTIONAL). However it is REQUIRED 3295 that each Job object support all group names. 3297 3.3.4.1 Get-Job-Attributes Request 3299 The following groups of attributes are part of the Get-Job-Attributes 3300 Request when the request is directed at a Job object: 3302 Group 1: Operation Attributes 3304 Natural Language and Character Set: 3305 The "attributes-charset" and "attributes-natural-language" 3306 attributes as described in section 3.1.4.1. 3308 Target: 3309 Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) 3310 or (2) the "job-uri" (uri) operation attribute(s) which define the 3311 target for this operation as described in section 3.1.5. 3313 Requesting User Name: 3314 The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied 3315 by the client as described in section 8.3. 3317 deBry, Hastings, Herriot, Isaacson, Powell 3318 Expires August 23, 2000 3319 "requested-attributes" (1setOf keyword) : 3320 The client OPTIONALLY supplies this attribute. The IPP object MUST 3321 support this attribute. It is a set of attribute names and/or 3322 attribute group names in whose values the requester is interested. 3323 If the client omits this attribute, the IPP object MUST respond as 3324 if this attribute had been supplied with a value of 'all'. 3326 3.3.4.2 Get-Job-Attributes Response 3328 The Printer object returns the following sets of attributes as part of 3329 the Get-Job-Attributes Response: 3331 Group 1: Operation Attributes 3333 Status Message: 3334 In addition to the REQUIRED status code returned in every response, 3335 the response OPTIONALLY includes a "status-message" (text(255)) 3336 and/or a "detailed-status-message" (text(MAX)) operation attribute 3337 as described in sections 13 and 3.1.6. 3339 Natural Language and Character Set: 3340 The "attributes-charset" and "attributes-natural-language" 3341 attributes as described in section 3.1.4.2. The "attributes- 3342 natural-language" MAY be the natural language of the Job object, 3343 rather than the one requested. 3345 Group 2: Unsupported Attributes 3347 See section 3.1.7 for details on returning Unsupported Attributes. 3349 The response NEED NOT contain the "requested-attributes" operation 3350 attribute with any supplied values (attribute keywords) that were 3351 requested by the client but are not supported by the IPP object. If 3352 the Printer object does include unsupported attributes referenced 3353 in "requested-attributes" and such attributes include group names, 3354 such as 'all', the unsupported attributes MUST NOT include 3355 attributes described in the standard but not supported by the 3356 implementation. 3358 Group 3: Job Object Attributes 3360 This is the set of requested attributes and their current values. 3361 The IPP object ignores (does not respond with) any requested 3362 attribute or value which is not supported or which is restricted by 3363 the security policy in force, including whether the requesting user 3364 is the user that submitted the job (job originating user) or not 3365 (see section 8). However, the IPP object MUST respond with the 3366 'unknown' value for any supported attribute (including all REQUIRED 3367 attributes) for which the IPP object does not know the value, 3369 deBry, Hastings, Herriot, Isaacson, Powell 3370 Expires August 23, 2000 3371 unless it would violate the security policy. See the description 3372 of the "out-of-band" values in the beginning of Section 4.1. 3374 3.3.5 Hold-Job Operation 3376 This OPTIONAL operation allows a client to hold a pending job in the 3377 queue so that it is not eligible for scheduling. If the Hold-Job 3378 operation is supported, then the Release-Job operation MUST be 3379 supported, and vice-versa. The OPTIONAL "job-hold-until" operation 3380 attribute allows a client to specify whether to hold the job 3381 indefinitely or until a specified time period, if supported. 3383 The IPP object MUST accept or reject the request based on the job's 3384 current state and transition the job to the indicated new state as 3385 follows: 3387 Current "job- New "job-state" IPP object's response status 3388 state" code and action: 3390 'pending' 'pending-held' 'successful-ok' See Rule 1 3391 'pending' 'pending' 'successful-ok' See Rule 2 3392 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3393 'pending-held' 'pending' 'successful-ok' See Rule 2 3394 'processing' 'processing' 'client-error-not-possible' 3395 'processing- 'processing- 'client-error-not-possible' 3396 stopped' stopped' 3397 'completed' 'completed' 'client-error-not-possible' 3398 'canceled' 'canceled' 'client-error-not-possible' 3399 'aborted' 'aborted' 'client-error-not-possible' 3401 Rule 1: If the implementation supports multiple reasons for a job to be 3402 in the 'pending-held' state, the IPP object MUST add the 'job-hold- 3403 until-specified' value to the job's "job-state-reasons" attribute. 3405 Rule 2: If the IPP object supports the "job-hold-until" operation 3406 attribute, but the specified time period has already started (or is the 3407 'no-hold' value) and there are no other reasons to hold the job, the IPP 3408 object MUST make the job be a candidate for processing immediately (see 3409 Section 4.2.2) by putting the job in the 'pending' state. 3411 Note: In order to keep the Hold-Job operation simple, such a request is 3412 rejected when the job is in the 'processing' or 'processing-stopped' 3413 states. If an operation is needed to hold jobs while in these states, 3414 it will be added as an additional operation, rather than overloading the 3415 Hold-Job operation. Then it is clear to clients by querying the Printer 3416 object's "operations-supported" (see Section 4.4.15) and the Job 3417 object's "job-state" (see Section 4.3.7) attributes which operations are 3418 possible. 3420 Access Rights: The authenticated user (see section 8.3) performing this 3421 operation must either be the job owner or an operator or administrator 3422 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3423 object MUST reject the operation and return: 'client-error-forbidden', 3425 deBry, Hastings, Herriot, Isaacson, Powell 3426 Expires August 23, 2000 3427 'client-error-not-authenticated', or 'client-error-not-authorized' as 3428 appropriate. 3430 3.3.5.1 Hold-Job Request 3432 The groups and operation attributes are the same as for a Cancel-Job 3433 request (see section 3.3.3.1), with the addition of the following Group 3434 1 Operation attribute: 3436 "job-hold-until" (type3 keyword | name(MAX)): 3437 The client OPTIONALLY supplies this Operation attribute. The IPP 3438 object MUST support this operation attribute in a Hold-Job request, 3439 if it supports the "job-hold-until" Job template attribute in 3440 create operations. See section 4.2.2. The IPP object SHOULD 3441 support the "job-hold-until" Job Template attribute for use in job 3442 create operations with at least the 'indefinite' value, if it 3443 supports the Hold-Job operation. Otherwise, a client cannot create 3444 a job and hold it immediately (without picking some supported time 3445 period in the future). 3447 If supplied and supported as specified in the Printer's "job-hold- 3448 until-supported" attribute, the IPP object copies the supplied 3449 operation attribute to the Job object, replacing the job's previous 3450 "job-hold-until" attribute, if present, and makes the job a 3451 candidate for scheduling during the supplied named time period. 3453 If supplied, but either the "job-hold-until" Operation attribute 3454 itself or the value supplied is not supported, the IPP object 3455 accepts the request, returns the unsupported attribute or value in 3456 the Unsupported Attributes Group according to section 3.1.7, 3457 returns the 'successful-ok-ignored-or-substituted-attributes, and 3458 holds the job indefinitely until a client performs a subsequent 3459 Release-Job operation. 3461 If the client (1) supplies a value that specifies a time period 3462 that has already started or the 'no-hold' value (meaning don't hold 3463 the job) and (2) the IPP object supports the "job-hold-until" 3464 operation attribute and there are no other reasons to hold the job, 3465 the IPP object MUST accept the operation and make the job be a 3466 candidate for processing immediately (see Section 4.2.2). 3468 If the client does not supply a "job-hold-until" Operation 3469 attribute in the request, the IPP object MUST populate the job 3470 object with a "job-hold-until" attribute with the 'indefinite' 3471 value (if IPP object supports the "job-hold-until" attribute) and 3472 hold the job indefinitely, until a client performs a Release-Job 3473 operation. 3475 3.3.5.2 Hold-Job Response 3477 The groups and attributes are the same as for a Cancel-Job response (see 3478 section 3.3.3.2). 3480 deBry, Hastings, Herriot, Isaacson, Powell 3481 Expires August 23, 2000 3482 3.3.6 Release-Job Operation 3484 This OPTIONAL operation allows a client to release a previously held job 3485 so that it is again eligible for scheduling. If the Hold-Job operation 3486 is supported, then the Release-Job operation MUST be supported, and 3487 vice-versa. 3489 This operation removes the "job-hold-until" job attribute, if present, 3490 from the job object that had been supplied in the create or most recent 3491 Hold-Job or Restart-Job operation and removes its effect on the job. 3492 The IPP object MUST remove the 'job-hold-until-specified' value from the 3493 job's "job-state-reasons" attribute, if present. See section 4.3.8. 3495 The IPP object MUST accept or reject the request based on the job's 3496 current state and transition the job to the indicated new state as 3497 follows: 3499 Current "job- New "job-state" IPP object's response status 3500 state" code and action: 3502 'pending' 'pending' 'successful-ok' 3503 No effect on the job. 3504 'pending-held' 'pending-held' 'successful-ok' See Rule 1 3505 'pending-held' 'pending' 'successful-ok' 3506 'processing' 'processing' 'successful-ok' 3507 No effect on the job. 3508 'processing- 'processing- 'successful-ok' 3509 stopped' stopped' No effect on the job. 3510 'completed' 'completed' 'client-error-not-possible' 3511 'canceled' 'canceled' 'client-error-not-possible' 3512 'aborted' 'aborted' 'client-error-not-possible' 3514 Rule 1: If there are other reasons to keep the job in the 'pending- 3515 held' state, such as 'resources-are-not-ready', the job remains in the 3516 'pending-held' state. Thus the 'pending-held' state is not just for 3517 jobs that have the 'job-hold-until' applied to them, but are for any 3518 reason to keep the job from being a candidate for scheduling and 3519 processing, such as 'resources-are-not-ready'. See the "job-hold-until" 3520 attribute (section 4.2.2). 3522 Access Rights: The authenticated user (see section 8.3) performing this 3523 operation must either be the job owner or an operator or administrator 3524 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3525 object MUST reject the operation and return: 'client-error-forbidden', 3526 'client-error-not-authenticated', or 'client-error-not-authorized' as 3527 appropriate. 3529 The Release-Job Request and Release-Job Response have the same attribute 3530 groups and attributes as the Cancel-Job operation (see section 3.3.3.1 3531 and 3.3.3.2). 3533 deBry, Hastings, Herriot, Isaacson, Powell 3534 Expires August 23, 2000 3535 3.3.7 Restart-Job Operation 3537 This OPTIONAL operation allows a client to restart a job that is 3538 retained in the queue after processing has completed (see section 3539 4.3.7.2). 3541 The job is moved to the 'pending' or 'pending-held' job state and 3542 restarts at the beginning on the same IPP Printer object with the same 3543 attribute values. If any of the documents in the job were passed by 3544 reference (Print-URI or Send-URI), the Printer MUST re-fetch the data, 3545 since the semantics of Restart-Job are to repeat all Job processing. 3546 The Job Description attributes that accumulate job progress, such as 3547 "job-impressions-completed", "job-media-sheets-completed", and "job-k- 3548 octets-processed", MUST be reset to 0 so that they give an accurate 3549 record of the job from its restart point. The job object MUST continue 3550 to use the same "job-uri" and "job-id" attribute values. 3552 Note: If in the future an operation is needed that does not reset the 3553 job progress attributes, then a new operation will be defined which 3554 makes a copy of the job, assigns a new "job-uri" and "job-id" to the 3555 copy and resets the job progress attributes in the new copy only. 3557 The IPP object MUST accept or reject the request based on the job's 3558 current state, transition the job to the indicated new state as follows: 3560 Current "job- New "job-state" IPP object's response status 3561 state" code and action: 3563 'pending' 'pending' 'client-error-not-possible' 3564 'pending-held' 'pending-held' 'client-error-not-possible' 3565 'processing' 'processing' 'client-error-not-possible' 3566 'processing- 'processing- 'client-error-not-possible' 3567 stopped' stopped' 3568 'completed' 'pending' or 'successful-ok' - job is started 3569 'pending-held' over. 3570 'completed' 'completed' 'client-error-not-possible' - 3571 see Rule 1 3572 'canceled' 'pending' or 'successful-ok' - job is started 3573 'pending-held' over. 3574 'canceled' 'canceled' 'client-error-not-possible' - 3575 see Rule 1 3576 'aborted' 'pending' or 'successful-ok' - job is started 3577 'pending-held' over. 3578 'aborted' 'aborted' 'client-error-not-possible' - 3579 see Rule 1 3581 Rule 1: If the Job Retention Period has expired for the job in this 3582 state, then the IPP object rejects the operation. See section 4.3.7.2. 3584 Note: In order to prevent a user from inadvertently restarting a job in 3585 the middle, the Restart-Job request is rejected when the job is in the 3586 'processing' or 'processing-stopped' states. If in the future an 3587 operation is needed to hold or restart jobs while in these states, it 3589 deBry, Hastings, Herriot, Isaacson, Powell 3590 Expires August 23, 2000 3591 will be added as an additional operation, rather than overloading the 3592 Restart-Job operation, so that it is clear that the user intended that 3593 the current job not be completed. 3595 Access Rights: The authenticated user (see section 8.3) performing this 3596 operation must either be the job owner or an operator or administrator 3597 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP 3598 object MUST reject the operation and return: 'client-error-forbidden', 3599 'client-error-not-authenticated', or 'client-error-not-authorized' as 3600 appropriate. 3602 3.3.7.1 Restart-Job Request 3604 The groups and attributes are the same as for a Cancel-Job request (see 3605 section 3.3.3.1), with the addition of the following Group 1 Operation 3606 attribute: 3608 "job-hold-until" (type3 keyword | name(MAX)): 3609 The client OPTIONALLY supplies this attribute. The IPP object MUST 3610 support this Operation attribute in a Restart-Job request, if it 3611 supports the "job-hold-until" Job Template attribute in create 3612 operations. See section 4.2.2. Otherwise, the IPP object NEED NOT 3613 support the "job-hold-until" Operation attribute in a Restart-Job 3614 request. 3616 If supplied and supported as specified in the Printer's "job-hold- 3617 until-supported" attribute, the IPP object copies the supplied 3618 Operation attribute to the Job object, replacing the job's previous 3619 "job-hold-until" attribute, if present, and makes the job a 3620 candidate for scheduling during the supplied named time period. 3621 See section 4.2.2. 3623 If supplied, but the value is not supported, the IPP object accepts 3624 the request, returns the unsupported attribute or value in the 3625 Unsupported Attributes Group according to section 3.1.7, returns 3626 the 'successful-ok-ignored-or-substituted-attributes' status code, 3627 and holds the job indefinitely until a client performs a subsequent 3628 Release-Job operation. 3630 If supplied, but the "job-hold-until" Operation attribute itself is 3631 not supported, the IPP object accepts the request, returns the 3632 unsupported attribute with the out-of-band 'unsupported' value in 3633 the Unsupported Attributes Group according to section 3.1.7, 3634 returns the 'successful-ok-ignored-or-substituted-attributes' 3635 status code, and restarts the job, i.e., ignores the "job-hold- 3636 until" attribute. 3638 If the client (1) supplies a value that specifies a time period 3639 that has already started or the 'no-hold' value (meaning don't hold 3640 the job) and (2) the IPP object supports the "job-hold-until" 3641 operation attribute and there are no other reasons to hold the job, 3642 the IPP object makes the job a candidate for processing immediately 3643 (see Section 4.2.2). 3645 deBry, Hastings, Herriot, Isaacson, Powell 3646 Expires August 23, 2000 3647 If the client does not supply a "job-hold-until" operation 3648 attribute in the request, the IPP object removes the "job-hold- 3649 until" attribute, if present, from the job. If there are no other 3650 reasons to hold the job, the Restart-Job operation makes the job a 3651 candidate for processing immediately (see Section 4.2.2). 3653 3.3.7.2 Restart-Job Response 3655 The groups and attributes are the same as for a Cancel-Job response (see 3656 section 3.3.3.2). 3658 Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes 3659 operation may be specified that allows the client to modify other 3660 attributes before releasing the restarted job. 3662 4. Object Attributes 3664 This section describes the attributes with their corresponding attribute 3665 syntaxes and values that are part of the IPP model. The sections below 3666 show the objects and their associated attributes which are included 3667 within the scope of this protocol. Many of these attributes are derived 3668 from other relevant documents: 3670 - Document Printing Application (DPA) [ISO10175] 3671 - RFC 1759 Printer MIB [RFC1759] 3673 Each attribute is uniquely identified in this document using a "keyword" 3674 (see section 12.2.1) which is the name of the attribute. The keyword is 3675 included in the section header describing that attribute. 3677 Note: Not only are keywords used to identify attributes, but one of the 3678 attribute syntaxes described below is "keyword" so that some attributes 3679 have keyword values. Therefore, these attributes are defined as having 3680 an attribute syntax that is a set of keywords. 3682 4.1 Attribute Syntaxes 3684 This section defines the basic attribute syntax types that all clients 3685 and IPP objects MUST be able to accept in responses and accept in 3686 requests, respectively. Each attribute description in sections 3 and 4 3687 includes the name of attribute syntax(es) in the heading (in 3688 parentheses). A conforming implementation of an attribute MUST include 3689 the semantics of the attribute syntax(es) so identified. Section 6.3 3690 describes how the protocol can be extended with new attribute syntaxes. 3692 The attribute syntaxes are specified in the following sub-sections, 3693 where the sub-section heading is the keyword name of the attribute 3694 syntax inside the single quotes. In operation requests and responses 3695 each attribute value MUST be represented as one of the attribute 3696 syntaxes specified in the sub-section heading for the attribute. In 3698 deBry, Hastings, Herriot, Isaacson, Powell 3699 Expires August 23, 2000 3700 addition, the value of an attribute in a response (but not in a request) 3701 MAY be one of the "out-of-band" values whose special encoding rules are 3702 defined in the "Encoding and Transport" document [IPP-PRO]. Standard 3703 "out-of-band" values are: 3705 'unknown': The attribute is supported by the IPP object, but the 3706 value is unknown to the IPP object for some reason. 3707 'unsupported': The attribute is unsupported by the IPP object. This 3708 value MUST be returned only as the value of an attribute in the 3709 Unsupported Attributes Group. 3710 'no-value': The attribute is supported by the Printer object, but the 3711 administrator has not yet configured a value. 3713 All attributes in a request MUST have one or more values as defined in 3714 Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out- 3715 of-band" values. All attributes in a response MUST have one or more 3716 values as defined in Sections 4.2 to 4.4 or a single "out-of-band" 3717 value. 3719 Most attributes are defined to have a single attribute syntax. However, 3720 a few attributes (e.g., "job-sheet", "media", "job-hold-until") are 3721 defined to have several attribute syntaxes, depending on the value. 3722 These multiple attribute syntaxes are separated by the "|" character in 3723 the sub-section heading to indicate the choice. Since each value MUST 3724 be tagged as to its attribute syntax in the protocol, a single-valued 3725 attribute instance may have any one of its attribute syntaxes and a 3726 multi-valued attribute instance may have a mixture of its defined 3727 attribute syntaxes. 3729 4.1.1 'text' 3731 A text attribute is an attribute whose value is a sequence of zero or 3732 more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the 3733 maximum length for each value of any text attribute. However, if an 3734 attribute will always contain values whose maximum length is much less 3735 than MAX, the definition of that attribute will include a qualifier that 3736 defines the maximum length for values of that attribute. For example: 3737 the "printer-location" attribute is specified as "printer-location 3738 (text(127))". In this case, text values for "printer-location" MUST NOT 3739 exceed 127 octets; if supplied with a longer text string via some 3740 external interface (other than the protocol), implementations are free 3741 to truncate to this shorter length limitation. 3743 In this document, all text attributes are defined using the 'text' 3744 syntax. However, 'text' is used only for brevity; the formal 3745 interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. 3746 That is, for any attribute defined in this document using the 'text' 3747 attribute syntax, all IPP objects and clients MUST support both the 3748 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. 3749 However, in actual usage and protocol execution, objects and clients 3751 deBry, Hastings, Herriot, Isaacson, Powell 3752 Expires August 23, 2000 3753 accept and return only one of the two syntax per attribute. The syntax 3754 'text' never appears "on-the-wire". 3756 Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support 3757 the real world needs of interoperability between sites and systems that 3758 use different natural languages as the basis for human communication. 3759 Generally, one natural language applies to all text attributes in a 3760 given request or response. The language is indicated by the "attributes- 3761 natural-language" operation attribute defined in section 3.1.4 or 3762 "attributes-natural-language" job attribute defined in section 4.3.20, 3763 and there is no need to identify the natural language for each text 3764 string on a value-by-value basis. In these cases, the attribute syntax 3765 'textWithoutLanguage' is used for text attributes. In other cases, the 3766 client needs to supply or the Printer object needs to return a text 3767 value in a natural language that is different from the rest of the text 3768 values in the request or response. In these cases, the client or 3769 Printer object uses the attribute syntax 'textWithLanguage' for text 3770 attributes (this is the Natural Language Override mechanism described in 3771 section 3.1.4). 3773 The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are 3774 described in more detail in the following sections. 3776 4.1.1.1 'textWithoutLanguage' 3778 The 'textWithoutLanguage' syntax indicates a value that is sequence of 3779 zero or more characters encoded in a maximum of 1023 (MAX) octets. 3780 Text strings are encoded using the rules of some charset. The Printer 3781 object MUST support the UTF-8 charset [RFC2279] and MAY support 3782 additional charsets to represent 'text' values, provided that the 3783 charsets are registered with IANA [IANA-CS]. See Section 4.1.7 for the 3784 definition of the 'charset' attribute syntax, including restricted 3785 semantics and examples of charsets. 3787 4.1.1.2 'textWithLanguage' 3789 The 'textWithLanguage' attribute syntax is a compound attribute syntax 3790 consisting of two parts: a 'textWithoutLanguage' part encoded in a 3791 maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see 3792 section 4.1.8) part that overrides the natural language in force. The 3793 'naturalLanguage' part explicitly identifies the natural language that 3794 applies to the text part of that value and that value alone. For any 3795 give text attribute, the 'textWithoutLanguage' part is limited to the 3796 maximum length defined for that 'text' attribute, and the 3797 'naturalLanguage' part is always limited to 63 (additional) octets. 3798 Using the 'textWithLanguage' attribute syntax rather than the normal 3799 'textWithoutLanguage' syntax is the so-called Natural Language Override 3800 mechanism and MUST be supported by all IPP objects and clients. 3802 If the attribute is multi-valued (1setOf text), then the 3803 'textWithLanguage' attribute syntax MUST be used to explicitly specify 3804 each attribute value whose natural language needs to be overridden. 3806 deBry, Hastings, Herriot, Isaacson, Powell 3807 Expires August 23, 2000 3808 Other values in a multi-valued 'text' attribute in a request or a 3809 response revert to the natural language of the operation attribute. 3811 In a create request, the Printer object MUST accept and store with the 3812 Job object any natural language in the "attributes-natural-language" 3813 operation attribute, whether the Printer object supports that natural 3814 language or not. Furthermore, the Printer object MUST accept and store 3815 any 'textWithLanguage' attribute value, whether the Printer object 3816 supports that natural language or not. These requirements are 3817 independent of the value of the "ipp-attribute-fidelity" operation 3818 attribute that the client MAY supply. 3820 Example: If the client supplies the "attributes-natural-language" 3821 operation attribute with the value: 'en' indicating English, but the 3822 value of the "job-name" attribute is in French, the client MUST use the 3823 'textWithLanguage' attribute syntax with the following two values: 3825 'fr': Natural Language Override indicating French 3826 'Rapport Mensuel': the job name in French 3828 See the "Encoding and Transport" document [IPP-PRO] for a detailed 3829 example of the 'textWithLanguage' attribute syntax. 3831 4.1.2 'name' 3833 This syntax type is used for user-friendly strings, such as a Printer 3834 name, that, for humans, are more meaningful than identifiers. Names are 3835 never translated from one natural language to another. The 'name' 3836 attribute syntax is essentially the same as 'text', including the 3837 REQUIRED support of UTF-8 except that the sequence of characters is 3838 limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 3840 Also like 'text', 'name' is really an abbreviated notation for either 3841 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 3842 and clients MUST support both the 'nameWithoutLanguage' and 3843 'nameWithLanguage' attribute syntaxes. However, in actual usage and 3844 protocol execution, objects and clients accept and return only one of 3845 the two syntax per attribute. The syntax 'name' never appears "on-the- 3846 wire". 3848 Only the 'text' and 'name' attribute syntaxes permit the Natural 3849 Language Override mechanism. 3851 Some attributes are defined as 'type3 keyword | name'. These attributes 3852 support values that are either type3 keywords or names. This dual- 3853 syntax mechanism enables a site administrator to extend these attributes 3854 to legally include values that are locally defined by the site 3855 administrator. Such names are not registered with IANA. 3857 deBry, Hastings, Herriot, Isaacson, Powell 3858 Expires August 23, 2000 3859 4.1.2.1 'nameWithoutLanguage' 3861 The nameWithoutLanguage' syntax indicates a value that is sequence of 3862 zero or more characters encoded in a maximum of 255 (MAX) octets. 3864 4.1.2.2 'nameWithLanguage' 3866 The 'nameWithLanguage' attribute syntax is a compound attribute syntax 3867 consisting of two parts: a 'nameWithoutLanguage' part encoded in a 3868 maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see 3869 section 4.1.8) part that overrides the natural language in force. The 3870 'naturalLanguage' part explicitly identifies the natural language that 3871 applies to that name value and that name value alone. For any give text 3872 attribute, the 'textWithoutLanguage' part is limited to the maximum 3873 length defined for that 'text' attribute, and the 'naturalLanguage' part 3874 is always limited to 63 (additional) octets. Using the 3875 'textWithLanguage' attribute syntax rather than the normal 3876 'textWithoutLanguage' syntax is the so-called Natural Language Override 3877 mechanism and MUST be supported by all IPP objects and clients. 3879 The 'nameWithLanguage' attribute syntax behaves the same as the 3880 'textWithLanguage' syntax. Using the 'textWithLanguage' attribute 3881 syntax rather than the normal 'textWithoutLanguage' syntax is the so- 3882 called Natural Language Override mechanism and MUST be supported by all 3883 IPP objects and clients. If a name is in a language that is different 3884 than the rest of the object or operation, then this 'nameWithLanguage' 3885 syntax is used rather than the generic 'nameWithoutLanguage' syntax. 3887 If the attribute is multi-valued (1setOf text), then the 3888 'nameWithLanguage' attribute syntax MUST be used to explicitly specify 3889 each attribute value whose natural language needs to be overridden. 3890 Other values in a multi-valued 'name' attribute in a request or a 3891 response revert to the natural language of the operation attribute. 3893 In a create request, the Printer object MUST accept and store with the 3894 Job object any natural language in the "attributes-natural-language" 3895 operation attribute, whether the Printer object supports that natural 3896 language or not. Furthermore, the Printer object MUST accept and store 3897 any 'nameWithLanguage' attribute value, whether the Printer object 3898 supports that natural language or not. These requirements are 3899 independent of the value of the "ipp-attribute-fidelity" operation 3900 attribute that the client MAY supply. 3902 Example: If the client supplies the "attributes-natural-language" 3903 operation attribute with the value: 'en' indicating English, but the 3904 "printer-name" attribute is in German, the client MUST use the 3905 'nameWithLanguage' attribute syntax as follows: 3907 'de': Natural Language Override indicating German 3908 'Farbdrucker': the Printer name in German 3910 deBry, Hastings, Herriot, Isaacson, Powell 3911 Expires August 23, 2000 3912 4.1.2.3 Matching 'name' attribute values 3914 For purposes of matching two 'name' attribute values for equality, such 3915 as in job validation (where a client-supplied value for attribute "xxx" 3916 is checked to see if the value is among the values of the Printer 3917 object's corresponding "xxx-supported" attribute), the following match 3918 rules apply: 3920 1. 'keyword' values never match 'name' values. 3922 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match 3923 if (1) the name parts match and (2) the Associated Natural-Language 3924 parts (see section 3.1.4.1) match. The matching rules are: 3926 a. the name parts match if the two names are identical 3927 character by character, except it is RECOMMENDED that case be 3928 ignored. For example: 'Ajax-letter-head-white' MUST match 3929 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 3930 white' and 'AJAX-LETTER-HEAD-WHITE'. 3932 b. the Associated Natural-Language parts match if the shorter 3933 of the two meets the syntactic requirements of RFC 1766 3934 [RFC1766] and matches byte for byte with the longer. For 3935 example, 'en' matches 'en', 'en-us' and 'en-gb', but matches 3936 neither 'fr' nor 'e'. 3938 4.1.3 'keyword' 3940 The 'keyword' attribute syntax is a sequence of characters, length: 1 to 3941 255, containing only the US-ASCII [ASCII] encoded values for lowercase 3942 letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and 3943 underscore ("_"). The first character MUST be a lowercase letter. 3944 Furthermore, keywords MUST be in U.S. English. 3946 This syntax type is used for enumerating semantic identifiers of 3947 entities in the abstract protocol, i.e., entities identified in this 3948 document. Keywords are used as attribute names or values of attributes. 3949 Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use 3950 the Natural Language Override mechanism, since they MUST always be US- 3951 ASCII and U.S. English. 3953 Keywords are for use in the protocol. A user interface will likely 3954 provide a mapping between protocol keywords and displayable user- 3955 friendly words and phrases which are localized to the natural language 3956 of the user. While the keywords specified in this document MAY be 3957 displayed to users whose natural language is U.S. English, they MAY be 3958 mapped to other U.S. English words for U.S. English users, since the 3959 user interface is outside the scope of this document. 3961 In the definition for each attribute of this syntax type, the full set 3962 of defined keyword values for that attribute are listed. 3964 deBry, Hastings, Herriot, Isaacson, Powell 3965 Expires August 23, 2000 3966 When a keyword is used to represent an attribute (its name), it MUST be 3967 unique within the full scope of all IPP objects and attributes. When a 3968 keyword is used to represent a value of an attribute, it MUST be unique 3969 just within the scope of that attribute. That is, the same keyword MUST 3970 NOT be used for two different values within the same attribute to mean 3971 two different semantic ideas. However, the same keyword MAY be used 3972 across two or more attributes, representing different semantic ideas for 3973 each attribute. Section 6.1 describes how the protocol can be extended 3974 with new keyword values. Examples of attribute name keywords: 3976 "job-name" 3977 "attributes-charset" 3979 Note: This document uses "type1", "type2", and "type3" prefixes to the 3980 "keyword" basic syntax to indicate different levels of review for 3981 extensions (see section 6.1). 3983 4.1.4 'enum' 3985 The 'enum' attribute syntax is an enumerated integer value that is in 3986 the range from 1 to 2**31 - 1 (MAX). Each value has an associated 3987 'keyword' name. In the definition for each attribute of this syntax 3988 type, the full set of possible values for that attribute are listed. 3989 This syntax type is used for attributes for which there are enum values 3990 assigned by other standards, such as SNMP MIBs. A number of attribute 3991 enum values in this document are also used for corresponding attributes 3992 in other standards [RFC1759]. This syntax type is not used for 3993 attributes to which the administrator may assign values. Section 6.1 3994 describes how the protocol can be extended with new enum values. 3996 Enum values are for use in the protocol. A user interface will provide 3997 a mapping between protocol enum values and displayable user-friendly 3998 words and phrases which are localized to the natural language of the 3999 user. While the enum symbols specified in this document MAY be 4000 displayed to users whose natural language is U.S. English, they MAY be 4001 mapped to other U.S. English words for U.S. English users, since the 4002 user interface is outside the scope of this document. 4004 Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- 4005 of-band" value 'unknown'. See the description of the "out-of-band" 4006 values at the beginning of Section 4.1. Therefore, attributes of type 4007 'enum' start at '3'. 4009 Note: This document uses "type1", "type2", and "type3" prefixes to the 4010 "enum" basic syntax to indicate different levels of review for 4011 extensions (see section 6.1). 4013 4.1.5 'uri' 4015 The 'uri' attribute syntax is any valid Uniform Resource Identifier or 4016 URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or 4017 URLs. The maximum length of URIs used as values of IPP attributes is 4019 deBry, Hastings, Herriot, Isaacson, Powell 4020 Expires August 23, 2000 4021 1023 octets. Although most other IPP attribute syntax types allow for 4022 only lower-cased values, this attribute syntax type conforms to the 4023 case-sensitive and case-insensitive rules specified in [RFC2396]. See 4024 also [IPP-IIG] for a discussion of case in URIs. 4026 4.1.6 'uriScheme' 4028 The 'uriScheme' attribute syntax is a sequence of characters 4029 representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC 4030 2396 requires that the values be case-insensitive, IPP requires all 4031 lower case values in IPP attributes to simplify comparing by IPP clients 4032 and Printer objects. 4034 Standard values for this syntax type are the following keywords: 4036 'ipp': for IPP schemed URIs (e.g., "ipp:...") 4037 'http': for HTTP schemed URIs (e.g., "http:...") 4038 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 4039 IETF standards track) 4040 'ftp': for FTP schemed URIs (e.g., "ftp:...") 4041 'mailto': for SMTP schemed URIs (e.g., "mailto:...") 4042 'file': for file schemed URIs (e.g., "file:...") 4044 A Printer object MAY support any URI 'scheme' that has been registered 4045 with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to 4046 represent IPP attribute values is 63 octets. 4048 4.1.7 'charset' 4050 The 'charset' attribute syntax is a standard identifier for a charset. 4051 A charset is a coded character set and encoding scheme. Charsets are 4052 used for labeling certain document contents and 'text' and 'name' 4053 attribute values. The syntax and semantics of this attribute syntax are 4054 specified in RFC 2046 [RFC2046] and contained in the IANA character-set 4055 Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though 4056 RFC 2046 requires that the values be case-insensitive US-ASCII, IPP 4057 requires all lower case values in IPP attributes to simplify comparing 4058 by IPP clients and Printer objects. When a character-set in the IANA 4059 registry has more than one name (alias), the name labeled as "(preferred 4060 MIME name)", if present, MUST be used. 4062 The maximum length of 'charset' values used to represent IPP attribute 4063 values is 63 octets. 4065 Some examples are: 4067 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 4068 (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme 4069 in which US-ASCII is a subset charset. 4070 'us-ascii': 7-bit American Standard Code for Information Interchange 4071 (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, 4073 deBry, Hastings, Herriot, Isaacson, Powell 4074 Expires August 23, 2000 4075 but RFC 2045 [RFC2045] eliminates most of the control characters 4076 from conformant usage in MIME and IPP. 4077 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 4078 1 [ISO8859-1]. That standard defines a coded character set that is 4079 used by Latin languages in the Western Hemisphere and Western 4080 Europe. US-ASCII is a subset charset. 4082 Some attribute descriptions MAY place additional requirements on charset 4083 values that may be used, such as REQUIRED values that MUST be supported 4084 or additional restrictions, such as requiring that the charset have US- 4085 ASCII as a subset charset. 4087 4.1.8 'naturalLanguage' 4089 The 'naturalLanguage' attribute syntax is a standard identifier for a 4090 natural language and optionally a country. The values for this syntax 4091 type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that 4092 the values be case-insensitive US-ASCII, IPP requires all lower case to 4093 simplify comparing by IPP clients and Printer objects. Examples 4094 include: 4096 'en': for English 4097 'en-us': for US English 4098 'fr': for French 4099 'de': for German 4101 The maximum length of 'naturalLanguage' values used to represent IPP 4102 attribute values is 63 octets. 4104 4.1.9 'mimeMediaType' 4106 The 'mimeMediaType' attribute syntax is the Internet Media Type 4107 (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and 4108 registered according to the procedures of RFC 2048 [RFC2048] for 4109 identifying a document format. The value MAY include a charset 4110 parameter, depending on the specification of the Media Type in the IANA 4111 Registry [IANA-MT]. Although most other IPP syntax types allow for only 4112 lower-cased values, this syntax type allows for mixed-case values which 4113 are case-insensitive. 4115 Examples are: 4117 'text/html': An HTML document 4118 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 4119 that in the absence of the charset parameter MUST mean US-ASCII 4120 rather than simply unspecified) [RFC2046]. 4121 'text/plain; charset=US-ASCII': A plain text document in US-ASCII 4122 [52, 56]. 4123 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 4124 1 (Latin 1) [ISO8859-1]. 4125 'text/plain; charset=utf-8': A plain text document in ISO 10646 4126 represented as UTF-8 [RFC2279] 4128 deBry, Hastings, Herriot, Isaacson, Powell 4129 Expires August 23, 2000 4130 'application/postscript': A PostScript document [RFC2046] 4131 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 4132 sequence embedded in the document data) 4133 'application/pdf': Portable Document Format - see IANA MIME Media 4134 Type registry 4135 'application/octet-stream': Auto-sense - see section 4.1.9.1 4137 4.1.9.1 Application/octet-stream -- Auto-Sensing the document format 4139 One special type is 'application/octet-stream'. If the Printer object 4140 supports this value, the Printer object MUST be capable of auto-sensing 4141 the format of the document data, either as part of the create operation 4142 and/or at document processing time. During auto-sensing, a Printer may 4143 determine that the document-data has a format that the Printer doesn't 4144 recognize. If the Printer determines this problem before returning an 4145 operation response, it rejects the request and returns the 'client- 4146 error-document-format-not-supported' status code. If the Printer 4147 determines this problem after accepting the request and returning an 4148 operation response with one of the successful status codes, the Printer 4149 adds the 'unsupported-document-format' value to the job's "job-state- 4150 reasons" attribute. 4152 If the Printer object's default value attribute "document-format- 4153 default" is set to 'application/octet-stream', the Printer object not 4154 only supports auto-sensing of the document format, but will depend on 4155 the result of applying its auto-sensing when the client does not supply 4156 the "document-format" attribute. If the client supplies a document 4157 format value, the Printer MUST rely on the supplied attribute, rather 4158 than trust its auto-sensing algorithm. To summarize: 4160 1. If the client does not supply a document format value, the Printer 4161 MUST rely on its default value setting (which may be 4162 'application/octet-stream' indicating an auto-sensing mechanism). 4163 2. If the client supplies a value other than 'application/octet- 4164 stream', the client is supplying valid information about the format 4165 of the document data and the Printer object MUST trust the client 4166 supplied value more than the outcome of applying an automatic 4167 format detection mechanism. For example, the client may be 4168 requesting the printing of a PostScript file as a 'text/plain' 4169 document. The Printer object MUST print a text representation of 4170 the PostScript commands rather than interpret the stream of 4171 PostScript commands and print the result. 4172 3. If the client supplies a value of 'application/octet-stream', the 4173 client is indicating that the Printer object MUST use its auto- 4174 sensing mechanism on the client supplied document data whether 4175 auto-sensing is the Printer object's default or not. 4177 Note: Since the auto-sensing algorithm is probabilistic, if the client 4178 requests both auto-sensing ("document-format" set to 'application/octet- 4179 stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the 4180 Printer object might not be able to guarantee exactly what the end user 4181 intended (the auto-sensing algorithm might mistake one document format 4183 deBry, Hastings, Herriot, Isaacson, Powell 4184 Expires August 23, 2000 4185 for another), but it is able to guarantee that its auto-sensing 4186 mechanism be used. 4188 The maximum length of a 'mimeMediaType' value to represent IPP attribute 4189 values is 255 octets. 4191 4.1.10 'octetString' 4193 The 'octetString' attribute syntax is a sequence of octets encoded in a 4194 maximum of 1023 octets which is indicated in sub-section headers using 4195 the notation: octetString(MAX). This syntax type is used for opaque 4196 data. 4198 4.1.11 'boolean' 4200 The 'boolean' attribute syntax has only two values: 'true' and 'false'. 4202 4.1.12 'integer' 4204 The 'integer' attribute syntax is an integer value that is in the range 4205 from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may 4206 specify the range constraint explicitly in sub-section headers if the 4207 range is different from the full range of possible integer values. For 4208 example: job-priority (integer(1:100)) for the "job-priority" 4209 attribute. However, the enforcement of that additional constraint is up 4210 to the IPP objects, not the protocol. 4212 4.1.13 'rangeOfInteger' 4214 The 'rangeOfInteger' attribute syntax is an ordered pair of integers 4215 that defines an inclusive range of integer values. The first integer 4216 specifies the lower bound and the second specifies the upper bound. If 4217 a range constraint is specified in the header description for an 4218 attribute in this document whose attribute syntax is 'rangeOfInteger' 4219 (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), 4220 then the constraint applies to both integers. 4222 4.1.14 'dateTime' 4224 The 'dateTime' attribute syntax is a standard, fixed length, 11 octet 4225 representation of the "DateAndTime" syntax as defined in RFC 2579 4226 [RFC2579]. RFC 2579 also identifies an 8 octet representation of a 4227 "DateAndTime" value, but IPP objects MUST use the 11 octet 4228 representation. A user interface will provide a mapping between 4229 protocol dateTime values and displayable user-friendly words or 4230 presentation values and phrases which are localized to the natural 4231 language and date format of the user, including time zone. 4233 deBry, Hastings, Herriot, Isaacson, Powell 4234 Expires August 23, 2000 4235 4.1.15 'resolution' 4237 The 'resolution' attribute syntax specifies a two-dimensional resolution 4238 in the indicated units. It consists of 3 values: a cross feed direction 4239 resolution (positive integer value), a feed direction resolution 4240 (positive integer value), and a units value. The semantics of these 4241 three components are taken from the Printer MIB [RFC1759] suggested 4242 values. That is, the cross feed direction component resolution 4243 component is the same as the prtMarkerAddressabilityXFeedDir object in 4244 the Printer MIB, the feed direction component resolution component is 4245 the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and 4246 the units component is the same as the prtMarkerAddressabilityUnit 4247 object in the Printer MIB (namely, '3' indicates dots per inch and '4' 4248 indicates dots per centimeter). All three values MUST be present even 4249 if the first two values are the same. Example: '300', '600', '3' 4250 indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed 4251 direction resolution, since a '3' indicates dots per inch (dpi). 4253 4.1.16 '1setOf X' 4255 The '1setOf X' attribute syntax is 1 or more values of attribute syntax 4256 type X. This syntax type is used for multi-valued attributes. The 4257 syntax type is called '1setOf' rather than just 'setOf' as a reminder 4258 that the set of values MUST NOT be empty (i.e., a set of size 0). Sets 4259 are normally unordered. However each attribute description of this type 4260 may specify that the values MUST be in a certain order for that 4261 attribute. 4263 4.2 Job Template Attributes 4265 Job Template attributes describe job processing behavior. Support for 4266 Job Template attributes by a Printer object is OPTIONAL (see section 4267 12.2.3 for a description of support for OPTIONAL attributes). Also, 4268 clients OPTIONALLY supply Job Template attributes in create requests. 4270 Job Template attributes conform to the following rules. For each Job 4271 Template attribute called "xxx": 4273 1. If the Printer object supports "xxx" then it MUST support both a 4274 "xxx-default" attribute (unless there is a "No" in the table below) 4275 and a "xxx-supported" attribute. If the Printer object doesn't 4276 support "xxx", then it MUST support neither an "xxx-default" 4277 attribute nor an "xxx-supported" attribute, and it MUST treat an 4278 attribute "xxx" supplied by a client as unsupported. An attribute 4279 "xxx" may be supported for some document formats and not supported 4280 for other document formats. For example, it is expected that a 4281 Printer object would only support "orientation-requested" for some 4282 document formats (such as 'text/plain' or 'text/html') but not 4283 others (such as 'application/postscript'). 4285 2. "xxx" is OPTIONALLY supplied by the client in a create request. 4286 If "xxx" is supplied, the client is indicating a desired job 4288 deBry, Hastings, Herriot, Isaacson, Powell 4289 Expires August 23, 2000 4290 processing behavior for this Job. When "xxx" is not supplied, the 4291 client is indicating that the Printer object apply its default job 4292 processing behavior at job processing time if the document content 4293 does not contain an embedded instruction indicating an xxx-related 4294 behavior. 4296 Since an administrator MAY change the default value attribute after 4297 a Job object has been submitted but before it has been processed, 4298 the default value used by the Printer object at job processing time 4299 may be different that the default value in effect at job submission 4300 time. 4302 3. The "xxx-supported" attribute is a Printer object attribute that 4303 describes which job processing behaviors are supported by that 4304 Printer object. A client can query the Printer object to find out 4305 what xxx-related behaviors are supported by inspecting the returned 4306 values of the "xxx-supported" attribute. 4308 Note: The "xxx" in each "xxx-supported" attribute name is singular, 4309 even though an "xxx-supported" attribute usually has more than one 4310 value, such as "job-sheet-supported", unless the "xxx" Job Template 4311 attribute is plural, such as "finishings" or "sides". In such 4312 cases the "xxx-supported" attribute names are: "finishings- 4313 supported" and "sides-supported". 4315 4. The "xxx-default" default value attribute describes what will be 4316 done at job processing time when no other job processing 4317 information is supplied by the client (either explicitly as an IPP 4318 attribute in the create request or implicitly as an embedded 4319 instruction within the document data). 4321 If an application wishes to present an end user with a list of supported 4322 values from which to choose, the application SHOULD query the Printer 4323 object for its supported value attributes. The application SHOULD also 4324 query the default value attributes. If the application then limits 4325 selectable values to only those value that are supported, the 4326 application can guarantee that the values supplied by the client in the 4327 create request all fall within the set of supported values at the 4328 Printer. When querying the Printer, the client MAY enumerate each 4329 attribute by name in the Get-Printer-Attributes Request, or the client 4330 MAY just name the "job-template" group in order to get the complete set 4331 of supported attributes (both supported and default attributes). 4333 The "finishings" attribute is an example of a Job Template attribute. 4334 It can take on a set of values such as 'staple', 'punch', and/or 4335 'cover'. A client can query the Printer object for the "finishings- 4336 supported" attribute and the "finishings-default" attribute. The 4337 supported attribute contains a set of supported values. The default 4338 value attribute contains the finishing value(s) that will be used for a 4339 new Job if the client does not supply a "finishings" attribute in the 4340 create request and the document data does not contain any corresponding 4341 finishing instructions. If the client does supply the "finishings" 4343 deBry, Hastings, Herriot, Isaacson, Powell 4344 Expires August 23, 2000 4345 attribute in the create request, the IPP object validates the value or 4346 values to make sure that they are a subset of the supported values 4347 identified in the Printer object's "finishings-supported" attribute. 4348 See section 3.1.7. 4350 The table below summarizes the names and relationships for all Job 4351 Template attributes. The first column of the table (labeled "Job 4352 Attribute") shows the name and syntax for each Job Template attribute in 4353 the Job object. These are the attributes that can optionally be supplied 4354 by the client in a create request. The last two columns (labeled 4355 "Printer: Default Value Attribute" and "Printer: Supported Values 4356 Attribute") shows the name and syntax for each Job Template attribute in 4357 the Printer object (the default value attribute and the supported values 4358 attribute). A "No" in the table means the Printer MUST NOT support the 4359 attribute (that is, the attribute is simply not applicable). For 4360 brevity in the table, the 'text' and 'name' entries do not show the 4361 maximum length for each attribute. 4363 deBry, Hastings, Herriot, Isaacson, Powell 4364 Expires August 23, 2000 4365 +===================+======================+======================+ 4366 | Job Attribute |Printer: Default Value| Printer: Supported | 4367 | | Attribute | Values Attribute | 4368 +===================+======================+======================+ 4369 | job-priority | job-priority-default |job-priority-supported| 4370 | (integer 1:100) | (integer 1:100) |(integer 1:100) | 4371 +-------------------+----------------------+----------------------+ 4372 | job-hold-until | job-hold-until- |job-hold-until- | 4373 | (type3 keyword | | default | supported | 4374 | name) | (type3 keyword | |(1setOf ( | 4375 | | name) |type3 keyword | name))| 4376 +-------------------+----------------------+----------------------+ 4377 | job-sheets | job-sheets-default |job-sheets-supported | 4378 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4379 | name) | name) |type3 keyword | name))| 4380 +-------------------+----------------------+----------------------+ 4381 |multiple-document- |multiple-document- |multiple-document- | 4382 | handling | handling-default |handling-supported | 4383 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4384 +-------------------+----------------------+----------------------+ 4385 | copies | copies-default | copies-supported | 4386 | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | 4387 | | | (1:MAX)) | 4388 +-------------------+----------------------+----------------------+ 4389 | finishings | finishings-default | finishings-supported | 4390 |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | 4391 +-------------------+----------------------+----------------------+ 4392 | page-ranges | No | page-ranges- | 4393 | (1setOf | | supported (boolean) | 4394 | rangeOfInteger | | | 4395 | (1:MAX)) | | | 4396 +-------------------+----------------------+----------------------+ 4397 | sides | sides-default | sides-supported | 4398 | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| 4399 +-------------------+----------------------+----------------------+ 4400 | number-up | number-up-default | number-up-supported | 4401 | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf (integer | 4402 | | | (1:MAX) | | 4403 | | | rangeOfInteger | 4404 | | | (1:MAX))) | 4405 +-------------------+----------------------+----------------------+ 4406 | orientation- |orientation-requested-|orientation-requested-| 4407 | requested | default | supported | 4408 | (type2 enum) | (type2 enum) | (1setOf type2 enum) | 4409 +-------------------+----------------------+----------------------+ 4410 | media | media-default | media-supported | 4411 | (type3 keyword | | (type3 keyword | |(1setOf ( | 4412 | name) | name) |type3 keyword | name))| 4413 | | | | 4414 | | | media-ready | 4415 | | |(1setOf ( | 4416 | | |type3 keyword | name))| 4417 +-------------------+----------------------+----------------------+ 4419 deBry, Hastings, Herriot, Isaacson, Powell 4420 Expires August 23, 2000 4421 | printer-resolution| printer-resolution- | printer-resolution- | 4422 | (resolution) | default | supported | 4423 | | (resolution) |(1setOf resolution) | 4424 +-------------------+----------------------+----------------------+ 4425 | print-quality | print-quality-default| print-quality- | 4426 | (type2 enum) | (type2 enum) | supported | 4427 | | |(1setOf type2 enum) | 4428 +-------------------+----------------------+----------------------+ 4430 4.2.1 job-priority (integer(1:100)) 4432 This attribute specifies a priority for scheduling the Job. A higher 4433 value specifies a higher priority. The value 1 indicates the lowest 4434 possible priority. The value 100 indicates the highest possible 4435 priority. Among those jobs that are ready to print, a Printer MUST 4436 print all jobs with a priority value of n before printing those with a 4437 priority value of n-1 for all n. 4439 If the Printer object supports this attribute, it MUST always support 4440 the full range from 1 to 100. No administrative restrictions are 4441 permitted. This way an end-user can always make full use of the entire 4442 range with any Printer object. If privileged jobs are implemented 4443 outside IPP/1.1, they MUST have priorities higher than 100, rather than 4444 restricting the range available to end-users. 4446 If the client does not supply this attribute and this attribute is 4447 supported by the Printer object, the Printer object MUST use the value 4448 of the Printer object's "job-priority-default" at job submission time 4449 (unlike most Job Template attributes that are used if necessary at job 4450 processing time). 4452 The syntax for the "job-priority-supported" is also integer(1:100). 4453 This single integer value indicates the number of priority levels 4454 supported. The Printer object MUST take the value supplied by the 4455 client and map it to the closest integer in a sequence of n integers 4456 values that are evenly distributed over the range from 1 to 100 using 4457 the formula: 4459 roundToNearestInt((100x+50)/n) 4461 where n is the value of "job-priority-supported" and x ranges from 0 4462 through n-1. 4464 For example, if n=1 the sequence of values is 50; if n=2, the sequence 4465 of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 4466 and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, 4467 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, . 4468 100. 4470 If the value of the Printer object's "job-priority-supported" is 10 and 4471 the client supplies values in the range 1 to 10, the Printer object maps 4473 deBry, Hastings, Herriot, Isaacson, Powell 4474 Expires August 23, 2000 4475 them to 5, in the range 11 to 20, the Printer object maps them to 15, 4476 etc. 4478 4.2.2 job-hold-until (type3 keyword | name (MAX)) 4480 This attribute specifies the named time period during which the Job MUST 4481 become a candidate for printing. 4483 Standard keyword values for named time periods are: 4485 'no-hold': immediately, if there are not other reasons to hold the 4486 job 4487 'indefinite': - the job is held indefinitely, until a client 4488 performs a Release-Job (section 3.3.6) 4489 'day-time': during the day 4490 'evening': evening 4491 'night': night 4492 'weekend': weekend 4493 'second-shift': second-shift (after close of business) 4494 'third-shift': third-shift (after midnight) 4496 An administrator MUST associate allowable print times with a named time 4497 period (by means outside the scope of this IPP/1.1 document). An 4498 administrator is encouraged to pick names that suggest the type of time 4499 period. An administrator MAY define additional values using the 'name' 4500 or 'keyword' attribute syntax, depending on implementation. 4502 If the value of this attribute specifies a time period that is in the 4503 future, the Printer SHOULD add the 'job-hold-until-specified' value to 4504 the job's "job-state-reasons" attribute, MUST move the job to the 4505 'pending-held' state, and MUST NOT schedule the job for printing until 4506 the specified time-period arrives. 4508 When the specified time period arrives, the Printer MUST remove the 4509 'job-hold-until-specified' value from the job's "job-state-reason" 4510 attribute, if present. If there are no other job state reasons that 4511 keep the job in the 'pending-held' state, the Printer MUST consider the 4512 job as a candidate for processing by moving the job to the 'pending' 4513 state. 4515 If this job attribute value is the named value 'no-hold', or the 4516 specified time period has already started, the job MUST be a candidate 4517 for processing immediately. 4519 If the client does not supply this attribute and this attribute is 4520 supported by the Printer object, the Printer object MUST use the value 4521 of the Printer object's "job-hold-until-default" at job submission time 4522 (unlike most Job Template attributes that are used if necessary at job 4523 processing time). 4525 deBry, Hastings, Herriot, Isaacson, Powell 4526 Expires August 23, 2000 4527 4.2.3 job-sheets (type3 keyword | name(MAX)) 4529 This attribute determines which job start/end sheet(s), if any, MUST be 4530 printed with a job. 4532 Standard keyword values are: 4534 'none': no job sheet is printed 4535 'standard': one or more site specific standard job sheets are 4536 printed, e.g. a single start sheet or both start and end sheet is 4537 printed 4539 An administrator MAY define additional values using the 'name' or 4540 'keyword' attribute syntax, depending on implementation. 4542 The effect of this attribute on jobs with multiple documents MAY be 4543 affected by the "multiple-document-handling" job attribute (section 4544 4.2.4), depending on the job sheet semantics. 4546 4.2.4 multiple-document-handling (type2 keyword) 4548 This attribute is relevant only if a job consists of two or more 4549 documents. This attribute MUST be supported if the Printer supports 4550 multiple documents per job (see sections 3.2.4 and 3.3.1). The 4551 attribute controls finishing operations and the placement of one or more 4552 print-stream pages into impressions and onto media sheets. When the 4553 value of the "copies" attribute exceeds 1, it also controls the order in 4554 which the copies that result from processing the documents are produced. 4555 For the purposes of this explanations, if "a" represents an instance of 4556 document data, then the result of processing the data in document "a" is 4557 a sequence of media sheets represented by "a(*)". 4559 Standard keyword values are: 4561 'single-document': If a Job object has multiple documents, say, the 4562 document data is called a and b, then the result of processing all 4563 the document data (a and then b) MUST be treated as a single 4564 sequence of media sheets for finishing operations; that is, 4565 finishing would be performed on the concatenation of the sequences 4566 a(*),b(*). The Printer object MUST NOT force the data in each 4567 document instance to be formatted onto a new print-stream page, nor 4568 to start a new impression on a new media sheet. If more than one 4569 copy is made, the ordering of the sets of media sheets resulting 4570 from processing the document data MUST be a(*), b(*), a(*), b(*), 4571 ..., and the Printer object MUST force each copy (a(*),b(*)) to 4572 start on a new media sheet. 4573 'separate-documents-uncollated-copies': If a Job object has multiple 4574 documents, say, the document data is called a and b, then the 4575 result of processing the data in each document instance MUST be 4576 treated as a single sequence of media sheets for finishing 4577 operations; that is, the sets a(*) and b(*) would each be finished 4578 separately. The Printer object MUST force each copy of the result 4579 of processing the data in a single document to start on a new media 4581 deBry, Hastings, Herriot, Isaacson, Powell 4582 Expires August 23, 2000 4583 sheet. If more than one copy is made, the ordering of the sets of 4584 media sheets resulting from processing the document data MUST be 4585 a(*), a(*), ..., b(*), b(*) ... . 4586 'separate-documents-collated-copies': If a Job object has multiple 4587 documents, say, the document data is called a and b, then the 4588 result of processing the data in each document instance MUST be 4589 treated as a single sequence of media sheets for finishing 4590 operations; that is, the sets a(*) and b(*) would each be finished 4591 separately. The Printer object MUST force each copy of the result 4592 of processing the data in a single document to start on a new media 4593 sheet. If more than one copy is made, the ordering of the sets of 4594 media sheets resulting from processing the document data MUST be 4595 a(*), b(*), a(*), b(*), ... . 4596 'single-document-new-sheet': Same as 'single-document', except that 4597 the Printer object MUST ensure that the first impression of each 4598 document instance in the job is placed on a new media sheet. This 4599 value allows multiple documents to be stapled together with a 4600 single staple where each document starts on a new sheet. 4602 The 'single-document' value is the same as 'separate-documents-collated- 4603 copies' with respect to ordering of print-stream pages, but not media 4604 sheet generation, since 'single-document' will put the first page of the 4605 next document on the back side of a sheet if an odd number of pages have 4606 been produced so far for the job, while 'separate-documents-collated- 4607 copies' always forces the next document or document copy on to a new 4608 sheet. In addition, if the "finishings" attribute specifies 'staple', 4609 then with 'single-document', documents a and b are stapled together as a 4610 single document with no regard to new sheets, with 'single-document-new- 4611 sheet', documents a and b are stapled together as a single document, but 4612 document b starts on a new sheet, but with 'separate-documents- 4613 uncollated-copies' and 'separate-documents-collated-copies', documents a 4614 and b are stapled separately. 4616 Note: None of these values provide means to produce uncollated sheets 4617 within a document, i.e., where multiple copies of sheet n are produced 4618 before sheet n+1 of the same document. 4620 The relationship of this attribute and the other attributes that control 4621 document processing is described in section 15.3. 4623 4.2.5 copies (integer(1:MAX)) 4625 This attribute specifies the number of copies to be printed. 4627 On many devices the supported number of collated copies will be limited 4628 by the number of physical output bins on the device, and may be 4629 different from the number of uncollated copies which can be supported. 4631 Note: The effect of this attribute on jobs with multiple documents is 4632 controlled by the "multiple-document-handling" job attribute (section 4633 4.2.4) and the relationship of this attribute and the other attributes 4634 that control document processing is described in section 15.3. 4636 deBry, Hastings, Herriot, Isaacson, Powell 4637 Expires August 23, 2000 4638 4.2.6 finishings (1setOf type2 enum) 4640 This attribute identifies the finishing operations that the Printer uses 4641 for each copy of each printed document in the Job. For Jobs with 4642 multiple documents, the "multiple-document-handling" attribute 4643 determines what constitutes a "copy" for purposes of finishing. 4645 Standard enum values are: 4647 Value Symbolic Name and Description 4649 '3' 'none': Perform no finishing 4650 '4' 'staple': Bind the document(s) with one or more staples. The 4651 exact number and placement of the staples is site- 4652 defined. 4653 '5' 'punch': This value indicates that holes are required in the 4654 finished document. The exact number and placement of the 4655 holes is site-defined The punch specification MAY be 4656 satisfied (in a site- and implementation-specific manner) 4657 either by drilling/punching, or by substituting pre- 4658 drilled media. 4659 '6' 'cover': This value is specified when it is desired to select 4660 a non-printed (or pre-printed) cover for the document. 4661 This does not supplant the specification of a printed 4662 cover (on cover stock medium) by the document itself. 4663 '7' 'bind': This value indicates that a binding is to be applied 4664 to the document; the type and placement of the binding is 4665 site-defined. 4667 '8' 'saddle-stitch': Bind the document(s) with one or more 4668 staples (wire stitches) along the middle fold. The exact 4669 number and placement of the staples and the middle fold 4670 is implementation and/or site-defined. 4671 '9' 'edge-stitch': Bind the document(s) with one or more staples 4672 (wire stitches) along one edge. The exact number and 4673 placement of the staples is implementation and/or site- 4674 defined. 4675 '10'-'19' reserved for future generic finishing enum values. 4677 The following values are more specific; they indicate a corner or an 4678 edge as if the document were a portrait document (see below): 4680 '20' 'staple-top-left': Bind the document(s) with one or more 4681 staples in the top left corner. 4682 '21' 'staple-bottom-left': Bind the document(s) with one or more 4683 staples in the bottom left corner. 4684 '22' 'staple-top-right': Bind the document(s) with one or more 4685 staples in the top right corner. 4686 '23' 'staple-bottom-right': Bind the document(s) with one or more 4687 staples in the bottom right corner. 4688 '24' 'edge-stitch-left': Bind the document(s) with one or more 4689 staples (wire stitches) along the left edge. The exact 4690 number and placement of the staples is implementation 4691 and/or site-defined. 4693 deBry, Hastings, Herriot, Isaacson, Powell 4694 Expires August 23, 2000 4695 '25' 'edge-stitch-top': Bind the document(s) with one or more 4696 staples (wire stitches) along the top edge. The exact 4697 number and placement of the staples is implementation 4698 and/or site-defined. 4699 '26' 'edge-stitch-right': Bind the document(s) with one or more 4700 staples (wire stitches) along the right edge. The exact 4701 number and placement of the staples is implementation 4702 and/or site-defined. 4703 '27' 'edge-stitch-bottom': Bind the document(s) with one or more 4704 staples (wire stitches) along the bottom edge. The exact 4705 number and placement of the staples is implementation 4706 and/or site-defined. 4707 '28' 'staple-dual-left': Bind the document(s) with two staples 4708 (wire stitches) along the left edge assuming a portrait 4709 document (see above). 4710 '29' 'staple-dual-top': Bind the document(s) with two staples 4711 (wire stitches) along the top edge assuming a portrait 4712 document (see above). 4713 '30' 'staple-dual-right': Bind the document(s) with two staples 4714 (wire stitches) along the right edge assuming a portrait 4715 document (see above). 4716 '31' 'staple-dual-bottom': Bind the document(s) with two staples 4717 (wire stitches) along the bottom edge assuming a portrait 4718 document (see above). 4720 The 'staple-xxx' values are specified with respect to the document as if 4721 the document were a portrait document. If the document is actually a 4722 landscape or a reverse-landscape document, the client supplies the 4723 appropriate transformed value. For example, to position a staple in the 4724 upper left hand corner of a landscape document when held for reading, 4725 the client supplies the 'staple-bottom-left' value (since landscape is 4726 defined as a +90 degree rotation from portrait, i.e., anti-clockwise). 4727 On the other hand, to position a staple in the upper left hand corner of 4728 a reverse-landscape document when held for reading, the client supplies 4729 the 'staple-top-right' value (since reverse-landscape is defined as a - 4730 90 degree rotation from portrait, i.e., clockwise). 4732 The angle (vertical, horizontal, angled) of each staple with respect to 4733 the document depends on the implementation which may in turn depend on 4734 the value of the attribute. 4736 Note: The effect of this attribute on jobs with multiple documents is 4737 controlled by the "multiple-document-handling" job attribute (section 4738 4.2.4) and the relationship of this attribute and the other attributes 4739 that control document processing is described in section 15.3. 4741 If the client supplies a value of 'none' along with any other 4742 combination of values, it is the same as if only that other combination 4743 of values had been supplied (that is the 'none' value has no effect). 4745 deBry, Hastings, Herriot, Isaacson, Powell 4746 Expires August 23, 2000 4747 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4749 This attribute identifies the range(s) of print-stream pages that the 4750 Printer object uses for each copy of each document which are to be 4751 printed. Nothing is printed for any pages identified that do not exist 4752 in the document(s). Ranges MUST be in ascending order, for example: 1- 4753 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 4754 object can process the job in a single pass. If the ranges are not 4755 ascending or are overlapping, the IPP object MUST reject the request and 4756 return the 'client-error-bad-request' status code. The attribute is 4757 associated with print-stream pages not application-numbered pages (for 4758 example, the page numbers found in the headers and or footers for 4759 certain word processing applications). 4761 For Jobs with multiple documents, the "multiple-document-handling" 4762 attribute determines what constitutes a "copy" for purposes of the 4763 specified page range(s). When "multiple-document-handling" is 'single- 4764 document', the Printer object MUST apply each supplied page range once 4765 to the concatenation of the print-stream pages. For example, if there 4766 are 8 documents of 10 pages each, the page-range '41:60' prints the 4767 pages in the 5th and 6th documents as a single document and none of the 4768 pages of the other documents are printed. When "multiple-document- 4769 handling" is 'separate-documents-uncollated-copies' or 'separate- 4770 documents-collated-copies', the Printer object MUST apply each supplied 4771 page range repeatedly to each document copy. For the same job, the 4772 page-range '1:3, 10:10' would print the first 3 pages and the 10th page 4773 of each of the 8 documents in the Job, as 8 separate documents. 4775 In most cases, the exact pages to be printed will be generated by a 4776 device driver and this attribute would not be required. However, when 4777 printing an archived document which has already been formatted, the end 4778 user may elect to print just a subset of the pages contained in the 4779 document. In this case, if page-range = n.m is specified, the first 4780 page to be printed will be page n. All subsequent pages of the document 4781 will be printed through and including page m. 4783 "page-ranges-supported" is a boolean value indicating whether or not the 4784 printer is capable of supporting the printing of page ranges. This 4785 capability may differ from one PDL to another. There is no "page-ranges- 4786 default" attribute. If the "page-ranges" attribute is not supplied by 4787 the client, all pages of the document will be printed. 4789 Note: The effect of this attribute on jobs with multiple documents is 4790 controlled by the "multiple-document-handling" job attribute (section 4791 4.2.4) and the relationship of this attribute and the other attributes 4792 that control document processing is described in section 15.3. 4794 4.2.8 sides (type2 keyword) 4796 This attribute specifies how print-stream pages are to be imposed upon 4797 the sides of an instance of a selected medium, i.e., an impression. 4799 deBry, Hastings, Herriot, Isaacson, Powell 4800 Expires August 23, 2000 4801 The standard keyword values are: 4803 'one-sided': imposes each consecutive print-stream page upon the same 4804 side of consecutive media sheets. 4805 'two-sided-long-edge': imposes each consecutive pair of print-stream 4806 pages upon front and back sides of consecutive media sheets, such 4807 that the orientation of each pair of print-stream pages on the 4808 medium would be correct for the reader as if for binding on the 4809 long edge. This imposition is sometimes called 'duplex' or 'head- 4810 to-head'. 4811 'two-sided-short-edge': imposes each consecutive pair of print-stream 4812 pages upon front and back sides of consecutive media sheets, such 4813 that the orientation of each pair of print-stream pages on the 4814 medium would be correct for the reader as if for binding on the 4815 short edge. This imposition is sometimes called 'tumble' or 'head- 4816 to-toe'. 4818 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 4819 all work the same for portrait or landscape. However 'head-to-toe' is 4820 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 4821 switches between 'duplex' and 'tumble' when using portrait and landscape 4822 modes. 4824 Note: The effect of this attribute on jobs with multiple documents is 4825 controlled by the "multiple-document-handling" job attribute (section 4826 4.2.4) and the relationship of this attribute and the other attributes 4827 that control document processing is described in section 15.3. 4829 4.2.9 number-up (integer(1:MAX)) 4831 This attribute specifies the number of print-stream pages to impose upon 4832 a single side of an instance of a selected medium. For example, if the 4833 value is: 4835 Value Description 4837 '1' the Printer MUST place one print-stream page on a single side 4838 of an instance of the selected medium (MAY add some sort 4839 of translation, scaling, or rotation). 4840 '2' the Printer MUST place two print-stream pages on a single side 4841 of an instance of the selected medium (MAY add some sort 4842 of translation, scaling, or rotation). 4843 '4' the Printer MUST place four print-stream pages on a single 4844 side of an instance of the selected medium (MAY add some 4845 sort of translation, scaling, or rotation). 4847 This attribute primarily controls the translation, scaling and rotation 4848 of print-stream pages. 4850 Note: The effect of this attribute on jobs with multiple documents is 4851 controlled by the "multiple-document-handling" job attribute (section 4853 deBry, Hastings, Herriot, Isaacson, Powell 4854 Expires August 23, 2000 4855 4.2.4) and the relationship of this attribute and the other attributes 4856 that control document processing is described in section 15.3. 4858 4.2.10 orientation-requested (type2 enum) 4860 This attribute indicates the desired orientation for printed print- 4861 stream pages; it does not describe the orientation of the client- 4862 supplied print-stream pages. 4864 For some document formats (such as 'application/postscript'), the 4865 desired orientation of the print-stream pages is specified within the 4866 document data. This information is generated by a device driver prior 4867 to the submission of the print job. Other document formats (such as 4868 'text/plain') do not include the notion of desired orientation within 4869 the document data. In the latter case it is possible for the Printer 4870 object to bind the desired orientation to the document data after it has 4871 been submitted. It is expected that a Printer object would only support 4872 "orientations-requested" for some document formats (e.g., 'text/plain' 4873 or 'text/html') but not others (e.g., 'application/postscript'). This 4874 is no different than any other Job Template attribute since section 4.2, 4875 item 1, points out that a Printer object may support or not support any 4876 Job Template attribute based on the document format supplied by the 4877 client. However, a special mention is made here since it is very likely 4878 that a Printer object will support "orientation-requested" for only a 4879 subset of the supported document formats. 4881 Standard enum values are: 4883 Value Symbolic Name and Description 4885 '3' 'portrait': The content will be imaged across the short edge 4886 of the medium. 4887 '4' 'landscape': The content will be imaged across the long edge 4888 of the medium. Landscape is defined to be a rotation of 4889 the print-stream page to be imaged by +90 degrees with 4890 respect to the medium (i.e. anti-clockwise) from the 4891 portrait orientation. Note: The +90 direction was 4892 chosen because simple finishing on the long edge is the 4893 same edge whether portrait or landscape 4894 '5' 'reverse-landscape': The content will be imaged across the 4895 long edge of the medium. Reverse-landscape is defined to 4896 be a rotation of the print-stream page to be imaged by - 4897 90 degrees with respect to the medium (i.e. clockwise) 4898 from the portrait orientation. Note: The 'reverse- 4899 landscape' value was added because some applications 4900 rotate landscape -90 degrees from portrait, rather than 4901 +90 degrees. 4902 '6' 'reverse-portrait': The content will be imaged across the 4903 short edge of the medium. Reverse-portrait is defined to 4904 be a rotation of the print-stream page to be imaged by 4905 180 degrees with respect to the medium from the portrait 4906 orientation. Note: The 'reverse-portrait' value was 4907 added for use with the "finishings" attribute in cases 4909 deBry, Hastings, Herriot, Isaacson, Powell 4910 Expires August 23, 2000 4911 where the opposite edge is desired for finishing a 4912 portrait document on simple finishing devices that have 4913 only one finishing position. Thus a 'text'/plain' 4914 portrait document can be stapled "on the right" by a 4915 simple finishing device as is common use with some middle 4916 eastern languages such as Hebrew. 4918 Note: The effect of this attribute on jobs with multiple documents is 4919 controlled by the "multiple-document-handling" job attribute (section 4920 4.2.4) and the relationship of this attribute and the other attributes 4921 that control document processing is described in section 15.3. 4923 4.2.11 media (type3 keyword | name(MAX)) 4925 This attribute identifies the medium that the Printer uses for all 4926 impressions of the Job. 4928 The values for "media" include medium-names, medium-sizes, input-trays 4929 and electronic forms so that one attribute specifies the media. If a 4930 Printer object supports a medium name as a value of this attribute, such 4931 a medium name implicitly selects an input-tray that contains the 4932 specified medium. If a Printer object supports a medium size as a value 4933 of this attribute, such a medium size implicitly selects a medium name 4934 that in turn implicitly selects an input-tray that contains the medium 4935 with the specified size. If a Printer object supports an input-tray as 4936 the value of this attribute, such an input-tray implicitly selects the 4937 medium that is in that input-tray at the time the job prints. This case 4938 includes manual-feed input-trays. If a Printer object supports an 4939 electronic form as the value of this attribute, such an electronic form 4940 implicitly selects a medium-name that in turn implicitly selects an 4941 input-tray that contains the medium specified by the electronic form. 4942 The electronic form also implicitly selects an image that the Printer 4943 MUST merge with the document data as its prints each page. 4945 Standard keyword values are taken from ISO DPA [ISO10175], the Printer 4946 MIB [RFC1759], and ASME-Y14.1M [ASME-Y14.1M] and are listed in section 4947 14. An administrator MAY define additional values using the 'name' or 4948 'keyword' attribute syntax, depending on implementation. 4950 There is also an additional Printer attribute named "media-ready" which 4951 differs from "media-supported" in that legal values only include the 4952 subset of "media-supported" values that are physically loaded and ready 4953 for printing with no operator intervention required. If an IPP object 4954 supports "media-supported", it NEED NOT support "media-ready". 4956 The relationship of this attribute and the other attributes that control 4957 document processing is described in section 15.3. 4959 4.2.12 printer-resolution (resolution) 4961 This attribute identifies the resolution that Printer uses for the Job. 4963 deBry, Hastings, Herriot, Isaacson, Powell 4964 Expires August 23, 2000 4965 4.2.13 print-quality (type2 enum) 4967 This attribute specifies the print quality that the Printer uses for the 4968 Job. 4970 The standard enum values are: 4972 Value Symbolic Name and Description 4974 '3' 'draft': lowest quality available on the printer 4975 '4' 'normal': normal or intermediate quality on the printer 4976 '5' 'high': highest quality available on the printer 4978 4.3 Job Description Attributes 4980 The attributes in this section form the attribute group called "job- 4981 description". The following table summarizes these attributes. The 4982 third column indicates whether the attribute is a REQUIRED attribute 4983 that MUST be supported by Printer objects. If it is not indicated as 4984 REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' 4985 and 'name' attributes is indicated in parenthesizes. 4987 deBry, Hastings, Herriot, Isaacson, Powell 4988 Expires August 23, 2000 4989 +----------------------------+----------------------+----------------+ 4990 | Attribute | Syntax | REQUIRED? | 4991 +----------------------------+----------------------+----------------+ 4992 | job-uri | uri | REQUIRED | 4993 +----------------------------+----------------------+----------------+ 4994 | job-id | integer(1:MAX) | REQUIRED | 4995 +----------------------------+----------------------+----------------+ 4996 | job-printer-uri | uri | REQUIRED | 4997 +----------------------------+----------------------+----------------+ 4998 | job-more-info | uri | | 4999 +----------------------------+----------------------+----------------+ 5000 | job-name | name (MAX) | REQUIRED | 5001 +----------------------------+----------------------+----------------+ 5002 | job-originating-user-name | name (MAX) | REQUIRED | 5003 +----------------------------+----------------------+----------------+ 5004 | job-state | type1 enum | REQUIRED | 5005 +----------------------------+----------------------+----------------+ 5006 | job-state-reasons | 1setOf type2 keyword | REQUIRED | 5007 +----------------------------+----------------------+----------------+ 5008 | job-state-message | text (MAX) | | 5009 +----------------------------+----------------------+----------------+ 5010 | job-detailed-status- | 1setOf text (MAX) | | 5011 | messages | | | 5012 +----------------------------+----------------------+----------------+ 5013 | job-document-access-errors | 1setOf text (MAX) | | 5014 +----------------------------+----------------------+----------------+ 5015 | number-of-documents | integer (0:MAX) | | 5016 +----------------------------+----------------------+----------------+ 5017 | output-device-assigned | name (127) | | 5018 +----------------------------+----------------------+----------------+ 5019 | time-at-creation | integer (MIN:MAX) | REQUIRED | 5020 +----------------------------+----------------------+----------------+ 5021 | time-at-processing | integer (MIN:MAX) | REQUIRED | 5022 +----------------------------+----------------------+----------------+ 5023 | time-at-completed | integer (MIN:MAX) | REQUIRED | 5024 +----------------------------+----------------------+----------------+ 5025 | job-printer-up-time | integer (1:MAX) | REQUIRED | 5026 +----------------------------+----------------------+----------------+ 5027 | date-time-at-creation | dateTime | | 5028 +----------------------------+----------------------+----------------+ 5029 | date-time-at-processing | dateTime | | 5030 +----------------------------+----------------------+----------------+ 5031 | date-time-at-completed | dateTime | | 5032 +----------------------------+----------------------+----------------+ 5033 | number-of-intervening-jobs | integer (0:MAX) | | 5034 +----------------------------+----------------------+----------------+ 5035 | job-message-from-operator | text (127) | | 5036 +----------------------------+----------------------+----------------+ 5037 | job-k-octets | integer (0:MAX) | | 5038 +----------------------------+----------------------+----------------+ 5039 | job-impressions | integer (0:MAX) | | 5040 +----------------------------+----------------------+----------------+ 5041 | job-media-sheets | integer (0:MAX) | | 5043 deBry, Hastings, Herriot, Isaacson, Powell 5044 Expires August 23, 2000 5045 +----------------------------+----------------------+----------------+ 5046 | job-k-octets-processed | integer (0:MAX) | | 5047 +----------------------------+----------------------+----------------+ 5048 | job-impressions-completed | integer (0:MAX) | | 5049 +----------------------------+----------------------+----------------+ 5050 | job-media-sheets-completed | integer (0:MAX) | | 5051 +----------------------------+----------------------+----------------+ 5052 | attributes-charset | charset | REQUIRED | 5053 +----------------------------+----------------------+----------------+ 5054 | attributes-natural-language| naturalLanguage | REQUIRED | 5055 +----------------------------+----------------------+----------------+ 5057 4.3.1 job-uri (uri) 5059 This REQUIRED attribute contains the URI for the job. The Printer 5060 object, on receipt of a new job, generates a URI which identifies the 5061 new Job. The Printer object returns the value of the "job-uri" 5062 attribute as part of the response to a create request. The precise 5063 format of a Job URI is implementation dependent. If the Printer object 5064 supports more than one URI and there is some relationship between the 5065 newly formed Job URI and the Printer object's URI, the Printer object 5066 uses the Printer URI supplied by the client in the create request. For 5067 example, if the create request comes in over a secure channel, the new 5068 Job URI MUST use the same secure channel. This can be guaranteed 5069 because the Printer object is responsible for generating the Job URI and 5070 the Printer object is aware of its security configuration and policy as 5071 well as the Printer URI used in the create request. 5073 For a description of this attribute and its relationship to "job-id" and 5074 "job-printer-uri" attribute, see the discussion in section 2.4 on 5075 "Object Identity". 5077 4.3.2 job-id (integer(1:MAX)) 5079 This REQUIRED attribute contains the ID of the job. The Printer, on 5080 receipt of a new job, generates an ID which identifies the new Job on 5081 that Printer. The Printer returns the value of the "job-id" attribute 5082 as part of the response to a create request. The 0 value is not 5083 included to allow for compatibility with SNMP index values which also 5084 cannot be 0. 5086 For a description of this attribute and its relationship to "job-uri" 5087 and "job-printer-uri" attribute, see the discussion in section 2.4 on 5088 "Object Identity". 5090 4.3.3 job-printer-uri (uri) 5092 This REQUIRED attribute identifies the Printer object that created this 5093 Job object. When a Printer object creates a Job object, it populates 5094 this attribute with the Printer object URI that was used in the create 5096 deBry, Hastings, Herriot, Isaacson, Powell 5097 Expires August 23, 2000 5098 request. This attribute permits a client to identify the Printer object 5099 that created this Job object when only the Job object's URI is available 5100 to the client. The client queries the creating Printer object to 5101 determine which languages, charsets, operations, are supported for this 5102 Job. 5104 For a description of this attribute and its relationship to "job-uri" 5105 and "job-id" attribute, see the discussion in section 2.4 on "Object 5106 Identity". 5108 4.3.4 job-more-info (uri) 5110 Similar to "printer-more-info", this attribute contains the URI 5111 referencing some resource with more information about this Job object, 5112 perhaps an HTML page containing information about the Job. 5114 4.3.5 job-name (name(MAX)) 5116 This REQUIRED attribute is the name of the job. It is a name that is 5117 more user friendly than the "job-uri" attribute value. It does not need 5118 to be unique between Jobs. The Job's "job-name" attribute is set to the 5119 value supplied by the client in the "job-name" operation attribute in 5120 the create request (see Section 3.2.1.1). If, however, the "job-name" 5121 operation attribute is not supplied by the client in the create request, 5122 the Printer object, on creation of the Job, MUST generate a name. The 5123 printer SHOULD generate the value of the Job's "job-name" attribute from 5124 the first of the following sources that produces a value: 1) the 5125 "document-name" operation attribute of the first (or only) document, 2) 5126 the "document-URI" attribute of the first (or only) document, or 3) any 5127 other piece of Job specific and/or Document Content information. 5129 4.3.6 job-originating-user-name (name(MAX)) 5131 This REQUIRED attribute contains the name of the end user that submitted 5132 the print job. The Printer object sets this attribute to the most 5133 authenticated printable name that it can obtain from the authentication 5134 service over which the IPP operation was received. Only if such is not 5135 available, does the Printer object use the value supplied by the client 5136 in the "requesting-user-name" operation attribute of the create 5137 operation (see Sections 4.4.2, 4.4.3, and 8). 5139 Note: The Printer object needs to keep an internal originating user id 5140 of some form, typically as a credential of a principal, with the Job 5141 object. Since such an internal attribute is implementation-dependent 5142 and not of interest to clients, it is not specified as a Job Description 5143 attribute. This originating user id is used for authorization checks 5144 (if any) on all subsequent operations. 5146 deBry, Hastings, Herriot, Isaacson, Powell 5147 Expires August 23, 2000 5148 4.3.7 job-state (type1 enum) 5150 This REQUIRED attribute identifies the current state of the job. Even 5151 though the IPP protocol defines seven values for job states (plus the 5152 out-of-band 'unknown' value - see Section 4.1), implementations only 5153 need to support those states which are appropriate for the particular 5154 implementation. In other words, a Printer supports only those job 5155 states implemented by the output device and available to the Printer 5156 object implementation. 5158 Standard enum values are: 5160 Values Symbolic Name and Description 5162 '3' 'pending': The job is a candidate to start processing, but is 5163 not yet processing. 5165 '4' 'pending-held': The job is not a candidate for processing for 5166 any number of reasons but will return to the 'pending' 5167 state as soon as the reasons are no longer present. The 5168 job's "job-state-reason" attribute MUST indicate why the 5169 job is no longer a candidate for processing. 5171 '5' 'processing': One or more of: 5173 1. the job is using, or is attempting to use, one or 5174 more purely software processes that are analyzing, 5175 creating, or interpreting a PDL, etc., 5176 2. the job is using, or is attempting to use, one or 5177 more hardware devices that are interpreting a PDL, making 5178 marks on a medium, and/or performing finishing, such as 5179 stapling, etc., 5180 3. the Printer object has made the job ready for 5181 printing, but the output device is not yet printing it, 5182 either because the job hasn't reached the output device 5183 or because the job is queued in the output device or some 5184 other spooler, awaiting the output device to print it. 5186 When the job is in the 'processing' state, the entire job 5187 state includes the detailed status represented in the 5188 Printer object's "printer-state", "printer-state- 5189 reasons", and "printer-state-message" attributes. 5191 Implementations MAY, though they NEED NOT, include 5192 additional values in the job's "job-state-reasons" 5193 attribute to indicate the progress of the job, such as 5194 adding the 'job-printing' value to indicate when the 5195 output device is actually making marks on paper and/or 5196 the 'processing-to-stop-point' value to indicate that the 5197 IPP object is in the process of canceling or aborting the 5198 job. Most implementations won't bother with this nuance. 5200 deBry, Hastings, Herriot, Isaacson, Powell 5201 Expires August 23, 2000 5202 '6' 'processing-stopped': The job has stopped while processing 5203 for any number of reasons and will return to the 5204 'processing' state as soon as the reasons are no longer 5205 present. 5207 The job's "job-state-reason" attribute MAY indicate why 5208 the job has stopped processing. For example, if the 5209 output device is stopped, the 'printer-stopped' value MAY 5210 be included in the job's "job-state-reasons" attribute. 5212 Note: When an output device is stopped, the device 5213 usually indicates its condition in human readable form 5214 locally at the device. A client can obtain more complete 5215 device status remotely by querying the Printer object's 5216 "printer-state", "printer-state-reasons" and "printer- 5217 state-message" attributes. 5219 '7' 'canceled': The job has been canceled by a Cancel-Job 5220 operation and the Printer object has completed canceling 5221 the job and all job status attributes have reached their 5222 final values for the job. While the Printer object is 5223 canceling the job, the job remains in its current state, 5224 but the job's "job-state-reasons" attribute SHOULD 5225 contain the 'processing-to-stop-point' value and one of 5226 the 'canceled-by-user', 'canceled-by-operator', or 5227 'canceled-at-device' value. When the job moves to the 5228 'canceled' state, the 'processing-to-stop-point' value, 5229 if present, MUST be removed, but the 'canceled-by-xxx', 5230 if present, MUST remain. 5232 '8' 'aborted': The job has been aborted by the system, usually 5233 while the job was in the 'processing' or 'processing- 5234 stopped' state and the Printer has completed aborting the 5235 job and all job status attributes have reached their 5236 final values for the job. While the Printer object is 5237 aborting the job, the job remains in its current state, 5238 but the job's "job-state-reasons" attribute SHOULD 5239 contain the 'processing-to-stop-point' and 'aborted-by- 5240 system' values. When the job moves to the 'aborted' 5241 state, the 'processing-to-stop-point' value, if present, 5242 MUST be removed, but the 'aborted-by-system' value, if 5243 present, MUST remain. 5245 '9' 'completed': The job has completed successfully or with 5246 warnings or errors after processing and all of the job 5247 media sheets have been successfully stacked in the 5248 appropriate output bin(s) and all job status attributes 5249 have reached their final values for the job. The job's 5250 "job-state-reasons" attribute SHOULD contain one of: 5251 'completed-successfully', 'completed-with-warnings', or 5252 'completed-with-errors' values. 5254 deBry, Hastings, Herriot, Isaacson, Powell 5255 Expires August 23, 2000 5256 The final value for this attribute MUST be one of: 'completed', 5257 'canceled', or 'aborted' before the Printer removes the job altogether. 5258 The length of time that jobs remain in the 'canceled', 'aborted', and 5259 'completed' states depends on implementation. See section 4.3.7.2. 5261 The following figure shows the normal job state transitions. 5263 +----> canceled 5264 / 5265 +----> pending --------> processing ---------+------> completed 5266 | ^ ^ \ 5267 --->+ | | +----> aborted 5268 | v v / 5269 +----> pending-held processing-stopped ---+ 5271 Normally a job progresses from left to right. Other state transitions 5272 are unlikely, but are not forbidden. Not shown are the transitions to 5273 the 'canceled' state from the 'pending', 'pending-held', and 5274 'processing-stopped' states. 5276 Jobs reach one of the three terminal states: 'completed', 'canceled', or 5277 'aborted', after the jobs have completed all activity, including 5278 stacking output media, after the jobs have completed all activity, and 5279 all job status attributes have reached their final values for the job. 5281 4.3.7.1 Forwarding Servers 5283 As with all other IPP attributes, if the implementation cannot determine 5284 the correct value for this attribute, it SHOULD respond with the out-of- 5285 band value 'unknown' (see section 4.1) rather than try to guess at some 5286 possibly incorrect value and give the end user the wrong impression 5287 about the state of the Job object. For example, if the implementation 5288 is just a gateway into some printing system from which it can normally 5289 get status, but temporarily is unable, then the implementation should 5290 return the 'unknown' value. However, if the implementation is a gateway 5291 to a printing system that never provides detailed status about the print 5292 job, the implementation MAY set the IPP Job object's state to 5293 'completed', provided that it also sets the 'queued-in-device' value in 5294 the job's "job-state-reasons" attribute (see section 4.3.8). 5296 4.3.7.2 Partitioning of Job States 5298 This section partitions the 7 job states into phases: Job Not 5299 Completed, Job Retention, Job History, and Job Removal. This section 5300 also explains the 'job-restartable' value of the "job-state-reasons" Job 5301 Description attribute for use with the Restart-Job operation. 5303 Job Not Completed: When a job is in the 'pending', 'pending-held', 5304 'processing', or 'processing-stopped' states, the job is not completed. 5306 deBry, Hastings, Herriot, Isaacson, Powell 5307 Expires August 23, 2000 5308 Job Retention: When a job enters one of the three terminal job states: 5309 'completed', 'canceled', or 'aborted', the IPP Printer object MAY 5310 "retain" the job in a restartable condition for an implementation- 5311 defined time period. This time period MAY be zero seconds and MAY 5312 depend on the terminal job state. This phase is called Job Retention. 5313 While in the Job Retention phase, the job's document data is retained 5314 and a client may restart the job using the Restart-Job operation. If 5315 the IPP object supports the Restart-Job operation, then it SHOULD 5316 indicate that the job is restartable by adding the 'job-restartable' 5317 value to the job's "job-state-reasons" attribute (see Section 4.3.8) 5318 during the Job Retention phase. 5320 Job History: After the Job Retention phase expires for a job, the 5321 Printer object deletes the document data for the job and the job becomes 5322 part of the Job History. The Printer object MAY also delete any number 5323 of the job attributes. Since the job is no longer restartable, the 5324 Printer object MUST remove the 'job-restartable' value from the job's 5325 "job-state-reasons" attribute, if present. 5327 Job Removal: After the job has remained in the Job History for an 5328 implementation-defined time, such as when the number of jobs exceeds a 5329 fixed number or after a fixed time period (which MAY be zero seconds), 5330 the IPP Printer removes the job from the system. 5332 Using the Get-Jobs operation and supplying the 'not-completed' value for 5333 the "which-jobs" operation attribute, a client is requesting jobs in the 5334 Job Not Completed phase. Using the Get-Jobs operation and supplying the 5335 'completed' value for the "which-jobs" operation attribute, a client is 5336 requesting jobs in the Job Retention and Job History phases. Using the 5337 Get-Job-Attributes operation, a client is requesting a job in any phase 5338 except Job Removal. After Job Removal, the Get-Job-Attributes and Get- 5339 Jobs operations no longer are capable of returning any information about 5340 a job. 5342 4.3.8 job-state-reasons (1setOf type2 keyword) 5344 This REQUIRED attribute provides additional information about the job's 5345 current state, i.e., information that augments the value of the job's 5346 "job-state" attribute. 5348 These values MAY be used with any job state or states for which the 5349 reason makes sense. Some of these value definitions indicate 5350 conformance requirements; the rest are OPTIONAL. Furthermore, when 5351 implemented, the Printer MUST return these values when the reason 5352 applies and MUST NOT return them when the reason no longer applies 5353 whether the value of the Job's "job-state" attribute changed or not. 5354 When the Job does not have any reasons for being in its current state, 5355 the value of the Job's "job-state-reasons" attribute MUST be 'none'. 5357 Note: While values cannot be added to the 'job-state' attribute without 5358 impacting deployed clients that take actions upon receiving "job-state" 5359 values, it is the intent that additional "job-state-reasons" values can 5361 deBry, Hastings, Herriot, Isaacson, Powell 5362 Expires August 23, 2000 5363 be defined and registered without impacting such deployed clients. In 5364 other words, the "job-state-reasons" attribute is intended to be 5365 extensible. 5367 The following standard keyword values are defined. For ease of 5368 understanding, the values are presented in the order in which the 5369 reasons are likely to occur (if implemented), starting with the 'job- 5370 incoming' value: 5372 'none': There are no reasons for the job's current state. This 5373 state reason is semantically equivalent to "job-state-reasons" 5374 without any value and MUST be used when there is no other value, 5375 since the 1setOf attribute syntax requires at least one value. 5376 'job-incoming': The Create-Job operation has been accepted by the 5377 Printer, but the Printer is expecting additional Send-Document 5378 and/or Send-URI operations and/or is accessing/accepting document 5379 data. 5380 'job-data-insufficient': The Create-Job operation has been accepted 5381 by the Printer, but the Printer is expecting additional document 5382 data before it can move the job into the 'processing' state. If a 5383 Printer starts processing before it has received all data, the 5384 Printer removes the 'job-data-insufficient' reason, but the 'job- 5385 incoming' remains. If a Printer starts processing after it has 5386 received all data, the Printer removes the 'job-data-insufficient' 5387 reason and the 'job-incoming' at the same time. 5388 'document-access-error': After accepting a Print-URI or Send-URI 5389 request, the Printer could not access one or more documents passed 5390 by reference. This reason is intended to cover any file access 5391 problem, including file does not exist and access denied because of 5392 an access control problem. The Printer MAY also indicate the 5393 document access error using the "job-document-access-errors" Job 5394 Description attribute (see section 4.3.11). Whether the Printer 5395 aborts the job and moves the job to the 'aborted' job state or 5396 prints all documents that are accessible and moves the job to the 5397 'completed' job state and adds the 'completed-with-errors' value in 5398 the job's "job-state-reasons" attribute depends on implementation 5399 and/or site policy. This value SHOULD be supported if the Print- 5400 URI or Send-URI operations are supported. 5401 'submission-interrupted': The job was not completely submitted for 5402 some unforeseen reason, such as: (1) the Printer has crashed before 5403 the job was closed by the client, (2) the Printer or the document 5404 transfer method has crashed in some non-recoverable way before the 5405 document data was entirely transferred to the Printer, (3) the 5406 client crashed or failed to close the job before the time-out 5407 period. See section 4.4.31. 5408 'job-outgoing': The Printer is transmitting the job to the output 5409 device. 5410 'job-hold-until-specified': The value of the job's "job-hold-until" 5411 attribute was specified with a time period that is still in the 5412 future. The job MUST NOT be a candidate for processing until this 5413 reason is removed and there are no other reasons to hold the job. 5414 This value SHOULD be supported if the "job-hold-until" Job Template 5415 attribute is supported. 5417 deBry, Hastings, Herriot, Isaacson, Powell 5418 Expires August 23, 2000 5419 'resources-are-not-ready': At least one of the resources needed by 5420 the job, such as media, fonts, resource objects, etc., is not ready 5421 on any of the physical printer's for which the job is a candidate. 5422 This condition MAY be detected when the job is accepted, or 5423 subsequently while the job is pending or processing, depending on 5424 implementation. The job may remain in its current state or be 5425 moved to the 'pending-held' state, depending on implementation 5426 and/or job scheduling policy. 5427 'printer-stopped-partly': The value of the Printer's "printer-state- 5428 reasons" attribute contains the value 'stopped-partly'. 5429 'printer-stopped': The value of the Printer's "printer-state" 5430 attribute is 'stopped'. 5431 'job-interpreting': Job is in the 'processing' state, but more 5432 specifically, the Printer is interpreting the document data. 5433 'job-queued': Job is in the 'processing' state, but more 5434 specifically, the Printer has queued the document data. 5435 'job-transforming': Job is in the 'processing' state, but more 5436 specifically, the Printer is interpreting document data and 5437 producing another electronic representation. 5438 'job-queued-for-marker': Job is in any of the 'pending-held', 5439 'pending', or 'processing' states, but more specifically, the 5440 Printer has completed enough processing of the document to be able 5441 to start marking and the job is waiting for the marker. Systems 5442 that require human intervention to release jobs using the Release- 5443 Job operation, put the job into the 'pending-held' job state. 5444 Systems that automatically select a job to use the marker put the 5445 job into the 'pending' job state or keep the job in the 5446 'processing' job state while waiting for the marker, depending on 5447 implementation. All implementations put the job into (or back 5448 into) the 'processing' state when marking does begin. 5449 'job-printing': The output device is marking media. This value is 5450 useful for Printers which spend a great deal of time processing (1) 5451 when no marking is happening and then want to show that marking is 5452 now happening or (2) when the job is in the process of being 5453 canceled or aborted while the job remains in the 'processing' 5454 state, but the marking has not yet stopped so that impression or 5455 sheet counts are still increasing for the job. 5456 'job-canceled-by-user': The job was canceled by the owner of the job 5457 using the Cancel-Job request, i.e., by a user whose authenticated 5458 identity is the same as the value of the originating user that 5459 created the Job object, or by some other authorized end-user, such 5460 as a member of the job owner's security group. This value SHOULD 5461 be supported. 5462 'job-canceled-by-operator': The job was canceled by the operator 5463 using the Cancel-Job request, i.e., by a user who has been 5464 authenticated as having operator privileges (whether local or 5465 remote). If the security policy is to allow anyone to cancel 5466 anyone's job, then this value may be used when the job is canceled 5467 by other than the owner of the job. For such a security policy, in 5468 effect, everyone is an operator as far as canceling jobs with IPP 5469 is concerned. This value SHOULD be supported if the implementation 5470 permits canceling by other than the owner of the job. 5472 deBry, Hastings, Herriot, Isaacson, Powell 5473 Expires August 23, 2000 5474 'job-canceled-at-device': The job was canceled by an unidentified 5475 local user, i.e., a user at a console at the device. This value 5476 SHOULD be supported if the implementation supports canceling jobs 5477 at the console. 5478 'aborted-by-system': The job (1) is in the process of being aborted, 5479 (2) has been aborted by the system and placed in the 'aborted' 5480 state, or (3) has been aborted by the system and placed in the 5481 'pending-held' state, so that a user or operator can manually try 5482 the job again. This value SHOULD be supported. 5483 'unsupported-compression': The job was aborted by the system because 5484 the Printer determined while attempting to decompress the document- 5485 data's that the compression is actually not among those supported 5486 by the Printer. This value MUST be supported, since "compressions 5487 is a REQUIRED operation attribute. 5488 'compression-error': The job was aborted by the system because the 5489 Printer encountered an error in the document-data while 5490 decompressing it. If the Printer posts this reason, the document- 5491 data has already passed any tests that would have led to the 5492 'unsupported-compression' job-state-reason. 5493 'unsupported-document-format': The job was aborted by the system 5494 because the document-data's document-format is not among those 5495 supported by the Printer. If the client specifies the document- 5496 format as 'application/octet-stream', the printer MAY abort the job 5497 and post this reason even though the format is a member of the 5498 "document-format-supported" printer attribute, but not among the 5499 auto-sensed document-formats. This value MUST be supported, since 5500 "document-format" is a REQUIRED operation attribute. 5501 'document-format-error': The job was aborted by the system because 5502 the Printer encountered an error in the document-data while 5503 processing it. If the Printer posts this reason, the document-data 5504 has already passed any tests that would have led to the 5505 'unsupported-document-format' job-state-reason. 5506 'processing-to-stop-point': The requester has issued a Cancel-Job 5507 operation or the Printer object has aborted the job, but is still 5508 performing some actions on the job until a specified stop point 5509 occurs or job termination/cleanup is completed. 5511 If the implementation requires some measurable time to cancel the 5512 job in the 'processing' or 'processing-stopped' job states, the IPP 5513 object MUST use this value to indicate that the Printer object is 5514 still performing some actions on the job while the job remains in 5515 the 'processing' or 'processing-stopped' state. After all the 5516 job's job description attributes have stopped incrementing, the 5517 Printer object moves the job from the 'processing' state to the 5518 'canceled' or 'aborted' job states. 5520 'service-off-line': The Printer is off-line and accepting no jobs. 5521 All 'pending' jobs are put into the 'pending-held' state. This 5522 situation could be true if the service's or document transform's 5523 input is impaired or broken. 5524 'job-completed-successfully': The job completed successfully. This 5525 value SHOULD be supported. 5527 deBry, Hastings, Herriot, Isaacson, Powell 5528 Expires August 23, 2000 5529 'job-completed-with-warnings': The job completed with warnings. 5530 This value SHOULD be supported if the implementation detects 5531 warnings. 5532 'job-completed-with-errors': The job completed with errors (and 5533 possibly warnings too). This value SHOULD be supported if the 5534 implementation detects errors. 5535 'job-restartable' - This job is retained (see section 4.3.7.2) and is 5536 currently able to be restarted using the Restart-Job operation (see 5537 section 3.3.7). If 'job-restartable' is a value of the job's 'job- 5538 state-reasons' attribute, then the IPP object MUST accept a 5539 Restart-Job operation for that job. This value SHOULD be supported 5540 if the Restart-Job operation is supported. 5541 'queued-in-device': The job has been forwarded to a device or print 5542 system that is unable to send back status. The Printer sets the 5543 job's "job-state " attribute to 'completed' and adds the 'queued- 5544 in-device' value to the job's "job-state-reasons" attribute to 5545 indicate that the Printer has no additional information about the 5546 job and never will have any better information. See section 5547 4.3.7.1. 5549 4.3.9 job-state-message (text(MAX)) 5551 This attribute specifies information about the "job-state" and "job- 5552 state-reasons" attributes in human readable text. If the Printer object 5553 supports this attribute, the Printer object MUST be able to generate 5554 this message in any of the natural languages identified by the Printer's 5555 "generated-natural-language-supported" attribute (see the "attributes- 5556 natural-language" operation attribute specified in Section 3.1.4.1). 5558 The value SHOULD NOT contain additional information not contained in the 5559 values of the "job-state" and "job-states-reasons" attributes, such as 5560 interpreter error information. Otherwise, application programs might 5561 attempt to parse the (localized text). For such additional information 5562 such as interpreter errors for application program consumption or 5563 specific document access errors, new attributes with keyword values, 5564 needs to be developed and registered. 5566 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 5568 This attribute specifies additional detailed and technical information 5569 about the job. Neither the Printer nor the client localizes the 5570 message(s), since they are intended for use by the system administrator 5571 or other experienced technical persons. Clients MUST NOT attempt to 5572 parse the value of this attribute. See "job-document-access-errors" 5573 (section 4.3.11) for additional errors that a program can process. 5575 4.3.11 job-document-access-errors (1setOf text(MAX)) 5577 This attribute provides additional information about each document 5578 access error for this job encountered by the Printer after it returned a 5579 response to the Print-URI or Send-URI operation and subsequently 5580 attempted to access document(s) supplied in the Print-URI or Send-URI 5582 deBry, Hastings, Herriot, Isaacson, Powell 5583 Expires August 23, 2000 5584 operation. For errors in the protocol that is identified by the URI 5585 scheme in the "document-uri" operation attribute, such as 'http:' or 5586 'ftp:', the error code is returned in parentheses, followed by the URI. 5587 For example: 5589 (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- 5590 990510.pdf 5592 Most Internet protocols use decimal error codes (unlike IPP), so the 5593 ASCII error code representation is in decimal. 5595 4.3.12 number-of-documents (integer(0:MAX)) 5597 This attribute indicates the number of documents in the job, i.e., the 5598 number of Send-Document, Send-URI, Print-Job, or Print-URI operations 5599 that the Printer has accepted for this job, regardless of whether the 5600 document data has reached the Printer object or not. 5602 Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- 5603 URI operations SHOULD support this attribute so that clients can query 5604 the number of documents in each job. 5606 4.3.13 output-device-assigned (name(127)) 5608 This attribute identifies the output device to which the Printer object 5609 has assigned this job. If an output device implements an embedded 5610 Printer object, the Printer object NEED NOT set this attribute. If a 5611 print server implements a Printer object, the value MAY be empty (zero- 5612 length string) or not returned until the Printer object assigns an 5613 output device to the job. This attribute is particularly useful when a 5614 single Printer object supports multiple devices (so called "fan-out" - 5615 see section 2.1). 5617 4.3.14 Event Time Job Description Attributes 5619 This section defines the Job Description attributes that indicate the 5620 time at which certain events occur for a job. If the job event has not 5621 yet occurred, then the IPP object MUST return the 'no-value' out-of-band 5622 value (see the beginning of Section 4.1). The "time-at-xxx(integer)" 5623 attributes represent time as an 'integer' representing the number of 5624 seconds since the device was powered up (informally called "time 5625 ticks"). The "date-time-at-xxx(dateTime)" attributes represent time as 5626 'dateTime' representing date and time (including an offset from UTC). 5628 In order to populate these attributes, the Printer object copies the 5629 value(s) of the following Printer Description attributes at the time the 5630 event occurs: 5632 1. the value in the Printer's "printer-up-time" attribute for the 5633 "time-at-xxx(integer)" attributes 5635 deBry, Hastings, Herriot, Isaacson, Powell 5636 Expires August 23, 2000 5637 2. the value in the Printer's "printer-current-time" attribute for the 5638 "date-time-at-xxx(dateTime)" attributes. 5640 If the Printer resets its "printer-up-time" attribute to 1 on power-up 5641 (see section 4.4.29) and has persistent jobs, then it MUST change all of 5642 jobs' "time-at-xxx(integer)" (time tick) job attributes whose events 5643 have occurred either to: 5645 1. 0 to indicate that the event happened before the most recent power 5646 up OR 5648 2. the negative of the number of seconds before the most recent power- 5649 up that the event took place, though the negative number NEED NOT 5650 reflect the exact number of seconds. 5652 If a client queries a "time-at-xxx(integer)" time tick Job attribute and 5653 finds the value to be 0 or negative, the client MUST assume that the 5654 event occurred in some life other than the Printer's current life. 5656 Note: A Printer does not change the values of any "date-time-at- 5657 xxx(dateTime)" job attributes on power-up. 5659 4.3.14.1 time-at-creation (integer(MIN:MAX)) 5661 This REQUIRED attribute indicates the time at which the Job object was 5662 created. 5664 4.3.14.2 time-at-processing (integer(MIN:MAX)) 5666 This REQUIRED attribute indicates the time at which the Job object first 5667 began processing after the create operation or the most recent Restart- 5668 Job operation. The out-of-band 'no-value' value is returned if the job 5669 has not yet been in the 'processing' state (see the beginning of Section 5670 4.1). 5672 4.3.14.3 time-at-completed (integer(MIN:MAX)) 5674 This REQUIRED attribute indicates the time at which the Job object 5675 completed (or was canceled or aborted). The out-of-band 'no-value' 5676 value is returned if the job has not yet completed, been canceled, or 5677 aborted (see the beginning of Section 4.1). 5679 4.3.14.4 job-printer-up-time (integer(1:MAX)) 5681 This REQUIRED Job Description attribute indicates the amount of time (in 5682 seconds) that the Printer implementation has been up and running. This 5683 attribute is an alias for the "printer-up-time" Printer Description 5684 attribute (see Section 4.4.29). 5686 A client MAY request this attribute in a Get-Job-Attributes or Get-Jobs 5687 request and use the value returned in combination with other requested 5689 deBry, Hastings, Herriot, Isaacson, Powell 5690 Expires August 23, 2000 5691 Event Time Job Description Attributes in order to display time 5692 attributes to a user. The difference between this attribute and the 5693 'integer' value of a "time-at-xxx" attribute is the number of seconds 5694 ago that the "time-at-xxx" event occurred. A client can compute the 5695 wall-clock time at which the "time-at-xxx" event occurred by subtracting 5696 this difference from the client.s wall-clock time. 5698 4.3.14.5 date-time-at-creation (dateTime) 5700 This attribute indicates the date and time at which the Job object was 5701 created. 5703 4.3.14.6 date-time-at-processing (dateTime) 5705 This attribute indicates the date and time at which the Job object first 5706 began processing after the create operation or the most recent Restart- 5707 Job operation. 5709 4.3.14.7 date-time-at-completed (dateTime) 5711 This attribute indicates the date and time at which the Job object 5712 completed (or was canceled or aborted). 5714 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 5716 This attribute indicates the number of jobs that are "ahead" of this job 5717 in the relative chronological order of expected time to complete (i.e., 5718 the current scheduled order). For efficiency, it is only necessary to 5719 calculate this value when an operation is performed that requests this 5720 attribute. 5722 4.3.16 job-message-from-operator (text(127)) 5724 This attribute provides a message from an operator, system administrator 5725 or "intelligent" process to indicate to the end user the reasons for 5726 modification or other management action taken on a job. 5728 4.3.17 Job Size Attributes 5730 This sub-section defines job attributes that describe the size of the 5731 job. These attributes are not intended to be counters; they are 5732 intended to be useful routing and scheduling information if known. For 5733 these attributes, the Printer object may try to compute the value if it 5734 is not supplied in the create request. Even if the client does supply a 5735 value for these three attributes in the create request, the Printer 5736 object MAY choose to change the value if the Printer object is able to 5737 compute a value which is more accurate than the client supplied value. 5738 The Printer object may be able to determine the correct value for these 5740 deBry, Hastings, Herriot, Isaacson, Powell 5741 Expires August 23, 2000 5742 attributes either right at job submission time or at any later point in 5743 time. 5745 4.3.17.1 job-k-octets (integer(0:MAX)) 5747 This attribute specifies the total size of the document(s) in K octets, 5748 i.e., in units of 1024 octets requested to be processed in the job. The 5749 value MUST be rounded up, so that a job between 1 and 1024 octets MUST 5750 be indicated as being 1, 1025 to 2048 MUST be 2, etc. 5752 This value MUST NOT include the multiplicative factors contributed by 5753 the number of copies specified by the "copies" attribute, independent of 5754 whether the device can process multiple copies without making multiple 5755 passes over the job or document data and independent of whether the 5756 output is collated or not. Thus the value is independent of the 5757 implementation and indicates the size of the document(s) measured in K 5758 octets independent of the number of copies. 5760 This value MUST also not include the multiplicative factor due to a 5761 copies instruction embedded in the document data. If the document data 5762 actually includes replications of the document data, this value will 5763 include such replication. In other words, this value is always the size 5764 of the source document data, rather than a measure of the hardcopy 5765 output to be produced. 5767 4.3.17.2 job-impressions (integer(0:MAX)) 5769 This attribute specifies the total size in number of impressions of the 5770 document(s) being submitted (see the definition of impression in section 5771 12.2.5). 5773 As with "job-k-octets", this value MUST NOT include the multiplicative 5774 factors contributed by the number of copies specified by the "copies" 5775 attribute, independent of whether the device can process multiple copies 5776 without making multiple passes over the job or document data and 5777 independent of whether the output is collated or not. Thus the value is 5778 independent of the implementation and reflects the size of the 5779 document(s) measured in impressions independent of the number of copies. 5781 As with "job-k-octets", this value MUST also not include the 5782 multiplicative factor due to a copies instruction embedded in the 5783 document data. If the document data actually includes replications of 5784 the document data, this value will include such replication. In other 5785 words, this value is always the number of impressions in the source 5786 document data, rather than a measure of the number of impressions to be 5787 produced by the job. 5789 4.3.17.3 job-media-sheets (integer(0:MAX)) 5791 This attribute specifies the total number of media sheets to be produced 5792 for this job. 5794 deBry, Hastings, Herriot, Isaacson, Powell 5795 Expires August 23, 2000 5796 Unlike the "job-k-octets" and the "job-impressions" attributes, this 5797 value MUST include the multiplicative factors contributed by the number 5798 of copies specified by the "copies" attribute and a 'number of copies' 5799 instruction embedded in the document data, if any. This difference 5800 allows the system administrator to control the lower and upper bounds of 5801 both (1) the size of the document(s) with "job-k-octets-supported" and 5802 "job-impressions-supported" and (2) the size of the job with "job-media- 5803 sheets-supported". 5805 4.3.18 Job Progress Attributes 5807 This sub-section defines job attributes that describe the progress of 5808 the job. These attributes are intended to be counters. That is, the 5809 value for a job that has not started processing MUST be 0. When the 5810 job's "job-state" is 'processing' or 'processing-stopped', this value is 5811 intended to contain the amount of the job that has been processed to the 5812 time at which the attributes are requested. When the job enters the 5813 'completed', 'canceled', or 'aborted' states, these values are the final 5814 values for the job. 5816 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 5818 This attribute specifies the total number of octets processed in K 5819 octets, i.e., in units of 1024 octets so far. The value MUST be rounded 5820 up, so that a job between 1 and 1024 octets inclusive MUST be indicated 5821 as being 1, 1025 to 2048 inclusive MUST be 2, etc. 5823 For implementations where multiple copies are produced by the 5824 interpreter with only a single pass over the data, the final value MUST 5825 be equal to the value of the "job-k-octets" attribute. For 5826 implementations where multiple copies are produced by the interpreter by 5827 processing the data for each copy, the final value MUST be a multiple of 5828 the value of the "job-k-octets" attribute. 5830 4.3.18.2 job-impressions-completed (integer(0:MAX)) 5832 This job attribute specifies the number of impressions completed for the 5833 job so far. For printing devices, the impressions completed includes 5834 interpreting, marking, and stacking the output. 5836 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 5838 This job attribute specifies the media-sheets completed marking and 5839 stacking for the entire job so far whether those sheets have been 5840 processed on one side or on both. 5842 4.3.19 attributes-charset (charset) 5844 This REQUIRED attribute is populated using the value in the client 5845 supplied "attributes-charset" attribute in the create request. It 5847 deBry, Hastings, Herriot, Isaacson, Powell 5848 Expires August 23, 2000 5849 identifies the charset (coded character set and encoding method) used by 5850 any Job attributes with attribute syntax 'text' and 'name' that were 5851 supplied by the client in the create request. See Section 3.1.4 for a 5852 complete description of the "attributes-charset" operation attribute. 5854 This attribute does not indicate the charset in which the 'text' and 5855 'name' values are stored internally in the Job object. The internal 5856 charset is implementation-defined. The IPP object MUST convert from 5857 whatever the internal charset is to that being requested in an operation 5858 as specified in Section 3.1.4. 5860 4.3.20 attributes-natural-language (naturalLanguage) 5862 This REQUIRED attribute is populated using the value in the client 5863 supplied "attributes-natural-language" attribute in the create request. 5864 It identifies the natural language used for any Job attributes with 5865 attribute syntax 'text' and 'name' that were supplied by the client in 5866 the create request. See Section 3.1.4 for a complete description of the 5867 "attributes-natural-language" operation attribute. See Sections 4.1.1.2 5868 and 4.1.2.2 for how a Natural Language Override may be supplied 5869 explicitly for each 'text' and 'name' attribute value that differs from 5870 the value identified by the "attributes-natural-language" attribute. 5872 4.4 Printer Description Attributes 5874 These attributes form the attribute group called "printer-description". 5875 The following table summarizes these attributes, their syntax, and 5876 whether or not they are REQUIRED for a Printer object to support. If 5877 they are not indicated as REQUIRED, they are OPTIONAL. The maximum size 5878 in octets for 'text' and 'name' attributes is indicated in 5879 parenthesizes. 5881 Note: How these attributes are set by an Administrator is outside the 5882 scope of this IPP/1.1 document. 5884 deBry, Hastings, Herriot, Isaacson, Powell 5885 Expires August 23, 2000 5886 +----------------------------+---------------------------+-----------+ 5887 | Attribute | Syntax | REQUIRED? | 5888 +----------------------------+---------------------------+-----------+ 5889 | printer-uri-supported | 1setOf uri | REQUIRED | 5890 +----------------------------+---------------------------+-----------+ 5891 | uri-security-supported | 1setOf type2 keyword | REQUIRED | 5892 +----------------------------+---------------------------+-----------+ 5893 | uri-authentication- | 1setOf type2 keyword | REQUIRED | 5894 | supported | | | 5895 +----------------------------+---------------------------+-----------+ 5896 | printer-name | name (127) | REQUIRED | 5897 +----------------------------+---------------------------+-----------+ 5898 | printer-location | text (127) | | 5899 +----------------------------+---------------------------+-----------+ 5900 | printer-info | text (127) | | 5901 +----------------------------+---------------------------+-----------+ 5902 | printer-more-info | uri | | 5903 +----------------------------+---------------------------+-----------+ 5904 | printer-driver-installer | uri | | 5905 +----------------------------+---------------------------+-----------+ 5906 | printer-make-and-model | text (127) | | 5907 +----------------------------+---------------------------+-----------+ 5908 | printer-more-info- | uri | | 5909 | manufacturer | | | 5910 +----------------------------+---------------------------+-----------+ 5911 | printer-state | type1 enum | REQUIRED | 5912 +----------------------------+---------------------------+-----------+ 5913 | printer-state-reasons | 1setOf type2 keyword | REQUIRED | 5914 +----------------------------+---------------------------+-----------+ 5915 | printer-state-message | text (MAX) | | 5916 +----------------------------+---------------------------+-----------+ 5917 | ipp-versions-supported | 1setOf type2 keyword | REQUIRED | 5918 +----------------------------+---------------------------+-----------+ 5919 | operations-supported | 1setOf type2 enum | REQUIRED | 5920 +----------------------------+---------------------------+-----------+ 5921 | multiple-document-jobs- | boolean | | 5922 | supported | | | 5923 +----------------------------+---------------------------+-----------+ 5924 | charset-configured | charset | REQUIRED | 5925 +----------------------------+---------------------------+-----------+ 5926 | charset-supported | 1setOf charset | REQUIRED | 5927 +----------------------------+---------------------------+-----------+ 5928 | natural-language-configured| naturalLanguage | REQUIRED | 5929 +----------------------------+---------------------------+-----------+ 5930 | generated-natural-language-| 1setOf naturalLanguage | REQUIRED | 5931 | supported | | | 5932 +----------------------------+---------------------------+-----------+ 5933 | document-format-default | mimeMediaType | REQUIRED | 5934 +----------------------------+---------------------------+-----------+ 5935 | document-format-supported | 1setOf mimeMediaType | REQUIRED | 5936 +----------------------------+---------------------------+-----------+ 5937 | printer-is-accepting-jobs | boolean | REQUIRED | 5938 +----------------------------+---------------------------+-----------+ 5940 deBry, Hastings, Herriot, Isaacson, Powell 5941 Expires August 23, 2000 5942 | queued-job-count | integer (0:MAX) | REQUIRED | 5943 +----------------------------+---------------------------+-----------+ 5944 | printer-message-from- | text (127) | | 5945 | operator | | | 5946 +----------------------------+---------------------------+-----------+ 5947 | color-supported | boolean | | 5948 +----------------------------+---------------------------+-----------+ 5949 | reference-uri-schemes- | 1setOf uriScheme | | 5950 | supported | | | 5951 +----------------------------+---------------------------+-----------+ 5952 | pdl-override-supported | type2 keyword | REQUIRED | 5953 +----------------------------+---------------------------+-----------+ 5954 | printer-up-time | integer (1:MAX) | REQUIRED | 5955 +----------------------------+---------------------------+-----------+ 5956 | printer-current-time | dateTime | | 5957 +----------------------------+---------------------------+-----------+ 5958 | multiple-operation-time-out| integer (1:MAX) | | 5959 +----------------------------+---------------------------+-----------+ 5960 | compression-supported | 1setOf type3 keyword | REQUIRED | 5961 +----------------------------+---------------------------+-----------+ 5962 | job-k-octets-supported | rangeOfInteger (0:MAX) | | 5963 +----------------------------+---------------------------+-----------+ 5964 | job-impressions-supported | rangeOfInteger (0:MAX) | | 5965 +----------------------------+---------------------------+-----------+ 5966 | job-media-sheets-supported | rangeOfInteger (0:MAX) | | 5967 +----------------------------+---------------------------+-----------+ 5968 | pages-per-minute | integer(0:MAX) | | 5969 +----------------------------+---------------------------+-----------+ 5970 | pages-per-minute-color | integer(0:MAX) | | 5971 +----------------------------+---------------------------+-----------+ 5973 4.4.1 printer-uri-supported (1setOf uri) 5975 This REQUIRED Printer attribute contains at least one URI for the 5976 Printer object. It OPTIONALLY contains more than one URI for the 5977 Printer object. An administrator determines a Printer object's URI(s) 5978 and configures this attribute to contain those URIs by some means 5979 outside the scope of this IPP/1.1 document. The precise format of this 5980 URI is implementation dependent and depends on the protocol. See the 5981 next two sections for a description of the "uri-security-supported" and 5982 "uri-authentication-supported" attributes, both of which are the 5983 REQUIRED companion attributes to this "printer-uri-supported" attribute. 5984 See section 2.4 on Printer object identity and section 8.2 on security 5985 and URIs for more information. 5987 4.4.2 uri-authentication-supported (1setOf type2 keyword) 5989 This REQUIRED Printer attribute MUST have the same cardinality (contain 5990 the same number of values) as the "printer-uri-supported" attribute. 5991 This attribute identifies the Client Authentication mechanism associated 5992 with each URI listed in the "printer-uri-supported" attribute. The 5994 deBry, Hastings, Herriot, Isaacson, Powell 5995 Expires August 23, 2000 5996 Printer object uses the specified mechanism to identify the 5997 authenticated user (see section 8.3) . The "i th" value in "uri- 5998 authentication-supported" corresponds to the "i th" value in "printer- 5999 uri-supported" and it describes the authentication mechanisms used by 6000 the Printer when accessed via that URI. See [IPP-PRO] for more details 6001 on Client Authentication. 6003 The following standard keyword values are defined: 6005 'none': There is no authentication mechanism associated with the URI. 6006 The Printer object assumes that the authenticated user is 6007 "anonymous". 6008 'requesting-user-name': When a client performs an operation whose 6009 target is the associated URI, the Printer object assumes that the 6010 authenticated user is specified by the "requesting-user-name" 6011 Operation attribute (see section 8.3). If the "requesting-user- 6012 name" attribute is absent in a request, the Printer object assumes 6013 that the authenticated user is "anonymous". 6014 'basic': When a client performs an operation whose target is the 6015 associated URI, the Printer object challenges the client with HTTP 6016 basic authentication [RFC2617]. The Printer object assumes that the 6017 authenticated user is the name received via the basic 6018 authentication mechanism. 6019 'digest': When a client performs an operation whose target is the 6020 associated URI, the Printer object challenges the client with HTTP 6021 digest authentication [RFC2617]. The Printer object assumes that 6022 the authenticated user is the name received via the digest 6023 authentication mechanism. 6024 'certificate': When a client performs an operation whose target is 6025 the associated URI, the Printer object expects the client to 6026 provide a certificate. The Printer object assumes that the 6027 authenticated user is the textual name contained within the 6028 certificate. 6030 4.4.3 uri-security-supported (1setOf type2 keyword) 6032 This REQUIRED Printer attribute MUST have the same cardinality (contain 6033 the same number of values) as the "printer-uri-supported" attribute. 6034 This attribute identifies the security mechanisms used for each URI 6035 listed in the "printer-uri-supported" attribute. The "i th" value in 6036 "uri-security-supported" corresponds to the "i th" value in "printer- 6037 uri-supported" and it describes the security mechanisms used for 6038 accessing the Printer object via that URI. See [IPP-PRO] for more 6039 details on security mechanisms. 6041 The following standard keyword values are defined: 6043 'none': There are no secure communication channel protocols in use 6044 for the given URI. 6045 'ssl3': SSL3 [SSL] is the secure communications channel protocol in 6046 use for the given URI. 6047 'tls': TLS [RFC2246] is the secure communications channel protocol 6048 in use for the given URI. 6050 deBry, Hastings, Herriot, Isaacson, Powell 6051 Expires August 23, 2000 6052 This attribute is orthogonal to the definition of a Client 6053 Authentication mechanism. Specifically, 'none' does not exclude Client 6054 Authentication. See section 4.4.2. 6056 Consider the following example. For a single Printer object, an 6057 administrator configures the "printer-uri-supported", "uri- 6058 authentication-supported" and "uri-security-supported" attributes as 6059 follows: 6061 "printer-uri-supported": 'xxx://acme.com/open-use-printer', 6062 'xxx://acme.com/restricted-use-printer', 'xxx://acme.com/private- 6063 printer' 6064 "uri-authentication-supported": 'none', 'digest', 'basic' 6065 "uri-security-supported": 'none', 'none', 'tls' 6067 Note: 'xxx' is not a valid scheme. See the IPP/1.1 "Transport and 6068 Encoding" document [IPP-PRO] for the actual URI schemes to be used in 6069 object target attributes. 6071 In this case, one Printer object has three URIs. 6073 - For the first URI, 'xxx://acme.com/open-use-printer', the value 6074 'none' in "uri-security-supported" indicates that there is no 6075 secure channel protocol configured to run under HTTP. The value of 6076 'none' in "uri-authentication-supported" indicates that all users 6077 are 'anonymous'. There will be no challenge and the Printer will 6078 ignore "requesting-user-name". 6079 - For the second URI, 'xxx://acme.com/restricted-use-printer', the 6080 value 'none' in "uri-security-supported" indicates that there is no 6081 secure channel protocol configured to run under HTTP. The value of 6082 'digest' in "uri-authentication-supported" indicates that the 6083 Printer will issue a challenge and that the Printer will use the 6084 name supplied by the digest mechanism to determine the 6085 authenticated user (see section 8.3). 6086 - For the third URI, 'xxx://acme.com/private-printer', the value 6087 'tls' in "uri-security-supported" indicates that TLS is being used 6088 to secure the channel. The client SHOULD be prepared to use TLS 6089 framing to negotiate an acceptable ciphersuite to use while 6090 communicating with the Printer object. In this case, the name 6091 implies the use of a secure communications channel, but the fact is 6092 made explicit by the presence of the 'tls' value in "uri-security- 6093 supported". The client does not need to resort to understanding 6094 which security it must use by following naming conventions or by 6095 parsing the URI to determine which security mechanisms are implied. 6096 The value of 'basic' in "uri-authentication-supported" indicates 6097 that the Printer will issue a challenge and that the Printer will 6098 use the name supplied by the digest mechanism to determine the 6099 authenticated user (see section 8.3) . Because this challenge 6100 occurs in a tls session, the channel is secure. 6102 It is expected that many IPP Printer objects will be configured to 6103 support only one channel (either configured to use TLS access or not) 6104 and only one authentication mechanism. Such Printer objects only have 6106 deBry, Hastings, Herriot, Isaacson, Powell 6107 Expires August 23, 2000 6108 one URI listed in the "printer-uri-supported" attribute. No matter the 6109 configuration of the Printer object (whether it has only one URI or more 6110 than one URI), a client MUST supply only one URI in the target "printer- 6111 uri" operation attribute. 6113 4.4.4 printer-name (name(127)) 6115 This REQUIRED Printer attribute contains the name of the Printer object. 6116 It is a name that is more end-user friendly than a URI. An administrator 6117 determines a printer's name and sets this attribute to that name. This 6118 name may be the last part of the printer's URI or it may be unrelated. 6119 In non-US-English locales, a name may contain characters that are not 6120 allowed in a URI. 6122 4.4.5 printer-location (text(127)) 6124 This Printer attribute identifies the location of the device. This could 6125 include things like: "in Room 123A, second floor of building XYZ". 6127 4.4.6 printer-info (text(127)) 6129 This Printer attribute identifies the descriptive information about this 6130 Printer object. This could include things like: "This printer can be 6131 used for printing color transparencies for HR presentations", or "Out of 6132 courtesy for others, please print only small (1-5 page) jobs at this 6133 printer", or even "This printer is going away on July 1, 1997, please 6134 find a new printer". 6136 4.4.7 printer-more-info (uri) 6138 This Printer attribute contains a URI used to obtain more information 6139 about this specific Printer object. For example, this could be an HTTP 6140 type URI referencing an HTML page accessible to a Web Browser. The 6141 information obtained from this URI is intended for end user consumption. 6142 Features outside the scope of IPP can be accessed from this URI. The 6143 information is intended to be specific to this printer instance and site 6144 specific services (e.g. job pricing, services offered, end user 6145 assistance). The device manufacturer may initially populate this 6146 attribute. 6148 4.4.8 printer-driver-installer (uri) 6150 This Printer attribute contains a URI to use to locate the driver 6151 installer for this Printer object. This attribute is intended for 6152 consumption by automata. The mechanics of print driver installation is 6153 outside the scope of this IPP/1.1 document. The device manufacturer may 6154 initially populate this attribute. 6156 deBry, Hastings, Herriot, Isaacson, Powell 6157 Expires August 23, 2000 6158 4.4.9 printer-make-and-model (text(127)) 6160 This Printer attribute identifies the make and model of the device. The 6161 device manufacturer may initially populate this attribute. 6163 4.4.10 printer-more-info-manufacturer (uri) 6165 This Printer attribute contains a URI used to obtain more information 6166 about this type of device. The information obtained from this URI is 6167 intended for end user consumption. Features outside the scope of IPP 6168 can be accessed from this URI (e.g., latest firmware, upgrades, print 6169 drivers, optional features available, details on color support). The 6170 information is intended to be germane to this printer without regard to 6171 site specific modifications or services. The device manufacturer may 6172 initially populate this attribute. 6174 4.4.11 printer-state (type1 enum) 6176 This REQUIRED Printer attribute identifies the current state of the 6177 device. The "printer-state reasons" attribute augments the "printer- 6178 state" attribute to give more detailed information about the Printer in 6179 the given printer state. 6181 A Printer object need only update this attribute before responding to an 6182 operation which requests the attribute; the Printer object NEED NOT 6183 update this attribute continually, since asynchronous event notification 6184 is not part of IPP/1.1. A Printer NEED NOT implement all values if they 6185 are not applicable to a given implementation. 6187 The following standard enum values are defined: 6189 Value Symbolic Name and Description 6191 '3' 'idle': Indicates that new jobs can start processing without 6192 waiting. 6193 '4' 'processing': Indicates that jobs are processing; new jobs 6194 will wait before processing. 6195 '5' 'stopped': Indicates that no jobs can be processed and 6196 intervention is required. 6198 Values of "printer-state-reasons", such as 'spool-area-full' and 6199 'stopped-partly', MAY be used to provide further information. 6201 4.4.12 printer-state-reasons (1setOf type2 keyword) 6203 This REQUIRED Printer attribute supplies additional detail about the 6204 device's state. Some of the these value definitions indicate 6205 conformance requirements; the rest are OPTIONAL. 6207 Each keyword value MAY have a suffix to indicate its level of severity. 6208 The three levels are: report (least severe), warning, and error (most 6209 severe). 6211 deBry, Hastings, Herriot, Isaacson, Powell 6212 Expires August 23, 2000 6213 - '-report': This suffix indicates that the reason is a "report". An 6214 implementation may choose to omit some or all reports. Some reports 6215 specify finer granularity about the printer state; others serve as 6216 a precursor to a warning. A report MUST contain nothing that could 6217 affect the printed output. 6218 - '-warning': This suffix indicates that the reason is a "warning". 6219 An implementation may choose to omit some or all warnings. Warnings 6220 serve as a precursor to an error. A warning MUST contain nothing 6221 that prevents a job from completing, though in some cases the 6222 output may be of lower quality. 6223 - '-error': This suffix indicates that the reason is an "error". An 6224 implementation MUST include all errors. If this attribute contains 6225 one or more errors, printer MUST be in the stopped state. 6227 If the implementation does not add any one of the three suffixes, all 6228 parties MUST assume that the reason is an "error". 6230 If a Printer object controls more than one output device, each value of 6231 this attribute MAY apply to one or more of the output devices. An error 6232 on one output device that does not stop the Printer object as a whole 6233 MAY appear as a warning in the Printer's "printer-state-reasons 6234 attribute". If the "printer-state" for such a Printer has a value of 6235 'stopped', then there MUST be an error reason among the values in the 6236 "printer-state-reasons" attribute. 6238 The following standard keyword values are defined: 6240 'other': The device has detected an error other than one listed in 6241 this document. 6242 'none': There are not reasons. This state reason is semantically 6243 equivalent to "printer-state-reasons" without any value and MUST be 6244 used, since the 1setOf attribute syntax requires at least one 6245 value. 6246 'media-needed': A tray has run out of media. 6247 'media-jam': The device has a media jam. 6248 'moving-to-paused': Someone has paused the Printer object using the 6249 Pause-Printer operation (see section 3.2.7) or other means, but the 6250 device(s) are taking an appreciable time to stop. Later, when all 6251 output has stopped, the "printer-state" becomes 'stopped', and the 6252 'paused' value replaces the 'moving-to-paused' value in the 6253 "printer-state-reasons" attribute. This value MUST be supported, 6254 if the Pause-Printer operation is supported and the implementation 6255 takes significant time to pause a device in certain circumstances. 6256 'paused': Someone has paused the Printer object using the Pause- 6257 Printer operation (see section 3.2.7) or other means and the 6258 Printer object's "printer-state" is 'stopped'. In this state, a 6259 Printer MUST NOT produce printed output, but it MUST perform other 6260 operations requested by a client. If a Printer had been printing a 6261 job when the Printer was paused, the Printer MUST resume printing 6262 that job when the Printer is no longer paused and leave no evidence 6263 in the printed output of such a pause. This value MUST be 6264 supported, if the Pause-Printer operation is supported. 6266 deBry, Hastings, Herriot, Isaacson, Powell 6267 Expires August 23, 2000 6268 'shutdown': Someone has removed a Printer object from service, and 6269 the device may be powered down or physically removed. In this 6270 state, a Printer object MUST NOT produce printed output, and unless 6271 the Printer object is realized by a print server that is still 6272 active, the Printer object MUST perform no other operations 6273 requested by a client, including returning this value. If a Printer 6274 object had been printing a job when it was shutdown, the Printer 6275 NEED NOT resume printing that job when the Printer is no longer 6276 shutdown. If the Printer resumes printing such a job, it may leave 6277 evidence in the printed output of such a shutdown, e.g. the part 6278 printed before the shutdown may be printed a second time after the 6279 shutdown. 6280 'connecting-to-device': The Printer object has scheduled a job on the 6281 output device and is in the process of connecting to a shared 6282 network output device (and might not be able to actually start 6283 printing the job for an arbitrarily long time depending on the 6284 usage of the output device by other servers on the network). 6285 'timed-out': The server was able to connect to the output device (or 6286 is always connected), but was unable to get a response from the 6287 output device. 6288 'stopping': The Printer object is in the process of stopping the 6289 device and will be stopped in a while. When the device is stopped, 6290 the Printer object will change the Printer object's state to 6291 'stopped'. The 'stopping-warning' reason is never an error, even 6292 for a Printer with a single output device. When an output-device 6293 ceases accepting jobs, the Printer will have this reason while the 6294 output device completes printing. 6295 'stopped-partly': When a Printer object controls more than one output 6296 device, this reason indicates that one or more output devices are 6297 stopped. If the reason is a report, fewer than half of the output 6298 devices are stopped. If the reason is a warning, fewer than all of 6299 the output devices are stopped. 6300 'toner-low': The device is low on toner. 6301 'toner-empty': The device is out of toner. 6302 'spool-area-full': The limit of persistent storage allocated for 6303 spooling has been reached. The Printer is temporarily unable to 6304 accept more jobs. The Printer will remove this value when it is 6305 able to accept more jobs. This value SHOULD be used by a non- 6306 spooling Printer that only accepts one or a small number jobs at a 6307 time or a spooling Printer that has filled the spool space. 6308 'cover-open': One or more covers on the device are open. 6309 'interlock-open': One or more interlock devices on the printer are 6310 unlocked. 6311 'door-open': One or more doors on the device are open. 6312 'input-tray-missing': One or more input trays are not in the device. 6313 'media-low': At least one input tray is low on media. 6314 'media-empty': At least one input tray is empty. 6315 'output-tray-missing': One or more output trays are not in the device 6316 'output-area-almost-full': One or more output area is almost full 6317 (e.g. tray, stacker, collator). 6318 'output-area-full': One or more output area is full. (e.g. tray, 6319 stacker, collator) 6321 deBry, Hastings, Herriot, Isaacson, Powell 6322 Expires August 23, 2000 6323 'marker-supply-low': The device is low on at least one marker supply. 6324 (e.g. toner, ink, ribbon) 6325 'marker-supply-empty: The device is out of at least one marker 6326 supply. (e.g. toner, ink, ribbon) 6327 'marker-waste-almost-full': The device marker supply waste receptacle 6328 is almost full. 6329 'marker-waste-full': The device marker supply waste receptacle is 6330 full. 6331 'fuser-over-temp': The fuser temperature is above normal. 6332 'fuser-under-temp': The fuser temperature is below normal. 6333 'opc-near-eol': The optical photo conductor is near end of life. 6334 'opc-life-over': The optical photo conductor is no longer 6335 functioning. 6336 'developer-low': The device is low on developer. 6337 'developer-empty: The device is out of developer. 6338 'interpreter-resource-unavailable': An interpreter resource is 6339 unavailable (i.e. font, form) 6341 4.4.13 printer-state-message (text(MAX)) 6343 This Printer attribute specifies information about the "printer-state" 6344 and "printer-state-reasons" attributes in human readable text. If the 6345 Printer object supports this attribute, the Printer object MUST be able 6346 to generate this message in any of the natural languages identified by 6347 the Printer's "generated-natural-language-supported" attribute (see the 6348 "attributes-natural-language" operation attribute specified in Section 6349 3.1.4.1). 6351 4.4.14 ipp-versions-supported (1setOf type2 keyword) 6353 This REQUIRED attribute identifies the IPP protocol version(s) that this 6354 Printer supports, including major and minor versions, i.e., the version 6355 numbers for which this Printer implementation meets the conformance 6356 requirements. For version number validation, the Printer matches the 6357 (two-octet binary) "version-number" parameter supplied by the client in 6358 each request (see sections 3.1.1 and 3.1.8) with the (US-ASCII) keyword 6359 values of this attribute. 6361 The following standard keyword values are defined: 6363 '1.0': Meets the conformance requirement of IPP version 1.0 as 6364 specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565] including 6365 any extensions registered according to Section 6 and any extension 6366 defined in this version or any future version of the IPP "Model and 6367 Semantics" document or the IPP "Encoding and Transport" document 6368 following the rules, if any, when the "version-number" parameter is 6369 '1.0'. 6370 '1.1': Meets the conformance requirement of IPP version 1.1 as 6371 specified in this document and [IPP-PRO] including any extensions 6372 registered according to Section 6 and any extension defined in any 6373 future versions of the IPP "Model and Semantics" document or the 6375 deBry, Hastings, Herriot, Isaacson, Powell 6376 Expires August 23, 2000 6377 IPP Encoding and Transport document following the rules, if any, 6378 when the "version-number" parameter is '1.1'. 6380 4.4.15 operations-supported (1setOf type2 enum) 6382 This REQUIRED Printer attribute specifies the set of supported 6383 operations for this Printer object and contained Job objects. 6385 This attribute is encoded as any other enum attribute syntax according 6386 to [IPP-PRO] as 32-bits. However, all 32-bit enum values for this 6387 attribute MUST NOT exceed 0x00008FFF, since these same values are also 6388 passed in two octets in the "operation-id" parameter (see section 3.1.1) 6389 in each Protocol request with the two high order octets omitted in order 6390 to indicate the operation being performed [IPP-PRO]. 6392 The following standard enum and "operation-id" (see section 3.1.2) 6393 values are defined: 6395 Value Operation Name 6396 ----------------- ------------------------------------- 6398 0x0000 reserved, not used 6399 0x0001 reserved, not used 6400 0x0002 Print-Job 6401 0x0003 Print-URI 6402 0x0004 Validate-Job 6403 0x0005 Create-Job 6404 0x0006 Send-Document 6405 0x0007 Send-URI 6406 0x0008 Cancel-Job 6407 0x0009 Get-Job-Attributes 6408 0x000A Get-Jobs 6409 0x000B Get-Printer-Attributes 6410 0x000C Hold-Job 6411 0x000D Release-Job 6412 0x000E Restart-Job 6413 0x000F reserved for a future operation 6414 0x0010 Pause-Printer 6415 0x0011 Resume-Printer 6416 0x0012 Purge-Jobs 6417 0x0013-0x3FFF reserved for future IETF standards track 6418 operations (see section 6.4) 6419 0x4000-0x8FFF reserved for vendor extensions (see section 6.4) 6421 4.4.16 multiple-document-jobs-supported (boolean) 6423 This Printer attribute indicates whether or not the Printer supports 6424 more than one document per job, i.e., more than one Send-Document or 6425 Send-Data operation with document data. If the Printer supports the 6426 Create-Job and Send-Document operations (see section 3.2.4 and 3.3.1), 6427 it MUST support this attribute. 6429 deBry, Hastings, Herriot, Isaacson, Powell 6430 Expires August 23, 2000 6431 4.4.17 charset-configured (charset) 6433 This REQUIRED Printer attribute identifies the charset that the Printer 6434 object has been configured to represent 'text' and 'name' Printer 6435 attributes that are set by the operator, system administrator, or 6436 manufacturer, i.e., for "printer-name" (name), "printer-location" 6437 (text), "printer-info" (text), and "printer-make-and-model" (text). 6438 Therefore, the value of the Printer object's "charset-configured" 6439 attribute MUST also be among the values of the Printer object's 6440 "charset-supported" attribute. 6442 4.4.18 charset-supported (1setOf charset) 6444 This REQUIRED Printer attribute identifies the set of charsets that the 6445 Printer and contained Job objects support in attributes with attribute 6446 syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, 6447 since IPP objects MUST support the UTF-8 [RFC2279] charset. If a 6448 Printer object supports a charset, it means that for all attributes of 6449 syntax 'text' and 'name' the IPP object MUST (1) accept the charset in 6450 requests and return the charset in responses as needed. 6452 If more charsets than UTF-8 are supported, the IPP object MUST perform 6453 charset conversion between the charsets as described in Section 3.1.4.2. 6455 4.4.19 natural-language-configured (naturalLanguage) 6457 This REQUIRED Printer attribute identifies the natural language that the 6458 Printer object has been configured to represent 'text' and 'name' 6459 Printer attributes that are set by the operator, system administrator, 6460 or manufacturer, i.e., for "printer-name" (name), "printer-location" 6461 (text), "printer-info" (text), and "printer-make-and-model" (text). 6462 When returning these Printer attributes, the Printer object MAY return 6463 them in the configured natural language specified by this attribute, 6464 instead of the natural language requested by the client in the 6465 "attributes-natural-language" operation attribute. See Section 3.1.4.1 6466 for the specification of the OPTIONAL multiple natural language support. 6467 Therefore, the value of the Printer object's "natural-language- 6468 configured" attribute MUST also be among the values of the Printer 6469 object's "generated-natural-language-supported" attribute. 6471 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 6473 This REQUIRED Printer attribute identifies the natural language(s) that 6474 the Printer object and contained Job objects support in attributes with 6475 attribute syntax 'text' and 'name'. The natural language(s) supported 6476 depends on implementation and/or configuration. Unlike charsets, IPP 6477 objects MUST accept requests with any natural language or any Natural 6478 Language Override whether the natural language is supported or not. 6480 If a Printer object supports a natural language, it means that for any 6481 of the attributes for which the Printer or Job object generates 6483 deBry, Hastings, Herriot, Isaacson, Powell 6484 Expires August 23, 2000 6485 messages, i.e., for the "job-state-message" and "printer-state-message" 6486 attributes and Operation Messages (see Section 3.1.5) in operation 6487 responses, the Printer and Job objects MUST be able to generate messages 6488 in any of the Printer's supported natural languages. See section 3.1.4 6489 for the definition of 'text' and 'name' attributes in operation requests 6490 and responses. 6492 Note: A Printer object that supports multiple natural languages, often 6493 has separate catalogs of messages, one for each natural language 6494 supported. 6496 4.4.21 document-format-default (mimeMediaType) 6498 This REQUIRED Printer attribute identifies the document format that the 6499 Printer object has been configured to assume if the client does not 6500 supply a "document-format" operation attribute in any of the operation 6501 requests that supply document data. The standard values for this 6502 attribute are Internet Media types (sometimes called MIME types). For 6503 further details see the description of the 'mimeMediaType' attribute 6504 syntax in Section 4.1.9. 6506 4.4.22 document-format-supported (1setOf mimeMediaType) 6508 This REQUIRED Printer attribute identifies the set of document formats 6509 that the Printer object and contained Job objects can support. For 6510 further details see the description of the 'mimeMediaType' attribute 6511 syntax in Section 4.1.9. 6513 4.4.23 printer-is-accepting-jobs (boolean) 6515 This REQUIRED Printer attribute indicates whether the printer is 6516 currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, 6517 and Create-Job requests. If the value is 'true', the printer is 6518 accepting jobs. If the value is 'false', the Printer object is 6519 currently rejecting any jobs submitted to it. In this case, the Printer 6520 object returns the 'server-error-not-accepting-jobs' status code. 6522 This value is independent of the "printer-state" and "printer-state- 6523 reasons" attributes because its value does not affect the current job; 6524 rather it affects future jobs. This attribute, when 'false', causes the 6525 Printer to reject jobs even when the "printer-state" is 'idle' or, when 6526 'true', causes the Printer object to accepts jobs even when the 6527 "printer-state" is 'stopped'. 6529 4.4.24 queued-job-count (integer(0:MAX)) 6531 This REQUIRED Printer attribute contains a count of the number of jobs 6532 that are either 'pending', 'processing', 'pending-held', or 'processing- 6533 stopped' and is set by the Printer object. 6535 deBry, Hastings, Herriot, Isaacson, Powell 6536 Expires August 23, 2000 6537 4.4.25 printer-message-from-operator (text(127)) 6539 This Printer attribute provides a message from an operator, system 6540 administrator or "intelligent" process to indicate to the end user 6541 information or status of the printer, such as why it is unavailable or 6542 when it is expected to be available. 6544 4.4.26 color-supported (boolean) 6546 This Printer attribute identifies whether the device is capable of any 6547 type of color printing at all, including highlight color. All document 6548 instructions having to do with color are embedded within the document 6549 PDL (none are external IPP attributes in IPP/1.1). 6551 Note: end-users are able to determine the nature and details of the 6552 color support by querying the "printer-more-info-manufacturer" Printer 6553 attribute. 6555 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 6557 This Printer attribute specifies which URI schemes are supported for use 6558 in the "document-uri" operation attribute of the Print-URI or Send-URI 6559 operation. If a Printer object supports these optional operations, it 6560 MUST support the "reference-uri-schemes-supported" Printer attribute 6561 with at least the following schemed URI value: 6563 'ftp': The Printer object will use an FTP 'get' operation as defined 6564 in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] 6565 and[RFC2316]. 6567 The Printer object MAY OPTIONALLY support other URI schemes (see section 6568 4.1.6). 6570 4.4.28 pdl-override-supported (type2 keyword) 6572 This REQUIRED Printer attribute expresses the ability for a particular 6573 Printer implementation to either attempt to override document data 6574 instructions with IPP attributes or not. 6576 This attribute takes on the following values: 6578 - 'attempted': This value indicates that the Printer object attempts 6579 to make the IPP attribute values take precedence over embedded 6580 instructions in the document data, however there is no guarantee. 6581 - 'not-attempted': This value indicates that the Printer object makes 6582 no attempt to make the IPP attribute values take precedence over 6583 embedded instructions in the document data. 6585 Section 15 contains a full description of how this attribute interacts 6586 with and affects other IPP attributes, especially the "ipp-attribute- 6587 fidelity" attribute. 6589 deBry, Hastings, Herriot, Isaacson, Powell 6590 Expires August 23, 2000 6591 4.4.29 printer-up-time (integer(1:MAX)) 6593 This REQUIRED Printer attribute indicates the amount of time (in 6594 seconds) that this Printer instance has been up and running. The value 6595 is a monotonically increasing value starting from 1 when the Printer 6596 object is started-up (initialized, booted, etc.). This value is used to 6597 populate the Event Time Job Description Job attributes "time-at- 6598 creation", "time-at-processing", and "time-at-completed" (see section 6599 4.3.14). 6601 If the Printer object goes down at some value 'n', and comes back up, 6602 the implementation MAY: 6604 1. Know how long it has been down, and resume at some value greater 6605 than 'n', or 6606 2. Restart from 1. 6608 In other words, if the device or devices that the Printer object is 6609 representing are restarted or power cycled, the Printer object MAY 6610 continue counting this value or MAY reset this value to 1 depending on 6611 implementation. However, if the Printer object software ceases running, 6612 and restarts without knowing the last value for "printer-up-time", the 6613 implementation MUST reset this value to 1. If this value is reset and 6614 the Printer has persistent jobs, the Printer MUST reset the "time-at- 6615 xxx(integer) Event Time Job Description attributes according to Section 6616 4.3.14. An implementation MAY use both implementation alternatives, 6617 depending on warm versus cold start, respectively. 6619 4.4.30 printer-current-time (dateTime) 6621 This Printer attribute indicates the current date and time. This value 6622 is used to populate the Event Time Job Description attributes: "time- 6623 at-creation", "time-at-processing", and "time-at-completed" (see Section 6624 4.3.14). 6626 The date and time is obtained on a "best efforts basis" and does not 6627 have to be that precise in order to work in practice. A Printer 6628 implementation sets the value of this attribute by obtaining the date 6629 and time via some implementation-dependent means, such as getting the 6630 value from a network time server, initialization at time of manufacture, 6631 or setting by an administrator. See [IPP-IIG] for examples. If an 6632 implementation supports this attribute and the implementation knows that 6633 it has not yet been set, then the implementation MUST return the value 6634 of this attribute using the out-of-band 'no-value' meaning not 6635 configured. See the beginning of section 4.1. 6637 The time zone of this attribute NEED NOT be the time zone used by people 6638 located near the Printer object or device. The client MUST NOT expect 6639 that the time zone of any received 'dateTime' value to be in the time 6640 zone of the client or in the time zone of the people located near the 6641 printer. 6643 deBry, Hastings, Herriot, Isaacson, Powell 6644 Expires August 23, 2000 6645 The client SHOULD display any dateTime attributes to the user in client 6646 local time by converting the 'dateTime' value returned by the server to 6647 the time zone of the client, rather than using the time zone returned by 6648 the Printer in attributes that use the 'dateTime' attribute syntax. 6650 4.4.31 multiple-operation-time-out (integer(1:MAX)) 6652 This Printer attributes identifies the minimum time (in seconds) that 6653 the Printer object waits for additional Send-Document or Send-URI 6654 operations to follow a still-open multi-document Job object before 6655 taking any recovery actions, such as the ones indicated in section 6656 3.3.1. If the Printer object supports the Create-Job and Send-Document 6657 operations (see section 3.2.4 and 3.3.1), it MUST support this 6658 attribute. 6660 It is RECOMMENDED that vendors supply a value for this attribute that is 6661 between 60 and 240 seconds. An implementation MAY allow a system 6662 administrator to set this attribute (by means outside this IPP/1.1 6663 document). If so, the system administrator MAY be able to set values 6664 outside this range. 6666 4.4.32 compression-supported (1setOf type3 keyword) 6668 This REQUIRED Printer attribute identifies the set of supported 6669 compression algorithms for document data. Compression only applies to 6670 the document data; compression does not apply to the encoding of the IPP 6671 operation itself. The supported values are used to validate the client 6672 supplied "compression" operation attributes in Print-Job, Send-Document, 6673 and Send-URI requests. 6675 Standard values are : 6677 'none': no compression is used. 6678 'deflate': ZIP public domain inflate/deflate) compression technology 6679 'gzip' GNU zip compression technology described in RFC 1952 6680 [RFC1952]. 6681 'compress': UNIX compression technology 6683 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 6685 This Printer attribute specifies the upper and lower bounds of total 6686 sizes of jobs in K octets, i.e., in units of 1024 octets. The supported 6687 values are used to validate the client supplied "job-k-octets" operation 6688 attributes in create requests. The corresponding job description 6689 attribute "job-k-octets" is defined in section 4.3.17.1. 6691 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 6693 This Printer attribute specifies the upper and lower bounds for the 6694 number of impressions per job. The supported values are used to validate 6695 the client supplied "job-impressions" operation attributes in create 6697 deBry, Hastings, Herriot, Isaacson, Powell 6698 Expires August 23, 2000 6699 requests. The corresponding job description attribute "job-impressions" 6700 is defined in section 4.3.17.2. 6702 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 6704 This Printer attribute specifies the upper and lower bounds for the 6705 number of media sheets per job. The supported values are used to 6706 validate the client supplied "job-media-sheets" operation attributes in 6707 create requests. The corresponding Job attribute "job-media-sheets" is 6708 defined in section 4.3.17.3. 6710 4.4.36 pages-per-minute (integer(0:MAX)) 6712 This Printer attributes specifies the nominal number of pages per minute 6713 to the nearest whole number which may be generated by this printer 6714 (e.g., simplex, black-and-white). This attribute is informative, not a 6715 service guarantee. Generally, it is the value used in the marketing 6716 literature to describe the device. 6718 A value of 0 indicates a device that takes more than two minutes to 6719 process a page. 6721 4.4.37 pages-per-minute-color (integer(0:MAX)) 6723 This Printer attributes specifies the nominal number of pages per minute 6724 to the nearest whole number which may be generated by this printer when 6725 printing color (e.g., simplex, color). For purposes of this attribute, 6726 "color" means the same as for the "color-supported" attribute, namely, 6727 the device is capable of any type of color printing at all, including 6728 highlight color. This attribute is informative, not a service 6729 guarantee. Generally, it is the value used in the marketing literature 6730 to describe the color capabilities of this device. 6732 A value of 0 indicates a device that takes more than two minutes to 6733 process a page. 6735 If a color device has several color modes, it MAY use the pages-per- 6736 minute value for this attribute that corresponds to the mode that 6737 produces the highest number. 6739 Black and white only printers MUST NOT support this attribute. If this 6740 attribute is present, then the "color-supported" Printer description 6741 attribute MUST be present and have a 'true' value. 6743 The values of these two attributes returned by the Get-Printer- 6744 Attributes operation MAY be affected by the "document-format" attribute 6745 supplied by the client in the Get-Printer-Attributes request. In other 6746 words, the implementation MAY have different speeds depending on the 6747 document format being processed. See section 3.2.5.1 Get-Printer- 6748 Attributes. 6750 deBry, Hastings, Herriot, Isaacson, Powell 6751 Expires August 23, 2000 6752 5. Conformance 6754 This section describes conformance issues and requirements. This 6755 document introduces model entities such as objects, operations, 6756 attributes, attribute syntaxes, and attribute values. These conformance 6757 sections describe the conformance requirements which apply to these 6758 model entities. 6760 5.1 Client Conformance Requirements 6762 This section describes the conformance requirements for a client (see 6763 section 2.1), whether it be: 6765 1. contained within software controlled by an end user, e.g. activated 6766 by the "Print" menu item in an application that sends IPP requests 6767 or 6769 2. the print server component that sends IPP requests to either an 6770 output device or another "downstream" print server. 6772 A conforming client MUST support all REQUIRED operations as defined in 6773 this document. For each attribute included in an operation request, a 6774 conforming client MUST supply a value whose type and value syntax 6775 conforms to the requirements of the Model document as specified in 6776 Sections 3 and 4. A conforming client MAY supply any IETF standards 6777 track extensions and/or vendor extensions in an operation request, as 6778 long as the extensions meet the requirements in Section 6. 6780 Otherwise, there are no conformance requirements placed on the user 6781 interfaces provided by IPP clients or their applications. For example, 6782 one application might not allow an end user to submit multiple documents 6783 per job, while another does. One application might first query a 6784 Printer object in order to supply a graphical user interface (GUI) 6785 dialogue box with supported and default values whereas a different 6786 implementation might not. 6788 When sending a request, an IPP client NEED NOT supply any attributes 6789 that are indicated as OPTIONALLY supplied by the client. 6791 A client MUST be able to accept any of the attribute syntaxes defined in 6792 Section 4.1, including their full range, that may be returned to it in a 6793 response from a Printer object. In particular for each attribute that 6794 the client supports whose attribute syntax is 'text', the client MUST 6795 accept and process both the 'textWithoutLanguage' and 'textWithLanguage' 6796 forms. Similarly, for each attribute that the client supports whose 6797 attribute syntax is 'name', the client MUST accept and process both the 6798 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation 6799 purposes, truncation of long attribute values is not recommended. A 6800 recommended approach would be for the client implementation to allow the 6801 user to scroll through long attribute values. 6803 deBry, Hastings, Herriot, Isaacson, Powell 6804 Expires August 23, 2000 6805 A response MAY contain attribute groups, attributes, attribute syntaxes, 6806 values, and status codes that the client does not expect. Therefore, a 6807 client implementation MUST gracefully handle such responses and not 6808 refuse to inter-operate with a conforming Printer that is returning IETF 6809 standards track extension or vendor extensions, including attribute 6810 groups, attributes, attribute syntaxes, attribute values, status codes, 6811 and out-of-band attribute values that conform to Section 6. Clients may 6812 choose to ignore any parameters, attributes, attribute syntaxes, or 6813 values that they do not understand. 6815 While a client is sending data to a printer, it SHOULD do its best to 6816 prevent a channel from being closed by a lower layer when the channel is 6817 blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out of 6818 paper' or 'job ahead hasn't freed up enough memory'. However, the layer 6819 that launched the print submission (e.g. an end user) MAY close the 6820 channel in order to cancel the job. When a client closes a channel, a 6821 Printer MAY print all or part of the received portion of the document. 6822 See the "Encoding and Transport" document [IPP-PRO] for more details. 6824 A client MUST support Client Authentication as defined in the IPP/1.1 6825 Encoding and Transport document [IPP-PRO]. A client SHOULD support 6826 Operation Privacy and Server Authentication as defined in the IPP/1.1 6827 Encoding and Transport document [IPP-PRO]. See also section 8 of this 6828 document. 6830 5.2 IPP Object Conformance Requirements 6832 This section specifies the conformance requirements for conforming 6833 implementations of IPP objects (see section 2). These requirements 6834 apply to an IPP object whether it is: 6836 (1) an (embedded) device component that accepts IPP requests and 6837 controls the device or 6839 (2) a component of a print server that accepts IPP requests (where 6840 the print server control one or more networked devices using IPP or 6841 other protocols). 6843 5.2.1 Objects 6845 Conforming implementations MUST implement all of the model objects as 6846 defined in this document in the indicated sections: 6848 Section 2.1 - Printer Object 6849 Section 2.2 - Job Object 6851 5.2.2 Operations 6853 Conforming IPP object implementations MUST implement all of the REQUIRED 6854 model operations, including REQUIRED responses, as defined in this 6855 document in the indicated sections: 6857 deBry, Hastings, Herriot, Isaacson, Powell 6858 Expires August 23, 2000 6859 For a Printer object: 6860 Print-Job (section 3.2.1) REQUIRED 6861 Print-URI (section 3.2.2) OPTIONAL 6862 Validate-Job (section 3.2.3) REQUIRED 6863 Create-Job (section 3.2.4) OPTIONAL 6864 Get-Printer-Attributes (section 3.2.5) REQUIRED 6865 Get-Jobs (section 3.2.6) REQUIRED 6866 Pause-Printer (section 3.2.7) OPTIONAL 6867 Resume-Printer (section 3.2.8) OPTIONAL 6868 Purge-Jobs (section 3.2.9) OPTIONAL 6870 For a Job object: 6871 Send-Document (section 3.3.1) OPTIONAL 6872 Send-URI (section 3.3.2) OPTIONAL 6873 Cancel-Job (section 3.3.3) REQUIRED 6874 Get-Job-Attributes (section 3.3.4) REQUIRED 6875 Hold-Job (section 3.3.5) OPTIONAL 6876 Release-Job (section 3.3.6) OPTIONAL 6877 Restart-Job (section 3.3.7) OPTIONAL 6879 Conforming IPP objects MUST support all REQUIRED operation attributes 6880 and all values of such attributes if so indicated in the description. 6881 Conforming IPP objects MUST ignore all unsupported or unknown operation 6882 attributes or operation attribute groups received in a request, but MUST 6883 reject a request that contains a supported operation attribute that 6884 contains an unsupported value. 6886 Conforming IPP objects MAY return operation responses that contain 6887 attributes groups, attributes names, attribute syntaxes, attribute 6888 values, and status codes that are extensions to this standard. The 6889 additional attribute groups MAY occur in any order. 6891 The following section on object attributes specifies the support 6892 required for object attributes. 6894 5.2.3 IPP Object Attributes 6896 Conforming IPP objects MUST support all of the REQUIRED object 6897 attributes, as defined in this document in the indicated sections. 6899 If an object supports an attribute, it MUST support only those values 6900 specified in this document or through the extension mechanism described 6901 in section 5.2.4. It MAY support any non-empty subset of these values. 6902 That is, it MUST support at least one of the specified values and at 6903 most all of them. 6905 5.2.4 Versions 6907 IPP/1.1 clients MUST meet the conformance requirements for clients 6908 specified in this document and [IPP-PRO]. IPP/1.1 clients MUST send 6909 requests containing a "version-number" parameter with a '1.1' value. 6911 deBry, Hastings, Herriot, Isaacson, Powell 6912 Expires August 23, 2000 6913 IPP/1.1 Printer and Job objects MUST meet the conformance requirements 6914 for IPP objects specified in this document and [IPP-PRO]. IPP/1.1 6915 objects MUST accept requests containing a "version-number" parameter 6916 with a '1.1' value (or reject the request if the operation is not 6917 supported). 6919 It is beyond the scope of this specification to mandate conformance with 6920 previous versions. IPP/1.1 was deliberately designed, however, to make 6921 supporting previous versions easy. It is worth noting that, at the time 6922 of composing this specification (1999), we would expect IPP/1.1 Printer 6923 implementations to: 6925 understand any valid request in the format of IPP/1.0, or 1.1; 6927 respond appropriately with a response containing the same "version- 6928 number" parameter value used by the client in the request. 6930 And we would expect IPP/1.1 clients to: 6932 understand any valid response in the format of IPP/1.0, or 1.1. 6934 It is recommended that IPP/1.1 clients try supplying alternate version 6935 numbers if they receive a 'server-error-version-not-supported' error 6936 return in a response. 6938 5.2.5 Extensions 6940 A conforming IPP object MAY support IETF standards track extensions and 6941 vendor extensions, as long as the extensions meet the requirements 6942 specified in Section 6. 6944 For each attribute included in an operation response, a conforming IPP 6945 object MUST return a value whose type and value syntax conforms to the 6946 requirement of the Model document as specified in Sections 3 and 4. 6948 5.2.6 Attribute Syntaxes 6950 An IPP object MUST be able to accept any of the attribute syntaxes 6951 defined in Section 4.1, including their full range, in any operation in 6952 which a client may supply attributes or the system administrator may 6953 configure attributes (by means outside the scope of this IPP/1.1 6954 document). In particular for each attribute that the IPP object 6955 supports whose attribute syntax is 'text', the IPP object MUST accept 6956 and process both the 'textWithoutLanguage' and 'textWithLanguage' forms. 6957 Similarly, for each attribute that the IPP object supports whose 6958 attribute syntax is 'name', the IPP object MUST accept and process both 6959 the 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an 6960 IPP object MUST return attributes to the client in operation responses 6961 that conform to the syntax specified in Section 4.1, including their 6962 full range if supplied previously by a client. 6964 deBry, Hastings, Herriot, Isaacson, Powell 6965 Expires August 23, 2000 6966 5.2.7 Security 6968 An IPP Printer implementation SHOULD contain support for Client 6969 Authentication as defined in the IPP/1.1 Encoding and Transport document 6970 [IPP-PRO]. A Printer implementation MAY allow an administrator to 6971 configure the Printer so that all, some, or none of the users are 6972 authenticated. See also section 8 of this document. 6974 An IPP Printer implementation SHOULD contain support for Operation 6975 Privacy and Server Authentication as defined in the IPP/1.1 Encoding and 6976 Transport document [IPP-PRO]. A Printer implementation MAY allow an 6977 administrator to configure the degree of support for Operation Privacy 6978 and Server Authentication. See also section 8 of this document. 6980 Security MUST NOT be compromised when a client supplies a lower 6981 "version-number" parameter in a request. For example, if an IPP/1.1 6982 conforming Printer object accepts version '1.0' requests and is 6983 configured to enforce Digest Authentication, it MUST do the same for a 6984 version '1.0' request. 6986 5.3 Charset and Natural Language Requirements 6988 All clients and IPP objects MUST support the 'utf-8' charset as defined 6989 in section 4.1.7. 6991 IPP objects MUST be able to accept any client request which correctly 6992 uses the "attributes-natural-language" operation attribute or the 6993 Natural Language Override mechanism on any individual attribute whether 6994 or not the natural language is supported by the IPP object. If an IPP 6995 object supports a natural language, then it MUST be able to translate 6996 (perhaps by table lookup) all generated 'text' or 'name' attribute 6997 values into one of the supported languages (see section 3.1.4). That 6998 is, the IPP object that supports a natural language NEED NOT be a 6999 general purpose translator of any arbitrary 'text' or 'name' value 7000 supplied by the client into that natural language. However, the object 7001 MUST be able to translate (automatically generate) any of its own 7002 attribute values and messages into that natural language. 7004 6. IANA Considerations 7006 This section describes the procedures for defining semantics for the 7007 following IETF standards track extensions and vendor extensions to the 7008 IPP/1.1 Model and Semantics document: 7010 1. keyword attribute values 7011 2. enum attribute values 7012 3. attributes 7013 4. attribute syntaxes 7014 5. operations 7015 6. attribute groups 7017 deBry, Hastings, Herriot, Isaacson, Powell 7018 Expires August 23, 2000 7019 7. status codes 7020 8. out-of-band attribute values 7022 Extensions registered for use with IPP/1.1 are OPTIONAL for client and 7023 IPP object conformance to the IPP/1.1 "Model and Semantics" document 7024 (this document). 7026 These extension procedures are aligned with the guidelines as set forth 7027 by the IESG [IANA-CON]. Section 11 describes how to propose new 7028 registrations for consideration. IANA will reject registration 7029 proposals that leave out required information or do not follow the 7030 appropriate format described in Section 11. The IPP/1.1 Model and 7031 Semantics document may also be extended by an appropriate RFC that 7032 specifies any of the above extensions. 7034 6.1 Typed 'keyword' and 'enum' Extensions 7036 IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and 7037 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic 7038 attribute syntax type in order to communicate extra information to the 7039 reader through its name. This extra information is not represented in 7040 the protocol because it is unimportant to a client or Printer object. 7041 The list below describes the prefixes and their meaning. 7043 "type1": This IPP specification document must be revised (or another 7044 IETF standards track document which augments this document) to add 7045 a new keyword or a new enum. No vendor defined keywords or enums 7046 are allowed. 7048 "type2": Implementers can, at any time, add new keyword or enum 7049 values by proposing the complete specification to IANA: 7051 iana@iana.org 7053 IANA will forward the registration proposal to the IPP Designated 7054 Expert who will review the proposal with a mailing list that the 7055 Designated Expert keeps for this purpose. Initially, that list 7056 will be the mailing list used by the IPP WG: 7058 ipp@pwg.org 7060 even after the IPP WG is disbanded as permitted by [IANA-CON]. The 7061 IPP Designated Expert is appointed by the IESG Area Director 7062 responsible for IPP, according to [IANA-CON]. 7064 When a type2 keyword or enum is approved, the IPP Designated Expert 7065 becomes the point of contact for any future maintenance that might 7066 be required for that registration. 7068 "type3": Implementers can, at any time, add new keyword and enum 7069 values by submitting the complete specification to IANA as for 7070 type2 who will forward the proposal to the IPP Designated Expert. 7072 deBry, Hastings, Herriot, Isaacson, Powell 7073 Expires August 23, 2000 7074 While no additional technical review is required, the IPP 7075 Designated Expert may, at his/her discretion, forward the proposal 7076 to the same mailing list as for type2 registrations for advice and 7077 comment. 7079 When a type3 keyword or enum is approved by the IPP Designated 7080 Expert, the original proposer becomes the point of contact for any 7081 future maintenance that might be required for that registration. 7083 For type2 and type3 keywords, the proposer includes the name of the 7084 keyword in the registration proposal and the name is part of the 7085 technical review. 7087 After type2 and type3 enums specifications are approved, the IPP 7088 Designated Expert in consultation with IANA assigns the next available 7089 enum number for each enum value. 7091 IANA will publish approved type2 and type3 keyword and enum attributes 7092 value registration specifications in: 7094 ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt 7096 where xxx is the attribute name that specifies the initial values and 7097 yyy.txt is a descriptive file name that contains one or more enums or 7098 keywords approved at the same time. For example, if several additional 7099 enums for stapling are approved for use with the "finishings" attribute 7100 (and "finishings-default" and "finishings-supported" attributes), IANA 7101 will publish the additional values in the file: 7103 ftp.isi.edu/iana/assignments/ipp/attribute- 7104 values/finishings/stapling.txt 7106 Note: Some attributes are defined to be: 'type3 keywords' | 'name' which 7107 allows for attribute values to be extended by a site administrator with 7108 administrator defined names. Such names are not registered with IANA. 7110 By definition, each of the three types above assert some sort of 7111 registry or review process in order for extensions to be considered 7112 valid. Each higher numbered level (1, 2, 3) tends to be decreasingly 7113 less stringent than the previous level. Therefore, any typeN value MAY 7114 be registered using a process for some typeM where M is less than N, 7115 however such registration is NOT REQUIRED. For example, a type3 value 7116 MAY be registered in a type 1 manner (by being included in a future 7117 version of an IPP specification), however, it is NOT REQUIRED. 7119 This document defines keyword and enum values for all of the above 7120 types, including type3 keywords. 7122 For vendor keyword extensions, implementers SHOULD use keywords with a 7123 suitable distinguishing prefix, such as "xxx-" where xxx follows the 7124 syntax rules for keywords (see section 4.1.3) and is the (lowercase) 7125 fully qualified company name registered with IANA for use in domain 7127 deBry, Hastings, Herriot, Isaacson, Powell 7128 Expires August 23, 2000 7129 names [RFC1035]. For example, if the company XYZ Corp. had obtained the 7130 domain name "XYZ.com", then a vendor keyword 'abc' would be: 'xyz.com- 7131 abc'. 7133 Note: RFC 1035 [RFC1035] indicates that while upper and lower case 7134 letters are allowed in domain names, no significance is attached to the 7135 case. That is, two names with the same spelling but different case are 7136 to be treated as if identical. Also, the labels in a domain name must 7137 follow the rules for ARPANET host names: They must start with a letter, 7138 end with a letter or digit, and have as interior characters only 7139 letters, digits, and hyphen. Labels must be 63 characters or less. 7140 Labels are separated by the "." character. 7142 For vendor enum extensions, implementers MUST use values in the reserved 7143 integer range which is 2**30 to 2**31-1. 7145 6.2 Attribute Extensibility 7147 Attribute names (see section 4.1.3) are type2 keywords. Therefore, new 7148 attributes may be registered and have the same status as attributes in 7149 this document by following the type2 extension rules. For vendor 7150 attribute extensions, implementers SHOULD use keywords with a suitable 7151 distinguishing prefix as described in Section 6.1. 7153 IANA will publish approved attribute registration specifications as 7154 separate files: 7156 ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt 7158 where "xxx-yyy" is the new attribute name. 7160 If a new Printer object attribute is defined and its values can be 7161 affected by a specific document format, its specification needs to 7162 contain the following sentence: 7164 "The value of this attribute returned in a Get-Printer- 7165 Attributes response MAY depend on the "document-format" 7166 attribute supplied (see Section 3.2.5.1)." 7168 If the specification does not, then its value in the Get-Printer- 7169 Attributes response MUST NOT depend on the "document-format" supplied in 7170 the request. When a new Job Template attribute is registered, the value 7171 of the Printer attributes MAY vary with "document-format" supplied in 7172 the request without the specification having to indicate so. 7174 6.3 Attribute Syntax Extensibility 7176 Attribute syntaxes (see section 4.1) are like type2 enums. Therefore, 7177 new attribute syntaxes may be registered and have the same status as 7178 attribute syntaxes in this document by following the type2 extension 7179 rules described in Section 6.1. The initial set of value codes that 7181 deBry, Hastings, Herriot, Isaacson, Powell 7182 Expires August 23, 2000 7183 identify each of the attribute syntaxes have been assigned in the 7184 "Encoding and Transport" document [IPP-PRO], including a designated 7185 range for vendor extension. 7187 For attribute syntaxes, the IPP Designated Expert in consultation with 7188 IANA assigns the next attribute syntax code in the appropriate range as 7189 specified in [IPP-PRO]. IANA will publish approved attribute syntax 7190 registration specifications as separate files: 7192 ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt 7194 where 'xxx-yyy' is the new attribute syntax name. 7196 6.4 Operation Extensibility 7198 Operations (see section 3) may also be registered following the type2 7199 procedures described in Section 6.1, though major new operations will 7200 usually be done by a new standards track RFC that augments this 7201 document. For vendor operation extensions, implementers MUST use the 7202 range for the "operation-id" in requests specified in Section 4.4.15 7203 "operations-supported" Printer attribute. 7205 For operations, the IPP Designated Expert in consultation with IANA 7206 assigns the next operation-id code as specified in Section 4.4.15. IANA 7207 will publish approved operation registration specifications as separate 7208 files: 7210 ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt 7212 where "Xxx-Yyy" is the new operation name. 7214 6.5 Attribute Group Extensibility 7216 Attribute groups (see section 3.1.3) passed in requests and responses 7217 may be registered following the type2 procedures described in Section 7218 6.1. The initial set of attribute group tags have been assigned in the 7219 "Encoding and Transport" document [IPP-PRO], including a designated 7220 range for vendor extension. 7222 For attribute groups, the IPP Designated Expert in consultation with 7223 IANA assigns the next attribute group tag code in the appropriate range 7224 as specified in [IPP-PRO]. IANA will publish approved attribute group 7225 registration specifications as separate files: 7227 ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- 7228 tag.txt 7230 where 'xxx-yyy-tag' is the new attribute group tag name. 7232 deBry, Hastings, Herriot, Isaacson, Powell 7233 Expires August 23, 2000 7234 6.6 Status Code Extensibility 7236 Operation status codes (see section 3.1.6.1) may also be registered 7237 following the type2 procedures described in Section 6.1. The values for 7238 status codes are allocated in ranges as specified in Section 14 for each 7239 status code class: 7241 "informational" - Request received, continuing process 7242 "successful" - The action was successfully received, understood, and 7243 accepted 7244 "redirection" - Further action must be taken in order to complete the 7245 request 7246 "client-error" - The request contains bad syntax or cannot be 7247 fulfilled 7248 "server-error" - The IPP object failed to fulfill an apparently 7249 valid request 7251 For vendor operation status code extensions, implementers MUST use the 7252 top of each range as specified in Section 13. 7254 For operation status codes, the IPP Designated Expert in consultation 7255 with IANA assigns the next status code in the appropriate class range as 7256 specified in Section 13. IANA will publish approved status code 7257 registration specifications as separate files: 7259 ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt 7261 where "xxx-yyy" is the new operation status code keyword. 7263 6.7 Out-of-band Attribute Value Extensibility 7265 Out-of-band attribute values (see the beginning of section 4.1) passed 7266 in requests and responses may be registered following the type2 7267 procedures described in Section 6.1. The initial set of out-of-band 7268 attribute value tags have been assigned in the "Encoding and Transport" 7269 document [IPP-PRO]. 7271 For out-of-band attribute value tags, the IPP Designated Expert in 7272 consultation with IANA assigns the next out-of-band attribute value tag 7273 code in the appropriate range as specified in [IPP-PRO]. IANA will 7274 publish approved out-of-band attribute value tags registration 7275 specifications as separate files: 7277 ftp.isi.edu/iana/assignments/ipp/out-of-band-attribute-value- 7278 tags/xxx-yyy-tag.txt 7280 where 'xxx-yyy-tag' is the new out-of-band attribute value tag name. 7282 deBry, Hastings, Herriot, Isaacson, Powell 7283 Expires August 23, 2000 7284 6.8 Registration of MIME types/sub-types for document-formats 7286 The "document-format" attribute's syntax is 'mimeMediaType'. This means 7287 that valid values are Internet Media Types (see Section 4.1.9). RFC 7288 2045 [RFC2045] defines the syntax for valid Internet media types. IANA 7289 is the registry for all Internet media types. 7291 6.9 Registration of charsets for use in 'charset' attribute values 7293 The "attributes-charset" attribute's syntax is 'charset'. This means 7294 that valid values are charsets names. When a charset in the IANA 7295 registry has more than one name (alias), the name labeled as "(preferred 7296 MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the 7297 registry for charsets following the procedures of [RFC2278]. 7299 7. Internationalization Considerations 7301 Some of the attributes have values that are text strings and names which 7302 are intended for human understanding rather than machine understanding 7303 (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and 7304 4.1.2). 7306 In each operation request, the client 7308 - identifies the charset and natural language of the request which 7309 affects each supplied 'text' and 'name' attribute value, and 7310 - requests the charset and natural language for attributes returned 7311 by the IPP object in operation responses (as described in Section 7312 3.1.4.1). 7314 In addition, the client MAY separately and individually identify the 7315 Natural Language Override of a supplied 'text' or 'name' attribute using 7316 the 'textWithLanguage' and 'nameWithLanguage' technique described 7317 section 4.1.1.2 and 4.1.2.2 respectively. 7319 All IPP objects MUST support the UTF-8 [RFC2279] charset in all 'text' 7320 and 'name' attributes supported. If an IPP object supports more than 7321 the UTF-8 charset, the object MUST convert between them in order to 7322 return the requested charset to the client according to Section 3.1.4.2. 7323 If an IPP object supports more than one natural language, the object 7324 SHOULD return 'text' and 'name' values in the natural language requested 7325 where those values are generated by the Printer (see Section 3.1.4.1). 7327 For Printers that support multiple charsets and/or multiple natural 7328 languages in 'text' and 'name' attributes, different jobs may have been 7329 submitted in differing charsets and/or natural languages. All responses 7330 MUST be returned in the charset requested by the client. However, the 7331 Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' 7332 mechanism to identify the differing natural languages with each job 7333 attribute returned. 7335 deBry, Hastings, Herriot, Isaacson, Powell 7336 Expires August 23, 2000 7337 The Printer object also has configured charset and natural language 7338 attributes. The client can query the Printer object to determine the 7339 list of charsets and natural languages supported by the Printer object 7340 and what the Printer object's configured values are. See the "charset- 7341 configured", "charset-supported", "natural-language-configured", and 7342 "generated-natural-language-supported" Printer description attributes 7343 for more details. 7345 The "charset-supported" attributed identifies the supported charsets. 7346 If a charset is supported, the IPP object MUST be capable of converting 7347 to and from that charset into any other supported charset. In many 7348 cases, an IPP object will support only one charset and it MUST be the 7349 UTF-8 charset. 7351 The "charset-configured" attribute identifies the one supported charset 7352 which is the native charset given the current configuration of the IPP 7353 object (administrator defined). 7355 The "generated-natural-language-supported" attribute identifies the set 7356 of supported natural languages for generated messages; it is not related 7357 to the set of natural languages that must be accepted for client 7358 supplied 'text' and 'name' attributes. For client supplied 'text' and 7359 'name' attributes, an IPP object MUST accept ALL supplied natural 7360 languages. Just because a Printer object is currently configured to 7361 support 'en-us' natural language does not mean that the Printer object 7362 should reject a job if the client supplies a job name that is in 'fr- 7363 ca'. 7365 The "natural-language-configured" attribute identifies the one supported 7366 natural language for generated messages which is the native natural 7367 language given the current configuration of the IPP object 7368 (administrator defined). 7370 Attributes of type 'text' and 'name' are populated from different 7371 sources. These attributes can be categorized into following groups 7372 (depending on the source of the attribute): 7374 1. Some attributes are supplied by the client (e.g., the client 7375 supplied "job-name", "document-name", and "requesting-user-name" 7376 operation attributes along with the corresponding Job object's 7377 "job-name" and "job-originating-user-name" attributes). The IPP 7378 object MUST accept these attributes in any natural language no 7379 matter what the set of supported languages for generated messages 7380 2. Some attributes are supplied by the system administrator (e.g., 7381 the Printer object's "printer-name" and "printer-location" 7382 attributes). These too can be in any natural language. If the 7383 natural language for these attributes is different than what a 7384 client requests, then they must be reported using the Natural 7385 Language Override mechanism. 7386 3. Some attributes are supplied by the device manufacturer (e.g., the 7387 Printer object's "printer-make-and-model" attribute). These too 7388 can be in any natural language. If the natural language for these 7390 deBry, Hastings, Herriot, Isaacson, Powell 7391 Expires August 23, 2000 7392 attributes is different than what a client requests, then they must 7393 be reported using the Natural Language Override mechanism. 7394 4. Some attributes are supplied by the operator (e.g., the Job 7395 object's "job-message-from-operator" attribute). These too can be 7396 in any natural language. If the natural language for these 7397 attributes is different than what a client requests, then they must 7398 be reported using the Natural Language Override mechanism. 7399 5. Some attributes are generated by the IPP object (e.g., the Job 7400 object's "job-state-message" attribute, the Printer object's 7401 "printer-state-message" attribute, and the "status-message" 7402 operation attribute). These attributes can only be in one of the 7403 "generated-natural-language-supported" natural languages. If a 7404 client requests some natural language for these attributes other 7405 than one of the supported values, the IPP object SHOULD respond 7406 using the value of the "natural-language-configured" attribute 7407 (using the Natural Language Override mechanism if needed). 7409 The 'text' and 'name' attributes specified in this version of this 7410 document (additional ones will be registered according to the procedures 7411 in Section 6) are: 7413 deBry, Hastings, Herriot, Isaacson, Powell 7414 Expires August 23, 2000 7415 Attributes Source 7417 Operation Attributes: 7418 job-name (name) client 7419 document-name (name) client 7420 requesting-user-name (name) client 7421 status-message (text) Job or Printer object 7422 detailed-status-message (text) Job or Printer object - 7423 see rule 1 7424 document-access-error (text) Job or Printer object - 7425 see rule 1 7427 Job Template Attributes: 7428 job-hold-until (keyword | name) client matches 7429 administrator-configured 7430 job-hold-until-default (keyword | name) client matches 7431 administrator-configured 7432 job-hold-until-supported (keyword | client matches 7433 name) administrator-configured 7434 job-sheets (keyword | name) client matches 7435 administrator-configured 7436 job-sheets-default (keyword | name) client matches 7437 administrator-configured 7438 job-sheets-supported (keyword | name) client matches 7439 administrator-configured 7440 media (keyword | name) client matches 7441 administrator-configured 7442 media-default (keyword | name) client matches 7443 administrator-configured 7444 media-supported (keyword | name) client matches 7445 administrator-configured 7446 media-ready (keyword | name) client matches 7447 administrator-configured 7449 Job Description Attributes: 7450 job-name (name) client or Printer object 7451 job-originating-user-name (name) Printer object 7452 job-state-message (text) Job or Printer object 7453 output-device-assigned (name(127)) administrator 7454 job-message-from-operator (text(127)) operator 7455 job-detailed-status-messages (1setOf Job or Printer object - 7456 text) see rule 1 7457 job-document-access-errors (1setOf Job or Printer object - 7458 text) see rule 1 7460 Printer Description Attributes: 7461 printer-name (name(127)) administrator 7462 printer-location (text(127)) administrator 7463 printer-info (text(127)) administrator 7464 printer-make-and-model (text(127)) administrator or 7465 manufacturer 7466 printer-state-message (text) Printer object 7468 deBry, Hastings, Herriot, Isaacson, Powell 7469 Expires August 23, 2000 7470 printer-message-from-operator operator 7471 (text(127)) 7473 Rule 1 - Neither the Printer nor the client localizes these message 7474 attributes, since they are intended for use by the system administrator 7475 or other experienced technical persons. 7477 8. Security Considerations 7479 It is difficult to anticipate the security risks that might exist in any 7480 given IPP environment. For example, if IPP is used within a given 7481 corporation over a private network, the risks of exposing document data 7482 may be low enough that the corporation will choose not to use encryption 7483 on that data. However, if the connection between the client and the IPP 7484 object is over a public network, the client may wish to protect the 7485 content of the information during transmission through the network with 7486 encryption. 7488 Furthermore, the value of the information being printed may vary from 7489 one IPP environment to the next. Printing payroll checks, for example, 7490 would have a different value than printing public information from a 7491 file. There is also the possibly of denial-of-service attacks, but 7492 denial-of-service attacks against printing resources are not well 7493 understood and there is no published precedents regarding this scenario. 7495 Once the authenticated identity of the requester has been supplied to 7496 the IPP object, the object uses that identity to enforce any 7497 authorization policy that might be in place. For example, one site's 7498 policy might be that only the job owner is allowed to cancel a job. The 7499 details and mechanisms to set up a particular access control policy are 7500 not part of IPP/1.1, and must be established via some other type of 7501 administrative or access control framework. However, there are 7502 operation status codes that allow an IPP server to return information 7503 back to a client about any potential access control violations for an 7504 IPP object. 7506 During a create operation, the client's identity is recorded in the Job 7507 object in an implementation-defined attribute. This information can be 7508 used to verify a client's identity for subsequent operations on that Job 7509 object in order to enforce any access control policy that might be in 7510 effect. See section 8.3 below for more details. 7512 Since the security levels or the specific threats that any given IPP 7513 system administrator may be concerned with cannot be anticipated, IPP 7514 MUST be capable of operating with different security mechanisms and 7515 security policies as required by the individual installation. Security 7516 policies might vary from very strong, to very weak, to none at all, and 7517 corresponding security mechanisms will be required. 7519 deBry, Hastings, Herriot, Isaacson, Powell 7520 Expires August 23, 2000 7521 8.1 Security Scenarios 7523 The following sections describe specific security attacks for IPP 7524 environments. Where examples are provided they should be considered 7525 illustrative of the environment and not an exhaustive set. Not all of 7526 these environments will necessarily be addressed in initial 7527 implementations of IPP. 7529 8.1.1 Client and Server in the Same Security Domain 7531 This environment is typical of internal networks where traditional 7532 office workers print the output of personal productivity applications on 7533 shared work-group printers, or where batch applications print their 7534 output on large production printers. Although the identity of the user 7535 may be trusted in this environment, a user might want to protect the 7536 content of a document against such attacks as eavesdropping, replaying 7537 or tampering. 7539 8.1.2 Client and Server in Different Security Domains 7541 Examples of this environment include printing a document created by the 7542 client on a publicly available printer, such as at a commercial print 7543 shop; or printing a document remotely on a business associate's printer. 7544 This latter operation is functionally equivalent to sending the document 7545 to the business associate as a facsimile. Printing sensitive information 7546 on a Printer in a different security domain requires strong security 7547 measures. In this environment authentication of the printer is required 7548 as well as protection against unauthorized use of print resources. Since 7549 the document crosses security domains, protection against eavesdropping 7550 and document tampering are also required. It will also be important in 7551 this environment to protect Printers against "spamming" and malicious 7552 document content. 7554 8.1.3 Print by Reference 7556 When the document is not stored on the client, printing can be done by 7557 reference. That is, the print request can contain a reference, or 7558 pointer, to the document instead of the actual document itself (see 7559 sections 3.2.2 and 3.3.2). Standard methods currently do not exist for 7560 remote entities to "assume" the credentials of a client for forwarding 7561 requests to a 3rd party. It is anticipated that Print-By-Reference will 7562 be used to access "public" documents and that sophisticated methods for 7563 authenticating "proxies" is not specified in this document. 7565 8.2 URIs in Operation, Job, and Printer attributes 7567 The "printer-uri-supported" attribute contains the Printer object's 7568 URI(s). Its companion attribute, "uri-security-supported", identifies 7569 the security mechanism used for each URI listed in the "printer-uri- 7570 supported" attribute. For each Printer operation request, a client MUST 7572 deBry, Hastings, Herriot, Isaacson, Powell 7573 Expires August 23, 2000 7574 supply only one URI in the "printer-uri" operation attribute. In other 7575 words, even though the Printer supports more than one URI, the client 7576 only interacts with the Printer object using one if its URIs. This 7577 duality is not needed for Job objects, since the Printer objects is the 7578 factory for Job objects, and the Printer object will generate the 7579 correct URI for new Job objects depending on the Printer object's 7580 security configuration. 7582 8.3 URIs for each authentication mechanisms 7584 Each URI has an authentication mechanism associated with it. If the URI 7585 is the i'th element of "printer-uri-supported", then authentication 7586 mechanism is the "i th" element of "uri-authentication-supported". For a 7587 list of possible authentication mechanisms, see section 4.4.2. 7589 The Printer object uses an authentication mechanism to determine the 7590 name of the user performing an operation. This user is called the 7591 "authenticated user". The credibility of authentication depends on the 7592 mechanism that the Printer uses to obtain the user.s name. When the 7593 authentication mechanism is @none@, all authenticated users are 7594 "anonymous". 7596 During job creation operations, the Printer initializes the value of the 7597 "job-originating-user-name" attribute (see section 4.3.6) to be the 7598 authenticated user. The authenticated user is this case is called the 7599 "job owner". 7601 If an implementation can be configured to support more than one 7602 authentication mechanism (see section 4.4.2), then it MUST implement 7603 rules for determining equality of authenticated user names which have 7604 been authenticated via different authentication mechanisms. One 7605 possible policy is that identical names that are authenticated via 7606 different mechanisms are different. For example, a user can cancel his 7607 job only if he uses the same authentication mechanism for both Cancel- 7608 Job and Print-Job. Another policy is that identical names that are 7609 authenticated via different mechanism are the same if the authentication 7610 mechanism for the later operation is not less strong than the 7611 authentication mechanism for the earlier job creation operation. For 7612 example, a user can cancel his job only if he uses the same or stronger 7613 authentication mechanism for Cancel-Job and Print-Job. With this second 7614 policy a job submitted via 'requesting-user-name' authentication could 7615 be canceled via 'digest' authentication. With the first policy, the job 7616 could not be canceled in this way. 7618 A client is able to determine the authentication mechanism used to 7619 create a job. It is the i'th value of the Printer.s "uri-authentication- 7620 supported" attribute (see section 4.4.2), where i is the index of the 7621 element of the Printer.s "printer-uri-supported" attribute (see section 7622 4.4.1) equal to the job.s "job-printer-uri" attribute (see section 7623 4.3.3). 7625 deBry, Hastings, Herriot, Isaacson, Powell 7626 Expires August 23, 2000 7627 8.4 Restricted Queries 7629 In many IPP operations, a client supplies a list of attributes to be 7630 returned in the response. For security reasons, an IPP object may be 7631 configured not to return all attributes (or all values) that a client 7632 requests. The job attributes returned MAY depend on whether the 7633 requesting user is the same as the user that submitted the job. The IPP 7634 object MAY even return none of the requested attributes. In such cases, 7635 the status returned is the same as if the object had returned all 7636 requested attributes. The client cannot tell by such a response whether 7637 the requested attribute was present or absent on the object. 7639 8.5 Operations performed by operators and system administrators 7641 For the three printer operations Pause-Printer, Resume-Printer, and 7642 Purge-Jobs (see sections 3.2.7, 3.2.8 and 3.2.9), the requesting user is 7643 intended to be an operator or administrator of the Printer object (see 7644 section 1). Otherwise, the IPP Printer MUST reject the operation and 7645 return: 'client-error-forbidden', 'client-error-not-authenticated', or 7646 'client-error-not-authorized' as appropriate. For operations on jobs, 7647 the requesting user is intended to be the job owner or may be an 7648 operator or administrator of the Printer object. The means for 7649 authorizing an operator or administrator of the Printer object are not 7650 specified in this document. 7652 8.6 Queries on jobs submitted using non-IPP protocols 7654 If the device that an IPP Printer is representing is able to accept jobs 7655 using other job submission protocols in addition to IPP, it is 7656 RECOMMENDED that such an implementation at least allow such "foreign" 7657 jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as 7658 'unknown'. Such an implementation NEED NOT support all of the same IPP 7659 job attributes as for IPP jobs. The IPP object returns the 'unknown' 7660 out-of-band value for any requested attribute of a foreign job that is 7661 supported for IPP jobs, but not for foreign jobs. 7663 It is further RECOMMENDED, that the IPP Printer generate "job-id" and 7664 "job-uri" values for such "foreign jobs", if possible, so that they may 7665 be targets of other IPP operations, such as Get-Job-Attributes and 7666 Cancel-Job. Such an implementation also needs to deal with the problem 7667 of authentication of such foreign jobs. One approach would be to treat 7668 all such foreign jobs as belonging to users other than the user of the 7669 IPP client. Another approach would be for the foreign job to belong to 7670 'anonymous'. Only if the IPP client has been authenticated as an 7671 operator or administrator of the IPP Printer object, could the foreign 7672 jobs be queried by an IPP request. Alternatively, if the security 7673 policy is to allow users to query other users' jobs, then the foreign 7674 jobs would also be visible to an end-user IPP client using Get-Jobs and 7675 Get-Job-Attributes. 7677 deBry, Hastings, Herriot, Isaacson, Powell 7678 Expires August 23, 2000 7679 9. References 7681 [ASME-Y14.1M] 7682 Metric Drawing Sheet Size and Format, ASME Y14.1M-1995. This 7683 standard defines metric sheet sizes and formats for engineering 7684 drawings. 7686 [ASCII] 7687 Coded Character Set - 7-bit American Standard Code for Information 7688 Interchange (ASCII), ANSI X3.4-1986. This standard is the 7689 specification of the US-ASCII charset. 7691 [BCP-11] 7692 Bradner S., Hovey R., "The Organizations Involved in the IETF 7693 Standards Process", 1996/10/29 (RFC 2028) 7695 [HTPP] 7696 J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext 7697 Printing Protocol - HTPP/1.0", October 1996, 7698 ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz 7700 [IANA-CON] 7701 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 7702 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 7703 considerations-04.txt, May 21, 1998. 7705 [IANA-CS] 7706 IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- 7707 notes/iana/assignments/character-sets 7709 [IANA-MT] 7710 IANA Registry of Media Types: ftp://ftp.isi.edu/in- 7711 notes/iana/assignments/media-types/ 7713 [IPP-IIG] 7714 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: draft- 7715 ietf-ipp-implementers-guide-v11-00.txt, work in progress, September 7716 27, 1999. 7718 [IPP-PRO] 7719 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7720 Protocol/1.1: Encoding and Transport", draft-ietf-ipp-protocol-v11- 7721 04.txt, February 23, 2000. 7723 [ISO10646-1] 7724 ISO/IEC 10646-1:1993, "Information technology -- Universal 7725 Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and 7726 Basic Multilingual Plane, JTC1/SC2." 7728 [ISO8859-1] 7729 ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte 7730 Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. 7732 deBry, Hastings, Herriot, Isaacson, Powell 7733 Expires August 23, 2000 7734 [ISO10175] 7735 ISO/IEC 10175 Document Printing Application (DPA), June 1996. 7737 [LDPA] 7738 T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. 7739 Zehler, "LDPA - Lightweight Document Printing Application", 7740 October 1996, 7741 ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz 7743 [P1387.4] 7744 Kirk, M. (editor), POSIX System Administration - Part 4: Printing 7745 Interfaces, POSIX 1387.4 D8, 1994. 7747 [PSIS] Herriot, R. (editor), X/Open A Printing System 7748 Interoperability Specification (PSIS), August 1995. 7750 [PWG] 7751 Printer Working Group, http://www.pwg.org. 7753 [RFC1035] 7754 P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", 7755 RFC 1035, November 1987. 7757 [RFC1179] 7758 McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC 7759 1179, August 1990. 7761 [RFC1759] 7762 Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, 7763 J., "Printer MIB", RFC 1759, March 1995. 7765 [RFC1766] 7766 H. Alvestrand, "Tags for the Identification of Languages", RFC 7767 1766, March 1995. 7769 [RFC1952] 7770 P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, 7771 May 1996. 7773 [RFC2026] 7774 S. Bradner, "The Internet Standards Process -- Revision 3", RFC 7775 2026, October 1996. 7777 [RFC2045] 7778 N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions 7779 (MIME) Part One: Format of Internet Message Bodies " RFC 2045, 7780 November 1996. 7782 [RFC2046] 7783 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 7784 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 7785 RFC1522, RFC1590), RFC 2046. 7787 deBry, Hastings, Herriot, Isaacson, Powell 7788 Expires August 23, 2000 7789 [RFC2048] 7790 N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail 7791 Extension (MIME) Part Four: Registration Procedures". RFC 2048, 7792 November 1996. 7794 [RFC2119] 7795 S. Bradner, "Key words for use in RFCs to Indicate Requirement 7796 Levels", RFC 2119 , March 1997 7798 [RFC2228] 7799 M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October 7800 1997. 7802 [RFC2246] 7803 T. Dierks, C. Allen, "The TLS Protocol Version 1.0", RFC 2246, 7804 January 1999. 7806 [RFC2277] 7807 H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC 7808 2277, January 1998. 7810 [RFC2278] 7811 N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC 7812 2278, January 1998. 7814 [RFC2279] 7815 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 7816 2279. January 1998. 7818 [RFC2316] 7819 S. Bellovin , "Report of the IAB Security Architecture Workshop", 7820 RFC 2316, April 1998. 7822 [RFC2396] 7823 Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource 7824 Identifiers (URI): Generic Syntax", RFC 2396, August 1998. 7826 [RFC2565] 7827 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 7828 Protocol/1.0: Encoding and Transport", RFC 2565, April 1999. 7830 [RFC2566] 7831 R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, 7832 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 7833 April 1999. 7835 [RFC2567] 7836 Wright, D., "Design Goals for an Internet Printing Protocol", RFC 7837 2567, April 1999. 7839 [RFC2568] 7840 Zilles, S., "Rationale for the Structure and Model and Protocol for 7841 the Internet Printing Protocol", RFC 2568, April 1999. 7843 deBry, Hastings, Herriot, Isaacson, Powell 7844 Expires August 23, 2000 7845 [RFC2569] 7846 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 7847 LPD and IPP Protocols", RFC 2569, April 1999. 7849 [RFC2579] 7850 K. McCloghrie, D. Perkins, J. Schoenwaelder, "Textual Conventions 7851 for SMIv2" RFC 2579 (Also STD0058), April 1999, . 7853 [RFC2616] 7854 R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. 7855 Leach, T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", 7856 RFC 2616, June 1999. 7858 [RFC2617] 7859 J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. 7860 Luotonen, L. Stewart, "HTTP Authentication: Basic and Digest Access 7861 Authentication", RFC 2617, June 1999. 7863 [SSL] 7864 Netscape, The SSL Protocol, Version 3, (Text version 3.02), 7865 November 1996. 7867 [SWP] 7868 P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May 7869 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf 7871 10. Author's Address 7873 Scott A. Isaacson (Editor) 7874 Novell, Inc. 7875 122 E 1700 S 7876 Provo, UT 84606 7878 Phone: 801-861-7366 7879 Fax: 801-861-2517 7880 e-mail: sisaacson@novell.com 7882 Tom Hastings 7883 Xerox Corporation 7884 737 Hawaii St. ESAE 231 7885 El Segundo, CA 90245 7887 Phone: 310-333-6413 7888 Fax: 310-333-5514 7889 e-mail: hastings@cp10.es.xerox.com 7891 Robert Herriot 7892 Xerox Corp. 7893 3400 Hill View Ave, Building 1 7894 Palo Alto, CA 94304 7896 deBry, Hastings, Herriot, Isaacson, Powell 7897 Expires August 23, 2000 7898 Phone: 650-813-7696 7899 Fax: 650-813-6860 7900 e-mail: robert.herriot@pahv.xerox.com 7902 Roger deBry 7903 Utah Valley State College 7904 Orem, UT 84058 7906 Phone: (801) 222-8000 7907 EMail: debryro@uvsc.edu 7909 Patrick Powell 7910 Astart Technologies 7911 9475 Chesapeake Dr., Suite D 7912 San Diego, CA 95123 7914 Phone: (619) 874-6543 7915 Fax: (619) 279-8424 7916 e-mail: papowell@astart.com 7918 IPP Mailing List: ipp@pwg.org 7919 IPP Mailing List Subscription: ipp-request@pwg.org 7920 IPP Web Page: http://www.pwg.org/ipp/ 7922 Implementers of this specification document are encouraged to join IPP 7923 Mailing List in order to participate in any discussions of clarification 7924 issues and review of registration proposals for additional attributes 7925 and values. 7927 Other Participants: 7929 deBry, Hastings, Herriot, Isaacson, Powell 7930 Expires August 23, 2000 7931 Chuck Adams - Tektronix Shivaun Albright - HP 7932 Stefan Andersson - Axis Jeff Barnett - IBM 7933 Ron Bergman - Hitachi Koki Imaging Dennis Carney - IBM 7934 Systems 7935 Keith Carter - IBM Angelo Caruso - Xerox 7936 Rajesh Chawla - TR Computing Nancy Chen - Okidata 7937 Solutions 7938 Josh Cohen - Microsoft Jeff Copeland - QMS 7939 Andy Davidson - Tektronix Roger deBry - IBM 7940 Maulik Desai - Auco Mabry Dozier - QMS 7941 Lee Farrell - Canon Information Satoshi Fujitami - Ricoh 7942 Systems 7943 Steve Gebert - IBM Sue Gleeson - Digital 7944 Charles Gordon - Osicom Brian Grimshaw - Apple 7945 Jerry Hadsell - IBM Richard Hart - Digital 7946 Tom Hastings - Xerox Henrik Holst - I-data 7947 Stephen Holmstead Zhi-Hong Huang - Zenographics 7948 Scott Isaacson - Novell Babek Jahromi - Microsoft 7949 Swen Johnson - Xerox David Kellerman - Northlake 7950 Software 7951 Robert Kline - TrueSpectra Charles Kong - Panasonic 7952 Carl Kugler - IBM Dave Kuntz - Hewlett-Packard 7953 Takami Kurono - Brother Rick Landau - Digital 7954 Scott Lawrence - Agranot Systems Greg LeClair - Epson 7955 Dwight Lewis - Lexmark Harry Lewis - IBM 7956 Tony Liao - Vivid Image Roy Lomicka - Digital 7957 Pete Loya - HP Ray Lutz - Cognisys 7958 Mike MacKay - Novell, Inc. David Manchala - Xerox 7959 Carl-Uno Manros - Xerox Jay Martin - Underscore 7960 Stan McConnell - Xerox Larry Masinter - Xerox 7961 Sandra Matts - Hewlett Packard Peter Michalek - Shinesoft 7962 Ira McDonald - High North Inc. Mike Moldovan - G3 Nova 7963 Tetsuya Morita - Ricoh Yuichi Niwa - Ricoh 7964 Pat Nogay - IBM Ron Norton - Printronics 7965 Hugo Parra, Novell Bob Pentecost - Hewlett-Packard 7966 Patrick Powell - Astart Jeff Rackowitz - Intermec 7967 Technologies 7968 Eric Random - Peerless Rob Rhoads - Intel 7969 Xavier Riley - Xerox Gary Roberts - Ricoh 7970 David Roach - Unisys Stuart Rowley - Kyocera 7971 Yuji Sasaki - Japan Computer Richard Schneider - Epson 7972 Industry 7973 Kris Schoff - HP Katsuaki Sekiguchi - Canon 7974 Information Systems 7975 Bob Setterbo - Adobe Gail Songer - Peerless 7976 Hideki Tanaka - Cannon Information Devon Taylor - Novell, Inc. 7977 Systems 7978 Mike Timperman - Lexmark Atsushi Uchino - Epson 7979 Shigeru Ueda - Canon Bob Von Andel - Allegro Software 7980 William Wagner - NetSilicon/DPI Jim Walker - DAZEL 7981 Chris Wellens - Interworking Labs Trevor Wells - Hewlett Packard 7982 Craig Whittle - Sharp Labs Rob Whittle - Novell, Inc. 7983 Jasper Wong - Xionics Don Wright - Lexmark 7985 deBry, Hastings, Herriot, Isaacson, Powell 7986 Expires August 23, 2000 7987 Michael Wu - Heidelberg Digital Rick Yardumian - Xerox 7988 Michael Yeung - Canon Information Lloyd Young - Lexmark 7989 Systems 7990 Atsushi Yuki - Kyocera Peter Zehler - Xerox 7991 William Zhang- Canon Information Frank Zhao - Panasonic 7992 Systems 7993 Steve Zilles - Adobe Rob Zirnstein - Canon Information 7994 Systems 7996 deBry, Hastings, Herriot, Isaacson, Powell 7997 Expires August 23, 2000 7998 11. Formats for IPP Registration Proposals 8000 In order to propose an IPP extension for registration, the proposer must 8001 submit an application to IANA by email to "iana@iana.org" or by filling 8002 out the appropriate form on the IANA web pages (http://www.iana.org). 8003 This section specifies the required information and the formats for 8004 proposing registrations of extensions to IPP as provided in Section 6 8005 for: 8007 1. type2 'keyword' attribute values 8008 2. type3 'keyword' attribute values 8009 3. type2 'enum' attribute values 8010 4. type3 'enum' attribute values 8011 5. attributes 8012 6. attribute syntaxes 8013 7. operations 8014 8. status codes 8015 9. out-of-band attribute values 8017 11.1 Type2 keyword attribute values registration 8019 Type of registration: type2 keyword attribute value 8020 Name of attribute to which this keyword specification is to be added: 8021 Proposed keyword name of this keyword value: 8022 Specification of this keyword value (follow the style of IPP Model 8023 Section 4.1.2.3): 8024 Name of proposer: 8025 Address of proposer: 8026 Email address of proposer: 8028 Note: For type2 keywords, the Designated Expert will be the point of 8029 contact for the approved registration specification, if any maintenance 8030 of the registration specification is needed. 8032 11.2 Type3 keyword attribute values registration 8034 Type of registration: type3 keyword attribute value 8035 Name of attribute to which this keyword specification is to be added: 8036 Proposed keyword name of this keyword value: 8037 Specification of this keyword value (follow the style of IPP Model 8038 Section 4.1.2.3): 8039 Name of proposer: 8040 Address of proposer: 8041 Email address of proposer: 8043 Note: For type3 keywords, the proposer will be the point of contact for 8044 the approved registration specification, if any maintenance of the 8045 registration specification is needed. 8047 11.3 Type2 enum attribute values registration 8049 Type of registration: type2 enum attribute value 8050 Name of attribute to which this enum specification is to be added: 8052 deBry, Hastings, Herriot, Isaacson, Powell 8053 Expires August 23, 2000 8054 Keyword symbolic name of this enum value: 8055 Numeric value (to be assigned by the IPP Designated Expert in 8056 consultation with IANA): 8057 Specification of this enum value (follow the style of IPP Model Section 8058 4.1.4): 8059 Name of proposer: 8060 Address of proposer: 8061 Email address of proposer: 8063 Note: For type2 enums, the Designated Expert will be the point of 8064 contact for the approved registration specification, if any maintenance 8065 of the registration specification is needed. 8067 11.4 Type3 enum attribute values registration 8069 Type of registration: type3 enum attribute value 8070 Name of attribute to which this enum specification is to be added: 8071 Keyword symbolic name of this enum value: 8072 Numeric value (to be assigned by the IPP Designated Expert in 8073 consultation with IANA): 8074 Specification of this enum value (follow the style of IPP Model Section 8075 4.1.4): 8076 Name of proposer: 8077 Address of proposer: 8078 Email address of proposer: 8080 Note: For type3 enums, the proposer will be the point of contact for 8081 the approved registration specification, if any maintenance of the 8082 registration specification is needed. 8084 11.5 Attribute registration 8086 Type of registration: attribute 8087 Proposed keyword name of this attribute: 8088 Types of attribute (Operation, Job Template, Job Description, Printer 8089 Description): 8090 Operations to be used with if the attribute is an operation attribute: 8091 Object (Job, Printer, etc. if bound to an object): 8092 Attribute syntax(es) (include 1setOf and range as in Section 4.2): 8093 If attribute syntax is 'keyword' or 'enum', is it type2 or type3: 8094 If this is a Printer attribute, MAY the value returned depend on 8095 "document-format" (See Section 6.2): 8096 If this is a Job Template attribute, how does its specification depend 8097 on the value of the "multiple-document-handling" attribute: 8098 Specification of this attribute (follow the style of IPP Model Section 8099 4.2): 8100 Name of proposer: 8101 Address of proposer: 8102 Email address of proposer: 8104 Note: For attributes, the IPP Designated Expert will be the point of 8105 contact for the approved registration specification, if any maintenance 8106 of the registration specification is needed. 8108 deBry, Hastings, Herriot, Isaacson, Powell 8109 Expires August 23, 2000 8110 11.6 Attribute Syntax registration 8112 Type of registration: attribute syntax 8113 Proposed name of this attribute syntax: 8114 Type of attribute syntax (integer, octetString, character-string, see 8115 [IPP-PRO]): 8116 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8117 Expert in consultation with IANA): 8118 Specification of this attribute (follow the style of IPP Model Section 8119 4.1): 8120 Name of proposer: 8121 Address of proposer: 8122 Email address of proposer: 8124 Note: For attribute syntaxes, the IPP Designated Expert will be the 8125 point of contact for the approved registration specification, if any 8126 maintenance of the registration specification is needed. 8128 11.7 Operation registration 8130 Type of registration: operation 8131 Proposed name of this operation: 8132 Numeric operation-id value according to section 4.4.15 (to be assigned 8133 by the IPP Designated Expert in consultation with IANA): 8134 Object Target (Job, Printer, etc. that operation is upon): 8135 Specification of this operation (follow the style of IPP Model Section 8136 3): 8137 Name of proposer: 8138 Address of proposer: 8139 Email address of proposer: 8141 Note: For operations, the IPP Designated Expert will be the point of 8142 contact for the approved registration specification, if any maintenance 8143 of the registration specification is needed. 8145 11.8 Attribute Group registration 8147 Type of registration: attribute group 8148 Proposed name of this attribute group: 8149 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8150 Expert in consultation with IANA): 8151 Operation requests and group number for each operation in which the 8152 attribute group occurs: 8153 Operation responses and group number for each operation in which the 8154 attribute group occurs: 8155 Specification of this attribute group (follow the style of IPP Model 8156 Section 3): 8157 Name of proposer: 8158 Address of proposer: 8159 Email address of proposer: 8161 deBry, Hastings, Herriot, Isaacson, Powell 8162 Expires August 23, 2000 8163 Note: For attribute groups, the IPP Designated Expert will be the point 8164 of contact for the approved registration specification, if any 8165 maintenance of the registration specification is needed. 8167 11.9 Status code registration 8169 Type of registration: status code 8170 Keyword symbolic name of this status code value: 8171 Numeric value (to be assigned by the IPP Designated Expert in 8172 consultation with IANA): 8173 Operations that this status code may be used with: 8174 Specification of this status code (follow the style of IPP Model Section 8175 13 APPENDIX B: Status Codes and Suggested Status Code Messages): 8176 Name of proposer: 8177 Address of proposer: 8178 Email address of proposer: 8180 Note: For status codes, the Designated Expert will be the point of 8181 contact for the approved registration specification, if any maintenance 8182 of the registration specification is needed. 8184 11.10 Out-of-band Attribute Value registration 8186 Type of registration: out-of-band attribute value 8187 Proposed name of this out-of-band attribute value: 8188 Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated 8189 Expert in consultation with IANA): 8190 Operations that this out-of-band attribute value may be used with: 8191 Attributes that this out-of-band attribute value may be used with: 8192 Specification of this out-of-band attribute value (follow the style of 8193 the beginning of IPP Model Section 4.1): 8194 Name of proposer: 8195 Address of proposer: 8196 Email address of proposer: 8198 Note: For out-of-band attribute values, the IPP Designated Expert will 8199 be the point of contact for the approved registration specification, if 8200 any maintenance of the registration specification is needed. 8202 12. APPENDIX A: Terminology 8204 This specification document uses the terminology defined in this 8205 section. 8207 12.1 Conformance Terminology 8209 The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", 8210 "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be 8211 interpreted as described in RFC 2119 [RFC2119]. 8213 deBry, Hastings, Herriot, Isaacson, Powell 8214 Expires August 23, 2000 8215 12.1.1 NEED NOT 8217 This term is not included in RFC 2119. The verb "NEED NOT" indicates an 8218 action that the subject of the sentence does not have to implement in 8219 order to claim conformance to the standard. The verb "NEED NOT" is used 8220 instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. 8222 12.2 Model Terminology 8224 12.2.1 Keyword 8226 Keywords are used within this document as identifiers of semantic 8227 entities within the abstract model (see section 4.1.2.3). Attribute 8228 names, some attribute values, attribute syntaxes, and attribute group 8229 names are represented as keywords. 8231 12.2.2 Attributes 8233 An attribute is an item of information that is associated with an 8234 instance of an IPP object. An attribute consists of an attribute name 8235 and one or more attribute values. Each attribute has a specific 8236 attribute syntax. All object attributes are defined in section 4 and 8237 all operation attributes are defined in section 3. 8239 Job Template Attributes are described in section 4.2. The client 8240 optionally supplies Job Template attributes in a create request 8241 (operation requests that create Job objects). The Printer object has 8242 associated attributes which define supported and default values for the 8243 Printer. 8245 12.2.2.1 Attribute Name 8247 Each attribute is uniquely identified in this document by its attribute 8248 name. An attribute name is a keyword. The keyword attribute name is 8249 given in the section header describing that attribute. In running text 8250 in this document, attribute names are indicated inside double quotation 8251 marks (") where the quotation marks are not part of the keyword itself. 8253 12.2.2.2 Attribute Group Name 8255 Related attributes are grouped into named groups. The name of the group 8256 is a keyword. The group name may be used in place of naming all the 8257 attributes in the group explicitly. Attribute groups are defined in 8258 section 3. 8260 12.2.2.3 Attribute Value 8262 Each attribute has one or more values. Attribute values are represented 8263 in the syntax type specified for that attribute. In running text in this 8265 deBry, Hastings, Herriot, Isaacson, Powell 8266 Expires August 23, 2000 8267 document, attribute values are indicated inside single quotation marks 8268 ('), whether their attribute syntax is keyword, integer, text, etc. 8269 where the quotation marks are not part of the value itself. 8271 12.2.2.4 Attribute Syntax 8273 Each attribute is defined using an explicit syntax type. In this 8274 document, each syntax type is defined as a keyword with specific 8275 meaning. The "Encoding and Transport" document [IPP-PRO] indicates the 8276 actual "on-the-wire" encoding rules for each syntax type. Attribute 8277 syntax types are defined in section 4.1. 8279 12.2.3 Supports 8281 By definition, a Printer object supports an attribute only if that 8282 Printer object responds with the corresponding attribute populated with 8283 some value(s) in a response to a query for that attribute. A Printer 8284 object supports an attribute value if the value is one of the Printer 8285 object's "supported values" attributes. The device behind a Printer 8286 object may exhibit a behavior that corresponds to some IPP attribute, 8287 but if the Printer object, when queried for that attribute, doesn't 8288 respond with the attribute, then as far as IPP is concerned, that 8289 implementation does not support that feature. If the Printer object's 8290 "xxx-supported" attribute is not populated with a particular value (even 8291 if that value is a legal value for that attribute), then that Printer 8292 object does not support that particular value. 8294 A conforming implementation MUST support all REQUIRED attributes. 8295 However, even for REQUIRED attributes, conformance to IPP does not 8296 mandate that all implementations support all possible values 8297 representing all possible job processing behaviors and features. For 8298 example, if a given instance of a Printer supports only certain document 8299 formats, then that Printer responds with the "document-format-supported" 8300 attribute populated with a set of values, possibly only one, taken from 8301 the entire set of possible values defined for that attribute. This 8302 limited set of values represents the Printer's set of supported document 8303 formats. Supporting an attribute and some set of values for that 8304 attribute enables IPP end users to be aware of and make use of those 8305 features associated with that attribute and those values. If an 8306 implementation chooses to not support an attribute or some specific 8307 value, then IPP end users would have no ability to make use of that 8308 feature within the context of IPP itself. However, due to existing 8309 practice and legacy systems which are not IPP aware, there might be some 8310 other mechanism outside the scope of IPP to control or request the 8311 "unsupported" feature (such as embedded instructions within the document 8312 data itself). 8314 For example, consider the "finishings-supported" attribute. 8316 1) If a Printer object is not physically capable of stapling, the 8317 "finishings-supported" attribute MUST NOT be populated with the 8318 value of 'staple'. 8320 deBry, Hastings, Herriot, Isaacson, Powell 8321 Expires August 23, 2000 8322 2) A Printer object is physically capable of stapling, however an 8323 implementation chooses not to support stapling in the IPP 8324 "finishings" attribute. In this case, 'staple' MUST NOT be a value 8325 in the "finishings-supported" Printer object attribute. Without 8326 support for the value 'staple', an IPP end user would have no means 8327 within the protocol itself to request that a Job be stapled. 8328 However, an existing document data formatter might be able to 8329 request that the document be stapled directly with an embedded 8330 instruction within the document data. In this case, the IPP 8331 implementation does not "support" stapling, however the end user is 8332 still able to have some control over the stapling of the completed 8333 job. 8334 3) A Printer object is physically capable of stapling, and an 8335 implementation chooses to support stapling in the IPP "finishings" 8336 attribute. In this case, 'staple' MUST be a value in the 8337 "finishings-supported" Printer object attribute. Doing so, would 8338 enable end users to be aware of and make use of the stapling 8339 feature using IPP attributes. 8341 Even though support for Job Template attributes by a Printer object is 8342 OPTIONAL, it is RECOMMENDED that if the device behind a Printer object 8343 is capable of realizing any feature or function that corresponds to an 8344 IPP attribute and some associated value, then that implementation SHOULD 8345 support that IPP attribute and value. 8347 The set of values in any of the supported value attributes is set 8348 (populated) by some administrative process or automatic sensing 8349 mechanism that is outside the scope of this IPP/1.1 document. For 8350 administrative policy and control reasons, an administrator may choose 8351 to make only a subset of possible values visible to the end user. In 8352 this case, the real output device behind the IPP Printer abstraction may 8353 be capable of a certain feature, however an administrator is specifying 8354 that access to that feature not be exposed to the end user through the 8355 IPP protocol. Also, since a Printer object may represent a logical 8356 print device (not just a physical device) the actual process for 8357 supporting a value is undefined and left up to the implementation. 8358 However, if a Printer object supports a value, some manual human action 8359 may be needed to realize the semantic action associated with the value, 8360 but no end user action is required. 8362 For example, if one of the values in the "finishings-supported" 8363 attribute is 'staple', the actual process might be an automatic staple 8364 action by a physical device controlled by some command sent to the 8365 device. Or, the actual process of stapling might be a manual action by 8366 an operator at an operator attended Printer object. 8368 For another example of how supported attributes function, consider a 8369 system administrator who desires to control all print jobs so that no 8370 job sheets are printed in order to conserve paper. To force no job 8371 sheets, the system administrator sets the only supported value for the 8372 "job-sheets-supported" attribute to 'none'. In this case, if a client 8373 requests anything except 'none', the create request is rejected or the 8375 deBry, Hastings, Herriot, Isaacson, Powell 8376 Expires August 23, 2000 8377 "job-sheets" value is ignored (depending on the value of "ipp-attribute- 8378 fidelity"). To force the use of job start/end sheets on all jobs, the 8379 administrator does not include the value 'none' in the "job-sheets- 8380 supported" attribute. In this case, if a client requests 'none', the 8381 create request is rejected or the "job-sheets" value is ignored (again 8382 depending on the value of "ipp-attribute-fidelity"). 8384 12.2.4 print-stream page 8386 A "print-stream page" is a page according to the definition of pages in 8387 the language used to express the document data. 8389 12.2.5 impression 8391 An "impression" is the image (possibly many print-stream pages in 8392 different configurations) imposed onto a single media page. 8394 13. APPENDIX B: Status Codes and Suggested Status Code Messages 8396 This section defines status code enum keywords and values that are used 8397 to provide semantic information on the results of an operation request. 8398 Each operation response MUST include a status code. The response MAY 8399 also contain a status message that provides a short textual description 8400 of the status. The status code is intended for use by automata, and the 8401 status message is intended for the human end user. Since the status 8402 message is an OPTIONAL component of the operation response, an IPP 8403 application (i.e., a browser, GUI, print driver or gateway) is NOT 8404 REQUIRED to examine or display the status message, since it MAY not be 8405 returned to the application. 8407 The prefix of the status keyword defines the class of response as 8408 follows: 8410 "informational" - Request received, continuing process 8411 "successful" - The action was successfully received, understood, and 8412 accepted 8413 "redirection" - Further action must be taken in order to complete the 8414 request 8415 "client-error" - The request contains bad syntax or cannot be 8416 fulfilled 8417 "server-error" - The IPP object failed to fulfill an apparently 8418 valid request 8420 As with type2 enums, IPP status codes are extensible. IPP clients are 8421 NOT REQUIRED to understand the meaning of all registered status codes, 8422 though such understanding is obviously desirable. However, IPP clients 8423 MUST understand the class of any status code, as indicated by the 8424 prefix, and treat any unrecognized response as being equivalent to the 8425 first status code of that class, with the exception that an unrecognized 8426 response MUST NOT be cached. For example, if an unrecognized status 8428 deBry, Hastings, Herriot, Isaacson, Powell 8429 Expires August 23, 2000 8430 code of "client-error-xxx-yyy" is received by the client, it can safely 8431 assume that there was something wrong with its request and treat the 8432 response as if it had received a "client-error-bad-request" status code. 8433 In such cases, IPP applications SHOULD present the OPTIONAL message (if 8434 present) to the end user since the message is likely to contain human 8435 readable information which will help to explain the unusual status. The 8436 name of the enum is the suggested status message for US English. 8438 The status code values range from 0x0000 to 0x7FFF. The value ranges 8439 for each status code class are as follows: 8441 "successful" - 0x0000 to 0x00FF 8442 "informational" - 0x0100 to 0x01FF 8443 "redirection" - 0x0200 to 0x02FF 8444 "client-error" - 0x0400 to 0x04FF 8445 "server-error" - 0x0500 to 0x05FF 8447 The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to 8448 5) is reserved for vendor use within each status code class. Values 8449 0x0600 to 0x7FFF are reserved for future assignment by IETF standards 8450 track documents and MUST NOT be used. 8452 13.1 Status Codes 8454 Each status code is described below. Section 13.1.5.9 contains a table 8455 that indicates which status codes apply to which operations. The 8456 Implementer's Guide [IPP-IIG] describe the suggested steps for 8457 processing IPP attributes for all operations, including returning status 8458 codes. 8460 13.1.1 Informational 8462 This class of status code indicates a provisional response and is to be 8463 used for informational purposes only. 8465 There are no status codes defined in IPP/1.1 for this class of status 8466 code. 8468 13.1.2 Successful Status Codes 8470 This class of status code indicates that the client's request was 8471 successfully received, understood, and accepted. 8473 13.1.2.1 successful-ok (0x0000) 8475 The request has succeeded and no request attributes were substituted or 8476 ignored. In the case of a response to a create request, the 8477 'successful-ok' status code indicates that the request was successfully 8478 received and validated, and that the Job object has been created; it 8479 does not indicate that the job has been processed. The transition of 8481 deBry, Hastings, Herriot, Isaacson, Powell 8482 Expires August 23, 2000 8483 the Job object into the 'completed' state is the only indicator that the 8484 job has been printed. 8486 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 8488 The request has succeeded, but some supplied (1) attributes were ignored 8489 or (2) unsupported values were substituted with supported values or were 8490 ignored in order to perform the operation without rejecting it. 8491 Unsupported attributes, attribute syntaxes, or values MUST be returned 8492 in the Unsupported Attributes group of the response for all operations. 8493 There is an exception to this rule for the query operations: Get- 8494 Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- 8495 attributes" operation attribute only. When the supplied values of the 8496 "requested-attributes" operation attribute are requesting attributes 8497 that are not supported, the IPP object MAY, but is NOT REQUIRED to, 8498 return the "requested-attributes" attribute in the Unsupported Attribute 8499 response group (with the unsupported values only). See sections 3.1.7 8500 and 3.2.1.2. 8502 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 8504 The request has succeeded, but some supplied attribute values conflicted 8505 with the values of other supplied attributes. These conflicting values 8506 were either (1) substituted with (supported) values or (2) the 8507 attributes were removed in order to process the job without rejecting 8508 it. Attributes or values which conflict with other attributes and have 8509 been substituted or ignored MUST be returned in the Unsupported 8510 Attributes group of the response for all operations as supplied by the 8511 client. See sections 3.1.7 and 3.2.1.2. 8513 13.1.3 Redirection Status Codes 8515 This class of status code indicates that further action needs to be 8516 taken to fulfill the request. 8518 There are no status codes defined in IPP/1.1 for this class of status 8519 code. 8521 13.1.4 Client Error Status Codes 8523 This class of status code is intended for cases in which the client 8524 seems to have erred. The IPP object SHOULD return a message containing 8525 an explanation of the error situation and whether it is a temporary or 8526 permanent condition. 8528 13.1.4.1 client-error-bad-request (0x0400) 8530 The request could not be understood by the IPP object due to malformed 8531 syntax (such as the value of a fixed length attribute whose length does 8532 not match the prescribed length for that attribute - see the 8534 deBry, Hastings, Herriot, Isaacson, Powell 8535 Expires August 23, 2000 8536 Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat 8537 the request without modifications. 8539 13.1.4.2 client-error-forbidden (0x0401) 8541 The IPP object understood the request, but is refusing to fulfill it. 8542 Additional authentication information or authorization credentials will 8543 not help and the request SHOULD NOT be repeated. This status code is 8544 commonly used when the IPP object does not wish to reveal exactly why 8545 the request has been refused or when no other response is applicable. 8547 13.1.4.3 client-error-not-authenticated (0x0402) 8549 The request requires user authentication. The IPP client may repeat the 8550 request with suitable authentication information. If the request already 8551 included authentication information, then this status code indicates 8552 that authorization has been refused for those credentials. If this 8553 response contains the same challenge as the prior response, and the user 8554 agent has already attempted authentication at least once, then the 8555 response message may contain relevant diagnostic information. This 8556 status codes reveals more information than "client-error-forbidden". 8558 13.1.4.4 client-error-not-authorized (0x0403) 8560 The requester is not authorized to perform the request. Additional 8561 authentication information or authorization credentials will not help 8562 and the request SHOULD NOT be repeated. This status code is used when 8563 the IPP object wishes to reveal that the authentication information is 8564 understandable, however, the requester is explicitly not authorized to 8565 perform the request. This status codes reveals more information than 8566 "client-error-forbidden" and "client-error-not-authenticated". 8568 13.1.4.5 client-error-not-possible (0x0404) 8570 This status code is used when the request is for something that can not 8571 happen. For example, there might be a request to cancel a job that has 8572 already been canceled or aborted by the system. The IPP client SHOULD 8573 NOT repeat the request. 8575 13.1.4.6 client-error-timeout (0x0405) 8577 The client did not produce a request within the time that the IPP object 8578 was prepared to wait. For example, a client issued a Create-Job 8579 operation and then, after a long period of time, issued a Send-Document 8580 operation and this error status code was returned in response to the 8581 Send-Document request (see section 3.3.1). The IPP object might have 8582 been forced to clean up resources that had been held for the waiting 8583 additional Documents. The IPP object was forced to close the Job since 8584 the client took too long. The client SHOULD NOT repeat the request 8585 without modifications. 8587 deBry, Hastings, Herriot, Isaacson, Powell 8588 Expires August 23, 2000 8589 13.1.4.7 client-error-not-found (0x0406) 8591 The IPP object has not found anything matching the request URI. No 8592 indication is given of whether the condition is temporary or permanent. 8593 For example, a client with an old reference to a Job (a URI) tries to 8594 cancel the Job, however in the mean time the Job might have been 8595 completed and all record of it at the Printer has been deleted. This 8596 status code, 'client-error-not-found' is returned indicating that the 8597 referenced Job can not be found. This error status code is also used 8598 when a client supplies a URI as a reference to the document data in 8599 either a Print-URI or Send-URI operation, but the document can not be 8600 found. 8602 In practice, an IPP application should avoid a not found situation by 8603 first querying and presenting a list of valid Printer URIs and Job URIs 8604 to the end-user. 8606 13.1.4.8 client-error-gone (0x0407) 8608 The requested object is no longer available and no forwarding address is 8609 known. This condition should be considered permanent. Clients with 8610 link editing capabilities should delete references to the request URI 8611 after user approval. If the IPP object does not know or has no facility 8612 to determine, whether or not the condition is permanent, the status code 8613 "client-error-not-found" should be used instead. 8615 This response is primarily intended to assist the task of maintenance by 8616 notifying the recipient that the resource is intentionally unavailable 8617 and that the IPP object administrator desires that remote links to that 8618 resource be removed. It is not necessary to mark all permanently 8619 unavailable resources as "gone" or to keep the mark for any length of 8620 time -- that is left to the discretion of the IPP object administrator. 8622 13.1.4.9 client-error-request-entity-too-large (0x0408) 8624 The IPP object is refusing to process a request because the request 8625 entity is larger than the IPP object is willing or able to process. An 8626 IPP Printer returns this status code when it limits the size of print 8627 jobs and it receives a print job that exceeds that limit or when the 8628 attributes are so many that their encoding causes the request entity to 8629 exceed IPP object capacity. 8631 13.1.4.10 client-error-request-value-too-long (0x0409) 8633 The IPP object is refusing to service the request because one or more of 8634 the client-supplied attributes has a variable length value that is 8635 longer than the maximum length specified for that attribute. The IPP 8636 object might not have sufficient resources (memory, buffers, etc.) to 8637 process (even temporarily), interpret, and/or ignore a value larger than 8638 the maximum length. Another use of this error code is when the IPP 8639 object supports the processing of a large value that is less than the 8641 deBry, Hastings, Herriot, Isaacson, Powell 8642 Expires August 23, 2000 8643 maximum length, but during the processing of the request as a whole, the 8644 object may pass the value onto some other system component which is not 8645 able to accept the large value. For more details, see the Implementer's 8646 Guide [IPP-IIG] . 8648 Note: For attribute values that are URIs, this rare condition is only 8649 likely to occur when a client has improperly submitted a request with 8650 long query information (e.g. an IPP application allows an end-user to 8651 enter an invalid URI), when the client has descended into a URI "black 8652 hole" of redirection (e.g., a redirected URI prefix that points to a 8653 suffix of itself), or when the IPP object is under attack by a client 8654 attempting to exploit security holes present in some IPP objects using 8655 fixed-length buffers for reading or manipulating the Request-URI. 8657 13.1.4.11 client-error-document-format-not-supported (0x040A) 8659 The IPP object is refusing to service the request because the document 8660 data is in a format, as specified in the "document-format" operation 8661 attribute, that is not supported by the Printer object. This error is 8662 returned independent of the client-supplied "ipp-attribute-fidelity". 8663 The Printer object MUST return this status code, even if there are other 8664 Job Template attributes that are not supported as well, since this error 8665 is a bigger problem than with Job Template attributes. See sections 8666 3.1.6.1, 3.1.7, and 3.2.1.1. 8668 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) 8670 In a create request, if the Printer object does not support one or more 8671 attributes, attribute syntaxes, or attribute values supplied in the 8672 request and the client supplied the "ipp-attribute-fidelity" operation 8673 attribute with the 'true' value, the Printer object MUST return this 8674 status code. The Printer object MUST also return in the Unsupported 8675 Attributes Group all the attributes and/or values supplied by the client 8676 that are not supported. See section 3.1.7. For example, if the request 8677 indicates 'iso-a4' media, but that media type is not supported by the 8678 Printer object. Or, if the client supplies a Job Template attribute and 8679 the attribute itself is not even supported by the Printer. If the "ipp- 8680 attribute-fidelity" attribute is 'false', the Printer MUST ignore or 8681 substitute values for unsupported Job Template attributes and values 8682 rather than reject the request and return this status code. 8684 For any operation where a client requests attributes (such as a Get- 8685 Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the 8686 IPP object does not support one or more of the requested attributes, the 8687 IPP object simply ignores the unsupported requested attributes and 8688 processes the request as if they had not been supplied, rather than 8689 returning this status code. In this case, the IPP object MUST return 8690 the 'successful-ok-ignored-or-substituted-attributes' status code and 8691 MAY return the unsupported attributes as values of the "requested- 8692 attributes" in the Unsupported Attributes Group (see section 13.1.2.2). 8694 deBry, Hastings, Herriot, Isaacson, Powell 8695 Expires August 23, 2000 8696 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 8698 The scheme of the client-supplied URI in a Print-URI or a Send-URI 8699 operation is not supported. See sections 3.1.6.1 and 3.1.7. 8701 13.1.4.14 client-error-charset-not-supported (0x040D) 8703 For any operation, if the IPP Printer does not support the charset 8704 supplied by the client in the "attributes-charset" operation attribute, 8705 the Printer MUST reject the operation and return this status and any 8706 'text' or 'name' attributes using the 'utf-8' charset (see Section 8707 3.1.4.1). See sections 3.1.6.1 and 3.1.7. 8709 13.1.4.15 client-error-conflicting-attributes (0x040E) 8711 The request is rejected because some attribute values conflicted with 8712 the values of other attributes which this document does not permit to be 8713 substituted or ignored. The Printer object MUST also return in the 8714 Unsupported Attributes Group the conflicting attributes supplied by the 8715 client. See sections 3.1.7 and 3.2.1.2. 8717 13.1.4.16 client-error-compression-not-supported (0x040F) 8719 The IPP object is refusing to service the request because the document 8720 data, as specified in the "compression" operation attribute, is 8721 compressed in a way that is not supported by the Printer object. This 8722 error is returned independent of the client-supplied "ipp-attribute- 8723 fidelity". The Printer object MUST return this status code, even if 8724 there are other Job Template attributes that are not supported as well, 8725 since this error is a bigger problem than with Job Template attributes. 8726 See sections 3.1.6.1, 3.1.7, and 3.2.1.1. 8728 13.1.4.17 client-error-compression-error (0x0410) 8730 The IPP object is refusing to service the request because the document 8731 data cannot be decompressed when using the algorithm specified by the 8732 "compression" operation attribute. This error is returned independent 8733 of the client-supplied "ipp-attribute-fidelity". The Printer object 8734 MUST return this status code, even if there are Job Template attributes 8735 that are not supported as well, since this error is a bigger problem 8736 than with Job Template attributes. See sections 3.1.7 and 3.2.1.1. 8738 13.1.4.18 client-error-document-format-error (0x0411) 8740 The IPP object is refusing to service the request because Printer 8741 encountered an error in the document data while interpreting it. This 8742 error is returned independent of the client-supplied "ipp-attribute- 8743 fidelity". The Printer object MUST return this status code, even if 8744 there are Job Template attributes that are not supported as well, since 8746 deBry, Hastings, Herriot, Isaacson, Powell 8747 Expires August 23, 2000 8748 this error is a bigger problem than with Job Template attributes. See 8749 sections 3.1.7 and 3.2.1.1. 8751 13.1.4.19 client-error-document-access-error (0x0412) 8753 The IPP object is refusing to service the Print-URI or Send-URI request 8754 because Printer encountered an access error while attempting to validate 8755 the accessibility or access the document data specified in the 8756 "document-uri" operation attribute. The Printer MAY also return a 8757 specific document access error code using the "document-access-error" 8758 operation attribute (see section 3.1.6.4). This error is returned 8759 independent of the client-supplied "ipp-attribute-fidelity". The 8760 Printer object MUST return this status code, even if there are Job 8761 Template attributes that are not supported as well, since this error is 8762 a bigger problem than with Job Template attributes. See sections 8763 3.1.6.1 and 3.1.7. 8765 13.1.5 Server Error Status Codes 8767 This class of status codes indicates cases in which the IPP object is 8768 aware that it has erred or is incapable of performing the request. The 8769 IPP object SHOULD include a message containing an explanation of the 8770 error situation, and whether it is a temporary or permanent condition. 8772 13.1.5.1 server-error-internal-error (0x0500) 8774 The IPP object encountered an unexpected condition that prevented it 8775 from fulfilling the request. This error status code differs from 8776 "server-error-temporary-error" in that it implies a more permanent type 8777 of internal error. It also differs from "server-error-device-error" in 8778 that it implies an unexpected condition (unlike a paper-jam or out-of- 8779 toner problem which is undesirable but expected). This error status 8780 code indicates that probably some knowledgeable human intervention is 8781 required. 8783 13.1.5.2 server-error-operation-not-supported (0x0501) 8785 The IPP object does not support the functionality required to fulfill 8786 the request. This is the appropriate response when the IPP object does 8787 not recognize an operation or is not capable of supporting it. See 8788 sections 3.1.6.1 and 3.1.7. 8790 13.1.5.3 server-error-service-unavailable (0x0502) 8792 The IPP object is currently unable to handle the request due to a 8793 temporary overloading or maintenance of the IPP object. The implication 8794 is that this is a temporary condition which will be alleviated after 8795 some delay. If known, the length of the delay may be indicated in the 8796 message. If no delay is given, the IPP application should handle the 8797 response as it would for a "server-error-temporary-error" response. If 8799 deBry, Hastings, Herriot, Isaacson, Powell 8800 Expires August 23, 2000 8801 the condition is more permanent, the error status codes "client-error- 8802 gone" or "client-error-not-found" could be used. 8804 13.1.5.4 server-error-version-not-supported (0x0503) 8806 The IPP object does not support, or refuses to support, the IPP protocol 8807 version that was supplied as the value of the "version-number" operation 8808 parameter in the request. The IPP object is indicating that it is 8809 unable or unwilling to complete the request using the same major and 8810 minor version number as supplied in the request other than with this 8811 error message. The error response SHOULD contain a "status-message" 8812 attribute (see section 3.1.6.2) describing why that version is not 8813 supported and what other versions are supported by that IPP object. See 8814 sections 3.1.6.1, 3.1.7, and 3.1.8. 8816 The error response MUST identify in the "version-number" operation 8817 parameter the closest version number that the IPP object does support. 8818 For example, if a client supplies version '1.0' and an IPP/1.1 object 8819 supports version '1.0', then it responds with version '1.0' in all 8820 responses to such a request. If the IPP/1.1 object does not support 8821 version '1.0', then it should accept the request and respond with 8822 version '1.1' or may reject the request and respond with this error code 8823 and version '1.1'. If a client supplies a version '1.2', the IPP/1.1 8824 object should accept the request and return version '1.1' or may reject 8825 the request and respond with this error code and version '1.1'. See 8826 sections 3.1.8 and 4.4.14. 8828 13.1.5.5 server-error-device-error (0x0504) 8830 A printer error, such as a paper jam, occurs while the IPP object 8831 processes a Print or Send operation. The response contains the true Job 8832 Status (the values of the "job-state" and "job-state-reasons" 8833 attributes). Additional information can be returned in the OPTIONAL 8834 "job-state-message" attribute value or in the OPTIONAL status message 8835 that describes the error in more detail. This error status code is only 8836 returned in situations where the Printer is unable to accept the create 8837 request because of such a device error. For example, if the Printer is 8838 unable to spool, and can only accept one job at a time, the reason it 8839 might reject a create request is that the printer currently has a paper 8840 jam. In many cases however, where the Printer object can accept the 8841 request even though the Printer has some error condition, the 8842 'successful-ok' status code will be returned. In such a case, the 8843 client would look at the returned Job Object Attributes or later query 8844 the Printer to determine its state and state reasons. 8846 13.1.5.6 server-error-temporary-error (0x0505) 8848 A temporary error such as a buffer full write error, a memory overflow 8849 (i.e. the document data exceeds the memory of the Printer), or a disk 8850 full condition, occurs while the IPP Printer processes an operation. 8851 The client MAY try the unmodified request again at some later point in 8853 deBry, Hastings, Herriot, Isaacson, Powell 8854 Expires August 23, 2000 8855 time with an expectation that the temporary internal error condition may 8856 have been cleared. Alternatively, as an implementation option, a 8857 Printer object MAY delay the response until the temporary condition is 8858 cleared so that no error is returned. 8860 13.1.5.7 server-error-not-accepting-jobs (0x0506) 8862 A temporary error indicating that the Printer is not currently accepting 8863 jobs, because the administrator has set the value of the Printer's 8864 "printer-is-accepting-jobs" attribute to 'false' (by means outside the 8865 scope of this IPP/1.1 document). 8867 13.1.5.8 server-error-busy (0x0507) 8869 A temporary error indicating that the Printer is too busy processing 8870 jobs and/or other requests. The client SHOULD try the unmodified request 8871 again at some later point in time with an expectation that the temporary 8872 busy condition will have been cleared. 8874 13.1.5.9 server-error-job-canceled (0x0508) 8876 An error indicating that the job has been canceled by an operator or the 8877 system while the client was transmitting the data to the IPP Printer. 8878 If a job-id and job-uri had been created, then they are returned in the 8879 Print-Job, Send-Document, or Send-URI response as usual; otherwise, no 8880 job-id and job-uri are returned in the response. 8882 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) 8884 The IPP object does not support multiple documents per job and a client 8885 attempted to supply document data with a second Send-Document or Send- 8886 URI operation. 8888 deBry, Hastings, Herriot, Isaacson, Powell 8889 Expires August 23, 2000 8890 13.2 Status Codes for IPP Operations 8892 PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document 8893 SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and 8894 Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job 8896 IPP Operations 8897 IPP Status Keyword PJ PU CJ SD SU V GA GJ C 8898 ------------------ -- -- -- -- -- - -- -- - 8899 successful-ok x x x x x x x x x 8900 successful-ok-ignored-or-substituted- x x x x x x x x x 8901 attributes 8902 successful-ok-conflicting-attributes x x x x x x x x x 8903 client-error-bad-request x x x x x x x x x 8904 client-error-forbidden x x x x x x x x x 8905 client-error-not-authenticated x x x x x x x x x 8906 client-error-not-authorized x x x x x x x x x 8907 client-error-not-possible x x x x x x x x x 8908 client-error-timeout x x 8909 client-error-not-found x x x x x x x x x 8910 client-error-gone x x x x x x x x x 8911 client-error-request-entity-too-large x x x x x x x x x 8912 client-error-request-value-too-long x x x x x x x x x 8913 client-error-document-format-not- x x x x x x 8914 supported 8915 client-error-attributes-or-values-not- x x x x x x x x x 8916 supported 8917 client-error-uri-scheme-not-supported x x 8918 client-error-charset-not-supported x x x x x x x x x 8919 client-error-conflicting-attributes x x x x x x x x x 8920 client-error-compression-not-supported x x x x x 8921 client-error-compression-error x x x x 8922 client-error-document-format-error x x x x 8923 client-error-document-access-error x x 8924 server-error-internal-error x x x x x x x x x 8925 server-error-operation-not-supported x x x x 8926 server-error-service-unavailable x x x x x x x x x 8927 server-error-version-not-supported x x x x x x x x x 8928 server-error-device-error x x x x x 8929 server-error-temporary-error x x x x x 8930 server-error-not-accepting-jobs x x x x 8931 server-error-busy x x x x x x x x x 8932 server-error-job-canceled x x x 8933 server-error-multiple-document-jobs- x x 8934 not-supported 8936 deBry, Hastings, Herriot, Isaacson, Powell 8937 Expires August 23, 2000 8938 HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job 8939 PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs 8941 IPP Operations (cont.) 8942 IPP Status Keyword HJ RJ RS PP RP PJ 8943 ------------------ -- -- -- -- -- -- 8944 successful-ok x x x x x x 8945 successful-ok-ignored-or-substituted- x x x x x x 8946 attributes 8947 successful-ok-conflicting-attributes x x x x x x 8948 client-error-bad-request x x x x x x 8949 client-error-forbidden x x x x x x 8950 client-error-not-authenticated x x x x x x 8951 client-error-not-authorized x x x x x x 8952 client-error-not-possible x x x x x x 8953 client-error-timeout 8954 client-error-not-found x x x x x x 8955 client-error-gone x x x x x x 8956 client-error-request-entity-too-large x x x x x x 8957 client-error-request-value-too-long x x x x x x 8958 client-error-document-format-not- 8959 supported 8960 client-error-attributes-or-values-not- x x x x x x 8961 supported 8962 client-error-uri-scheme-not-supported 8963 client-error-charset-not-supported x x x x x x 8964 client-error-conflicting-attributes x x x x x x 8965 client-error-compression-not-supported 8966 client-error-compression-error 8967 client-error-document-format-error 8968 client-error-document-access-error 8969 server-error-internal-error x x x x x x 8970 server-error-operation-not-supported x x x x x x 8971 server-error-service-unavailable x x x x x x 8972 server-error-version-not-supported x x x x x x 8973 server-error-device-error 8974 server-error-temporary-error x x x x x x 8975 server-error-not-accepting-jobs 8976 server-error-busy x x x x x x 8977 server-error-job-canceled 8978 server-error-multiple-document-jobs- 8979 not-supported 8981 deBry, Hastings, Herriot, Isaacson, Powell 8982 Expires August 23, 2000 8983 14. APPENDIX C: "media" keyword values 8985 14. APPENDIX C: "media" keyword values 8987 Standard keyword values are taken from several sources. 8989 Standard values are defined (taken from DPA[ISO10175] and the Printer 8990 MIB[RFC1759]): 8992 'default': The default medium for the output device 8993 'iso-a4-white': Specifies the ISO A4 white medium: 210 mm x 297 mm 8994 'iso-a4-colored': Specifies the ISO A4 colored medium: 210 mm x 297 8995 mm 8996 'iso-a4-transparent' Specifies the ISO A4 transparent medium: 210 mm 8997 x 297 mm 8998 'iso-a3-white': Specifies the ISO A3 white medium: 297 mm x 420 mm 8999 'iso-a3-colored': Specifies the ISO A3 colored medium: 297 mm x 420 9000 mm 9001 'iso-a5-white': Specifies the ISO A5 white medium: 148 mm x 210 mm 9002 'iso-a5-colored': Specifies the ISO A5 colored medium: 148 mm x 210 9003 mm 9004 'iso-b4-white': Specifies the ISO B4 white medium: 250 mm x 353 mm 9005 'iso-b4-colored': Specifies the ISO B4 colored medium: 250 mm x 353 9006 mm 9007 'iso-b5-white': Specifies the ISO B5 white medium: 176 mm x 250 mm 9008 'iso-b5-colored': Specifies the ISO B5 colored medium: 176 mm x 250 9009 mm 9010 'jis-b4-white': Specifies the JIS B4 white medium: 257 mm x 364 mm 9011 'jis-b4-colored': Specifies the JIS B4 colored medium: 257 mm x 364 9012 mm 9013 'jis-b5-white': Specifies the JIS B5 white medium: 182 mm x 257 mm 9014 'jis-b5-colored': Specifies the JIS B5 colored medium: 182 mm x 257 9015 mm 9017 The following standard values are defined for North American media: 9019 'na-letter-white': Specifies the North American letter white medium 9020 'na-letter-colored': Specifies the North American letter colored 9021 medium 9022 'na-letter-transparent': Specifies the North American letter 9023 transparent medium 9024 'na-legal-white': Specifies the North American legal white medium 9025 'na-legal-colored': Specifies the North American legal colored medium 9027 The following standard values are defined for envelopes: 9029 'iso-b4-envelope': Specifies the ISO B4 envelope medium 9030 'iso-b5-envelope': Specifies the ISO B5 envelope medium 9031 'iso-c3-envelope': Specifies the ISO C3 envelope medium 9032 'iso-c4-envelope': Specifies the ISO C4 envelope medium 9034 deBry, Hastings, Herriot, Isaacson, Powell 9035 Expires August 23, 2000 9036 'iso-c5-envelope': Specifies the ISO C5 envelope medium 9037 'iso-c6-envelope': Specifies the ISO C6 envelope medium 9038 'iso-designated-long-envelope': Specifies the ISO Designated Long 9039 envelope medium 9040 'na-10x13-envelope': Specifies the North American 10x13 envelope 9041 medium 9042 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 9043 'monarch-envelope': Specifies the Monarch envelope 9044 'na-number-10-envelope': Specifies the North American number 10 9045 business envelope medium 9046 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9047 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9048 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9049 'na-number-9-envelope': Specifies the North American number 9 9050 business envelope 9051 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 9052 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 9054 The following standard values are defined for the less commonly used 9055 media-: 9057 'executive-white': Specifies the white executive medium 9058 'folio-white': Specifies the folio white medium 9059 'invoice-white': Specifies the white invoice medium 9060 'ledger-white': Specifies the white ledger medium 9061 'quarto-white': Specified the white quarto medium 9062 'iso-a0-white': Specifies the ISO A0 white medium: 841 mm x 1189 mm 9063 'iso-a0-transparent': Specifies the ISO A0 transparent medium: 841 mm 9064 x 1189 mm 9065 'iso-a0-translucent': Specifies the ISO A0 translucent medium: 841 mm 9066 x 1189 mm 9067 'iso-a1-white': Specifies the ISO A1 white medium: 594 mm x 841 mm 9068 'iso-a1-transparent': Specifies the ISO A1 transparent medium: 594 mm 9069 x 841 mm 9070 'iso-a1-translucent': Specifies the ISO A1 translucent medium: 594 mm 9071 x 841 mm 9072 'iso-a2-white': Specifies the ISO A2 white medium: 420 mm x 594 mm 9073 'iso-a2-transparent': Specifies the ISO A2 transparent medium: 420 mm 9074 x 594 mm 9075 'iso-a2-translucent': Specifies the ISO A2 translucent medium: 420 mm 9076 x 594 mm 9077 'iso-a3-transparent': Specifies the ISO A3 transparent medium: 297 mm 9078 x 420 mm 9079 'iso-a3-translucent': Specifies the ISO A3 translucent medium: 297 mm 9080 x 420 mm 9081 'iso-a4-translucent': Specifies the ISO A4 translucent medium: 210 mm 9082 x 297 mm 9083 'iso-a5-transparent': Specifies the ISO A5 transparent medium: 148 mm 9084 x 210 mm 9085 'iso-a5-translucent': Specifies the ISO A5 translucent medium: 148 mm 9086 x 210 mm 9087 'iso-a6-white': Specifies the ISO A6 white medium: 105 mm x 148 mm 9089 deBry, Hastings, Herriot, Isaacson, Powell 9090 Expires August 23, 2000 9091 'iso-a7-white': Specifies the ISO A7 white medium: 74 mm x 105 mm 9092 'iso-a8-white': Specifies the ISO A8 white medium: 52 mm x 74 mm 9093 'iso-a9-white': Specifies the ISO A9 white medium: 37 mm x 52 mm 9094 'iso-10-white': Specifies the ISO A10 white medium: 26 mm x 37 mm 9095 'iso-b0-white': Specifies the ISO B0 white medium: 1000 mm x 1414 mm 9096 'iso-b1-white': Specifies the ISO B1 white medium: 707 mm x 1000 mm 9097 'iso-b2-white': Specifies the ISO B2 white medium: 500 mm x 707 mm 9098 'iso-b3-white': Specifies the ISO B3 white medium: 353 mm x 500 mm 9099 'iso-b6-white': Specifies the ISO B6 white medium: 125 mm x 176 mm 9100 'iso-b7-white': Specifies the ISO B7 white medium: 88 mm x 125 mm 9101 'iso-b8-white': Specifies the ISO B8 white medium: 62 mm x 88 mm 9102 'iso-b9-white': Specifies the ISO B9 white medium: 44 mm x 62 mm 9103 'iso-b10-white': Specifies the ISO B10 white medium: 31 mm x 44 mm 9104 'jis-b0-white': Specifies the JIS B0 white medium: 1030 mm x 1456 mm 9105 'jis-b0-transparent': Specifies the JIS B0 transparent medium: 1030 9106 mm x 1456 mm 9107 'jis-b0-translucent': Specifies the JIS B0 translucent medium: 1030 9108 mm x 1456 mm 9109 'jis-b1-white': Specifies the JIS B1 white medium: 728 mm x 1030 mm 9110 'jis-b1-transparent': Specifies the JIS B1 transparent medium: 728 mm 9111 x 1030 mm 9112 'jis-b1-translucent': Specifies the JIS B1 translucent medium: 728 mm 9113 x 1030 mm 9114 'jis-b2-white': Specifies the JIS B2 white medium: 515 mm x 728 mm 9115 'jis-b2-transparent': Specifies the JIS B2 transparent medium: 515 mm 9116 x 728 mm 9117 'jis-b2-translucent': Specifies the JIS B2 translucent medium: 515 mm 9118 x 728 mm 9119 'jis-b3-white': Specifies the JIS B3 white medium: 364 mm x 515 mm 9120 'jis-b3-transparent': Specifies the JIS B3 transparent medium: 364 mm 9121 x 515 mm 9122 'jis-b3-translucent': Specifies the JIS B3 translucent medium: 364 mm 9123 x 515 mm 9124 'jis-b4-transparent': Specifies the JIS B4 transparent medium: 257 mm 9125 x 364 mm 9126 'jis-b4-translucent': Specifies the JIS B4 translucent medium: 257 mm 9127 x 364 mm 9128 'jis-b5-transparent': Specifies the JIS B5 transparent medium: 182 mm 9129 x 257 mm 9130 'jis-b5-translucent': Specifies the JIS B5 translucent medium: 182 mm 9131 x 257 mm 9132 'jis-b6-white': Specifies the JIS B6 white medium: 128 mm x 182 mm 9133 'jis-b7-white': Specifies the JIS B7 white medium: 91 mm x 128 mm 9134 'jis-b8-white': Specifies the JIS B8 white medium: 64 mm x 91 mm 9135 'jis-b9-white': Specifies the JIS B9 white medium: 45 mm x 64 mm 9136 'jis-b10-white': Specifies the JIS B10 white medium: 32 mm x 45 mm 9138 The following standard values are defined for American Standard (i.e. 9139 ANSI) engineering media: 9141 'a-white': Specifies the engineering ANSI A size white medium: 8.5 9142 inches x 11 inches 9144 deBry, Hastings, Herriot, Isaacson, Powell 9145 Expires August 23, 2000 9146 'a-transparent': Specifies the engineering ANSI A size transparent 9147 medium: 8.5 inches x 11 inches 9148 'a-translucent': Specifies the engineering ANSI A size translucent 9149 medium: 8.5 inches x 11 inches 9150 'b-white': Specifies the engineering ANSI B size white medium: 11 9151 inches x 17 inches 9152 'b-transparent': Specifies the engineering ANSI B size transparent 9153 medium: 11 inches x 17 inches) 9154 'b-translucent': Specifies the engineering ANSI B size translucent 9155 medium: 11 inches x 17 inches 9156 'c-white': Specifies the engineering ANSI C size white medium: 17 9157 inches x 22 inches 9158 'c-transparent': Specifies the engineering ANSI C size transparent 9159 medium: 17 inches x 22 inches 9160 'c-translucent': Specifies the engineering ANSI C size translucent 9161 medium: 17 inches x 22 inches 9162 'd-white': Specifies the engineering ANSI D size white medium: 22 9163 inches x 34 inches 9164 'd-transparent': Specifies the engineering ANSI D size transparent 9165 medium: 22 inches x 34 inches 9166 'd-translucent': Specifies the engineering ANSI D size translucent 9167 medium: 22 inches x 34 inches 9168 'e-white': Specifies the engineering ANSI E size white medium: 34 9169 inches x 44 inches 9170 'e-transparent': Specifies the engineering ANSI E size transparent 9171 medium: 34 inches x 44 inches 9172 'e-translucent': Specifies the engineering ANSI E size translucent 9173 medium: 34 inches x 44 inches 9175 The following standard values are defined for American Standard (i.e. 9176 ANSI) engineering media for devices that provide the "synchro-cut" 9177 feature (see section 14.1): 9179 'axsynchro-white': Specifies the roll paper having the width of the 9180 longer edge (11 inches) of the engineering ANSI A size white medium 9181 and cuts synchronizing with data. 9182 'axsynchro-transparent': Specifies the roll paper having the width of 9183 the longer edge (11 inches) of the engineering ANSI A size 9184 transparent medium and cuts synchronizing with data. 9185 'axsynchro-translucent': Specifies the roll paper having the width of 9186 the longer edge (11 inches) of the engineering ANSI A size 9187 translucent medium and cuts synchronizing with data. 9188 'bxsynchro-white': Specifies the roll paper having the width of the 9189 longer edge (17 inches) of the engineering ANSI B size white medium 9190 and cuts synchronizing with data. 9191 'bxsynchro-transparent': Specifies the roll paper having the width of 9192 the longer edge (17 inches) of the engineering ANSI B size 9193 transparent medium and cuts synchronizing with data. 9194 'bxsynchro-translucent': Specifies the roll paper having the width of 9195 the longer edge (17 inches) of the engineering ANSI B size 9196 translucent medium and cuts synchronizing with data. 9198 deBry, Hastings, Herriot, Isaacson, Powell 9199 Expires August 23, 2000 9200 'cxsynchro-white': Specifies the roll paper having the width of the 9201 longer edge (22 inches) of the engineering ANSI C size white medium 9202 and cuts synchronizing with data. 9203 'cxsynchro-transparent': Specifies the roll paper having the width of 9204 the longer edge (22 inches) of the engineering ANSI C size 9205 transparent medium and cuts synchronizing with data. 9206 'cxsynchro-translucent': Specifies the roll paper having the width of 9207 the longer edge (22 inches) of the engineering ANSI C size 9208 translucent medium and cuts synchronizing with data. 9209 'dxsynchro-white': Specifies the roll paper having the width of the 9210 longer edge (34 inches) of the engineering ANSI D size white medium 9211 and cuts synchronizing with data. 9212 'dxsynchro-transparent': Specifies the roll paper having the width of 9213 the longer edge (34 inches) of the engineering ANSI D size 9214 transparent medium and cuts synchronizing with data. 9215 'dxsynchro-translucent': Specifies the roll paper having the width of 9216 the longer edge (34 inches) of the engineering ANSI D size 9217 translucent medium and cuts synchronizing with data. 9218 'exsynchro-white': Specifies the roll paper having the width of the 9219 longer edge (44 inches) of the engineering ANSI E size white medium 9220 and cuts synchronizing with data. 9221 'exsynchro-transparent': Specifies the roll paper having the width of 9222 the longer edge (44 inches) of the engineering ANSI E size 9223 transparent medium and cuts synchronizing with data. 9224 'exsynchro-translucent': Specifies the roll paper having the width of 9225 the longer edge (44 inches) of the engineering ANSI E size 9226 translucent medium and cuts synchronizing with data. 9228 The following standard values are defined for American Architectural 9229 engineering media: 9231 'arch-a-white': Specifies the Architectural A size white medium: 9 9232 inches x 12 inches 9233 'arch-a-transparent': Specifies the Architectural A size transparent 9234 medium: 9 inches x 12 inches 9235 'arch-a-translucent': Specifies the Architectural A size translucent 9236 medium: 9 inches x 12 inches 9237 'arch-b-white': Specifies the Architectural B size white medium: 12 9238 inches x 18 inches 9239 'arch-b-transparent': Specifies the Architectural B size transparent 9240 medium: 12 inches x 18 inches 9241 'arch-b-translucent': Specifies the Architectural B size translucent 9242 medium: 12 inches x 18 inches 9243 'arch-c-white': Specifies the Architectural C size white medium: 18 9244 inches x 24 inches 9245 'arch-c-transparent': Specifies the Architectural C size transparent 9246 medium: 18 inches x 24 inches 9247 'arch-c-translucent': Specifies the Architectural C size translucent 9248 medium: 18 inches x 24 inches 9249 'arch-d-white': Specifies the Architectural D size white medium: 24 9250 inches x 36 inches 9251 'arch-d-transparent': Specifies the Architectural D size transparent 9252 medium: 24 inches x 36 inches 9254 deBry, Hastings, Herriot, Isaacson, Powell 9255 Expires August 23, 2000 9256 'arch-d-translucent': Specifies the Architectural D size translucent 9257 medium: 24 inches x 36 inches 9258 'arch-e-white': Specifies the Architectural E size white medium: 36 9259 inches x 48 inches 9260 'arch-e-transparent': Specifies the Architectural E size transparent 9261 medium: 36 inches x 48 inches 9262 'arch-e-translucent': Specifies the Architectural E size translucent 9263 medium: 36 inches x 48 inches 9265 The following standard values are defined for American Architectural 9266 engineering media for devices that provide the "synchro-cut" feature 9267 (see section 14.1): 9269 'arch-axsynchro-white': Specifies the roll paper having the width of 9270 the longer edge (12 inches) of the Architectural A size white 9271 medium and cuts synchronizing with data. 9272 'arch-axsynchro-transparent': Specifies the roll paper having the 9273 width of the longer edge (12 inches) of the Architectural A size 9274 transparent medium and cuts synchronizing with data. 9275 'arch-axsynchro-translucent': Specifies the roll paper having the 9276 width of the longer edge (12 inches) of the Architectural A size 9277 translucent medium and cuts synchronizing with data. 9278 'arch-bxsynchro-white': Specifies the roll paper having the width of 9279 the longer edge (18 inches) of the Architectural B size white 9280 medium and cuts synchronizing with data. 9281 'arch-bxsynchro-transparent': Specifies the roll paper having the 9282 width of the longer edge (18 inches) of the Architectural B size 9283 transparent medium and cuts synchronizing with data. 9284 'arch-bxsynchro-translucent': Specifies the roll paper having the 9285 width of the longer edge (18 inches) of the Architectural B size 9286 translucent medium and cuts synchronizing with data. 9287 'arch-cxsynchro-white': Specifies the roll paper having the width of 9288 the longer edge (24 inches) of the Architectural C size white 9289 medium and cuts synchronizing with data. 9290 'arch-cxsynchro-transparent': Specifies the roll paper having the 9291 width of the longer edge (24 inches) of the Architectural C size 9292 transparent medium and cuts synchronizing with data. 9293 'arch-cxsynchro-translucent': Specifies the roll paper having the 9294 width of the longer edge (24 inches) of the Architectural C size 9295 translucent medium and cuts synchronizing with data. 9296 'arch-dxsynchro-white': Specifies the roll paper having the width of 9297 the longer edge (36 inches) of the Architectural D size white 9298 medium and cuts synchronizing with data. 9299 'arch-dxsynchro-transparent': Specifies the roll paper having the 9300 width of the longer edge (36 inches) of the Architectural D size 9301 transparent medium and cuts synchronizing with data. 9302 'arch-dxsynchro-translucent': Specifies the roll paper having the 9303 width of the longer edge (36 inches) of the Architectural D size 9304 translucent medium and cuts synchronizing with data. 9305 'arch-exsynchro-white': Specifies the roll paper having the width of 9306 the longer edge (48 inches) of the Architectural E size white 9307 medium and cuts synchronizing with data. 9309 deBry, Hastings, Herriot, Isaacson, Powell 9310 Expires August 23, 2000 9311 'arch-exsynchro-transparent': Specifies the roll paper having the 9312 width of the longer edge (48 inches) of the Architectural E size 9313 transparent medium and cuts synchronizing with data. 9314 'arch-exsynchro-translucent': Specifies the roll paper having the 9315 width of the longer edge (48 inches) of the Architectural E size 9316 translucent medium and cuts synchronizing with data. 9318 The following standard values are defined for Japanese and European 9319 Standard (i.e. ISO) engineering media, which are of a long fixed size 9320 [ASME-Y14.1M]: 9322 'iso-a1x3-white': Specifies the ISO A1X3 white medium having the 9323 width of the longer edge (841 mm) of the ISO A1 medium 9324 'iso-a1x3-transparent': Specifies the ISO A1X3 transparent medium 9325 having the width of the longer edge (841 mm) of the ISO A1 9326 medium 9327 'iso-a1x3-translucent': Specifies the ISO A1X3 translucent medium 9328 having the width of the longer edge (841 mm) of the ISO A1 9329 medium 9330 'iso-a1x4-white': Specifies the ISO A1X4 white medium having the 9331 width of the longer edge (841 mm) of the ISO A1 medium 9332 'iso-a1x4-transparent': Specifies the ISO A1X4 transparent medium 9333 having the width of the longer edge (841 mm) of the ISO A1 9334 medium 9335 'iso-a1x4- translucent': Specifies the ISO A1X4 translucent medium 9336 having the width of the longer edge (841 mm) of the ISO A1 9337 medium 9338 'iso-a2x3-white': Specifies the ISO A2X3 white medium having the 9339 width of the longer edge (594 mm) of the ISO A2 medium 9340 'iso-a2x3-transparent': Specifies the ISO A2X3 transparent medium 9341 having the width of the longer edge (594 mm) of the ISO A2 9342 medium 9343 'iso-a2x3-translucent': Specifies the ISO A2X3 translucent medium 9344 having the width of the longer edge (594 mm) of the ISO A2 9345 medium 9346 'iso-a2x4-white': Specifies the ISO A2X4 white medium having the 9347 width of the longer edge (594 mm) of the ISO A2 medium 9348 'iso-a2x4-transparent': Specifies the ISO A2X4 transparent medium 9349 having the width of the longer edge (594 mm) of the ISO A2 9350 medium 9351 'iso-a2x4-translucent': Specifies the ISO A2X4 translucent medium 9352 having the width of the longer edge (594 mm) of the ISO A2 9353 medium 9354 'iso-a2x5-white': Specifies the ISO A2X5 white medium having the 9355 width of the longer edge (594 mm) of the ISO A2 medium 9356 'iso-a2x5-transparent': Specifies the ISO A2X5 transparent medium 9357 having the width of the longer edge (594 mm) of the ISO A2 9358 medium 9359 'iso-a2x5-translucent': Specifies the ISO A2X5 translucent medium 9360 having the width of the longer edge (594 mm) of the ISO A2 9361 medium 9362 'iso-a3x3-white': Specifies the ISO A3X3 white medium having the 9363 width of the longer edge (420 mm) of the ISO A3 medium 9365 deBry, Hastings, Herriot, Isaacson, Powell 9366 Expires August 23, 2000 9367 'iso-a3x3-transparent': Specifies the ISO A3X3 transparent medium 9368 having the width of the longer edge (420 mm) of the ISO A3 9369 medium 9370 'iso-a3x3-translucent': Specifies the ISO A3X3 translucent medium 9371 having the width of the longer edge (420 mm) of the ISO A3 9372 medium 9373 'iso-a3x4-white': Specifies the ISO A3X4 white medium having the 9374 width of the longer edge (420 mm) of the ISO A3 medium 9375 'iso-a3x4-transparent': Specifies the ISO A3X4 transparent medium 9376 having the width of the longer edge (420 mm) of the ISO A3 9377 medium 9378 'iso-a3x4-translucent': Specifies the ISO A3X4 translucent medium 9379 having the width of the longer edge (420 mm) of the ISO A3 9380 medium 9381 'iso-a3x5-white': Specifies the ISO A3X5 white medium having the 9382 width of the longer edge (420 mm) of the ISO A3 medium 9383 'iso-a3x5-transparent': Specifies the ISO A3X5 transparent medium 9384 having the width of the longer edge (420 mm) of the ISO A3 9385 medium 9386 'iso-a3x5-translucent': Specifies the ISO A3X5 translucent medium 9387 having the width of the longer edge (420 mm) of the ISO A3 9388 medium 9389 'iso-a3x6-white': Specifies the ISO A3X6 white medium having the 9390 width of the longer edge (420 mm) of the ISO A3 medium 9391 'iso-a3x6-transparent': Specifies the ISO A3X6 transparent medium 9392 having the width of the longer edge (420 mm) of the ISO A3 9393 medium 9394 'iso-a3x6-translucent': Specifies the ISO A3X6 translucent medium 9395 having the width of the longer edge (420 mm) of the ISO A3 9396 medium 9397 'iso-a3x7-white': Specifies the ISO A3X7 white medium having the 9398 width of the longer edge (420 mm) of the ISO A3 medium 9399 'iso-a3x7-transparent': Specifies the ISO A3X7 transparent medium 9400 having the width of the longer edge (420 mm) of the ISO A3 9401 medium 9402 'iso-a3x7-translucent'': Specifies the ISO A3X7 translucent' medium 9403 having the width of the longer edge (420 mm) of the ISO A3 9404 medium 9405 'iso-a4x3-white': Specifies the ISO A4X3 white medium having the 9406 width of the longer edge (297 mm) of the ISO A4 medium 9407 'iso-a4x3-transparent': Specifies the ISO A4X3 transparent medium 9408 having the width of the longer edge (297 mm) of the ISO A4 9409 medium 9410 'iso-a4x3-translucent'': Specifies the ISO A4X3 translucent' medium 9411 having the width of the longer edge (297 mm) of the ISO A4 9412 medium 9413 'iso-a4x4-white': Specifies the ISO A4X4 white medium having the 9414 width of the longer edge (297 mm) of the ISO A4 medium 9415 'iso-a4x4-transparent': Specifies the ISO A4X4 transparent medium 9416 having the width of the longer edge (297 mm) of the ISO A4 9417 medium 9419 deBry, Hastings, Herriot, Isaacson, Powell 9420 Expires August 23, 2000 9421 'iso-a4x4-translucent': Specifies the ISO A4X4 translucent medium 9422 having the width of the longer edge (297 mm) of the ISO A4 9423 medium 9424 'iso-a4x5-white': Specifies the ISO A4X5 white medium having the 9425 width of the longer edge (297 mm) of the ISO A4 medium 9426 'iso-a4x5-transparent': Specifies the ISO A4X5 transparent medium 9427 having the width of the longer edge (297 mm) of the ISO A4 9428 medium 9429 'iso-a4x5-translucent': Specifies the ISO A4X5 translucent medium 9430 having the width of the longer edge (297 mm) of the ISO A4 9431 medium 9432 'iso-a4x6-white': Specifies the ISO A4X6 white medium having the 9433 width of the longer edge (297 mm) of the ISO A4 medium 9434 'iso-a4x6-transparent': Specifies the ISO A4X6 transparent medium 9435 having the width of the longer edge (297 mm) of the ISO A4 9436 medium 9437 'iso-a4x6-translucent': Specifies the ISO A4X6 translucent medium 9438 having the width of the longer edge (297 mm) of the ISO A4 9439 medium 9440 'iso-a4x7-white': Specifies the ISO A4X7 white medium having the 9441 width of the longer edge (297 mm) of the ISO A4 medium 9442 'iso-a4x7-transparent': Specifies the ISO A4X7 transparent medium 9443 having the width of the longer edge (297 mm) of the ISO A4 9444 medium 9445 'iso-a4x7-translucent': Specifies the ISO A4X7 translucent medium 9446 having the width of the longer edge (297 mm) of the ISO A4 9447 medium 9448 'iso-a4x8-white': Specifies the ISO A4X8 white medium having the 9449 width of the longer edge (297 mm) of the ISO A4 medium 9450 'iso-a4x8-transparent': Specifies the ISO A4X8 transparent medium 9451 having the width of the longer edge (297 mm) of the ISO A4 9452 medium 9453 'iso-a4x8-translucent': Specifies the ISO A4X8 translucent medium 9454 having the width of the longer edge (297 mm) of the ISO A4 9455 medium 9456 'iso-a4x9-white': Specifies the ISO A4X9 white medium having the 9457 width of the longer edge (297 mm) of the ISO A4 medium 9458 'iso-a4x9-transparent': Specifies the ISO A4X9 transparent medium 9459 having the width of the longer edge (297 mm) of the ISO A4 9460 medium 9461 'iso-a4x9-translucent': Specifies the ISO A4X9 translucent medium 9462 having the width of the longer edge (297 mm) of the ISO A4 9463 medium 9465 The following standard values are defined for Japanese and European 9466 Standard (i.e. ISO) engineering media, which are either a long fixed 9467 size [ASME-Y14.1M] or roll feed, for devices that provide the "synchro- 9468 cut" feature (see section 14.1): 9470 'iso-a0xsynchro-white': Specifies the paper having the width of the 9471 longer edge (1189 mm) of the ISO A0 white medium and cuts 9472 synchronizing with data. 9474 deBry, Hastings, Herriot, Isaacson, Powell 9475 Expires August 23, 2000 9476 'iso-a0xsynchro-transparent': Specifies the paper having the width of 9477 the longer edge (1189 mm) of the ISO A0 transparent medium and 9478 cuts synchronizing with data. 9479 'iso-a0xsynchro-translucent': Specifies the paper having the width of 9480 the longer edge (1189 mm) of the ISO A0 translucent medium and 9481 cuts synchronizing with data. 9482 'iso-a1xsynchro-white': Specifies the paper having the width of the 9483 longer edge (841 mm) of the ISO A1 white medium and cuts 9484 synchronizing with data. 9485 'iso-a1xsynchro-transparent': Specifies the paper having the width of 9486 the longer edge (841 mm) of the ISO A1 transparent medium and 9487 cuts synchronizing with data. 9488 'iso-a1xsynchro-translucent': Specifies the paper having the width of 9489 the longer edge (841 mm) of the ISO A1 translucent medium and 9490 cuts synchronizing with data. 9491 'iso-a2xsynchro-white': Specifies the paper having the width of the 9492 longer edge (594 mm) of the ISO A2 white medium and cuts 9493 synchronizing with data. 9494 'iso-a2xsynchro-transparent': Specifies the paper having the width of 9495 the longer edge (594 mm) of the ISO A2 transparent medium and 9496 cuts synchronizing with data. 9497 'iso-a2xsynchro-translucent': Specifies the paper having the width of 9498 the longer edge (594 mm) of the ISO A2 translucent medium and 9499 cuts synchronizing with data. 9500 'iso-a3xsynchro-white': Specifies the paper having the width of the 9501 longer edge (420 mm) of the ISO A3 white medium and cuts 9502 synchronizing with data. 9503 'iso-a3xsynchro-transparent': Specifies the paper having the width of 9504 the longer edge (420 mm) of the ISO A3 transparent medium and 9505 cuts synchronizing with data. 9506 'iso-a3xsynchro-translucent': Specifies the paper having the width of 9507 the longer edge (420 mm) of the ISO A3 translucent medium and 9508 cuts synchronizing with data. 9509 'iso-a4xsynchro-white': Specifies the paper having the width of the 9510 longer edge (297 mm) of the ISO A4 white medium and cuts 9511 synchronizing with data. 9512 'iso-a4xsynchro-transparent': Specifies the paper having the width of 9513 the longer edge (297 mm) of the ISO A4 transparent medium and 9514 cuts synchronizing with data. 9515 'iso-a4xsynchro-translucent': Specifies the paper having the width of 9516 the longer edge (297 mm) of the ISO A4 transparent medium and 9517 cuts synchronizing with data. 9519 The following standard values are defined for American Standard (i.e. 9520 ANSI) engineering media, American Architectural engineering media, and 9521 Japanese and European Standard (i.e. ISO) engineering media, which are 9522 either a long fixed size [ASME-Y14.1M] or roll feed, for devices that 9523 provide the "synchro-cut" feature and/or the "auto-select" feature (see 9524 section 14.1): 9526 'auto-white': Specifies that the printer selects the white medium 9527 with the appropriate fixed size (e.g. a1, a2, etc.) or data- 9528 synchro size, and the selection is implementation-defined. 9530 deBry, Hastings, Herriot, Isaacson, Powell 9531 Expires August 23, 2000 9532 'auto-transparent': Specifies that the printer selects the 9533 transparent medium with the appropriate fixed size (e.g. a1, a2, 9534 etc.) or data-synchro size, and the selection is implementation- 9535 defined. 9536 'auto-translucent': Specifies that the printer selects the 9537 translucent medium with the appropriate fixed size (e.g. a1, a2, 9538 etc.) or data-synchro size, and the selection is implementation- 9539 defined. 9540 'auto-fixed-size-white': Specifies that the printer selects the white 9541 medium with the appropriate fixed size (e.g. a1, a2, etc.) or 9542 the appropriate long fixed size listed above. 9543 'auto-fixed-size-transparent': Specifies that the printer selects the 9544 transparent medium with the appropriate fixed size (e.g. a1, a2, 9545 etc.) or the appropriate long fixed size listed above. 9546 'auto-fixed-size-translucent': Specifies that the printer selects the 9547 translucent medium with the appropriate fixed size (e.g. a1, a2, 9548 etc.) or the appropriate long fixed size listed above. 9549 'auto-synchro-white': Specifies that the printer selects the white 9550 paper with the appropriate width and cuts it synchronizing with 9551 data. 9552 'auto-synchro-transparent': Specifies that the printer selects the 9553 transparent paper with the appropriate width and cuts it 9554 synchronizing with data. 9555 'auto-synchro-translucent': Specifies that the printer selects the 9556 translucent paper with the appropriate width and cuts it 9557 synchronizing with data. 9559 The following standard values are defined for input-trays (from ISO DPA 9560 and the Printer MIB): 9562 'top': The top input tray in the printer. 9563 'middle': The middle input tray in the printer. 9564 'bottom': The bottom input tray in the printer. 9565 'envelope': The envelope input tray in the printer. 9566 'manual': The manual feed input tray in the printer. 9567 'large-capacity': The large capacity input tray in the printer. 9568 'main': The main input tray 9569 'side': The side input tray 9571 The following standard values are defined for media sizes (from ISO 9572 DPA): 9574 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 9575 ISO 216 9576 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 9577 ISO 216 9578 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 9579 ISO 216 9580 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 9581 ISO 216 9582 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 9583 ISO 216 9585 deBry, Hastings, Herriot, Isaacson, Powell 9586 Expires August 23, 2000 9587 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 9588 ISO 216 9589 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 9590 ISO 216 9591 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 9592 ISO 216 9593 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 9594 216 9595 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 9596 216 9597 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 9598 ISO 216 9599 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 9600 ISO 216 9601 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 9602 ISO 216 9603 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 9604 ISO 216 9605 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 9606 ISO 216 9607 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 9608 ISO 216 9609 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 9610 ISO 216 9611 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 9612 ISO 216 9613 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 9614 ISO 216 9615 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 9616 216 9617 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 9618 216 9619 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 9620 ISO 216 9621 'na-letter': Specifies the North American letter size: 8.5 inches by 9622 11 inches 9623 'na-legal': Specifies the North American legal size: 8.5 inches by 14 9624 inches 9625 'na-8x10': Specifies the North American 8 inches by 10 inches 9626 'na-5x7': Specifies the North American 5 inches by 7 inches 9627 'executive': Specifies the executive size (7.25 X 10.5 in) 9628 'folio': Specifies the folio size (8.5 X 13 in) 9629 'invoice': Specifies the invoice size (5.5 X 8.5 in) 9630 'ledger': Specifies the ledger size (11 X 17 in) 9631 'quarto': Specifies the quarto size (8.5 X 10.83 in) 9632 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 9633 ISO 269 9634 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 9635 ISO 269 9636 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 9637 ISO 269 9638 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 9639 ISO 269 9641 deBry, Hastings, Herriot, Isaacson, Powell 9642 Expires August 23, 2000 9643 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 9644 by 220 mm as defined in ISO 269 9645 'na-10x13-envelope': Specifies the North American 10x13 size: 10 9646 inches by 13 inches 9647 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 9648 by 12 inches 9649 'na-number-10-envelope': Specifies the North American number 10 9650 business envelope size: 4.125 inches by 9.5 inches 9651 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9652 size 9653 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9654 size 9655 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9656 size 9657 'na-number-9-envelope': Specifies the North American number 9 9658 business envelope size 9659 'na-6x9-envelope': Specifies the North American 6x9 envelope size 9660 'na-10x15-envelope': Specifies the North American 10x15 envelope size 9661 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 9662 in) 9663 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 9664 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 9665 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 9666 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 9667 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 9668 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 9669 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 9670 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 9671 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 9672 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 9673 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 9675 The following standard values are defined for American Standard (i.e. 9676 ANSI) engineering media sizes: 9678 'a': Specifies the engineering ANSI A size medium: 8.5 inches x 11 9679 inches 9680 'b': Specifies the engineering ANSI B size medium: 11 inches x 17 9681 inches 9682 'c': Specifies the engineering ANSI C size medium: 17 inches x 22 9683 inches 9684 'd': Specifies the engineering ANSI D size medium: 22 inches x 34 9685 inches 9686 'e': Specifies the engineering ANSI E size medium: 34 inches x 44 9687 inches 9689 The following standard values are defined for American Architectural 9690 engineering media sizes: 9692 'arch-a': Specifies the Architectural A size medium: 9 inches x 12 9693 inches 9694 'arch-b': Specifies the Architectural B size medium: 12 inches x 18 9695 inches 9697 deBry, Hastings, Herriot, Isaacson, Powell 9698 Expires August 23, 2000 9699 'arch-c': Specifies the Architectural C size medium: 18 inches x 24 9700 inches 9701 'arch-d': Specifies the Architectural D size medium: 24 inches x 36 9702 inches 9703 'arch-e': Specifies the Architectural E size medium: 36 inches x 48 9704 inches 9706 deBry, Hastings, Herriot, Isaacson, Powell 9707 Expires August 23, 2000 9708 14.1.Examples 9710 Below are examples to supplement the engineering media value 9711 definitions. 9713 Example 1: "Synchro-Cut", a device cutting the roll paper in 9714 synchronization with the data 9716 data height: A1 height 9717 data width (shaded): A1 width < data width < (A1 width) x 2 9718 specified value: 'iso-a1xsynchro-white' 9720 | | 9721 |<--- data width --->| 9722 | | 9723 | | | | 9724 |<- A1 width ->|<- A1 width ->| 9725 | | | | 9726 cross ^ | | | | 9727 feed | +--------------------------------------------/ 9728 direction | |//////////////|/////| | ^ / 9729 | |//////////////|/////| | | / 9730 | |//////////////|/////| | | / 9731 | |//////////////|/////| | | \ 9732 <-----------+- |//////////////|/////| | A1 \ roll 9733 feed | |//////////////|/////| | height \ paper 9734 direction |//////////////|/////| | | \ 9735 |//////////////|/////| | | / 9736 |//////////////|/////| | v / 9737 +------------------------------------------/ 9738 | 9739 | 9740 |<------ CUT HERE (to synchronize 9741 | with data width) 9742 | 9744 deBry, Hastings, Herriot, Isaacson, Powell 9745 Expires August 23, 2000 9746 Example 2: "Auto-Cut", a device cutting the roll paper at multiples of 9747 fixed-size media width 9748 data height: A1 height 9749 data width (shaded): A1 width < data width < (A1 width) x 2 9750 specified value: 'auto-fixed-size-white' 9752 | | 9753 |<--- data width --->| 9754 | | 9755 | | | | 9756 |<- A1 width ->|<- A1 width ->| 9757 | | | | 9758 cross ^ | | | | 9759 feed | +--------------------------------------------/ 9760 direction | |//////////////|/////| | ^ / 9761 | |//////////////|/////| | | / 9762 | |//////////////|/////| | | / 9763 | |//////////////|/////| | | \ 9764 <-----------+- |//////////////|/////| | A1 \ roll 9765 feed | |//////////////|/////| | height \ paper 9766 direction |//////////////|/////| | | \ 9767 |//////////////|/////| | | / 9768 |//////////////|/////| | v / 9769 +------------------------------------------/ 9770 | 9771 | 9772 |<--- CUT HERE 9773 | (to synchronize 9774 | with data width) 9776 deBry, Hastings, Herriot, Isaacson, Powell 9777 Expires August 23, 2000 9778 Example 3: the 'iso-a4x4-white' fixed size paper 9780 paper height: A4 height 9781 paper width: (A4 width) x 4 9782 specified value: 'iso-a4x4-white' 9784 | | | | | 9785 |<- A4 width ->|<- A4 width ->|<- A4 width ->|<- A4 width ->| 9786 | | | | | 9787 | | | | | 9788 +-----------------------------------------------------------+ 9789 | ^ | | | | 9790 | | | | | | 9791 | | | | | | 9792 | A4 | | | | 9793 | height | | | | 9794 | | | | | | 9795 | | | | | | 9796 | | | | | | 9797 | v | | | | 9798 +-----------------------------------------------------------+ 9800 deBry, Hastings, Herriot, Isaacson, Powell 9801 Expires August 23, 2000 9802 Example 4: "Synchro-Cut", a device cutting the fixed size paper in 9803 synchronization with the data 9805 data height: A4 height 9806 data width (shaded): (A4 width) x 2 < data width < (A4 width) x 3 9807 specified value: 'iso-a4xsynchro-white' 9809 | | 9810 |<---------- data width ----------->| 9811 | | 9812 | | | | | 9813 |<- A4 width ->|<- A4 width ->|<- A4 width ->| 9814 | | | | | 9815 cross ^ | | | | | 9816 feed | +--------------------------------------------+ 9817 direction | |//////////////|//////////////|/////| ^ | 9818 | |//////////////|//////////////|/////| | | 9819 | |//////////////|//////////////|/////| | | 9820 | |//////////////|//////////////|/////| | | 9821 <-----------+- |//////////////|//////////////|/////| A4 | 9822 feed | |//////////////|//////////////|/////| height | 9823 direction |//////////////|//////////////|/////| | | 9824 |//////////////|//////////////|/////| | | 9825 |//////////////|//////////////|/////| v | 9826 +--------------------------------------------+ 9827 | 9828 CUT HERE ---->| 9829 (to synchronize | 9830 with data width) | 9832 deBry, Hastings, Herriot, Isaacson, Powell 9833 Expires August 23, 2000 9834 Standard keyword values are taken from several sources. 9836 Standard values are defined (taken from DPA[ISO10175] and the Printer 9837 MIB[RFC1759]): 9839 'default': The default medium for the output device 9840 'iso-a4-white': Specifies the ISO A4 white medium 9841 'iso-a4-colored': Specifies the ISO A4 colored medium 9842 'iso-a4-transparent' Specifies the ISO A4 transparent medium 9843 'iso-a3-white': Specifies the ISO A3 white medium 9844 'iso-a3-colored': Specifies the ISO A3 colored medium 9845 'iso-a5-white': Specifies the ISO A5 white medium 9846 'iso-a5-colored': Specifies the ISO A5 colored medium 9847 'iso-b4-white': Specifies the ISO B4 white medium 9848 'iso-b4-colored': Specifies the ISO B4 colored medium 9849 'iso-b5-white': Specifies the ISO B5 white medium 9850 'iso-b5-colored': Specifies the ISO B5 colored medium 9851 'jis-b4-white': Specifies the JIS B4 white medium 9852 'jis-b4-colored': Specifies the JIS B4 colored medium 9853 'jis-b5-white': Specifies the JIS B5 white medium 9854 'jis-b5-colored': Specifies the JIS B5 colored medium 9856 The following standard values are defined for North American media: 9858 'na-letter-white': Specifies the North American letter white medium 9859 'na-letter-colored': Specifies the North American letter colored 9860 medium 9861 'na-letter-transparent': Specifies the North American letter 9862 transparent medium 9863 'na-legal-white': Specifies the North American legal white medium 9864 'na-legal-colored': Specifies the North American legal colored medium 9866 The following standard values are defined for envelopes: 9868 'iso-b4-envelope': Specifies the ISO B4 envelope medium 9869 'iso-b5-envelope': Specifies the ISO B5 envelope medium 9870 'iso-c3-envelope': Specifies the ISO C3 envelope medium 9871 'iso-c4-envelope': Specifies the ISO C4 envelope medium 9872 'iso-c5-envelope': Specifies the ISO C5 envelope medium 9873 'iso-c6-envelope': Specifies the ISO C6 envelope medium 9874 'iso-designated-long-envelope': Specifies the ISO Designated Long 9875 envelope medium 9876 'na-10x13-envelope': Specifies the North American 10x13 envelope 9877 medium 9878 'na-9x12-envelope': Specifies the North American 9x12 envelope medium 9879 'monarch-envelope': Specifies the Monarch envelope 9880 'na-number-10-envelope': Specifies the North American number 10 9881 business envelope medium 9882 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 9883 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 9884 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 9886 deBry, Hastings, Herriot, Isaacson, Powell 9887 Expires August 23, 2000 9888 'na-number-9-envelope': Specifies the North American number 9 9889 business envelope 9890 'na-6x9-envelope': Specifies the North American 6x9 inch envelope 9891 'na-10x15-envelope': Specifies the North American 10x15 inch envelope 9893 The following standard values are defined for the less commonly used 9894 media (white-only): 9896 'executive-white': Specifies the white executive medium 9897 'folio-white': Specifies the folio white medium 9898 'invoice-white': Specifies the white invoice medium 9899 'ledger-white': Specifies the white ledger medium 9900 'quarto-white': Specified the white quarto medium 9901 'iso-a0-white': Specifies the ISO A0 white medium 9902 'iso-a1-white': Specifies the ISO A1 white medium 9903 'iso-a2-white': Specifies the ISO A2 white medium 9904 'iso-a6-white': Specifies the ISO A6 white medium 9905 'iso-a7-white': Specifies the ISO A7 white medium 9906 'iso-a8-white': Specifies the ISO A8 white medium 9907 'iso-a9-white': Specifies the ISO A9 white medium 9908 'iso-10-white': Specifies the ISO A10 white medium 9909 'iso-b0-white': Specifies the ISO B0 white medium 9910 'iso-b1-white': Specifies the ISO B1 white medium 9911 'iso-b2-white': Specifies the ISO B2 white medium 9912 'iso-b3-white': Specifies the ISO B3 white medium 9913 'iso-b6-white': Specifies the ISO B6 white medium 9914 'iso-b7-white': Specifies the ISO B7 white medium 9915 'iso-b8-white': Specifies the ISO B8 white medium 9916 'iso-b9-white': Specifies the ISO B9 white medium 9917 'iso-b10-white': Specifies the ISO B10 white medium 9918 'jis-b0-white': Specifies the JIS B0 white medium 9919 'jis-b1-white': Specifies the JIS B1 white medium 9920 'jis-b2-white': Specifies the JIS B2 white medium 9921 'jis-b3-white': Specifies the JIS B3 white medium 9922 'jis-b6-white': Specifies the JIS B6 white medium 9923 'jis-b7-white': Specifies the JIS B7 white medium 9924 'jis-b8-white': Specifies the JIS B8 white medium 9925 'jis-b9-white': Specifies the JIS B9 white medium 9926 'jis-b10-white': Specifies the JIS B10 white medium 9928 The following standard values are defined for engineering media (white 9929 only): 9931 'a-white': Specifies the engineering A size medium 9932 'b-white': Specifies the engineering B size medium 9933 'c-white': Specifies the engineering C size medium 9934 'd-white': Specifies the engineering D size medium 9935 'e-white': Specifies the engineering E size medium 9937 The following standard values are defined for input-trays (from ISO DPA 9938 and the Printer MIB): 9940 deBry, Hastings, Herriot, Isaacson, Powell 9941 Expires August 23, 2000 9942 'top': The top input tray in the printer. 9943 'middle': The middle input tray in the printer. 9944 'bottom': The bottom input tray in the printer. 9945 'envelope': The envelope input tray in the printer. 9946 'manual': The manual feed input tray in the printer. 9947 'large-capacity': The large capacity input tray in the printer. 9948 'main': The main input tray 9949 'side': The side input tray 9951 The following standard values are defined for media sizes (from ISO 9952 DPA): 9954 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in 9955 ISO 216 9956 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in 9957 ISO 216 9958 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in 9959 ISO 216 9960 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in 9961 ISO 216 9962 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in 9963 ISO 216 9964 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in 9965 ISO 216 9966 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in 9967 ISO 216 9968 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in 9969 ISO 216 9970 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO 9971 216 9972 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO 9973 216 9974 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in 9975 ISO 216 9976 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in 9977 ISO 216 9978 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in 9979 ISO 216 9980 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in 9981 ISO 216 9982 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in 9983 ISO 216 9984 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in 9985 ISO 216 9986 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in 9987 ISO 216 9988 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in 9989 ISO 216 9990 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in 9991 ISO 216 9992 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO 9993 216 9995 deBry, Hastings, Herriot, Isaacson, Powell 9996 Expires August 23, 2000 9997 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO 9998 216 9999 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in 10000 ISO 216 10001 'na-letter': Specifies the North American letter size: 8.5 inches by 10002 11 inches 10003 'na-legal': Specifies the North American legal size: 8.5 inches by 14 10004 inches 10005 'executive': Specifies the executive size (7.25 X 10.5 in) 10006 'folio': Specifies the folio size (8.5 X 13 in) 10007 'invoice': Specifies the invoice size (5.5 X 8.5 in) 10008 'ledger': Specifies the ledger size (11 X 17 in) 10009 'quarto': Specifies the quarto size (8.5 X 10.83 in) 10010 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in 10011 ISO 269 10012 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in 10013 ISO 269 10014 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in 10015 ISO 269 10016 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in 10017 ISO 269 10018 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm 10019 by 220 mm as defined in ISO 269 10020 'na-10x13-envelope': Specifies the North American 10x13 size: 10 10021 inches by 13 inches 10022 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches 10023 by 12 inches 10024 'na-number-10-envelope': Specifies the North American number 10 10025 business envelope size: 4.125 inches by 9.5 inches 10026 'na-7x9-envelope': Specifies the North American 7x9 inch envelope 10027 size 10028 'na-9x11-envelope': Specifies the North American 9x11 inch envelope 10029 size 10030 'na-10x14-envelope': Specifies the North American 10x14 inch envelope 10031 size 10032 'na-number-9-envelope': Specifies the North American number 9 10033 business envelope size 10034 'na-6x9-envelope': Specifies the North American 6x9 envelope size 10035 'na-10x15-envelope': Specifies the North American 10x15 envelope size 10036 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 10037 in) 10038 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm 10039 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm 10040 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm 10041 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm 10042 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm 10043 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm 10044 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm 10045 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm 10046 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm 10047 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm 10048 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm 10050 deBry, Hastings, Herriot, Isaacson, Powell 10051 Expires August 23, 2000 10052 The following standard values are defined for engineering media sizes: 10054 'a': Specifies the engineering A size: 8.5 inches x 11 inches 10055 'b': Specifies the engineering B size: 11 inches x 17 inches 10056 'c': Specifies the engineering C size: 17 inches x 22 inches 10057 'd': Specifies the engineering D size: 22 inches x 34 inches 10058 'e': Specifies the engineering E size: 34 inches x 44 inches 10060 15. APPENDIX D: Processing IPP Attributes 10062 When submitting a print job to a Printer object, the IPP model allows a 10063 client to supply operation and Job Template attributes along with the 10064 document data. These Job Template attributes in the create request 10065 affect the rendering, production and finishing of the documents in the 10066 job. Similar types of instructions may also be contained in the 10067 document to be printed, that is, embedded within the print data itself. 10068 In addition, the Printer has a set of attributes that describe what 10069 rendering and finishing options which are supported by that Printer. 10070 This model, which allows for flexibility and power, also introduces the 10071 potential that at job submission time, these client-supplied attributes 10072 may conflict with either: 10074 - what the implementation is capable of realizing (i.e., what the 10075 Printer supports), as well as 10076 - the instructions embedded within the print data itself. 10078 The following sections describe how these two types of conflicts are 10079 handled in the IPP model. 10081 15.1 Fidelity 10083 If there is a conflict between what the client requests and what a 10084 Printer object supports, the client may request one of two possible 10085 conflict handling mechanisms: 10087 1) either reject the job since the job can not be processed exactly 10088 as specified, or 10089 2) allow the Printer to make any changes necessary to proceed with 10090 processing the Job the best it can. 10092 In the first case the client is indicating to the Printer object: "Print 10093 the job exactly as specified with no exceptions, and if that can't be 10094 done, don't even bother printing the job at all." In the second case, 10095 the client is indicating to the Printer object: "It is more important to 10096 make sure the job is printed rather than be processed exactly as 10097 specified; just make sure the job is printed even if client supplied 10098 attributes need to be changed or ignored." 10100 The IPP model accounts for this situation by introducing an "ipp- 10101 attribute-fidelity" attribute. 10103 deBry, Hastings, Herriot, Isaacson, Powell 10104 Expires August 23, 2000 10105 In a create request, "ipp-attribute-fidelity" is a boolean operation 10106 attribute that is OPTIONALLY supplied by the client. The value 'true' 10107 indicates that total fidelity to client supplied Job Template attributes 10108 and values is required. The client is requesting that the Job be 10109 printed exactly as specified, and if that is not possible then the job 10110 MUST be rejected rather than processed incorrectly. The value 'false' 10111 indicates that a reasonable attempt to print the Job is acceptable. If 10112 a Printer does not support some of the client supplied Job Template 10113 attributes or values, the Printer MUST ignore them or substitute any 10114 supported value for unsupported values, respectively. The Printer may 10115 choose to substitute the default value associated with that attribute, 10116 or use some other supported value that is similar to the unsupported 10117 requested value. For example, if a client supplies a "media" value of 10118 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a 10119 default value of 'envelope'. If the client does not supply the "ipp- 10120 attribute-fidelity" attribute, the Printer assumes a value of 'false'. 10122 Each Printer implementation MUST support both types of "fidelity" 10123 printing (that is whether the client supplies a value of 'true' or 10124 'false'): 10126 - If the client supplies 'false' or does not supply the attribute, 10127 the Printer object MUST always accept the request by ignoring 10128 unsupported Job Template attributes and by substituting unsupported 10129 values of supported Job Template attributes with supported values. 10130 - If the client supplies 'true', the Printer object MUST reject the 10131 request if the client supplies unsupported Job Template attributes. 10133 Since a client can always query a Printer to find out exactly what is 10134 and is not supported, "ipp-attribute-fidelity" set to 'false' is useful 10135 when: 10137 1) The End-User uses a command line interface to request attributes 10138 that might not be supported. 10139 2) In a GUI context, if the End User expects the job might be moved 10140 to another printer and prefers a sub-optimal result to nothing at 10141 all. 10142 3) The End User just wants something reasonable in lieu of nothing at 10143 all. 10145 15.2 Page Description Language (PDL) Override 10147 If there is a conflict between the value of an IPP Job Template 10148 attribute and a corresponding instruction in the document data, the 10149 value of the IPP attribute SHOULD take precedence over the document 10150 instruction. Consider the case where a previously formatted file of 10151 document data is sent to an IPP Printer. In this case, if the client 10152 supplies any attributes at job submission time, the client desires that 10153 those attributes override the embedded instructions. Consider the case 10154 were a previously formatted document has embedded in it commands to load 10155 'iso-a4' media. However, the document is passed to an end user that 10156 only has access to a printer with 'na-letter' media loaded. That end 10158 deBry, Hastings, Herriot, Isaacson, Powell 10159 Expires August 23, 2000 10160 user most likely wants to submit that document to an IPP Printer with 10161 the "media" Job Template attribute set to 'na-letter'. The job 10162 submission attribute should take precedence over the embedded PDL 10163 instruction. However, until companies that supply document data 10164 interpreters allow a way for external IPP attributes to take precedence 10165 over embedded job production instructions, a Printer might not be able 10166 to support the semantics that IPP attributes override the embedded 10167 instructions. 10169 The IPP model accounts for this situation by introducing a "pdl- 10170 override-supported" attribute that describes the Printer objects 10171 capabilities to override instructions embedded in the PDL data stream. 10172 The value of the "pdl-override-supported" attribute is configured by 10173 means outside the scope of this IPP/1.1 document. 10175 This REQUIRED Printer attribute takes on the following values: 10177 - 'attempted': This value indicates that the Printer object attempts 10178 to make the IPP attribute values take precedence over embedded 10179 instructions in the document data, however there is no guarantee. 10180 - 'not-attempted': This value indicates that the Printer object makes 10181 no attempt to make the IPP attribute values take precedence over 10182 embedded instructions in the document data. 10184 At job processing time, an implementation that supports the value of 10185 'attempted' might do one of several different actions: 10187 1) Generate an output device specific command sequence to realize the 10188 feature represented by the IPP attribute value. 10189 2) Parse the document data itself and replace the conflicting 10190 embedded instruction with a new embedded instruction that matches 10191 the intent of the IPP attribute value. 10192 3) Indicate to the Printer that external supplied attributes take 10193 precedence over embedded instructions and then pass the external 10194 IPP attribute values to the document data interpreter. 10195 4) Anything else that allows for the semantics that IPP attributes 10196 override embedded document data instructions. 10198 Since 'attempted' does not offer any type of guarantee, even though a 10199 given Printer object might not do a very "good" job of attempting to 10200 ensure that IPP attributes take a higher precedence over instructions 10201 embedded in the document data, it would still be a conforming 10202 implementation. 10204 At job processing time, an implementation that supports the value of 10205 'not-attempted' might do one of the following actions: 10207 1) Simply pre-pend the document data with the PDL instruction that 10208 corresponds to the client-supplied PDL attribute, such that if the 10209 document data also has the same PDL instruction, it will override 10210 what the Printer object pre-pended. In other words, this 10211 implementation is using the same implementation semantics for the 10212 client-supplied IPP attributes as for the Printer object defaults. 10214 deBry, Hastings, Herriot, Isaacson, Powell 10215 Expires August 23, 2000 10216 2) Parse the document data and replace the conflicting embedded 10217 instruction with a new embedded instruction that approximates, but 10218 does not match, the semantic intent of the IPP attribute value. 10220 Note: The "ipp-attribute-fidelity" attribute applies to the Printer's 10221 ability to either accept or reject other unsupported Job Template 10222 attributes. In other words, if "ipp-attribute-fidelity" is set to 10223 'true', a Job is accepted if and only if the client supplied Job 10224 Template attributes and values are supported by the Printer. Whether 10225 these attributes actually affect the processing of the Job when the 10226 document data contains embedded instructions depends on the ability of 10227 the Printer to override the instructions embedded in the document data 10228 with the semantics of the IPP attributes. If the document data 10229 attributes can be overridden ("pdl-override-supported" set to 10230 'attempted'), the Printer makes an attempt to use the IPP attributes 10231 when processing the Job. If the document data attributes can not be 10232 overridden ("pdl-override-supported" set to 'not-attempted'), the 10233 Printer makes no attempt to override the embedded document data 10234 instructions with the IPP attributes when processing the Job, and hence, 10235 the IPP attributes may fail to affect the Job processing and output when 10236 the corresponding instruction is embedded in the document data. 10238 15.3 Using Job Template Attributes During Document Processing. 10240 The Printer object uses some of the Job object's Job Template attributes 10241 during the processing of the document data associated with that job. 10242 These include, but are not limited to, "orientation-requested", "number- 10243 up", "sides", "media", and "copies". The processing of each document in 10244 a Job Object MUST follow the steps below. These steps are intended only 10245 to identify when and how attributes are to be used in processing 10246 document data and any alternative steps that accomplishes the same 10247 effect can be used to implement this specification document. 10249 1. Using the client supplied "document-format" attribute or some form 10250 of document format detection algorithm (if the value of "document- 10251 format" is not specific enough), determine whether or not the 10252 document data has already been formatted for printing. If the 10253 document data has been formatted, then go to step 2. Otherwise, the 10254 document data MUST be formatted. The formatting detection algorithm 10255 is implementation defined and is not specified by this document. 10256 The formatting of the document data uses the "orientation- 10257 requested" attribute to determine how the formatted print data 10258 should be placed on a print-stream page, see section 4.2.10 for the 10259 details. 10261 2. The document data is in the form of a print-stream in a known 10262 media type. The "page-ranges" attribute is used to select, as 10263 specified in section 4.2.7, a sub-sequence of the pages in the 10264 print-stream that are to be processed and images. 10266 3. The input to this step is a sequence of print-stream pages. This 10267 step is controlled by the "number-up" attribute. If the value of 10269 deBry, Hastings, Herriot, Isaacson, Powell 10270 Expires August 23, 2000 10271 "number-up" is N, then during the processing of the print-stream 10272 pages, each N print-stream pages are positioned, as specified in 10273 section 4.2.9, to create a single impression. If a given document 10274 does not have N more print-stream pages, then the completion of the 10275 impression is controlled by the "multiple-document-handling" 10276 attribute as described in section 4.2.4; when the value of this 10277 attribute is 'single-document' or 'single-document-new-sheet', the 10278 print-stream pages of document data from subsequent documents is 10279 used to complete the impression. 10281 The size(scaling), position(translation) and rotation of the print- 10282 stream pages on the impression is implementation defined. Note 10283 that during this process the print-stream pages may be rendered to 10284 a form suitable for placing on the impression; this rendering is 10285 controlled by the values of the "printer-resolution" and "print- 10286 quality" attributes as described in sections 4.2.12 and 4.2.13. In 10287 the case N=1, the impression is nearly the same as the print-stream 10288 page; the differences would only be in the size, position and 10289 rotation of the print-stream page and/or any decoration, such as a 10290 frame to the page, that is added by the implementation. 10292 4. The collection of impressions is placed, in sequence, onto sides 10293 of the media sheets. This placement is controlled by the "sides" 10294 attribute and the orientation of the print-stream page, as 10295 described in section 4.2.8. The orientation of the print-stream 10296 pages affects the orientation of the impression; for example, if 10297 "number-up" equals 2, then, typically, two portrait print-stream 10298 pages become one landscape impression. Note that the placement of 10299 impressions onto media sheets is also controlled by the "multiple- 10300 document-handling" attribute as described in section 4.2.4. 10302 5. The "copies" and "multiple-document-handling" attributes are used 10303 to determine how many copies of each media instance are created and 10304 in what order. See sections 4.2.5 and 4.2.4 for the details. 10306 6. When the correct number of copies are created, the media instances 10307 are finished according to the values of the "finishings" attribute 10308 as described in 4.2.6. Note that sometimes finishing operations may 10309 require manual intervention to perform the finishing operations on 10310 the copies, especially uncollated copies. This document allows any 10311 or all of the processing steps to be performed automatically or 10312 manually at the discretion of the Printer object. 10314 16. APPENDIX E: Generic Directory Schema 10316 This section defines a generic schema for an entry in a directory 10317 service. A directory service is a means by which service users can 10318 locate service providers. In IPP environments, this means that IPP 10319 Printers can be registered (either automatically or with the help of an 10320 administrator) as entries of type printer in the directory using an 10321 implementation specific mechanism such as entry attributes, entry type 10323 deBry, Hastings, Herriot, Isaacson, Powell 10324 Expires August 23, 2000 10325 fields, specific branches, etc. IPP clients can search or browse for 10326 entries of type printer. Clients use the directory service to find 10327 entries based on naming, organizational contexts, or filtered searches 10328 on attribute values of entries. For example, a client can find all 10329 printers in the "Local Department" context. Authentication and 10330 authorization are also often part of a directory service so that an 10331 administrator can place limits on end users so that they are only 10332 allowed to find entries to which they have certain access rights. IPP 10333 itself does not require any specific directory service protocol or 10334 provider. 10336 Note: Some directory implementations allow for the notion of "aliasing". 10337 That is, one directory entry object can appear as multiple directory 10338 entry object with different names for each object. In each case, each 10339 alias refers to the same directory entry object which refers to a single 10340 IPP Printer object. 10342 The generic schema is a subset of IPP Printer Job Template and Printer 10343 Description attributes (sections 4.2 and 4.4). These attributes are 10344 identified as either RECOMMENDED or OPTIONAL for the directory entry 10345 itself. This conformance labeling is NOT the same conformance labeling 10346 applied to the attributes of IPP Printers objects. The conformance 10347 labeling in this Appendix is intended to apply to directory templates 10348 and to IPP Printer implementations that subscribe by adding one or more 10349 entries to a directory. RECOMMENDED attributes SHOULD be associated 10350 with each directory entry. OPTIONAL attributes MAY be associated with 10351 the directory entry (if known or supported). In addition, all directory 10352 entry attributes SHOULD reflect the current attribute values for the 10353 corresponding Printer object. 10355 The names of attributes in directory schema and entries SHOULD be the 10356 same as the IPP Printer attribute names as shown. 10358 In order to bridge between the directory service and the IPP Printer 10359 object, one of the RECOMMENDED directory entry attributes is the Printer 10360 object's "printer-uri-supported" attribute. The IPP client queries the 10361 "printer-uri-supported" attribute in the directory entry and then 10362 addresses the IPP Printer object using one of its URIs. The "uri- 10363 security-supported" attribute identifies the protocol (if any) used to 10364 secure a channel. 10366 The following attributes define the generic schema for directory entries 10367 of type PRINTER: 10369 printer-uri-supported RECOMMENDED Section 4.4.1 10370 uri-authentication-supported RECOMMENDED Section 4.4.2 10371 uri-security-supported RECOMMENDED Section 4.4.3 10372 printer-name RECOMMENDED Section 4.4.4 10373 printer-location RECOMMENDED Section 4.4.5 10374 printer-info OPTIONAL Section 4.4.6 10375 printer-more-info OPTIONAL Section 4.4.7 10376 printer-make-and-model RECOMMENDED Section 4.4.9 10377 ipp-versions-supported RECOMMENDED Section 4.4.14 10379 deBry, Hastings, Herriot, Isaacson, Powell 10380 Expires August 23, 2000 10381 multiple-document-jobs-supported OPTIONAL Section 4.4.16 10382 charset-supported OPTIONAL Section 4.4.18 10383 generated-natural-language- 10384 supported OPTIONAL Section 4.4.20 10385 document-format-supported RECOMMENDED Section 4.4.22 10386 color-supported RECOMMENDED Section 4.4.26 10387 compression-supported RECOMMENDED Section 4.4.32 10388 pages-per-minute OPTIONAL Section 4.4.36 10389 pages-per-minute-color OPTIONAL Section 4.4.37 10391 finishings-supported OPTIONAL Section 4.2.6 10392 number-up-supported OPTIONAL Section 4.2.7 10393 sides-supported RECOMMENDED Section 4.2.8 10394 media-supported RECOMMENDED Section 4.2.11 10395 printer-resolution-supported OPTIONAL Section 4.2.12 10396 print-quality-supported OPTIONAL Section 4.2.13 10398 deBry, Hastings, Herriot, Isaacson, Powell 10399 Expires August 23, 2000 10400 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 10401 Semantics" Documents 10403 This Appendix is divided into two lists that summarize the differences 10404 between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. The section 10405 numbers refer to the numbers in this document which in some cases have 10406 changed from RFC 2566. When a change affects multiple sections, the 10407 item is listed once in the order of the first section affected and the 10408 remaining affected section numbers are indicated. 10410 The first list contains extensions and clarifications and the second 10411 list contains changes in semantics or conformance. However, client and 10412 IPP object implementations of IPP/1.0 may implement any of the 10413 extensions and clarifications in this document. 10415 The following extensions and clarifications have been incorporated into 10416 this document: 10418 1. Section 2.1 - clarified that the term "client" can be either 10419 contained in software controlled by an end user or a part of a 10420 print server that controls devices. 10421 2. Section 2 - clarified that the term "IPP object" and "Printer 10422 object" can either be embedded in a device object or part of a 10423 print server that accepts IPP requests. 10424 3. Section 2.4 - added the description of the new "uri-authentication- 10425 supported" Printer Description attribute. 10426 4. Section 3.1.3, 3.1.6, 3.2.5.2, and 3.2.6.2 - clarified the error 10427 handling for operation attributes that have their own status code. 10428 5. Section 3.1.3 - clarified that multiple occurrences of the same 10429 attribute in an attribute group is mal-formed. An IPP Printer MAY 10430 reject the request or choose one of the attributes. 10431 6. Section 3.1.6 - reorganized this section into sub-sections to 10432 separately describe "status-code", "status-message", "detailed- 10433 status-message", and "document-access-error" attributes. 10434 7. Section 3.1.6.1 - clarified the error status codes and their 10435 relationship to operation attributes. 10436 8. Section 3.1.6.3 - Added the OPTIONAL "detailed-status-message 10437 (text(MAX))" operation attribute to provide additional more 10438 detailed information about a response. 10439 9. Section 3.1.6.4 and 3.2.2 - Added the OPTIONAL "document-access- 10440 error (text(MAX))" operation attribute for use with Print-URI and 10441 Send-URI responses. 10442 10. Sections 3.1.7 - Added this new section to clarify returning 10443 Unsupported Attributes for all operations, including only returning 10444 attributes that were in the request. Moved the text from section 10445 3.2.1.2 Unsupported Attributes to this section. 10446 11. Sections 3.1.7 and 4.1 - clarified the encoding of the "out- 10447 of-band" 'unsupported' and 'unknown' values. 10449 deBry, Hastings, Herriot, Isaacson, Powell 10450 Expires August 23, 2000 10451 12. Section 3.1.8 - clarified that only the version number 10452 parameter will be carried forward into future major or minor 10453 versions of the protocol. 10454 13. Section 3.1.8 - relaxed the requirements to increment the 10455 major version number in future versions of the Model and Semantics 10456 document. 10457 14. Section 3.1.9, and 3.2.5 - added the 'processing' state to the 10458 list of job states that a job can be in after a Create-Job 10459 operation. 10460 15. Section 3.1.9 - clarified that a non-spooling Printer MAY 10461 accept zero or more subsequent jobs while processing a job and flow 10462 control them down. Subsequent create requests are rejected with 10463 the 'server-error-busy' error status. 10464 16. Section 3.2.1.1 - clarified the validation of the 10465 "compression" operation attribute and its relationship to the 10466 validation of the "document-format" attribute and returning 10467 Unsupported Attributes. 10468 17. Sections 3.2.1.1, 4.3.8, 13.1.4.16, and 13.1.4.17 - added the 10469 'client-error-compression-not-supported', 'client-error- 10470 compression-error' status codes and the 'unsupported-compression' 10471 and 'compression-error' job-state-reasons. 10472 18. Sections 3.2.1.1 and 4.3.8 - added 'unsupported-document- 10473 format' and 'document-format-error' job-state-reasons. 10474 19. Sections 3.2.2, 4.3.8 and 13.1.4.19 - added 'client-error- 10475 document-access-error' status code and 'document-access-error' job 10476 state reason. 10477 20. Section 3.2.5.2 and 3.2.6.2 - clarified that the Unsupported 10478 Attributes group MUST NOT include attributes not requested in the 10479 Get-Printer-Attributes request. 10480 21. Section 3.2.6 - clarified that "limit" takes precedence over 10481 "which-jobs" and "my-jobs'. 10482 22. Section 3.2.6.2 - clarified that Get-Jobs returns 'successful- 10483 ok' when no jobs to return. 10484 23. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL Pause- 10485 Printer, Resume-Printer, and Purge-Jobs operations 10486 24. Section 3.3.1 - clarified that the authorization required for 10487 a Send-Document request MUST be the same user as the Create-Job or 10488 an operator. 10489 25. Section 3.3.1.1 - clarified that a Create-Job Send-Document 10490 with "last-document" = 'true' and no data is not an error; its a 10491 job with no documents. 10492 26. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL Hold- 10493 Job, Release-Job, and Restart-Job operations. Clarified the 10494 Restart-Job operation so that the Printer MUST re-fetch any 10495 documents passed by-reference (Print-URI or Send-URI). 10496 27. Section 4.1 - clarified that the encoding of the out-of-band 10497 values are specified in the Encoding and Transport" document. 10498 28. Sections 4.1.1 and 4.1.2 - clarified that the maximum 'text' 10499 and 'name' values of 1023 and 255 are for the 'textWithoutLanguage' 10500 portion of the 'textWithLanguage' form, so that the maximum number 10501 of octets for the actual text and name data is the same for the 10502 without and with language forms; the 'naturalLanguage' part is in 10503 addition. 10505 deBry, Hastings, Herriot, Isaacson, Powell 10506 Expires August 23, 2000 10507 29. Section 4.1.9.1 - clarified that 'application/octet-stream' 10508 auto-sensing can happen at create request time and/or job/document 10509 processing time. 10510 30. Section 4.1.14 - clarified that the localization of dateTime 10511 by the client includes the time zone. 10512 31. Section 4.2 - clarified that xxx-supported have multiple 10513 keywords and/or names by adding parentheses to the table to give: 10514 (1setOf (type3 keyword | name)) 10515 32. Section 4.2.2 - added the 'indefinite' keyword value to the 10516 "job-hold-until" attribute for use with the create operations and 10517 Hold-Job and Restart-Job operations. 10518 33. Section 4.2.6 - added more enum values to the "finishings" Job 10519 Template attribute. 10520 34. Section 4.3.7 - added that a forwarding server that cannot get 10521 any job state MAY return the job's state as 'completed', provided 10522 that it also return the new 'queued-in-device' job state reason. 10523 35. Section 4.3.7.2 - added the Partitioning of Job States section 10524 to clarify the concepts of Job Retention, Job History, and Job 10525 Removal. 10526 36. Section 4.3.8 - added 'job-data-insufficient' job state reason 10527 to indicate whether sufficient data has arrived for the document to 10528 start to be processed. 10529 37. Section 4.3.8 - added 'document-access-error' job state reason 10530 to indicate an access error of any kind. 10531 38. Section 4.3.8 - added 'job-queued-for-marker' job state reason 10532 to indicate whether the job has completed some processing and is 10533 waiting for the marker. 10534 39. Section 4.3.8 - added 'unsupported-compression' and 10535 'compression-error' job state reasons to indicate compression not 10536 supported or compression processing error after the create has been 10537 accepted. 10538 40. Section 4.3.8 - added 'unsupported-document-format' and 10539 'document-format-error' job state reasons to indicate document not 10540 supported or document format processing error after the create has 10541 been accepted. 10542 41. Section 4.3.8 - added 'queued-in-device' job state reason to 10543 indicate that a job as been forwarded to a print system or device 10544 that does not provide any job status. 10545 42. Section 4.3.10 - added "job-detailed-status-messages (1setOf 10546 text(MAX)) for returning detailed error messages. 10547 43. Section 4.3.11 - added the "job-document-access-errors (1setOf 10548 text(MAX)) 10549 44. Section 4.3.14.2 - clarified that the time recorded is the 10550 first time processing since the create operation or the Restart-Job 10551 operation. 10552 45. Section 4.3.14.2 and 4.3.14.3 - clarified that the out-of-band 10553 value 'no-value' is returned if the job has not started processing 10554 or has not completed, respectively. 10555 46. Section 4.3.14 - Added the OPTIONAL "date-time-at-creation", 10556 "date-time-at-processing", and "date-time-at-completed" Event Time 10557 Job Description attributes 10558 47. Section 4.4.3 - added the 'tls' value to "uri-security- 10559 supported" attribute. 10561 deBry, Hastings, Herriot, Isaacson, Powell 10562 Expires August 23, 2000 10563 48. Section 4.4.3 - clarified "uri-security-supported" is 10564 orthogonal to Client Authentication so that 'none' does not exclude 10565 Client Authentication. 10566 49. Section 4.4.11 - simplified the "printer-state" descriptions 10567 while generalizing to allow high end devices that interpret one or 10568 more jobs while marking another. Indicated that 'spool-area-full' 10569 and 'stopped-partly' "printer-state-reasons" may be used to provide 10570 further state information. 10571 50. Section 4.4.12 - added the 'moving-to-paused' keyword value to 10572 the "printer-state-reasons" attribute for use with the Pause- 10573 Printer operation. 10574 51. Section 4.4.12 - replaced the duplicate 'marker-supply-low' 10575 keyword with the missing 'toner-empty' keyword for the "printer- 10576 state-reasons" attribute. (This correction was also made before 10577 RFC 2566 was published). 10578 52. Section 4.4.12 - clarified 'spool-area-full' "printer-state- 10579 reasons" to include non-spooling printers to indicate when it can 10580 and cannot accept another job. 10581 53. Section 4.4.15 - added the enum values to the "operations- 10582 supported" attribute for the new operations. Clarified that the 10583 values of this attribute are encoded as any enum, namely 32-bit 10584 values. 10585 54. Section 4.4.30 - clarified that the dateTime value of 10586 "printer-current-time" is on a "best efforts basis". If a proper 10587 date-time cannot be obtained, the implementation returns the 'no- 10588 value' out-of-band value. Also clarified that the time zone NEED 10589 NOT be the time zone that the people near the device use and that 10590 the client SHOULD display the dateTime attributes in the user's 10591 local time. 10592 55. Sections 4.4.36 and 4.4.37 - added the OPTIONAL "pages-per- 10593 minute" and "pages-per-minute-color" Printer Description 10594 attributes. 10595 56. Section 5.1 - clarified that the client conformance 10596 requirements apply to clients controlled by an end user and clients 10597 in servers. 10598 57. Section 5.1 - clarified that any response MAY contain 10599 additional attribute groups, attributes, attribute syntaxes, or 10600 attribute values. 10601 58. Section 5.1 - clarified that a client SHOULD do its best to 10602 prevent a channel from being closed by a lower layer when the 10603 channel is flow controlled off by the IPP Printer. 10604 59. Section 5.2 - clarified that the IPP object requirements apply 10605 to objects embedded in devices or that are parts of servers. 10606 60. Section 5.2.2 - clarified that IPP objects MAY return 10607 operation responses that contain attribute groups, attribute names, 10608 attribute syntaxes, attribute values, and status codes that are 10609 extensions to this standard. 10610 61. Section 6 - changed the terminology of "private extensions" to 10611 "vendor extensions" and indicated that they are registered with 10612 IANA along with IETF standards track extensions. 10613 62. Section 6.7 - inserted this section on registering out-of-band 10614 attribute values with IANA as extensions. 10616 deBry, Hastings, Herriot, Isaacson, Powell 10617 Expires August 23, 2000 10618 63. Section 8.3 - clarified the use of URIs for each Client 10619 Authentication mechanism. 10620 64. Section 8.5 - added the security discussion around the new 10621 operator/administrator operations. 10622 65. Section 13.1.4.16 - added client-error-compression-not- 10623 supported (0x040F) 10624 66. Section 13.1.4.17 - added client-error-compression-error 10625 (0x0410) 10626 67. Section 13.1.4.18 - added client-error-document-format-error 10627 (0x0411) 10628 68. Section 13.1.4.19 - added client-error-document-access-error 10629 (0x0412) 10630 69. Section 13.1.5.10 - added server-error-multiple-document-jobs- 10631 not-supported (0x0509) 10632 70. Section 14 - added 'a-white', 'b-white', 'c-white', 'd-white', 10633 and 'e-white' and clarified that the existing 'a', 'b', 'c', 'd', 10634 and 'e' values are size values. Added American, Japanese, and 10635 European Engineering sizes, filled out -transparent and - 10636 translucent media names and drawings for the synchro cut sizes. 10637 71. Section 16 - added the OPTIONAL "pages-per-minute" and "pages- 10638 per-minute-color" Printer attributes to the Directory schema. 10639 72. Section 16 - added OPTIONAL "multiple-document-jobs-supported" 10640 to the Directory schema. 10641 73. Section 16 - added RECOMMENDED "uri-authentication-supported", 10642 "ipp-versions-supported", and "compression-supported" to the 10643 Directory schema. 10645 The following changes in semantics and/or conformance have been 10646 incorporated into this document: 10648 1. Section 3.1.8, 5.2.4, and 13.1.5.4 - Clients and IPP objects MUST 10649 support version 1.1 conformance requirements. It is 10650 recommended that they interoperate with 1.0. Also clarified 10651 that IPP Printers MUST accept '1.1' requests. It is 10652 recommended that they also accept '1.x' requests. 10653 2. Section 3.2.1.1 and section 4.4.32 - changed the "compression" 10654 operation and the "compression-supported" Printer Description 10655 attribute from OPTIONAL to REQUIRED. 10656 3. Sections 3.2.1.2 and 4.3.8 - changed "job-state-reasons" from 10657 RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be 10658 returned in create operation responses. 10659 4. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed Create-Job/Send- 10660 Document so that they MAY be implemented while only supporting 10661 one document jobs. Added the "multiple-document-jobs-supported" 10662 boolean Printer Description attribute to indicate whether 10663 Create-Job/Send-Document support multiple document jobs or not. 10664 Added to the Directory schema. 10665 5. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', 10666 since binary is not legal with the 'text' type. 10667 6. Section 4.2.4 - indicated that the "multiple-document-handling" 10668 Job Template attribute MUST be supported with at least one value 10669 if the Printer supports multiple documents per job 10671 deBry, Hastings, Herriot, Isaacson, Powell 10672 Expires August 23, 2000 10673 7. Section 4.3.7.2 - indicated that the 'job-restartable' job state 10674 reason SHOULD be supported if the Restart-Job operation is 10675 supported. 10676 8. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED to 10677 REQUIRED. 10678 9. Section 4.3.8 - clarified the conformance of the values of the 10679 "job-state-reasons" attribute by copying conformance 10680 requirements from other sections of the document so that it is 10681 clear from reading the definition of "job-state-reasons" which 10682 values MUST or SHOULD be supported. The 'none', 'unsupported- 10683 compression', and 'unsupported-document-format' values MUST be 10684 supported. The ''job-hold-until-specified' SHOULD be specified 10685 if the "job-hold-until" Job Template is supported. The 10686 following values SHOULD be supported: 'job-canceled-by-user', 10687 'aborted-by-system', and 'job-completed-successfully'. The 10688 'job-canceled-by-operator' SHOULD be supported if the 10689 implementation permits canceling by other than the job owner. 10690 The 'job-canceled-at-device' SHOULD be supported if the device 10691 supports canceling jobs at the console. The 'job-completed- 10692 with-warnings' SHOULD be supported, if the implementation 10693 detects warnings. The 'job-completed-with-errors' SHOULD be 10694 supported if the implementation detects errors. The 'job- 10695 restartable' SHOULD be supported if the Restart-Job operation is 10696 supported. 10697 10. Section 4.3.14 - changed the "time-at-creation", "time-at- 10698 processing", and "time-at-completed" Event Time Job Description 10699 attributes from OPTIONAL to REQUIRED. 10700 11. Section 4.3.14.4 - added the REQUIRED "job-printer-up-time 10701 (integer(1:MAX))" Job Description attribute as an alias for 10702 "printer-up-time" to reduce number of operations to get job 10703 times. 10704 12. Section 4.4.2 - added the REQUIRED "uri-authentication-supported 10705 (1setOf type2 keyword)" Printer Description attribute to 10706 describe the Client Authentication used by each Printer URI. 10707 13. Section 4.4.12 - changed "printer-state-reasons" Printer 10708 Description attribute from OPTIONAL to REQUIRED. 10709 14. Section 4.4.12 - changed 'paused' value of "printer-state- 10710 reasons" to MUST if Pause-Printer operation is supported. 10711 15. Section 4.4.14 - added the REQUIRED "ipp-versions-supported 10712 (1setOf keyword)" Printer Description attribute, since IPP/1.1 10713 Printers do not have to support version '1.0' conformance 10714 requirements. Section 4.4.16 - added the "multiple-document- 10715 jobs-supported (boolean)" Printer Description attribute so that 10716 a client can tell whether a Printer that supports Create- 10717 Job/Send-Document supports multiple document jobs or not. This 10718 attribute is REQUIRED if the Create-Job operation is supported. 10719 16. Section 4.4.24 - changed the "queued-job-count" Printer 10720 Description attribute from RECOMMENDED to REQUIRED. 10721 17. Section 4.4.32 - changed "compression-supported (1setOf type3 10722 keyword)" Printer Description attribute from OPTIONAL to 10723 REQUIRED. 10724 18. Section 5.1 - changed the client security requirements from 10725 RECOMMENDED non-standards track SSL3 to MUST support Client 10727 deBry, Hastings, Herriot, Isaacson, Powell 10728 Expires August 23, 2000 10729 Authentication as defined in the IPP/1.1 Encoding and Transport 10730 document [IPP-PRO]. A client SHOULD support Operation Privacy 10731 and Server Authentication as defined in the IPP/1.1 Encoding and 10732 Transport document [IPP-PRO]. 10733 19. Section 5.2.7 - changed the IPP object security requirements from 10734 OPTIONAL non-standards track SSL3 to SHOULD contain support for 10735 Client Authentication as defined in the IPP/1.1 Encoding and 10736 Transport document [IPP-PRO]. A Printer implementation MAY 10737 allow an administrator to configure the Printer so that all, 10738 some, or none of the users are authenticated. An IPP Printer 10739 implementation SHOULD contain support for Operation Privacy and 10740 Server Authentication as defined in the IPP/1.1 Encoding and 10741 Transport document [IPP-PRO]. A Printer implementation MAY 10742 allow an administrator to configure the degree of support for 10743 Operation Privacy and Server Authentication. Security MUST NOT 10744 be compromised when the client supplies a lower version-number 10745 in a request. 10747 See also the "IPP/1.1 Encoding and Transport" [IPP-PRO] document for 10748 differences between IPP/1.0 [RFC2565] and IPP/1.1 [IPP-PRO]. 10750 18. Full Copyright Statement 10752 Copyright (C) The Internet Society (1999). All Rights Reserved. 10754 This document and translations of it may be copied and furnished to 10755 others, and derivative works that comment on or otherwise explain it or 10756 assist in its implementation may be prepared, copied, published and 10757 distributed, in whole or in part, without restriction of any kind, 10758 provided that the above copyright notice and this paragraph are included 10759 on all such copies and derivative works. However, this document itself 10760 may not be modified in any way, such as by removing the copyright notice 10761 or references to the Internet Society or other Internet organizations, 10762 except as needed for the purpose of developing Internet standards in 10763 which case the procedures for copyrights defined in the Internet 10764 Standards process must be followed, or as required to translate it into 10765 languages other than English. 10767 The limited permissions granted above are perpetual and will not be 10768 revoked by the Internet Society or its successors or assigns. 10770 This document and the information contained herein is provided on an "AS 10771 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 10772 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 10773 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 10774 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 10775 FITNESS FOR A PARTICULAR PURPOSE. 10777 deBry, Hastings, Herriot, Isaacson, Powell 10778 Expires August 23, 2000