| < draft-ietf-ipp-model-10.txt | draft-ietf-ipp-model-11.txt > | |||
|---|---|---|---|---|
| INTERNET-DRAFT | INTERNET-DRAFT | |||
| draft-ietf-ipp-model-10.txt | draft-ietf-ipp-model-11.txt | |||
| R. deBry | R. deBry | |||
| IBM Corporation | IBM Corporation | |||
| T. Hastings | T. Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| R. Herriot | R. Herriot | |||
| Sun Microsystems | Sun Microsystems | |||
| S. Isaacson | S. Isaacson | |||
| Novell, Inc. | Novell, Inc. | |||
| P. Powell | P. Powell | |||
| Astart Technologies | Astart Technologies | |||
| June 30, 1998 | November 16, 1998 | |||
| Internet Printing Protocol/1.0: Model and Semantics | Internet Printing Protocol/1.0: Model and Semantics | |||
| Copyright (C) The Internet Society (date). All Rights Reserved. | Copyright (C) The Internet Society (date). All Rights Reserved. | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet-Draft. Internet-Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its areas, | documents of the Internet Engineering Task Force (IETF), its areas, and | |||
| and its working groups. Note that other groups may also distribute | its working groups. Note that other groups may also distribute working | |||
| working documents as Internet-Drafts. | documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference material | |||
| material or to cite them other than as "work in progress". | or to cite them other than as "work in progress". | |||
| To learn the current status of any Internet-Draft, please check the | To learn the current status of any Internet-Draft, please check the | |||
| "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | |||
| Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), | Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), | |||
| munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or | munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or | |||
| ftp.isi.edu (US West Coast). | ftp.isi.edu (US West Coast). | |||
| Abstract | Abstract | |||
| This document is one of a set of documents, which together describe | This document is one of a set of documents, which together describe all | |||
| all aspects of a new Internet Printing Protocol (IPP). IPP is an | aspects of a new Internet Printing Protocol (IPP). IPP is an | |||
| application level protocol that can be used for distributed printing | application level protocol that can be used for distributed printing | |||
| using Internet tools and technologies. The protocol is heavily | using Internet tools and technologies. This document describes a | |||
| influenced by the printing model introduced in the Document Printing | simplified model consisting of abstract objects, their attributes, and | |||
| Application (DPA) [ISO10175] standard. Although DPA specifies both | their operations that is independent of encoding and transport. The | |||
| end user and administrative features, IPP version 1.0 (IPP/1.0) | model consists of a Printer and a Job object. A Job optionally supports | |||
| focuses only on end user functionality. | multiple documents. IPP 1.0 semantics allow end-users and operators to | |||
| query printer capabilities, submit print jobs, inquire about the status | ||||
| of print jobs and printers, and cancel print jobs. This document also | ||||
| addresses security, internationalization, and directory issues. | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| The full set of IPP documents includes: | The full set of IPP documents includes: | |||
| Design Goals for an Internet Printing Protocol [IPP-REQ] | Design Goals for an Internet Printing Protocol [IPP-REQ] | |||
| (informational) | ||||
| Rationale for the Structure and Model and Protocol for the Internet | Rationale for the Structure and Model and Protocol for the Internet | |||
| Printing Protocol [IPP-RAT] (informational) | Printing Protocol [IPP-RAT] | |||
| Internet Printing Protocol/1.0: Model and Semantics (this document) | Internet Printing Protocol/1.0: Model and Semantics (this document) | |||
| Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] | Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] | |||
| Mapping between LPD and IPP Protocols [IPP LPD] (informational) | Internet Printing Protocol/1.0: Implementer's Guide [IPP-IIG] | |||
| Mapping between LPD and IPP Protocols [IPP LPD] | ||||
| The design goals document, "Design Goals for an Internet Printing | The "Design Goals for an Internet Printing Protocol" document takes a | |||
| Protocol", takes a broad look at distributed printing functionality, | broad look at distributed printing functionality, and it enumerates | |||
| and it enumerates real-life scenarios that help to clarify the | real-life scenarios that help to clarify the features that need to be | |||
| features that need to be included in a printing protocol for the | included in a printing protocol for the Internet. It identifies | |||
| Internet. It identifies requirements for three types of users: end | requirements for three types of users: end users, operators, and | |||
| users, operators, and administrators. The design goals document calls | administrators. It calls out a subset of end user requirements that are | |||
| out a subset of end user requirements that are satisfied in IPP/1.0. | satisfied in IPP/1.0. Operator and administrator requirements are out | |||
| Operator and administrator requirements are out of scope for version | of scope for version 1.0. | |||
| 1.0. The rationale document, "Rationale for the Structure and Model | ||||
| and Protocol for the Internet Printing Protocol", describes IPP from a | The "Rationale for the Structure and Model and Protocol for the Internet | |||
| high level view, defines a roadmap for the various documents that form | Printing Protocol" document describes IPP from a high level view, | |||
| the suite of IPP specifications, and gives background and rationale | defines a roadmap for the various documents that form the suite of IPP | |||
| for the IETF working group's major decisions. The model and semantics | specifications, and gives background and rationale for the IETF working | |||
| document, "Internet Printing Protocol/1.0: Model and Semantics", | group's major decisions. | |||
| describes a simplified model with abstract objects, their attributes, | ||||
| and their operations. The model introduces a Printer and a Job. The | The "Internet Printing Protocol/1.0: Encoding and Transport" document is | |||
| Job supports multiple documents per Job. The model document also | a formal mapping of the abstract operations and attributes defined in | |||
| addresses how security, internationalization, and directory issues are | the model document onto HTTP/1.1. It defines the encoding rules for a | |||
| addressed. The protocol specification, "Internet Printing | new Internet media type called "application/ipp". | |||
| Protocol/1.0: Encoding and Transport", is a formal mapping of the | ||||
| abstract operations and attributes defined in the model document onto | The "Internet Printing Protocol/1.0: Implementer's Guide" document gives | |||
| HTTP/1.1. The protocol specification defines the encoding rules for a | insight and advice to implementers of IPP clients and IPP objects. It | |||
| new Internet media type called "application/ipp". The LPD mapping | is intended to help them understand IPP/1.0 and some of the | |||
| document, "Mapping between LPD and IPP Protocols", gives some advice | considerations that may assist them in the design of their client and/or | |||
| IPP object implementations. For example, a typical order of processing | ||||
| requests is given, including error checking. Motivation for some of the | ||||
| specification decisions is also included. | ||||
| The "Mapping between LPD and IPP Protocols" document gives some advice | ||||
| to implementers of gateways between IPP and LPD (Line Printer Daemon) | to implementers of gateways between IPP and LPD (Line Printer Daemon) | |||
| implementations. | implementations. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction ....................................................9 | 1. Introduction 7 | |||
| 1.1 Simplified Printing Model ...................................10 | 1.1 Simplified Printing Model 8 | |||
| 2. IPP Objects ....................................................13 | ||||
| 2.1 Printer Object ..............................................14 | ||||
| 2.2 Job Object ..................................................15 | ||||
| 2.3 Object Relationships ........................................16 | ||||
| 2.4 Object Identity .............................................17 | ||||
| 3. IPP Operations .................................................20 | ||||
| 3.1 Common Semantics ............................................21 | ||||
| 3.1.1 Required Parameters .......................................21 | ||||
| 3.1.2 Operation IDs and Request IDs .............................22 | ||||
| 3.1.3 Attributes ................................................22 | ||||
| 3.1.4 Character Set and Natural Language Operation Attributes ...24 | ||||
| 3.1.4.1 Request Operation Attributes ...........................24 | ||||
| 3.1.4.2 Response Operation Attributes ..........................28 | ||||
| 3.1.5 Operation Targets .........................................29 | ||||
| 3.1.6 Operation Status Codes and Messages .......................30 | ||||
| 3.1.7 Versions ..................................................31 | ||||
| 3.1.8 Job Creation Operations ...................................33 | ||||
| 3.2 Printer Operations ..........................................35 | ||||
| 3.2.1 Print-Job Operation .......................................35 | ||||
| 3.2.1.1 Print-Job Request ......................................35 | ||||
| 3.2.1.2 Print-Job Response .....................................39 | ||||
| 3.2.2 Print-URI Operation .......................................42 | ||||
| 3.2.3 Validate-Job Operation ....................................42 | ||||
| 3.2.4 Create-Job Operation ......................................43 | ||||
| 3.2.5 Get-Printer-Attributes Operation ..........................43 | ||||
| 3.2.5.1 Get-Printer-Attributes Request .........................44 | ||||
| 3.2.5.2 Get-Printer-Attributes Response ........................46 | ||||
| 3.2.6 Get-Jobs Operation ........................................47 | ||||
| 3.2.6.1 Get-Jobs Request .......................................47 | ||||
| 3.2.6.2 Get-Jobs Response ......................................49 | ||||
| 3.3 Job Operations ..............................................50 | ||||
| 3.3.1 Send-Document Operation ...................................50 | ||||
| 3.3.1.1 Send-Document Request ..................................51 | ||||
| 3.3.1.2 Send-Document Response .................................53 | ||||
| 3.3.2 Send-URI Operation ........................................54 | ||||
| 3.3.3 Cancel-Job Operation ......................................54 | ||||
| 3.3.3.1 Cancel-Job Request .....................................54 | ||||
| 3.3.3.2 Cancel-Job Response ....................................55 | ||||
| 3.3.4 Get-Job-Attributes Operation ..............................56 | ||||
| 3.3.4.1 Get-Job-Attributes Request .............................57 | ||||
| 3.3.4.2 Get-Job-Attributes Response ............................57 | ||||
| 4. Object Attributes ..............................................58 | ||||
| 4.1 Attribute Syntaxes ..........................................58 | ||||
| 4.1.1 'text' ....................................................59 | ||||
| Expires December 30, 1998 | 2. IPP Objects 11 | |||
| 4.1.1.1 'textWithoutLanguage' ..................................60 | 2.1 Printer Object 11 | |||
| 4.1.1.2 'textWithLanguage' .....................................61 | 2.2 Job Object 13 | |||
| 4.1.2 'name' ....................................................62 | 2.3 Object Relationships 14 | |||
| 4.1.2.1 'nameWithoutLanguage' ..................................62 | 2.4 Object Identity 15 | |||
| 4.1.2.2 'nameWithLanguage' .....................................62 | ||||
| 4.1.3 'keyword' .................................................63 | ||||
| 4.1.4 'enum' ....................................................64 | ||||
| 4.1.5 'uri' .....................................................64 | ||||
| 4.1.6 'uriScheme' ...............................................65 | ||||
| 4.1.7 'charset' .................................................65 | ||||
| 4.1.8 'naturalLanguage' .........................................66 | ||||
| 4.1.9 'mimeMediaType' ...........................................66 | ||||
| 4.1.10 'octetString' .............................................68 | ||||
| 4.1.11 'boolean' .................................................68 | ||||
| 4.1.12 'integer' .................................................68 | ||||
| 4.1.13 'rangeOfInteger' ..........................................68 | ||||
| 4.1.14 'dateTime' ................................................68 | ||||
| 4.1.15 'resolution' ..............................................69 | ||||
| 4.1.16 '1setOf X' ...............................................69 | ||||
| 4.2 Job Template Attributes .....................................69 | ||||
| 4.2.1 job-priority (integer(1:100)) .............................73 | ||||
| 4.2.2 job-hold-until (type3 keyword | name (MAX)) ...............74 | ||||
| 4.2.3 job-sheets (type3 keyword | name(MAX)) ....................75 | ||||
| 4.2.4 multiple-document-handling (type2 keyword) ................75 | ||||
| 4.2.5 copies (integer(1:MAX)) ...................................77 | ||||
| 4.2.6 finishings (1setOf type2 enum) ............................77 | ||||
| 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) ...............78 | ||||
| 4.2.8 sides (type2 keyword) .....................................79 | ||||
| 4.2.9 number-up (integer(1:MAX)) ................................80 | ||||
| 4.2.10 orientation-requested (type2 enum) ........................80 | ||||
| 4.2.11 media (type3 keyword | name(MAX)) .........................81 | ||||
| 4.2.12 printer-resolution (resolution) ...........................82 | ||||
| 4.2.13 print-quality (type2 enum) ................................82 | ||||
| 4.3 Job Description Attributes ..................................83 | ||||
| 4.3.1 job-uri (uri) .............................................85 | ||||
| 4.3.2 job-id (integer(1:MAX)) ...................................85 | ||||
| 4.3.3 job-printer-uri (uri) .....................................85 | ||||
| 4.3.4 job-more-info (uri) .......................................86 | ||||
| 4.3.5 job-name (name(MAX)) ......................................86 | ||||
| 4.3.6 job-originating-user-name (name(MAX)) .....................86 | ||||
| 4.3.7 job-state (type1 enum) ....................................87 | ||||
| 4.3.8 job-state-reasons (1setOf type2 keyword) .................90 | ||||
| 4.3.9 job-state-message (text(MAX)) .............................92 | ||||
| 4.3.10 number-of-documents (integer(0:MAX)) ......................92 | ||||
| 4.3.11 output-device-assigned (name(127)) ........................93 | ||||
| 4.3.12 time-at-creation (integer(0:MAX)) .........................93 | ||||
| 4.3.13 time-at-processing (integer(0:MAX)) .......................93 | ||||
| 4.3.14 time-at-completed (integer(0:MAX)) ........................93 | ||||
| Expires December 30, 1998 | 3. IPP Operations 17 | |||
| 4.3.15 number-of-intervening-jobs (integer(0:MAX)) ...............94 | 3.1 Common Semantics 18 | |||
| 4.3.16 job-message-from-operator (text(127)) .....................94 | 3.1.1 Required Parameters 18 | |||
| 4.3.17 job-k-octets (integer(0:MAX)) .............................94 | 3.1.2 Operation IDs and Request IDs 19 | |||
| 4.3.18 job-impressions (integer(0:MAX)) ..........................95 | 3.1.3 Attributes 19 | |||
| 4.3.19 job-media-sheets (integer(0:MAX)) .........................95 | 3.1.4 Character Set and Natural Language Operation Attributes 21 | |||
| 4.3.20 job-k-octets-processed (integer(0:MAX)) ...................96 | 3.1.4.1 Request Operation Attributes 21 | |||
| 4.3.21 job-impressions-completed (integer(0:MAX)) ................96 | 3.1.4.2 Response Operation Attributes 24 | |||
| 4.3.22 job-media-sheets-completed (integer(0:MAX)) ...............96 | 3.1.5 Operation Targets 25 | |||
| 4.3.23 attributes-charset (charset) ..............................96 | 3.1.6 Operation Status Codes and Messages 27 | |||
| 4.3.24 attributes-natural-language (naturalLanguage) .............97 | 3.1.7 Versions 28 | |||
| 4.4 Printer Description Attributes ..............................97 | 3.1.8 Job Creation Operations 29 | |||
| 4.4.1 printer-uri-supported (1setOf uri) ........................99 | 3.2 Printer Operations 31 | |||
| 4.4.2 uri-security-supported (1setOf type2 keyword) .............99 | 3.2.1 Print-Job Operation 31 | |||
| 4.4.3 printer-name (name(127)) .................................101 | 3.2.1.1 Print-Job Request 31 | |||
| 4.4.4 printer-location (text(127)) .............................101 | 3.2.1.2 Print-Job Response 35 | |||
| 4.4.5 printer-info (text(127)) .................................101 | 3.2.2 Print-URI Operation 37 | |||
| 4.4.6 printer-more-info (uri) ..................................101 | 3.2.3 Validate-Job Operation 38 | |||
| 4.4.7 printer-driver-installer (uri) ...........................102 | 3.2.4 Create-Job Operation 38 | |||
| 4.4.8 printer-make-and-model (text(127)) .......................102 | 3.2.5 Get-Printer-Attributes Operation 39 | |||
| 4.4.9 printer-more-info-manufacturer (uri) .....................102 | 3.2.5.1 Get-Printer-Attributes Request 39 | |||
| 4.4.10 printer-state (type1 enum) ...............................102 | 3.2.5.2 Get-Printer-Attributes Response 41 | |||
| 4.4.11 printer-state-reasons (1setOf type2 keyword) .............103 | 3.2.6 Get-Jobs Operation 42 | |||
| 4.4.12 printer-state-message (text(MAX)) ........................106 | 3.2.6.1 Get-Jobs Request 42 | |||
| 4.4.13 operations-supported (1setOf type2 enum) .................106 | 3.2.6.2 Get-Jobs Response 43 | |||
| 4.4.14 charset-configured (charset) .............................107 | 3.3 Job Operations 45 | |||
| 4.4.15 charset-supported (1setOf charset) .......................107 | 3.3.1 Send-Document Operation 45 | |||
| 4.4.16 natural-language-configured (naturalLanguage) ............107 | 3.3.1.1 Send-Document Request 46 | |||
| 4.4.17 generated-natural-language-supported | 3.3.1.2 Send-Document Response 47 | |||
| (1setOf naturalLanguage) .................................108 | 3.3.2 Send-URI Operation 48 | |||
| 4.4.18 document-format-default (mimeMediaType) ..................108 | 3.3.3 Cancel-Job Operation 48 | |||
| 4.4.19 document-format-supported (1setOf mimeMediaType) .........109 | 3.3.3.1 Cancel-Job Request 49 | |||
| 4.4.20 printer-is-accepting-jobs (boolean) ......................109 | 3.3.3.2 Cancel-Job Response 49 | |||
| 4.4.21 queued-job-count (integer(0:MAX)) ........................109 | 3.3.4 Get-Job-Attributes Operation 50 | |||
| 4.4.22 printer-message-from-operator (text(127)) ................109 | 3.3.4.1 Get-Job-Attributes Request 51 | |||
| 4.4.23 color-supported (boolean) ................................109 | 3.3.4.2 Get-Job-Attributes Response 51 | |||
| 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) .......110 | ||||
| 4.4.25 pdl-override-supported (type2 keyword) ...................110 | ||||
| 4.4.26 printer-up-time (integer(1:MAX)) .........................110 | ||||
| 4.4.27 printer-current-time (dateTime) ..........................111 | ||||
| 4.4.28 multiple-operation-time-out (integer(1:MAX)) .............111 | ||||
| 4.4.29 compression-supported (1setOf type3 keyword) .............111 | ||||
| 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) ...........112 | ||||
| 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) ........112 | ||||
| 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) .......112 | ||||
| 5. Conformance ...................................................112 | ||||
| 5.1 Client Conformance Requirements ............................113 | ||||
| 5.2 IPP Object Conformance Requirements ........................113 | ||||
| 5.2.1 Objects ..................................................113 | ||||
| Expires December 30, 1998 | 4. Object Attributes 52 | |||
| 5.2.2 Operations ...............................................114 | 4.1 Attribute Syntaxes 52 | |||
| 5.2.3 IPP Object Attributes ....................................114 | 4.1.1 'text' 53 | |||
| 5.2.4 Extensions ...............................................115 | 4.1.1.1 'textWithoutLanguage' 54 | |||
| 5.2.5 Attribute Syntaxes .......................................115 | 4.1.1.2 'textWithLanguage' 54 | |||
| 5.3 Charset and Natural Language Requirements ..................115 | ||||
| 5.4 Security Conformance Requirements ..........................115 | ||||
| 6. IANA Considerations (registered and private extensions) .......116 | ||||
| 6.1 Typed 'keyword' and 'enum' Extensions ......................116 | ||||
| 6.2 Attribute Extensibility ....................................118 | ||||
| 6.3 Attribute Syntax Extensibility .............................119 | ||||
| 6.4 Operation Extensibility ....................................120 | ||||
| 6.5 Status Code Extensibility ..................................120 | ||||
| 6.6 Registration of MIME types/sub-types for document-formats ..121 | ||||
| 6.7 Registration of charsets for use in 'charset' attribute | ||||
| values .....................................................121 | ||||
| 7. Internationalization Considerations ...........................121 | ||||
| 8. Security Considerations .......................................124 | ||||
| 8.1 Security Scenarios .........................................125 | ||||
| 8.1.1 Client and Server in the Same Security Domain ............125 | ||||
| 8.1.2 Client and Server in Different Security Domains ..........126 | ||||
| 8.1.3 Print by Reference .......................................126 | ||||
| 8.2 URIs for TLS and non-TLS Access ............................126 | ||||
| 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute .126 | ||||
| 8.4 Restricted Queries .........................................128 | ||||
| 8.5 IPP Security Application Profile for TLS ...................128 | ||||
| 9. References ....................................................129 | ||||
| 10.Copyright Notice ..............................................133 | ||||
| 11.Author's Address ..............................................133 | ||||
| 12.Formats for IPP Registration Proposals ........................136 | ||||
| 12.1 Type2 keyword attribute values registration ................136 | ||||
| 12.2 Type3 keyword attribute values registration ................136 | ||||
| 12.3 Type2 enum attribute values registration ...................137 | ||||
| 12.4 Type3 enum attribute values registration ...................137 | ||||
| 12.5 Attribute registration .....................................137 | ||||
| 12.6 Attribute Syntax registration ..............................138 | ||||
| 12.7 Operation registration .....................................138 | ||||
| 12.8 Status code registration ...................................139 | ||||
| 13.APPENDIX A: Terminology .......................................139 | ||||
| 13.1 Conformance Terminology ....................................139 | ||||
| 13.1.1 NEED NOT .................................................139 | ||||
| 13.2 Model Terminology ..........................................139 | ||||
| 13.2.1 Keyword ..................................................139 | ||||
| 13.2.2 Attributes ...............................................140 | ||||
| 13.2.2.1 Attribute Name ........................................140 | ||||
| 13.2.2.2 Attribute Group Name ..................................140 | ||||
| 13.2.2.3 Attribute Value .......................................140 | ||||
| 13.2.2.4 Attribute Syntax ......................................140 | ||||
| 13.2.3 Supports .................................................141 | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 13.2.4 print-stream page ........................................143 | ||||
| 13.2.5 impression ...............................................143 | ||||
| 14.APPENDIX B: Status Codes and Suggested Status Code Messages ..143 | ||||
| 14.1 Status Codes ...............................................144 | ||||
| 14.1.1 Informational ............................................144 | ||||
| 14.1.2 Successful Status Codes ..................................145 | ||||
| 14.1.2.1 successful-ok (0x0000) ................................145 | ||||
| 14.1.2.2 successful-ok-ignored-or-substituted-attributes | ||||
| (0x0001) ..............................................145 | ||||
| 14.1.2.3 successful-ok-conflicting-attributes (0x0002) .........145 | ||||
| 14.1.3 Redirection Status Codes .................................145 | ||||
| 14.1.4 Client Error Status Codes ................................145 | ||||
| 14.1.4.1 client-error-bad-request (0x0400) .....................146 | ||||
| 14.1.4.2 client-error-forbidden (0x0401) .......................146 | ||||
| 14.1.4.3 client-error-not-authenticated (0x0402) ...............146 | ||||
| 14.1.4.4 client-error-not-authorized (0x0403) ..................146 | ||||
| 14.1.4.5 client-error-not-possible (0x0404) ....................146 | ||||
| 14.1.4.6 client-error-timeout (0x0405) .........................147 | ||||
| 14.1.4.7 client-error-not-found (0x0406) .......................147 | ||||
| 14.1.4.8 client-error-gone (0x0407) ............................147 | ||||
| 14.1.4.9 client-error-request-entity-too-large (0x0408) ........148 | ||||
| 14.1.4.10 client-error-request-value-too-long (0x0409) ..........148 | ||||
| 14.1.4.11 client-error-document-format-not-supported (0x040A) ...148 | ||||
| 14.1.4.12 client-error-attributes-or-values-not-supported | ||||
| (0x040B) ..............................................149 | ||||
| 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) ........149 | ||||
| 14.1.4.14 client-error-charset-not-supported (0x040D) ...........149 | ||||
| 14.1.4.15 client-error-conflicting-attributes (0x040E) ..........149 | ||||
| 14.1.5 Server Error Status Codes ................................149 | ||||
| 14.1.5.1 server-error-internal-error (0x0500) ..................150 | ||||
| 14.1.5.2 server-error-operation-not-supported (0x0501) .........150 | ||||
| 14.1.5.3 server-error-service-unavailable (0x0502) .............150 | ||||
| 14.1.5.4 server-error-version-not-supported (0x0503) ...........150 | ||||
| 14.1.5.5 server-error-device-error (0x0504) ....................151 | ||||
| 14.1.5.6 server-error-temporary-error (0x0505) .................151 | ||||
| 14.1.5.7 server-error-not-accepting-jobs (0x0506) ..............151 | ||||
| 14.1.5.8 server-error-busy (0x0507) ............................151 | ||||
| 14.2 Status Codes for IPP Operations ............................152 | ||||
| 15.APPENDIX C: "media" keyword values ...........................153 | ||||
| 16.APPENDIX D: Processing IPP Attributes .........................157 | ||||
| 16.1 Fidelity ...................................................158 | ||||
| 16.2 Page Description Language (PDL) Override ...................159 | ||||
| 16.3 Suggested Operation Processing Steps for All Operations ....161 | ||||
| 16.3.1 Validate version number ..................................162 | ||||
| 16.3.2 Validate operation identifier ............................162 | ||||
| 16.3.3 Validate the request identifier ..........................162 | ||||
| 16.3.4 Validate attribute group and attribute presence and order 163 | ||||
| 16.3.4.1 Validate the presence and order of attribute groups ...163 | ||||
| Expires December 30, 1998 | 4.1.2 'name' 55 | |||
| 16.3.4.2 Ignore unknown attribute groups in the expected | 4.1.2.1 'nameWithoutLanguage' 55 | |||
| position ..............................................163 | 4.1.2.2 'nameWithLanguage' 56 | |||
| 16.3.4.3 Validate the presence of a single occurrence of | 4.1.3 'keyword' 56 | |||
| required Operation attributes .........................164 | 4.1.4 'enum' 57 | |||
| 16.3.5 Validate the values of the REQUIRED Operation attributes .169 | 4.1.5 'uri' 58 | |||
| 16.3.6 Validate the values of the OPTIONAL Operation attributes .172 | 4.1.6 'uriScheme' 58 | |||
| 16.4 Suggested Additional Processing Steps for Operations that | 4.1.7 'charset' 58 | |||
| Create/Validate Jobs and Add Documents .....................175 | 4.1.8 'naturalLanguage' 59 | |||
| 16.4.1 Default "ipp-attribute-fidelity" if not supplied .........175 | 4.1.9 'mimeMediaType' 60 | |||
| 16.4.2 Check that the Printer object is accepting jobs ..........175 | 4.1.10 'octetString' 61 | |||
| 16.4.3 Validate the values of the Job Template attributes .......175 | 4.1.11 'boolean' 61 | |||
| 16.4.4 Check for conflicting Job Template attributes values .....180 | 4.1.12 'integer' 61 | |||
| 16.4.5 Decide whether to REJECT the request .....................181 | 4.1.13 'rangeOfInteger' 61 | |||
| 16.4.6 For the Validate-Job operation, RETURN one of the | 4.1.14 'dateTime' 61 | |||
| success status codes .....................................181 | 4.1.15 'resolution' 62 | |||
| 16.4.7 Create the Job object with attributes to support .........181 | 4.1.16 '1setOf X' 62 | |||
| 16.4.8 Return one of the success status codes ...................183 | 4.2 Job Template Attributes 62 | |||
| 16.4.9 Accept appended Document Content .........................184 | 4.2.1 job-priority (integer(1:100)) 66 | |||
| 16.4.10 Scheduling and Starting to Process the Job ...............184 | 4.2.2 job-hold-until (type3 keyword | name (MAX)) 67 | |||
| 16.4.11 Completing the Job .......................................184 | 4.2.3 job-sheets (type3 keyword | name(MAX)) 67 | |||
| 16.4.12 Destroying the Job after completion ......................184 | 4.2.4 multiple-document-handling (type2 keyword) 68 | |||
| 16.4.13 Interaction with "ipp-attribute-fidelity" ................184 | 4.2.5 copies (integer(1:MAX)) 69 | |||
| 16.5 Using Job Template Attributes During Document Processing. ..185 | 4.2.6 finishings (1setOf type2 enum) 69 | |||
| 17.APPENDIX E: Generic Directory Schema ..........................186 | 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 70 | |||
| 4.2.8 sides (type2 keyword) 71 | ||||
| 4.2.9 number-up (integer(1:MAX)) 72 | ||||
| 4.2.10 orientation-requested (type2 enum) 72 | ||||
| 4.2.11 media (type3 keyword | name(MAX)) 73 | ||||
| 4.2.12 printer-resolution (resolution) 74 | ||||
| 4.2.13 print-quality (type2 enum) 74 | ||||
| 4.3 Job Description Attributes 74 | ||||
| 4.3.1 job-uri (uri) 76 | ||||
| 4.3.2 job-id (integer(1:MAX)) 76 | ||||
| 4.3.3 job-printer-uri (uri) 76 | ||||
| 4.3.4 job-more-info (uri) 76 | ||||
| 4.3.5 job-name (name(MAX)) 77 | ||||
| 4.3.6 job-originating-user-name (name(MAX)) 77 | ||||
| 4.3.7 job-state (type1 enum) 77 | ||||
| 4.3.8 job-state-reasons (1setOf type2 keyword) 80 | ||||
| 4.3.9 job-state-message (text(MAX)) 82 | ||||
| 4.3.10 number-of-documents (integer(0:MAX)) 82 | ||||
| 4.3.11 output-device-assigned (name(127)) 82 | ||||
| 4.3.12 time-at-creation (integer(0:MAX)) 83 | ||||
| 4.3.13 time-at-processing (integer(0:MAX)) 83 | ||||
| 4.3.14 time-at-completed (integer(0:MAX)) 83 | ||||
| 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 83 | ||||
| 4.3.16 job-message-from-operator (text(127)) 83 | ||||
| 4.3.17 job-k-octets (integer(0:MAX)) 83 | ||||
| 4.3.18 job-impressions (integer(0:MAX)) 84 | ||||
| 4.3.19 job-media-sheets (integer(0:MAX)) 84 | ||||
| 4.3.20 job-k-octets-processed (integer(0:MAX)) 85 | ||||
| 4.3.21 job-impressions-completed (integer(0:MAX)) 85 | ||||
| 4.3.22 job-media-sheets-completed (integer(0:MAX)) 85 | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.3.23 attributes-charset (charset) 86 | ||||
| 4.3.24 attributes-natural-language (naturalLanguage) 86 | ||||
| 4.4 Printer Description Attributes 86 | ||||
| 4.4.1 printer-uri-supported (1setOf uri) 88 | ||||
| 4.4.2 uri-security-supported (1setOf type2 keyword) 88 | ||||
| 4.4.3 printer-name (name(127)) 89 | ||||
| 4.4.4 printer-location (text(127)) 90 | ||||
| 4.4.5 printer-info (text(127)) 90 | ||||
| 4.4.6 printer-more-info (uri) 90 | ||||
| 4.4.7 printer-driver-installer (uri) 90 | ||||
| 4.4.8 printer-make-and-model (text(127)) 90 | ||||
| 4.4.9 printer-more-info-manufacturer (uri) 90 | ||||
| 4.4.10 printer-state (type1 enum) 91 | ||||
| 4.4.11 printer-state-reasons (1setOf type2 keyword) 92 | ||||
| 4.4.12 printer-state-message (text(MAX)) 94 | ||||
| 4.4.13 operations-supported (1setOf type2 enum) 94 | ||||
| 4.4.14 charset-configured (charset) 95 | ||||
| 4.4.15 charset-supported (1setOf charset) 95 | ||||
| 4.4.16 natural-language-configured (naturalLanguage) 95 | ||||
| 4.4.17 generated-natural-language-supported(1setOf naturalLanguage)95 | ||||
| 4.4.18 document-format-default (mimeMediaType) 96 | ||||
| 4.4.19 document-format-supported (1setOf mimeMediaType) 96 | ||||
| 4.4.20 printer-is-accepting-jobs (boolean) 96 | ||||
| 4.4.21 queued-job-count (integer(0:MAX)) 97 | ||||
| 4.4.22 printer-message-from-operator (text(127)) 97 | ||||
| 4.4.23 color-supported (boolean) 97 | ||||
| 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 97 | ||||
| 4.4.25 pdl-override-supported (type2 keyword) 97 | ||||
| 4.4.26 printer-up-time (integer(1:MAX)) 98 | ||||
| 4.4.27 printer-current-time (dateTime) 98 | ||||
| 4.4.28 multiple-operation-time-out (integer(1:MAX)) 98 | ||||
| 4.4.29 compression-supported (1setOf type3 keyword) 99 | ||||
| 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) 99 | ||||
| 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) 99 | ||||
| 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) 99 | ||||
| 5. Conformance 99 | ||||
| 5.1 Client Conformance Requirements 100 | ||||
| 5.2 IPP Object Conformance Requirements 100 | ||||
| 5.2.1 Objects 101 | ||||
| 5.2.2 Operations 101 | ||||
| 5.2.3 IPP Object Attributes 101 | ||||
| 5.2.4 Extensions 102 | ||||
| 5.2.5 Attribute Syntaxes 102 | ||||
| 5.3 Charset and Natural Language Requirements 102 | ||||
| 5.4 Security Conformance Requirements 102 | ||||
| 6. IANA Considerations (registered and private extensions) 103 | ||||
| 6.1 Typed 'keyword' and 'enum' Extensions 103 | ||||
| 6.2 Attribute Extensibility 105 | ||||
| 6.3 Attribute Syntax Extensibility 106 | ||||
| 6.4 Operation Extensibility 106 | ||||
| 6.5 Attribute Groups 106 | ||||
| 6.6 Status Code Extensibility 107 | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 6.7 Registration of MIME types/sub-types for document-formats 107 | ||||
| 6.8 Registration of charsets for use in 'charset' attribute values107 | ||||
| 7. Internationalization Considerations 108 | ||||
| 8. Security Considerations 110 | ||||
| 8.1 Security Scenarios 112 | ||||
| 8.1.1 Client and Server in the Same Security Domain 112 | ||||
| 8.1.2 Client and Server in Different Security Domains 112 | ||||
| 8.1.3 Print by Reference 112 | ||||
| 8.2 URIs for SSL3 and non-SSL3 Access 112 | ||||
| 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute 113 | ||||
| 8.4 Restricted Queries 114 | ||||
| 8.5 Queries on jobs submitted using non-IPP protocols 115 | ||||
| 8.6 IPP Security Application Profile for SSL3 115 | ||||
| 9. References 116 | ||||
| 10.Copyright Notice 119 | ||||
| 11.Author's Address 119 | ||||
| 12.Formats for IPP Registration Proposals 122 | ||||
| 12.1 Type2 keyword attribute values registration 122 | ||||
| 12.2 Type3 keyword attribute values registration 122 | ||||
| 12.3 Type2 enum attribute values registration 122 | ||||
| 12.4 Type3 enum attribute values registration 123 | ||||
| 12.5 Attribute registration 123 | ||||
| 12.6 Attribute Syntax registration 124 | ||||
| 12.7 Operation registration 124 | ||||
| 12.8 Attribute Group registration 116 | ||||
| 12.9 Status code registration 124 | ||||
| 13.APPENDIX A: Terminology 125 | ||||
| 13.1 Conformance Terminology 125 | ||||
| 13.1.1 NEED NOT 125 | ||||
| 13.2 Model Terminology 125 | ||||
| 13.2.1 Keyword 125 | ||||
| 13.2.2 Attributes 125 | ||||
| 13.2.2.1 Attribute Name 126 | ||||
| 13.2.2.2 Attribute Group Name 126 | ||||
| 13.2.2.3 Attribute Value 126 | ||||
| 13.2.2.4 Attribute Syntax 126 | ||||
| 13.2.3 Supports 126 | ||||
| 13.2.4 print-stream page 128 | ||||
| 13.2.5 impression 128 | ||||
| 14.APPENDIX B: Status Codes and Suggested Status Code Messages 128 | ||||
| 14.1 Status Codes 129 | ||||
| 14.1.1 Informational 130 | ||||
| 14.1.2 Successful Status Codes 130 | ||||
| 14.1.2.1 successful-ok (0x0000) 130 | ||||
| 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)130 | ||||
| 14.1.2.3 successful-ok-conflicting-attributes (0x0002) 130 | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.3 Redirection Status Codes 131 | ||||
| 14.1.4 Client Error Status Codes 131 | ||||
| 14.1.4.1 client-error-bad-request (0x0400) 131 | ||||
| 14.1.4.2 client-error-forbidden (0x0401) 131 | ||||
| 14.1.4.3 client-error-not-authenticated (0x0402) 131 | ||||
| 14.1.4.4 client-error-not-authorized (0x0403) 131 | ||||
| 14.1.4.5 client-error-not-possible (0x0404) 132 | ||||
| 14.1.4.6 client-error-timeout (0x0405) 132 | ||||
| 14.1.4.7 client-error-not-found (0x0406) 132 | ||||
| 14.1.4.8 client-error-gone (0x0407) 132 | ||||
| 14.1.4.9 client-error-request-entity-too-large (0x0408) 133 | ||||
| 14.1.4.10client-error-request-value-too-long (0x0409) 133 | ||||
| 14.1.4.11client-error-document-format-not-supported (0x040A) 133 | ||||
| 14.1.4.12client-error-attributes-or-values-not-supported (0x040B)133 | ||||
| 14.1.4.13client-error-uri-scheme-not-supported (0x040C) 134 | ||||
| 14.1.4.14client-error-charset-not-supported (0x040D) 134 | ||||
| 14.1.4.15client-error-conflicting-attributes (0x040E) 134 | ||||
| 14.1.5 Server Error Status Codes 134 | ||||
| 14.1.5.1 server-error-internal-error (0x0500) 134 | ||||
| 14.1.5.2 server-error-operation-not-supported (0x0501) 135 | ||||
| 14.1.5.3 server-error-service-unavailable (0x0502) 135 | ||||
| 14.1.5.4 server-error-version-not-supported (0x0503) 135 | ||||
| 14.1.5.5 server-error-device-error (0x0504) 135 | ||||
| 14.1.5.6 server-error-temporary-error (0x0505) 136 | ||||
| 14.1.5.7 server-error-not-accepting-jobs (0x0506) 136 | ||||
| 14.1.5.8 server-error-busy (0x0507) 136 | ||||
| 14.1.5.9 server-error-job-canceled (0x0508) 136 | ||||
| 14.2 Status Codes for IPP Operations 137 | ||||
| 15.APPENDIX C: "media" keyword values 137 | ||||
| 16.APPENDIX D: Processing IPP Attributes 141 | ||||
| 16.1 Fidelity 142 | ||||
| 16.2 Page Description Language (PDL) Override 143 | ||||
| 16.3 Using Job Template Attributes During Document Processing. 145 | ||||
| 17.APPENDIX E: Generic Directory Schema 146 | ||||
| 18.APPENDIX F: Change History for the Model and Semantics document 147 | ||||
| Expires December 30, 1998 | ||||
| 1. Introduction | 1. Introduction | |||
| The Internet Printing Protocol (IPP) is an application level protocol | The Internet Printing Protocol (IPP) is an application level protocol | |||
| that can be used for distributed printing using Internet tools and | that can be used for distributed printing using Internet tools and | |||
| technologies. IPP version 1.0 (IPP/1.0) focuses only on end user | technologies. IPP version 1.0 (IPP/1.0) focuses only on end user | |||
| functionality. This document is just one of a suite of documents that | functionality. This document is just one of a suite of documents that | |||
| fully define IPP. The full set of IPP documents includes: | fully define IPP. The full set of IPP documents includes: | |||
| Design Goals for an Internet Printing Protocol [IPP-REQ] | Design Goals for an Internet Printing Protocol [IPP-REQ] | |||
| (informational) | ||||
| Rationale for the Structure and Model and Protocol for the Internet | Rationale for the Structure and Model and Protocol for the Internet | |||
| Printing Protocol [IPP-RAT] (informational) | Printing Protocol [IPP-RAT] | |||
| Internet Printing Protocol/1.0: Model and Semantics (this document) | Internet Printing Protocol/1.0: Model and Semantics (this document) | |||
| Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] | Internet Printing Protocol/1.0: Encoding and Transport [IPP-PRO] | |||
| Mapping between LPD and IPP Protocols [IPP-LPD] (informational) | ||||
| Anyone reading this document for the first time is strongly encouraged | ||||
| to read the IPP documents in the following order: | ||||
| 1. The design goals document, "Design Goals for an Internet | Isaacson, Powell Expires May 16, 1999 | |||
| Printing Protocol". That document takes a broad look at | Internet Printing Protocol/1.0: Implementer's Guide [IPP-IIG] | |||
| distributed printing functionality, and it enumerates real-life | Mapping between LPD and IPP Protocols [IPP-LPD] | |||
| scenarios that help to clarify the features that need to be | ||||
| included in a printing protocol for the Internet. It identifies | ||||
| requirements for three types of users: end users, operators, and | ||||
| administrators. The design goals document calls out a subset of | ||||
| end user requirements that are satisfied in IPP/1.0. Operator | ||||
| and administrator requirements are out of scope for version 1.0. | ||||
| 2. The rationale document, "Rationale for the Structure and Model | ||||
| and Protocol for the Internet Printing Protocol". That document | ||||
| describes IPP from a high level view, defines a roadmap for the | ||||
| various documents that form the suite of IPP specifications, and | ||||
| gives background and rationale for the IETF working group's major | ||||
| decisions. | ||||
| 3. This document, the "Internet Printing Protocol/1.0: Model and | ||||
| Semantics" document. This document describes a simplified model | ||||
| with abstract objects, their attributes, and their operations. | ||||
| The model introduces a Printer and a Job. A Job optionally | ||||
| supports multiple documents per Job. The model document also | ||||
| describes how security, internationalization, and directory | ||||
| issues are addressed. | ||||
| 4. The protocol specification, " Internet Printing Protocol/1.0: | ||||
| Encoding and Transport". That document defines the encoding | ||||
| rules for a new Internet media type called "application/ipp" and | ||||
| shows a formal mapping of the abstract operations and attributes | ||||
| defined in the model document onto HTTP/1.1. | ||||
| Expires December 30, 1998 | ||||
| The LPD mapping document, "Mapping between LPD and IPP Protocols", is | Anyone reading these documents for the first time is strongly encouraged | |||
| an informational document that recommends a mapping between the | to read the IPP documents in the above order. | |||
| commands and operands of IPP. The LPD mapping document gives some | ||||
| advice to implementers of gateways between IPP and LPD (Line Printer | ||||
| Daemon) implementations. | ||||
| This document is laid out as follows: | This document is laid out as follows: | |||
| - The rest of Section 1 is an introduction to the IPP simplified | - The rest of Section 1 is an introduction to the IPP simplified | |||
| model for distributed printing. | model for distributed printing. | |||
| - Section 2 introduces the object types covered in the model with | - Section 2 introduces the object types covered in the model with | |||
| their basic behaviors, attributes, and interactions. | their basic behaviors, attributes, and interactions. | |||
| - Section 3 defines the operations included in IPP/1.0. IPP | - Section 3 defines the operations included in IPP/1.0. IPP | |||
| operations are synchronous, therefore, for each operation, there | operations are synchronous, therefore, for each operation, there is | |||
| is a both request and a response. | a both request and a response. | |||
| - Section 4 defines the attributes (and their syntaxes) that are | - Section 4 defines the attributes (and their syntaxes) that are used | |||
| used in the model. | in the model. | |||
| - Sections 5 - 6 summarizes the implementation conformance | - Sections 5 - 6 summarizes the implementation conformance | |||
| requirements for objects that support the protocol and IANA | requirements for objects that support the protocol and IANA | |||
| considerations, respectively. | considerations, respectively. | |||
| - Sections 7 - 11 cover the Internationalization and Security | - Sections 7 - 12 cover the Internationalization and Security | |||
| considerations as well as References, Copyright Notice, and | considerations as well as References, Copyright Notice, Author | |||
| Author contact information. | contact information, and Formats for Registration Proposals. | |||
| - Sections 12 - 14 are appendices that cover Terminology, Status | - Sections 13 - 15 are appendices that cover Terminology, Status | |||
| Codes and Messages, and "media" keyword values. This document | Codes and Messages, and "media" keyword values. | |||
| uses terms such as "attributes", "keywords", and "support". | ||||
| These terms have special meaning and are defined in the model | Note: This document uses terms such as "attributes", | |||
| terminology section. Capitalized terms, such as MUST and | "keywords", and "support". These terms have special meaning | |||
| OPTIONAL, have special meaning relating to conformance. These | and are defined in the model terminology section 13.2. | |||
| terms are defined in the section on conformance terminology, most | Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, | |||
| of which is taken from RFC 2119 [RFC2119]. | SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning | |||
| - Section 15 is an appendix that defines the rules and suggested | relating to conformance. These terms are defined in section | |||
| techniques for the processing of attributes in client requests by | 13.1 on conformance terminology, most of which is taken from | |||
| IPP objects. This section helps to clarify the effects of | RFC 2119 [RFC2119]. | |||
| - Section 16 is an appendix that helps to clarify the effects of | ||||
| interactions between related attributes and their values. | interactions between related attributes and their values. | |||
| - Section 16 is an appendix that enumerates the subset of Printer | - Section 17 is an appendix that enumerates the subset of Printer | |||
| attributes that form a generic directory schema. These | attributes that form a generic directory schema. These attributes | |||
| attributes are useful when registering a Printer so that a client | are useful when registering a Printer so that a client can find the | |||
| can find the Printer not just by name, but by filtered searches | Printer not just by name, but by filtered searches as well. | |||
| as well. | - Section 18 is an appendix that provides a Change History | |||
| summarizing the clarification and changes that might affect an | ||||
| implementation since the June 30, 1998 draft. | ||||
| 1.1 Simplified Printing Model | 1.1 Simplified Printing Model | |||
| In order to achieve its goal of realizing a workable printing protocol | In order to achieve its goal of realizing a workable printing protocol | |||
| for the Internet, the Internet Printing Protocol (IPP) is based on a | for the Internet, the Internet Printing Protocol (IPP) is based on a | |||
| simplified printing model that abstracts the many components of real | simplified printing model that abstracts the many components of real | |||
| world printing solutions. The Internet is a distributed computing | world printing solutions. The Internet is a distributed computing | |||
| Expires December 30, 1998 | ||||
| environment where requesters of print services (clients, applications, | environment where requesters of print services (clients, applications, | |||
| printer drivers, etc.) cooperate and interact with print service | printer drivers, etc.) cooperate and interact with print service | |||
| providers. This model and semantics document describes a simple, | providers. This model and semantics document describes a simple, | |||
| abstract model for IPP even though the underlying configurations may | abstract model for IPP even though the underlying configurations may be | |||
| be complex "n-tier" client/server systems. An important simplifying | ||||
| step in the IPP model is to expose only the key objects and interfaces | Isaacson, Powell Expires May 16, 1999 | |||
| required for printing. The model described in this model document | complex "n-tier" client/server systems. An important simplifying step | |||
| does not include features, interfaces, and relationships that are | in the IPP model is to expose only the key objects and interfaces | |||
| beyond the scope of the first version of IPP (IPP/1.0). IPP/1.0 | required for printing. The model described in this model document does | |||
| incorporates many of the relevant ideas and lessons learned from other | not include features, interfaces, and relationships that are beyond the | |||
| specification and development efforts [HTPP] [ISO10175] [LDPA] | scope of the first version of IPP (IPP/1.0). IPP/1.0 incorporates many | |||
| [P1387.4] [PSIS] [RFC1179] [SWP]. | of the relevant ideas and lessons learned from other specification and | |||
| development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] | ||||
| [SWP]. IPP is heavily influenced by the printing model introduced in | ||||
| the Document Printing Application (DPA) [ISO10175] standard. Although | ||||
| DPA specifies both end user and administrative features, IPP version 1.0 | ||||
| (IPP/1.0) focuses only on end user functionality. | ||||
| The IPP/1.0 model encapsulates the important components of distributed | The IPP/1.0 model encapsulates the important components of distributed | |||
| printing into two object types: | printing into two object types: | |||
| - Printer (Section 2.1) | - Printer (Section 2.1) | |||
| - Job (Section 2.2) | - Job (Section 2.2) | |||
| Each object type has an associated set of operations (see section 3) | Each object type has an associated set of operations (see section 3) and | |||
| and attributes (see section 4). | attributes (see section 4). | |||
| It is important, however, to understand that in real system | It is important, however, to understand that in real system | |||
| implementations (which lie underneath the abstracted IPP/1.0 model), | implementations (which lie underneath the abstracted IPP/1.0 model), | |||
| there are other components of a print service which are not explicitly | there are other components of a print service which are not explicitly | |||
| defined in the IPP/1.0 model. The following figure illustrates where | defined in the IPP/1.0 model. The following figure illustrates where | |||
| IPP/1.0 fits with respect to these other components. | IPP/1.0 fits with respect to these other components. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| +--------------+ | +--------------+ | |||
| | Application | | | Application | | |||
| o +. . . . . . . | | o +. . . . . . . | | |||
| \|/ | Spooler | | \|/ | Spooler | | |||
| / \ +. . . . . . . | +---------+ | / \ +. . . . . . . | +---------+ | |||
| End-User | Print Driver |---| File | | End-User | Print Driver |---| File | | |||
| +-----------+ +-----+ +------+-------+ +----+----+ | +-----------+ +-----+ +------+-------+ +----+----+ | |||
| | Browser | | GUI | | | | | Browser | | GUI | | | | |||
| +-----+-----+ +--+--+ | | | +-----+-----+ +--+--+ | | | |||
| | | | | | | | | | | |||
| skipping to change at page 12, line 44 ¶ | skipping to change at page 10, line 44 ¶ | |||
| +-----------------+ | +-----------------+ | |||
| An IPP Printer object encapsulates the functions normally associated | An IPP Printer object encapsulates the functions normally associated | |||
| with physical output devices along with the spooling, scheduling and | with physical output devices along with the spooling, scheduling and | |||
| multiple device management functions often associated with a print | multiple device management functions often associated with a print | |||
| server. Printer objects are optionally registered as entries in a | server. Printer objects are optionally registered as entries in a | |||
| directory where end users find and select them based on some sort of | directory where end users find and select them based on some sort of | |||
| filtered and context based searching mechanism (see section 17). The | filtered and context based searching mechanism (see section 17). The | |||
| directory is used to store relatively static information about the | directory is used to store relatively static information about the | |||
| Printer, allowing end users to search for and find Printers that match | Printer, allowing end users to search for and find Printers that match | |||
| their search criteria, for example: name, context, printer | their search criteria, for example: name, context, printer capabilities, | |||
| capabilities, etc. The more dynamic information, such as state, | etc. The more dynamic information, such as state, currently loaded and | |||
| currently loaded and ready media, number of jobs at the Printer, | ready media, number of jobs at the Printer, errors, warnings, and so | |||
| errors, warnings, and so forth, is directly associated with the | forth, is directly associated with the Printer object itself rather than | |||
| Printer object itself rather than with the entry in the directory | with the entry in the directory which only represents the Printer | |||
| which only represents the Printer object. | object. | |||
| IPP clients implement the IPP protocol on the client side and give end | IPP clients implement the IPP protocol on the client side and give end | |||
| users (or programs running on behalf of end users) the ability to | users (or programs running on behalf of end users) the ability to query | |||
| Printer objects and submit and manage print jobs. An IPP server is just | ||||
| Expires December 30, 1998 | that part of the Printer object that implements the server-side | |||
| query Printer objects and submit and manage print jobs. An IPP server | protocol. The rest of the Printer object implements (or gateways into) | |||
| is just that part of the Printer object that implements the server- | the application semantics of the print service itself. The Printer | |||
| side protocol. The rest of the Printer object implements (or gateways | objects may be embedded in an output device or may be implemented on a | |||
| into) the application semantics of the print service itself. The | host on the network that communicates with an output device. | |||
| Printer objects may be embedded in an output device or may be | ||||
| implemented on a host on the network that communicates with an output | ||||
| device. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| When a job is submitted to the Printer object and the Printer object | When a job is submitted to the Printer object and the Printer object | |||
| validates the attributes in the submission request, the Printer object | validates the attributes in the submission request, the Printer object | |||
| creates a new Job object. The end user then interacts with this new | creates a new Job object. The end user then interacts with this new Job | |||
| Job object to query its status and monitor the progress of the job. | object to query its status and monitor the progress of the job. End | |||
| End users may also cancel the print job by using the Job object's | users may also cancel the print job by using the Job object's Cancel-Job | |||
| Cancel-Job operation. The notification service is out of scope for | operation. The notification service is out of scope for IPP/1.0, but | |||
| IPP/1.0, but using such a notification service, the end user is able | using such a notification service, the end user is able to register for | |||
| to register for and receive Printer specific and Job specific events. | and receive Printer specific and Job specific events. An end user can | |||
| An end user can query the status of Printer objects and can follow the | query the status of Printer objects and can follow the progress of Job | |||
| progress of Job objects by polling using the Get-Printer-Attributes, | objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get- | |||
| Get-Jobs, and Get-Job-Attributes operations. | Job-Attributes operations. | |||
| 2. IPP Objects | 2. IPP Objects | |||
| The IPP/1.0 model introduces objects of type Printer and Job. Each | The IPP/1.0 model introduces objects of type Printer and Job. Each type | |||
| type of object models relevant aspects of a real-world entity such as | of object models relevant aspects of a real-world entity such as a real | |||
| a real printer or real print job. Each object type is defined as a | printer or real print job. Each object type is defined as a set of | |||
| set of possible attributes that may be supported by instances of that | possible attributes that may be supported by instances of that object | |||
| object type. For each object (instance), the actual set of supported | type. For each object (instance), the actual set of supported | |||
| attributes and values describe a specific implementation. The | attributes and values describe a specific implementation. The object's | |||
| object's attributes and values describe its state, capabilities, | attributes and values describe its state, capabilities, realizable | |||
| realizable features, job processing functions, and default behaviors | features, job processing functions, and default behaviors and | |||
| and characteristics. For example, the Printer object type is defined | characteristics. For example, the Printer object type is defined as a | |||
| as a set of attributes that each Printer object potentially supports. | set of attributes that each Printer object potentially supports. In the | |||
| In the same manner, the Job object type is defined as a set of | same manner, the Job object type is defined as a set of attributes that | |||
| attributes that are potentially supported by each Job object. | are potentially supported by each Job object. | |||
| Each attribute included in the set of attributes defining an object | Each attribute included in the set of attributes defining an object type | |||
| type is labeled as: | is labeled as: | |||
| - "REQUIRED": each object MUST support the attribute. | - "REQUIRED": each object MUST support the attribute. | |||
| - "OPTIONAL": each object MAY support the attribute. | - "OPTIONAL": each object MAY support the attribute. | |||
| There is no such similar labeling of attribute values. However, if an | There is no such similar labeling of attribute values. However, if an | |||
| implementation supports an attribute, it MUST support at least one of | implementation supports an attribute, it MUST support at least one of | |||
| the possible values for that attribute. | the possible values for that attribute. | |||
| Expires December 30, 1998 | ||||
| 2.1 Printer Object | 2.1 Printer Object | |||
| The major component of the IPP/1.0 model is the Printer object. A | The major component of the IPP/1.0 model is the Printer object. A | |||
| Printer object implements the server-side of the IPP/1.0 protocol. | Printer object implements the server-side of the IPP/1.0 protocol. | |||
| Using the protocol, end users may query the attributes of the Printer | Using the protocol, end users may query the attributes of the Printer | |||
| object and submit print jobs to the Printer object. The actual | object and submit print jobs to the Printer object. The actual | |||
| implementation components behind the Printer abstraction may take on | implementation components behind the Printer abstraction may take on | |||
| different forms and different configurations. However, the model | different forms and different configurations. However, the model | |||
| abstraction allows the details of the configuration of real components | abstraction allows the details of the configuration of real components | |||
| to remain opaque to the end user. Section 3 describes each of the | to remain opaque to the end user. Section 3 describes each of the | |||
| Printer operations in detail. | Printer operations in detail. | |||
| The capabilities and state of a Printer object are described by its | The capabilities and state of a Printer object are described by its | |||
| attributes. Printer attributes are divided into two groups: | attributes. Printer attributes are divided into two groups: | |||
| - "job-template" attributes: These attributes describe supported | Isaacson, Powell Expires May 16, 1999 | |||
| job processing capabilities and defaults for the Printer object. | - "job-template" attributes: These attributes describe supported job | |||
| (See section 4.2) | processing capabilities and defaults for the Printer object. (See | |||
| section 4.2) | ||||
| - "printer-description" attributes: These attributes describe the | - "printer-description" attributes: These attributes describe the | |||
| Printer object's identification, state, location, references to | Printer object's identification, state, location, references to | |||
| other sources of information about the Printer object, etc. (see | other sources of information about the Printer object, etc. (see | |||
| section 4.4) | section 4.4) | |||
| Since a Printer object is an abstraction of a generic document output | Since a Printer object is an abstraction of a generic document output | |||
| device and print service provider, a Printer object could be used to | device and print service provider, a Printer object could be used to | |||
| represent any real or virtual device with semantics consistent with | represent any real or virtual device with semantics consistent with the | |||
| the Printer object, such as a fax device, an imager, or even a CD | Printer object, such as a fax device, an imager, or even a CD writer. | |||
| writer. | ||||
| Some examples of configurations supporting a Printer object include: | Some examples of configurations supporting a Printer object include: | |||
| 1) An output device with no spooling capabilities | 1) An output device with no spooling capabilities | |||
| 2) An output device with a built-in spooler | 2) An output device with a built-in spooler | |||
| 3) A print server supporting IPP with one or more associated output | 3) A print server supporting IPP with one or more associated output | |||
| devices | devices | |||
| 3a) The associated output devices may or may not be capable of | 3a) The associated output devices may or may not be capable of | |||
| spooling jobs | spooling jobs | |||
| 3b) The associated output devices may or may not support IPP | 3b) The associated output devices may or may not support IPP | |||
| The following figures show some examples of how Printer objects can be | The following figures show some examples of how Printer objects can be | |||
| realized on top of various distributed printing configurations. The | realized on top of various distributed printing configurations. The | |||
| embedded case below represents configurations 1 and 2. The hosted and | embedded case below represents configurations 1 and 2. The hosted and | |||
| fan-out figures below represent configurations 3a and 3b. | fan-out figures below represent configurations 3a and 3b. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| Legend: | Legend: | |||
| ##### indicates a Printer object which is | ##### indicates a Printer object which is | |||
| either embedded in an output device or is | either embedded in an output device or is | |||
| hosted in a server. The Printer object | hosted in a server. The Printer object | |||
| might or might not be capable of queuing/spooling. | might or might not be capable of queuing/spooling. | |||
| any indicates any network protocol or direct | any indicates any network protocol or direct | |||
| connect, including IPP | connect, including IPP | |||
| skipping to change at page 15, line 46 ¶ | skipping to change at page 13, line 46 ¶ | |||
| O +--------+ ########### / +---------------+ | O +--------+ ########### / +---------------+ | |||
| /|\ | client |-IPP-># Printer #--* | /|\ | client |-IPP-># Printer #--* | |||
| / \ +--------+ # Object # \ +---------------+ | / \ +--------+ # Object # \ +---------------+ | |||
| ########### any\ | | | ########### any\ | | | |||
| +-->| output device | | +-->| output device | | |||
| | | | | | | |||
| +---------------+ | +---------------+ | |||
| 2.2 Job Object | 2.2 Job Object | |||
| A Job object is used to model a print job. A Job can contain one or | A Job object is used to model a print job. A Job object contains | |||
| more documents. The information required to create a Job object is | documents. The information required to create a Job object is sent in a | |||
| create request from the end user via an IPP Client to the Printer | ||||
| Expires December 30, 1998 | object. The Printer object validates the create request, and if the | |||
| sent in a create request from the end user via an IPP Client to the | Printer object accepts the request, the Printer object creates the new | |||
| Printer object. The Printer object validates the create request, and | Job object. Section 3 describes each of the Job operations in detail. | |||
| if the Printer object accepts the request, the Printer object creates | ||||
| the new Job object. Section 3 describes each of the Job operations in | ||||
| detail. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| The characteristics and state of a Job object are described by its | The characteristics and state of a Job object are described by its | |||
| attributes. Job attributes are grouped into two groups as follows: | attributes. Job attributes are grouped into two groups as follows: | |||
| - "job-template" attributes: These attributes can be supplied by | - "job-template" attributes: These attributes can be supplied by the | |||
| the client or end user and include job processing instructions | client or end user and include job processing instructions which | |||
| which are intended to override any Printer object defaults and/or | are intended to override any Printer object defaults and/or | |||
| instructions embedded within the document data. (See section 4.2) | instructions embedded within the document data. (See section 4.2) | |||
| - "job-description" attributes: These attributes describe the Job | - "job-description" attributes: These attributes describe the Job | |||
| object's identification, state, size, etc. The client supplies | object's identification, state, size, etc. The client supplies some | |||
| some of these attributes, and the Printer object generates | of these attributes, and the Printer object generates others. (See | |||
| others. (See section 4.3) | section 4.3) | |||
| A Job object contains at least one document, but may contain multiple | An implementation MUST support at least one document per Job object. An | |||
| documents. A document is either: | implementation MAY support multiple documents per Job object. A | |||
| document is either: | ||||
| - a stream of document data in a format supported by the Printer | - a stream of document data in a format supported by the Printer | |||
| object (typically a Page Description Language - PDL), or | object (typically a Page Description Language - PDL), or | |||
| - a reference to such a stream of document data | - a reference to such a stream of document data | |||
| In IPP/1.0, a document is not modeled as an IPP object, therefore it | In IPP/1.0, a document is not modeled as an IPP object, therefore it has | |||
| has no object identifier or associated attributes. All job processing | no object identifier or associated attributes. All job processing | |||
| instructions are modeled as Job object attributes. These attributes | instructions are modeled as Job object attributes. These attributes are | |||
| are called Job Template attributes and they apply equally to all | called Job Template attributes and they apply equally to all documents | |||
| documents within a Job object. | within a Job object. | |||
| 2.3 Object Relationships | 2.3 Object Relationships | |||
| IPP objects have relationships that are maintained persistently along | IPP objects have relationships that are maintained persistently along | |||
| with the persistent storage of the object attributes. | with the persistent storage of the object attributes. | |||
| A Printer object can represent either one or more physical output | A Printer object can represent either one or more physical output | |||
| devices or a logical device which "processes" jobs but never actually | devices or a logical device which "processes" jobs but never actually | |||
| uses a physical output device to put marks on paper. Examples of | uses a physical output device to put marks on paper. Examples of | |||
| logical devices include a Web page publisher or a gateway into an | logical devices include a Web page publisher or a gateway into an online | |||
| online document archive or repository. A Printer object contains zero | document archive or repository. A Printer object contains zero or more | |||
| or more Job objects. | Job objects. | |||
| A Job object is contained by exactly one Printer object, however the | A Job object is contained by exactly one Printer object, however the | |||
| identical document data associated with a Job object could be sent to | identical document data associated with a Job object could be sent to | |||
| either the same or a different Printer object. In this case, a second | either the same or a different Printer object. In this case, a second | |||
| Job object would be created which would be almost identical to the | Job object would be created which would be almost identical to the first | |||
| Job object, however it would have new (different) Job object identifiers | ||||
| Expires December 30, 1998 | (see section 2.4). | |||
| first Job object, however it would have new (different) Job object | ||||
| identifiers (see section 2.4). | ||||
| A Job object contains one or more documents. If the contained | A Job object is either empty (before any documents have been added) or | |||
| document is a stream of document data, that stream can be contained in | contains one or more documents. If the contained document is a stream | |||
| only one document. However, there can be identical copies of the | of document data, that stream can be contained in only one document. | |||
| stream in other documents in the same or different Job objects. If | However, there can be identical copies of the stream in other documents | |||
| the contained document is just a reference to a stream of document | in the same or different Job objects. If the contained document is just | |||
| data, other documents (in the same or different Job object(s)) may | a reference to a stream of document data, other documents (in the same | |||
| contain the same reference. | or different Job object(s)) may contain the same reference. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 2.4 Object Identity | 2.4 Object Identity | |||
| All Printer and Job objects are identified by a Uniform Resource | All Printer and Job objects are identified by a Uniform Resource | |||
| Identifier (URI) [RFC1630] so that they can be persistently and | Identifier (URI) [RFC2396] so that they can be persistently and | |||
| unambiguously referenced. The notion of a URI is a useful concept, | unambiguously referenced. The notion of a URI is a useful concept, | |||
| however, until the notion of URI is more stable (i.e., defined more | however, until the notion of URI is more stable (i.e., defined more | |||
| completely and deployed more widely), it is expected that the URIs | completely and deployed more widely), it is expected that the URIs used | |||
| used for IPP objects will actually be URLs [RFC1738] [RFC1808]. Since | for IPP objects will actually be URLs [RFC2396]. Since every URL is a | |||
| every URL is a specialized form of a URI, even though the more generic | specialized form of a URI, even though the more generic term URI is used | |||
| term URI is used throughout the rest of this document, its usage is | throughout the rest of this document, its usage is intended to cover the | |||
| intended to cover the more specific notion of URL as well. | more specific notion of URL as well. | |||
| An administrator configures Printer objects to either support or not | An administrator configures Printer objects to either support or not | |||
| support authentication and/or message privacy using TLS [TLS] (the | support authentication and/or message privacy using SSL3 [SSL] (the | |||
| mechanism for security configuration is outside the scope of IPP/1.0). | mechanism for security configuration is outside the scope of IPP/1.0). | |||
| In some situations, both types of connections (both authenticated and | In some situations, both types of connections (both authenticated and | |||
| unauthenticated) can be established using a single communication | unauthenticated) can be established using a single communication channel | |||
| channel that has some sort of negotiation mechanism. In other | that has some sort of negotiation mechanism. In other situations, | |||
| situations, multiple communication channels are used, one for each | multiple communication channels are used, one for each type of security | |||
| type of security configuration. Section 8 provides a full description | configuration. Section 8 provides a full description of all security | |||
| of all security considerations and configurations. , | considerations and configurations. | |||
| If a Printer object supports more than one communication channel, some | If a Printer object supports more than one communication channel, some | |||
| or all of those channels might support and/or require different | or all of those channels might support and/or require different security | |||
| security mechanisms. In such cases, an administrator could expose the | mechanisms. In such cases, an administrator could expose the | |||
| simultaneous support for these multiple communication channels as | simultaneous support for these multiple communication channels as | |||
| multiple URIs for a single Printer object where each URI represents | multiple URIs for a single Printer object where each URI represents one | |||
| one of the communication channels to the Printer object. To support | of the communication channels to the Printer object. To support this | |||
| this flexibility, the IPP Printer object type defines a multi-valued | flexibility, the IPP Printer object type defines a multi-valued | |||
| identification attribute called the "printer-uri-supported" attribute. | identification attribute called the "printer-uri-supported" attribute. | |||
| It MUST contain at least one URI. It MAY contain more than one URI. | It MUST contain at least one URI. It MAY contain more than one URI. | |||
| That is, every Printer object will have at least one URI that | That is, every Printer object will have at least one URI that identifies | |||
| identifies at least one communication channel to the Printer object, | at least one communication channel to the Printer object, but it may | |||
| but it may have more than one URI where each URI identifies a | have more than one URI where each URI identifies a different | |||
| different communication channel to the Printer object. The "printer- | communication channel to the Printer object. The "printer-uri- | |||
| uri-supported" attribute has a companion attribute, the "uri-security- | supported" attribute has a companion attribute, the "uri-security- | |||
| Expires December 30, 1998 | ||||
| supported" attribute, that has the same cardinality as "printer-uri- | supported" attribute, that has the same cardinality as "printer-uri- | |||
| supported". The purpose of the "uri-security-supported" attribute is | supported". The purpose of the "uri-security-supported" attribute is to | |||
| to indicate the security mechanisms (if any) used for each URI listed | indicate the security mechanisms (if any) used for each URI listed in | |||
| in "printer-uri-supported". These two attributes are fully described | "printer-uri-supported". These two attributes are fully described in | |||
| in sections 4.4.1 and 4.4.2. | sections 4.4.1 and 4.4.2. | |||
| When a job is submitted to the Printer object via a create request, | When a job is submitted to the Printer object via a create request, the | |||
| the client supplies only a single Printer object URI. The client | client supplies only a single Printer object URI. The client supplied | |||
| supplied Printer object URI MUST be one of the values in the "printer- | Printer object URI MUST be one of the values in the "printer-uri- | |||
| uri-supported" Printer attribute. | supported" Printer attribute. | |||
| Note: IPP/1.0 does not specify how the client obtains the client | Note: IPP/1.0 does not specify how the client obtains the client | |||
| supplied URI, but it is RECOMMENDED that a Printer object be | supplied URI, but it is RECOMMENDED that a Printer object be registered | |||
| registered as an entry in a directory service. End-users and programs | as an entry in a directory service. End-users and programs can then | |||
| can then interrogate the directory searching for Printers. Section 17 | interrogate the directory searching for Printers. Section 17 defines a | |||
| defines a generic schema for Printer object entries in the directory | generic schema for Printer object entries in the directory service and | |||
| service and describes how the entry acts as a bridge to the actual IPP | describes how the entry acts as a bridge to the actual IPP Printer | |||
| Printer object. The entry in the directory that represents the IPP | object. The entry in the directory that represents the IPP Printer | |||
| Printer object includes the possibly many URIs for that Printer object | ||||
| as values in one its attributes. | Isaacson, Powell Expires May 16, 1999 | |||
| object includes the possibly many URIs for that Printer object as values | ||||
| in one its attributes. | ||||
| When a client submits a create request to the Printer object, the | When a client submits a create request to the Printer object, the | |||
| Printer object validates the request and creates a new Job object. | Printer object validates the request and creates a new Job object. The | |||
| The Printer object assigns the new Job object a URI which is stored in | Printer object assigns the new Job object a URI which is stored in the | |||
| the "job-uri" Job attribute. This URI is then used by clients as the | "job-uri" Job attribute. This URI is then used by clients as the target | |||
| target for subsequent Job operations. The Printer object generates a | for subsequent Job operations. The Printer object generates a Job URI | |||
| Job URI based on its configured security policy and the URI used by | based on its configured security policy and the URI used by the client | |||
| the client in the create request. | in the create request. | |||
| For example, consider a Printer object that supports both a | For example, consider a Printer object that supports both a | |||
| communication channel secured by the use of TLS (using a standard URI | communication channel secured by the use of SSL3 (using HTTP over SSL3 | |||
| indicating the use of HTTP over TLS) and another open communication | with an "https" schemed URI) and another open communication channel that | |||
| channel that is not secured with TLS (using an simple "http" schemed | is not secured with SSL3 (using a simple "http" schemed URI). If a | |||
| URI). If a client were to submit a job using the secure URI, the | client were to submit a job using the secure URI, the Printer object | |||
| Printer object would assign the new Job object a secure URI as well. | would assign the new Job object a secure URI as well. If a client were | |||
| If a client were to submit a job using the open-channel URI, the | to submit a job using the open-channel URI, the Printer would assign the | |||
| Printer would assign the new Job object an open-channel URI. | new Job object an open-channel URI. | |||
| In addition, the Printer object also populates the Job object's "job- | In addition, the Printer object also populates the Job object's "job- | |||
| printer-uri" attribute. This is a reference back to the Printer | printer-uri" attribute. This is a reference back to the Printer object | |||
| object that created the Job object. If a client only has access to a | that created the Job object. If a client only has access to a Job | |||
| Job object's "job-uri" identifier, the client can query the Job's | object's "job-uri" identifier, the client can query the Job's "job- | |||
| "job-printer-uri" attribute in order to determine which Printer object | printer-uri" attribute in order to determine which Printer object | |||
| created the Job object. If the Printer object supports more than one | created the Job object. If the Printer object supports more than one | |||
| URI, the Printer object picks the one URI supplied by the client when | URI, the Printer object picks the one URI supplied by the client when | |||
| creating the job to build the value for and to populate the Job's | creating the job to build the value for and to populate the Job's "job- | |||
| "job-printer-uri" attribute. | printer-uri" attribute. | |||
| Expires December 30, 1998 | ||||
| Allowing Job objects to have URIs allows for flexibility and | Allowing Job objects to have URIs allows for flexibility and | |||
| scalability. For example, in some implementations, the Printer object | scalability. For example, in some implementations, the Printer object | |||
| might create Jobs that are processed in the same local environment as | might create Jobs that are processed in the same local environment as | |||
| the Printer object itself. In this case, the Job URI might just be a | the Printer object itself. In this case, the Job URI might just be a | |||
| composition of the Printer's URI and some unique component for the Job | composition of the Printer's URI and some unique component for the Job | |||
| object, such as the unique 32-bit positive integer mentioned later in | object, such as the unique 32-bit positive integer mentioned later in | |||
| this paragraph. In other implementations, the Printer object might be | this paragraph. In other implementations, the Printer object might be a | |||
| a central clearing-house for validating all Job object creation | central clearing-house for validating all Job object creation requests, | |||
| requests, but the Job object itself might be created in some | but the Job object itself might be created in some environment that is | |||
| environment that is remote from the Printer object. In this case, the | remote from the Printer object. In this case, the Job object's URI may | |||
| Job object's URI may have no physical-location relationship at all to | have no physical-location relationship at all to the Printer object's | |||
| the Printer object's URI. Again, the fact that Job objects have URIs | URI. Again, the fact that Job objects have URIs allows for flexibility | |||
| allows for flexibility and scalability, however, many existing | and scalability, however, many existing printing systems have local | |||
| printing systems have local models or interface constraints that force | models or interface constraints that force print jobs to be identified | |||
| print jobs to be identified using only a 32-bit positive integer | using only a 32-bit positive integer rather than an independent URI. | |||
| rather than an independent URI. This numeric Job ID is only unique | This numeric Job ID is only unique within the context of the Printer | |||
| within the context of the Printer object to which the create request | object to which the create request was originally submitted. Therefore, | |||
| was originally submitted. Therefore, in order to allow both types of | in order to allow both types of client access to IPP Job objects (either | |||
| client access to IPP Job objects (either by Job URI or by numeric Job | by Job URI or by numeric Job ID), when the Printer object successfully | |||
| ID), when the Printer object successfully processes a create request | processes a create request and creates a new Job object, the Printer | |||
| and creates a new Job object, the Printer object MUST generate both a | object MUST generate both a Job URI and a Job ID. The Job ID (stored in | |||
| Job URI and a Job ID. The Job ID (stored in the "job-id" attribute) | the "job-id" attribute) only has meaning in the context of the Printer | |||
| only has meaning in the context of the Printer object to which the | object to which the create request was originally submitted. This | |||
| create request was originally submitted. This requirement to support | requirement to support both Job URIs and Job IDs allows all types of | |||
| both Job URIs and Job IDs allows all types of clients to access | ||||
| Printer objects and Job objects no matter the local constraints | Isaacson, Powell Expires May 16, 1999 | |||
| imposed on the client implementation. | clients to access Printer objects and Job objects no matter the local | |||
| constraints imposed on the client implementation. | ||||
| In addition to identifiers, Printer objects and Job objects have names | In addition to identifiers, Printer objects and Job objects have names | |||
| ("printer-name" and "job-name"). An object name NEED NOT be unique | ("printer-name" and "job-name"). An object name NEED NOT be unique | |||
| across all instances of all objects. A Printer object's name is chosen | across all instances of all objects. A Printer object's name is chosen | |||
| and set by an administrator through some mechanism outside the scope | and set by an administrator through some mechanism outside the scope of | |||
| of IPP/1.0. A Job object's name is optionally chosen and supplied by | IPP/1.0. A Job object's name is optionally chosen and supplied by the | |||
| the IPP client submitting the job. If the client does not supply a | IPP client submitting the job. If the client does not supply a Job | |||
| Job object name, the Printer object generates a name for the new Job | object name, the Printer object generates a name for the new Job object. | |||
| object. In all cases, the name only has local meaning. | In all cases, the name only has local meaning. | |||
| To summarize: | To summarize: | |||
| - Each Printer object is identified with one or more URIs. The | - Each Printer object is identified with one or more URIs. The | |||
| Printer's "printer-uri-supported" attribute contains the URI(s). | Printer's "printer-uri-supported" attribute contains the URI(s). | |||
| - The Printer object's "uri-security-supported" attribute | - The Printer object's "uri-security-supported" attribute identifies | |||
| identifies the communication channel security protocols that may | the communication channel security protocols that may or may not | |||
| or may not have been configured for the various Printer object | have been configured for the various Printer object URIs (e.g., | |||
| URIs (e.g., 'tls' or 'none'). | 'ssl3' or 'none'). | |||
| - Each Job object is identified with a Job URI. The Job's "job- | - Each Job object is identified with a Job URI. The Job's "job-uri" | |||
| uri" attribute contains the URI. | attribute contains the URI. | |||
| Expires December 30, 1998 | ||||
| - Each Job object is also identified with Job ID which is a 32-bit, | - Each Job object is also identified with Job ID which is a 32-bit, | |||
| positive integer. The Job's "job-id" attribute contains the Job | positive integer. The Job's "job-id" attribute contains the Job | |||
| ID. The Job ID is only unique within the context of the Printer | ID. The Job ID is only unique within the context of the Printer | |||
| object which created the Job object. | object which created the Job object. | |||
| - Each Job object has a "job-printer-uri" attribute which contains | - Each Job object has a "job-printer-uri" attribute which contains | |||
| the URI of the Printer object that was used to create the Job | the URI of the Printer object that was used to create the Job | |||
| object. This attribute is used to determine the Printer object | object. This attribute is used to determine the Printer object | |||
| that created a Job object when given only the URI for the Job | that created a Job object when given only the URI for the Job | |||
| object. This linkage is necessary to determine the languages, | object. This linkage is necessary to determine the languages, | |||
| charsets, and operations which are supported on that Job (the | charsets, and operations which are supported on that Job (the basis | |||
| basis for such support comes from the creating Printer object). | for such support comes from the creating Printer object). | |||
| - Each Printer object has a name (which is not necessarily unique). | - Each Printer object has a name (which is not necessarily unique). | |||
| The administrator chooses and sets this name through some | The administrator chooses and sets this name through some mechanism | |||
| mechanism outside the scope of IPP/1.0 itself. The Printer | outside the scope of IPP/1.0 itself. The Printer object's | |||
| object's "printer-name" attribute contains the name. | "printer-name" attribute contains the name. | |||
| - Each Job object has a name (which is not necessarily unique). | - Each Job object has a name (which is not necessarily unique). The | |||
| The client optionally supplies this name in the create request. | client optionally supplies this name in the create request. If the | |||
| If the client does not supply this name, the Printer object | client does not supply this name, the Printer object generates a | |||
| generates a name for the Job object. The Job object's "job-name" | name for the Job object. The Job object's "job-name" attribute | |||
| attribute contains the name. | contains the name. | |||
| 3. IPP Operations | 3. IPP Operations | |||
| IPP objects support operations. An operation consists of a request | IPP objects support operations. An operation consists of a request and | |||
| and a response. When a client communicates with an IPP object, the | a response. When a client communicates with an IPP object, the client | |||
| client issues an operation request to the URI for that object. | issues an operation request to the URI for that object. Operation | |||
| Operation requests and responses have parameters that identify the | requests and responses have parameters that identify the operation. | |||
| operation. Operations also have attributes that affect the run-time | Operations also have attributes that affect the run-time characteristics | |||
| characteristics of the operation (the intended target, localization | of the operation (the intended target, localization information, etc.). | |||
| information, etc.). These operation-specific attributes are called | These operation-specific attributes are called operation attributes (as | |||
| operation attributes (as compared to object attributes such as Printer | compared to object attributes such as Printer object attributes or Job | |||
| object attributes or Job object attributes). Each request carries | ||||
| along with it any operation attributes, object attributes, and/or | Isaacson, Powell Expires May 16, 1999 | |||
| document data required to perform the operation. Each request | object attributes). Each request carries along with it any operation | |||
| requires a response from the object. Each response indicates success | attributes, object attributes, and/or document data required to perform | |||
| or failure of the operation with a status code as a response | the operation. Each request requires a response from the object. Each | |||
| parameter. The response contains any operation attributes, object | response indicates success or failure of the operation with a status | |||
| attributes, and/or status messages generated during the execution of | code as a response parameter. The response contains any operation | |||
| the operation request. | attributes, object attributes, and/or status messages generated during | |||
| the execution of the operation request. | ||||
| This section describes the semantics of the IPP operations, both | This section describes the semantics of the IPP operations, both | |||
| requests and responses, in terms of the parameters, attributes, and | requests and responses, in terms of the parameters, attributes, and | |||
| other data associated with each operation. | other data associated with each operation. | |||
| The IPP/1.0 Printer operations are: | The IPP/1.0 Printer operations are: | |||
| Print-Job (section 3.2.1) | Print-Job (section 3.2.1) | |||
| Expires December 30, 1998 | ||||
| Print-URI (section 3.2.2) | Print-URI (section 3.2.2) | |||
| Validate-Job (section 3.2.3) | Validate-Job (section 3.2.3) | |||
| Create-Job (section 3.2.4) | Create-Job (section 3.2.4) | |||
| Get-Printer-Attributes (section 3.2.5) | Get-Printer-Attributes (section 3.2.5) | |||
| Get-Jobs (section 3.2.6) | Get-Jobs (section 3.2.6) | |||
| The Job operations are: | The Job operations are: | |||
| Send-Document (section 3.3.1) | Send-Document (section 3.3.1) | |||
| Send-URI (section 3.3.2) | Send-URI (section 3.3.2) | |||
| skipping to change at page 21, line 40 ¶ | skipping to change at page 19, line 5 ¶ | |||
| Every operation request contains the following REQUIRED parameters: | Every operation request contains the following REQUIRED parameters: | |||
| - a "version-number", | - a "version-number", | |||
| - an "operation-id", | - an "operation-id", | |||
| - a "request-id", and | - a "request-id", and | |||
| - the attributes that are REQUIRED for that type of request. | - the attributes that are REQUIRED for that type of request. | |||
| Every operation response contains the following REQUIRED parameters: | Every operation response contains the following REQUIRED parameters: | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| - a "version-number", | - a "version-number", | |||
| - a "status-code", | - a "status-code", | |||
| - the "request-id" that was supplied in the corresponding request, | - the "request-id" that was supplied in the corresponding request, | |||
| and | and | |||
| - the attributes that are REQUIRED for that type of response. | - the attributes that are REQUIRED for that type of response. | |||
| The encoding and transport document [IPP-PRO] defines special rules | The encoding and transport document [IPP-PRO] defines special rules for | |||
| for the encoding of these parameters. All other operation elements | the encoding of these parameters. All other operation elements are | |||
| are represented using the more generic encoding rules for attributes | represented using the more generic encoding rules for attributes and | |||
| and groups of attributes. | groups of attributes. | |||
| Expires December 30, 1998 | ||||
| 3.1.2 Operation IDs and Request IDs | 3.1.2 Operation IDs and Request IDs | |||
| Each IPP operation request includes an identifying "operation-id" | Each IPP operation request includes an identifying "operation-id" value. | |||
| value. Valid values are defined in the "operations-supported" Printer | Valid values are defined in the "operations-supported" Printer attribute | |||
| attribute section (see section 4.4.13). The client specifies which | section (see section 4.4.13). The client specifies which operation is | |||
| operation is being requested by supplying the correct "operation-id" | being requested by supplying the correct "operation-id" value. | |||
| value. | ||||
| In addition, every invocation of an operation is identified by a | In addition, every invocation of an operation is identified by a | |||
| "request-id" value. For each request, the client chooses the "request- | "request-id" value. For each request, the client chooses the "request- | |||
| id" which is an integer (possibly unique depending on client | id" which MUST be an integer (possibly unique depending on client | |||
| requirements) in the range from 1 to 2**31 - 1 (inclusive). This | requirements) in the range from 1 to 2**31 - 1 (inclusive). This | |||
| "request-id" allows clients to manage multiple outstanding requests. | "request-id" allows clients to manage multiple outstanding requests. The | |||
| The receiving IPP object copies the client supplied "request-id" | receiving IPP object copies all 32-bits of the client-supplied "request- | |||
| attribute into the response so that the client can match the response | id" attribute into the response so that the client can match the | |||
| with the correct outstanding request. | response with the correct outstanding request, even if the "request-id" | |||
| is out of range. If the request is terminated before the complete | ||||
| "request-id" is received, the IPP object rejects the request and returns | ||||
| a response with a "request-id" of 0. | ||||
| Note: In some cases, the transport protocol underneath IPP might be a | Note: In some cases, the transport protocol underneath IPP might be a | |||
| connection oriented protocol that would make it impossible for a | connection oriented protocol that would make it impossible for a client | |||
| client to receive responses in any order other than the order in which | to receive responses in any order other than the order in which the | |||
| the corresponding requests were sent. In such cases, the "request-id" | corresponding requests were sent. In such cases, the "request-id" | |||
| attribute would not be essential for correct protocol operation. | attribute would not be essential for correct protocol operation. | |||
| However, in other mappings, the operation responses can come back in | However, in other mappings, the operation responses can come back in any | |||
| any order. In these cases, the "request-id" would be essential. | order. In these cases, the "request-id" would be essential. | |||
| 3.1.3 Attributes | 3.1.3 Attributes | |||
| Operation requests and responses are both composed of groups of | Operation requests and responses are both composed of groups of | |||
| attributes and/or document data. The attributes groups are: | attributes and/or document data. The attributes groups are: | |||
| - Operation Attributes: These attributes are passed in the | - Operation Attributes: These attributes are passed in the operation | |||
| operation and affect the IPP object's behavior while processing | and affect the IPP object's behavior while processing the operation | |||
| the operation request and may affect other attributes or groups | request and may affect other attributes or groups of attributes. | |||
| of attributes. Some operation attributes describe the document | Some operation attributes describe the document data associated | |||
| data associated with the print job and are associated with new | with the print job and are associated with new Job objects, however | |||
| Job objects, however most operation attributes do not persist | most operation attributes do not persist beyond the life of the | |||
| beyond the life of the operation. The description of each | operation. The description of each operation attribute includes | |||
| operation attribute includes conformance statements indicating | conformance statements indicating which operation attributes are | |||
| which operation attributes are REQUIRED and which are OPTIONAL | REQUIRED and which are OPTIONAL for an IPP object to support and | |||
| for an IPP object to support and which attributes a client MUST | which attributes a client MUST supply in a request and an IPP | |||
| supply in a request and an IPP object MUST supply in a response. | object MUST supply in a response. | |||
| - Job Template Attributes: These attributes affect the processing | ||||
| of a job. A client OPTIONALLY supplies Job Template Attributes | Isaacson, Powell Expires May 16, 1999 | |||
| in a create request, and the receiving object MUST be prepared to | ||||
| - Job Template Attributes: These attributes affect the processing of | ||||
| a job. A client OPTIONALLY supplies Job Template Attributes in a | ||||
| create request, and the receiving object MUST be prepared to | ||||
| receive all supported attributes. The Job object can later be | receive all supported attributes. The Job object can later be | |||
| queried to find out what Job Template attributes were originally | queried to find out what Job Template attributes were originally | |||
| requested in the create request, and such attributes are returned | requested in the create request, and such attributes are returned | |||
| Expires December 30, 1998 | ||||
| in the response as Job Object Attributes. The Printer object can | in the response as Job Object Attributes. The Printer object can | |||
| be queried about its Job Template attributes to find out what | be queried about its Job Template attributes to find out what type | |||
| type of job processing capabilities are supported and/or what the | of job processing capabilities are supported and/or what the | |||
| default job processing behaviors are, though such attributes are | default job processing behaviors are, though such attributes are | |||
| returned in the response as Printer Object Attributes. The "ipp- | returned in the response as Printer Object Attributes. The "ipp- | |||
| attribute-fidelity" operation attribute affects processing of all | attribute-fidelity" operation attribute affects processing of all | |||
| client-supplied Job Template attributes (see section 16 for a | client-supplied Job Template attributes (see section 16 for a full | |||
| full description of "ipp-attribute-fidelity" and its relationship | description of "ipp-attribute-fidelity" and its relationship to | |||
| to other attributes). | other attributes). | |||
| - Job Object Attributes: These attributes are returned in response | - Job Object Attributes: These attributes are returned in response to | |||
| to a query operation directed at a Job object. | a query operation directed at a Job object. | |||
| - Printer Object Attributes: These attributes are returned in | - Printer Object Attributes: These attributes are returned in | |||
| response to a query operation directed at a Printer object. | response to a query operation directed at a Printer object. | |||
| - Unsupported Attributes: In a create request, the client supplies | - Unsupported Attributes: In a create request, the client supplies a | |||
| a set of Operation and Job Template attributes. If any of these | set of Operation and Job Template attributes. If any of these | |||
| attributes or their values is unsupported by the Printer object, | attributes or their values is unsupported by the Printer object, | |||
| the Printer object returns the set of unsupported attributes in | the Printer object returns the set of unsupported attributes in the | |||
| the response. Section 16 gives a full description of how Job | response. Section 16 gives a full description of how Job Template | |||
| Template attributes supplied by the client in a create request | attributes supplied by the client in a create request are processed | |||
| are processed by the Printer object and how unsupported | by the Printer object and how unsupported attributes are returned | |||
| attributes are returned to the client. Because of extensibility, | to the client. Because of extensibility, any IPP object might | |||
| any IPP object might receive a request that contains new or | receive a request that contains new or unknown attributes or values | |||
| unknown attributes or values for which it has no support. In such | for which it has no support. In such cases, the IPP object | |||
| cases, the IPP object processes what it can and returns the | processes what it can and returns the unsupported attributes in the | |||
| unsupported attributes in the response. | response. | |||
| Later in this section, each operation is formally defined by | Later in this section, each operation is formally defined by identifying | |||
| identifying the allowed and expected groups of attributes for each | the allowed and expected groups of attributes for each request and | |||
| request and response. The model identifies a specific order for each | response. The model identifies a specific order for each group in each | |||
| group in each request or response, but the attributes within each | request or response, but the attributes within each group may be in any | |||
| group may be in any order, unless specified otherwise. | order, unless specified otherwise. | |||
| Each attribute specification includes the attribute's name followed by | Each attribute specification includes the attribute's name followed by | |||
| the name of its attribute syntax(es) in parenthesizes. In addition, | the name of its attribute syntax(es) in parenthesizes. In addition, | |||
| each 'integer' attribute is followed by the allowed range in | each 'integer' attribute is followed by the allowed range in | |||
| parentheses, (m:n), for values of that attribute. Each 'text' or | parentheses, (m:n), for values of that attribute. Each 'text' or 'name' | |||
| 'name' attribute is followed by the maximum size in octets in | attribute is followed by the maximum size in octets in parentheses, | |||
| parentheses, (size), for values of that attribute. For more details on | (size), for values of that attribute. For more details on attribute | |||
| attribute syntax notation, see the descriptions of these attributes | syntax notation, see the descriptions of these attributes syntaxes in | |||
| syntaxes in section 4.1. | section 4.1. | |||
| Note: Document data included in the operation is not strictly an | Note: Document data included in the operation is not strictly an | |||
| attribute, but it is treated as a special attribute group for ordering | attribute, but it is treated as a special attribute group for ordering | |||
| purposes. The only operations that support supplying the document | purposes. The only operations that support supplying the document data | |||
| data within an operation request are Print-Job and Send-Document. | within an operation request are Print-Job and Send-Document. There are | |||
| There are no operation responses that include document data. | no operation responses that include document data. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| Note: Some operations are REQUIRED for IPP objects to support; the | Note: Some operations are REQUIRED for IPP objects to support; the | |||
| others are OPTIONAL (see section 5.2.2). Therefore, before using an | others are OPTIONAL (see section 5.2.2). Therefore, before using an | |||
| OPTIONAL operation, a client SHOULD first use the REQUIRED Get- | OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer- | |||
| Printer-Attributes operation to query the Printer's "operations- | Attributes operation to query the Printer's "operations-supported" | |||
| supported" attribute in order to determine which OPTIONAL Printer and | attribute in order to determine which OPTIONAL Printer and Job | |||
| Job operations are actually supported. The client SHOULD NOT use an | operations are actually supported. The client SHOULD NOT use an | |||
| OPTIONAL operation that is not supported. When an IPP object receives | OPTIONAL operation that is not supported. When an IPP object receives a | |||
| a request to perform an operation it does not support, it returns the | request to perform an operation it does not support, it returns the | |||
| 'server-error-operation-not-supported' status code (see section | 'server-error-operation-not-supported' status code (see section | |||
| 14.1.5.2). An IPP object is non-conformant if it does not support a | 14.1.5.2). An IPP object is non-conformant if it does not support a | |||
| REQUIRED operation. | REQUIRED operation. | |||
| 3.1.4 Character Set and Natural Language Operation Attributes | 3.1.4 Character Set and Natural Language Operation Attributes | |||
| Some Job and Printer attributes have values that are text strings and | Some Job and Printer attributes have values that are text strings and | |||
| names intended for human understanding rather than machine | names intended for human understanding rather than machine understanding | |||
| understanding (see the 'text' and 'name' attribute syntax descriptions | (see the 'text' and 'name' attribute syntax descriptions in section | |||
| in section 4.1). The following sections describe two special | 4.1). The following sections describe two special Operation Attributes | |||
| Operation Attributes called "attributes-charset" and "attributes- | called "attributes-charset" and "attributes-natural-language". These | |||
| natural-language". These attributes are always part of the Operation | attributes are always part of the Operation Attributes group. For most | |||
| Attributes group. For most attribute groups, the order of the | attribute groups, the order of the attributes within the group is not | |||
| attributes within the group is not important. However, for these two | important. However, for these two attributes within the Operation | |||
| attributes within the Operation Attributes group, the order is | Attributes group, the order is critical. The "attributes-charset" | |||
| critical. The "attributes-charset" attribute MUST be the first | attribute MUST be the first attribute in the group and the "attributes- | |||
| attribute in the group and the "attributes-natural-language" attribute | natural-language" attribute MUST be the second attribute in the group. | |||
| MUST be the second attribute in the group. In other words, these | In other words, these attributes MUST be supplied in every IPP request | |||
| attributes MUST be supplied in every IPP request and response, they | and response, they MUST come first in the group, and MUST come in the | |||
| MUST come first in the group, and MUST come in the specified order. | specified order. For job creation operations, the IPP Printer | |||
| For job creation operations, the IPP Printer implementation saves | implementation saves these two attributes with the new Job object as Job | |||
| these two attributes with the new Job object as Job Description | Description attributes. For the sake of brevity in this document, these | |||
| attributes. For the sake of brevity in this document, these operation | operation attribute descriptions are not repeated with every operation | |||
| attribute descriptions are not repeated with every operation request | request and response, but have a reference back to this section instead. | |||
| and response, but have a reference back to this section instead. | ||||
| 3.1.4.1 Request Operation Attributes | 3.1.4.1 Request Operation Attributes | |||
| The client MUST supply and the Printer object MUST support the | The client MUST supply and the Printer object MUST support the following | |||
| following REQUIRED operation attributes in every IPP/1.0 operation | REQUIRED operation attributes in every IPP/1.0 operation request: | |||
| request: | ||||
| "attributes-charset" (charset): | "attributes-charset" (charset): | |||
| This operation attribute identifies the charset (coded character | This operation attribute identifies the charset (coded character | |||
| set and encoding method) used by any 'text' and 'name' attributes | set and encoding method) used by any 'text' and 'name' attributes | |||
| that the client is supplying in this request. It also identifies | that the client is supplying in this request. It also identifies | |||
| the charset that the Printer object MUST use (if supported) for | the charset that the Printer object MUST use (if supported) for all | |||
| all 'text' and 'name' attributes and status messages that the | 'text' and 'name' attributes and status messages that the Printer | |||
| object returns in the response to this request. See Sections 4.1.1 | ||||
| and 4.1.2 for the specification of the 'text' and 'name' attribute | ||||
| syntaxes. | ||||
| Expires December 30, 1998 | All clients and IPP objects MUST support the 'utf-8' charset | |||
| Printer object returns in the response to this request. See | [RFC2044] and MAY support additional charsets provided that they | |||
| Sections 4.1.1 and 4.1.2 for the specification of the 'text' and | are registered with IANA [IANA-CS]. If the Printer object does not | |||
| 'name' attribute syntaxes. | support the client supplied charset value, the Printer object MUST | |||
| reject the request, set the "attributes-charset" to 'utf-8' in the | ||||
| All IPP objects MUST support the 'utf-8' charset [RFC2044] and | Isaacson, Powell Expires May 16, 1999 | |||
| MAY support additional charsets provided that they are registered | response, and return the 'client-error-charset-not-supported' | |||
| with IANA [IANA-CS]. If the Printer object does not support the | status code and any 'text' or 'name' attributes using the 'utf-8' | |||
| client supplied charset value, the Printer object MUST reject the | charset. The Printer object MUST indicate the charset(s) supported | |||
| request and return the 'client-error-charset-not-supported' | as the values of the "charset-supported" Printer attribute (see | |||
| status code. The Printer object MUST indicate the charset(s) | Section 4.4.15), so that the client can query to determine which | |||
| supported as the values of the "charset-supported" Printer | charset(s) are supported. | |||
| attribute (see Section 4.4.15), so that the client can query to | ||||
| determine which charset(s) are supported. | ||||
| Note to client implementers: Since IPP objects are only required | Note to client implementers: Since IPP objects are only required to | |||
| to support the 'utf-8' charset, in order to maximize | support the 'utf-8' charset, in order to maximize interoperability | |||
| interoperability with multiple IPP object implementations, a | with multiple IPP object implementations, a client may want to | |||
| client may want to supply 'utf-8' in the "attributes-charset" | supply 'utf-8' in the "attributes-charset" operation attribute, | |||
| operation attribute, even though the client is only passing and | even though the client is only passing and able to present a | |||
| able to present a simpler charset, such as US-ASCII or ISO-8859- | simpler charset, such as US-ASCII or ISO-8859-1. Then the client | |||
| 1. Then the client will have to filter out (or charset convert) | will have to filter out (or charset convert) those characters that | |||
| those characters that are returned in the response that it cannot | are returned in the response that it cannot present to its user. | |||
| present to its user. On the other hand, if both the client and | On the other hand, if both the client and the IPP objects also | |||
| the IPP objects also support a charset in common besides utf-8, | support a charset in common besides utf-8, the client may want to | |||
| the client may want to use that charset in order to avoid charset | use that charset in order to avoid charset conversion or data loss. | |||
| conversion or data loss. | ||||
| See the 'charset' attribute syntax description in Section 4.1.7 | See the 'charset' attribute syntax description in Section 4.1.7 for | |||
| for the syntax and semantic interpretation of the values of this | the syntax and semantic interpretation of the values of this | |||
| attribute and for example values. | attribute and for example values. | |||
| "attributes-natural-language" (naturalLanguage): | "attributes-natural-language" (naturalLanguage): | |||
| This operation attribute identifies the natural language used by | This operation attribute identifies the natural language used by | |||
| any 'text' and 'name' attributes that the client is supplying in | any 'text' and 'name' attributes that the client is supplying in | |||
| this request. This attribute also identifies the natural | this request. This attribute also identifies the natural language | |||
| language that the Printer object SHOULD use for all 'text' and | that the Printer object SHOULD use for all 'text' and 'name' | |||
| 'name' attributes and status messages that the Printer object | attributes and status messages that the Printer object returns in | |||
| returns in the response to this request. | the response to this request. | |||
| There are no REQUIRED natural languages required for the Printer | There are no REQUIRED natural languages required for the Printer | |||
| object to support. However, the Printer object's "generated- | object to support. However, the Printer object's "generated- | |||
| natural-language-supported" attribute identifies the natural | natural-language-supported" attribute identifies the natural | |||
| languages supported by the Printer object and any contained Job | languages supported by the Printer object and any contained Job | |||
| objects for all text strings generated by the IPP object. A | objects for all text strings generated by the IPP object. A client | |||
| client MAY query this attribute to determine which natural | MAY query this attribute to determine which natural language(s) are | |||
| language(s) are supported for generated messages. | supported for generated messages. | |||
| Expires December 30, 1998 | ||||
| For any of the attributes for which the Printer object generates | For any of the attributes for which the Printer object generates | |||
| text, i.e., for the "job-state-message", "printer-state-message", | text, i.e., for the "job-state-message", "printer-state-message", | |||
| and status messages (see Section 3.1.6), the Printer object MUST | and status messages (see Section 3.1.6), the Printer object MUST be | |||
| be able to generate these text strings in any of its supported | able to generate these text strings in any of its supported natural | |||
| natural languages. If the client requests a natural language | languages. If the client requests a natural language that is not | |||
| that is not supported, the Printer object MUST return these | supported, the Printer object MUST return these generated messages | |||
| generated messages in the Printer's configured natural language | in the Printer's configured natural language as specified by the | |||
| as specified by the Printer's "natural-language-configured" | Printer's "natural-language-configured" attribute" (see Section | |||
| attribute" (see Section 4.4.16). | 4.4.16). | |||
| For other 'text' and 'name' attributes supplied by the client, | For other 'text' and 'name' attributes supplied by the client, | |||
| authentication system, operator, system administrator, or | authentication system, operator, system administrator, or | |||
| manufacturer (i.e., for "job-originating-user-name", "printer- | manufacturer (i.e., for "job-originating-user-name", "printer-name" | |||
| name" (name), "printer-location" (text), "printer-info" (text), | (name), "printer-location" (text), "printer-info" (text), and | |||
| and "printer-make-and-model" (text)), the Printer object is only | "printer-make-and-model" (text)), the Printer object is only | |||
| required to support the configured natural language of the | ||||
| Printer identified by the Printer object's "natural-language- | Isaacson, Powell Expires May 16, 1999 | |||
| configured" attribute, though support of additional natural | required to support the configured natural language of the Printer | |||
| languages for these attributes is permitted. | identified by the Printer object's "natural-language-configured" | |||
| attribute, though support of additional natural languages for these | ||||
| attributes is permitted. | ||||
| For any 'text' or 'name' attribute in the request that is in a | For any 'text' or 'name' attribute in the request that is in a | |||
| different natural language than the value supplied in the | different natural language than the value supplied in the | |||
| "attributes-natural-language", the client MUST use the Natural | "attributes-natural-language" operation attribute, the client MUST | |||
| Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) | use the Natural Language Override mechanism (see sections 4.1.1.2 | |||
| for each such attribute value supplied. | and 4.1.2.2) for each such attribute value supplied. The client | |||
| MAY use the Natural Language Override mechanism redundantly, i.e., | ||||
| use it even when the value is in the same natural language as the | ||||
| value supplied in the "attributes-natural-language" operation | ||||
| attribute of the request. | ||||
| The IPP object MUST accept any natural language and any Natural | The IPP object MUST accept any natural language and any Natural | |||
| Language Override, whether the IPP object supports that natural | Language Override, whether the IPP object supports that natural | |||
| language or not (and independent of the value of the "ipp- | language or not (and independent of the value of the "ipp- | |||
| attribute-fidelity" Operation attribute). That is the IPP object | attribute-fidelity" Operation attribute). That is the IPP object | |||
| accepts all client supplied values no matter what the values are | accepts all client supplied values no matter what the values are in | |||
| in the Printer object's "generated-natural-language-supported" | the Printer object's "generated-natural-language-supported" | |||
| attribute. That attribute, "generated-natural-language- | attribute. That attribute, "generated-natural-language-supported", | |||
| supported", only applies to generated messages, not client | only applies to generated messages, not client supplied messages. | |||
| supplied messages. The IPP object MUST remember that natural | The IPP object MUST remember that natural language for all client- | |||
| language for all client-supplied attributes, and when returning | supplied attributes, and when returning those attributes in | |||
| those attributes in response to a query, the IPP object MUST | response to a query, the IPP object MUST indicate that natural | |||
| indicate that natural language. | language. | |||
| For example, the "job-name" attribute MAY be supplied by the | Each value whose attribute syntax type is .text. or .name. (see | |||
| client in a create request. The text value for this attribute | sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This | |||
| will be in the natural language identified by the "attribute- | document does not specify how this association is stored in a | |||
| natural-language" attribute, or if different, as identified by | Printer or Job object. When such a value is encoded in a request | |||
| the Natural Language Override mechanism. If supplied, the IPP | or response, the natural language is either implicit or explicit: | |||
| object will use the value of the "job-name" attribute to populate | ||||
| the Job object's "job-name" attribute. Whenever any client | ||||
| queries the Job object's "job-name" attribute, the IPP object | ||||
| returns the attribute as stored and uses the Natural Language | ||||
| Expires December 30, 1998 | @ In the implicit case, the value contains only the text/name | |||
| Override mechanism to specify the natural language, if it is | value, and the language is specified by the .attributes- | |||
| different from that reported in the "attributes-natural-language" | natural-language. operation attribute in the request or | |||
| operation attribute of the response. An IPP object MUST NOT | response (see sections 4.1.1.1 textWithoutLanguage and | |||
| reject a request based on a supplied natural language in an | 4.1.2.1 nameWithoutLanguage). | |||
| "attributes-natural-language" Operation attribute or in any | ||||
| attribute that uses the Natural Language Override. | @ In the explicit case (also known as the Natural-Language | |||
| Override case), the value contains both the language and | ||||
| the text/name value (see sections 4.1.1.2 textWithLanguage | ||||
| and 4.1.2.2 nameWithLanguage). | ||||
| For example, the "job-name" attribute MAY be supplied by the client | ||||
| in a create request. The text value for this attribute will be in | ||||
| the natural language identified by the "attribute-natural-language" | ||||
| attribute, or if different, as identified by the Natural Language | ||||
| Override mechanism. If supplied, the IPP object will use the value | ||||
| of the "job-name" attribute to populate the Job object's "job-name" | ||||
| attribute. Whenever any client queries the Job object's "job-name" | ||||
| attribute, the IPP object returns the attribute as stored and uses | ||||
| the Natural Language Override mechanism to specify the natural | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| language, if it is different from that reported in the "attributes- | ||||
| natural-language" operation attribute of the response. The IPP | ||||
| object MAY use the Natural Language Override mechanism redundantly, | ||||
| i.e., use it even when the value is in the same natural language | ||||
| as the value supplied in the "attributes-natural-language" | ||||
| operation attribute of the response. | ||||
| An IPP object MUST NOT reject a request based on a supplied natural | ||||
| language in an "attributes-natural-language" Operation attribute or | ||||
| in any attribute that uses the Natural Language Override. | ||||
| See the 'naturalLanguage' attribute syntax description in section | See the 'naturalLanguage' attribute syntax description in section | |||
| 4.1.8 for the syntax and semantic interpretation of the values of | 4.1.8 for the syntax and semantic interpretation of the values of | |||
| this attribute and for example values. | this attribute and for example values. | |||
| Clients SHOULD NOT supply 'text' or 'name' attributes that use an | Clients SHOULD NOT supply 'text' or 'name' attributes that use an | |||
| illegal combination of natural language and charset. For example, | illegal combination of natural language and charset. For example, | |||
| suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and | suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and | |||
| 'iso-8859-7'. Suppose also, that it supports natural languages 'en' | 'iso-8859-7'. Suppose also, that it supports natural languages 'en' | |||
| (English), 'fr' (French), and 'el' (Greek). Although the Printer | (English), 'fr' (French), and 'el' (Greek). Although the Printer object | |||
| object supports the charset 'iso-8859-1' and natural language 'el', it | supports the charset 'iso-8859-1' and natural language 'el', it probably | |||
| probably does not support the combination of Greek text strings using | does not support the combination of Greek text strings using the 'iso- | |||
| the 'iso-8859-1' charset. The Printer object handles this apparent | 8859-1' charset. The Printer object handles this apparent | |||
| incompatibility differently depending on the context in which it | incompatibility differently depending on the context in which it occurs: | |||
| occurs: | ||||
| - In a create request: If the client supplies a text or name | - In a create request: If the client supplies a text or name | |||
| attribute (for example, the "job-name" operation attribute) that | attribute (for example, the "job-name" operation attribute) that | |||
| uses an apparently incompatible combination, it is a client | uses an apparently incompatible combination, it is a client choice | |||
| choice that does not affect the Printer object or its correct | that does not affect the Printer object or its correct operation. | |||
| operation. Therefore, the Printer object simply accepts the | Therefore, the Printer object simply accepts the client supplied | |||
| client supplied value, stores it with the Job object, and | value, stores it with the Job object, and responds back with the | |||
| responds back with the same combination whenever the client (or | same combination whenever the client (or any client) queries for | |||
| any client) queries for that attribute. | that attribute. | |||
| -In a query-type operation, like Get-Printer-Attributes: If the | -In a query-type operation, like Get-Printer-Attributes: If the | |||
| client requests an apparently incompatible combination, the | client requests an apparently incompatible combination, the Printer | |||
| Printer object responds (as described in section 3.1.4.2) using | object responds (as described in section 3.1.4.2) using the | |||
| the Printer's configured natural language rather than the natural | Printer's configured natural language rather than the natural | |||
| language requested by the client. | language requested by the client. | |||
| In either case, the Printer object does not reject the request because | In either case, the Printer object does not reject the request because | |||
| of the apparent incompatibility. The potential incompatible | of the apparent incompatibility. The potential incompatible combination | |||
| combination of charset and natural language can occur either at the | of charset and natural language can occur either at the global operation | |||
| global operation level or at the Natural Language Override attribute- | level or at the Natural Language Override attribute-by-attribute level. | |||
| by-attribute level. In addition, since the response always includes | In addition, since the response always includes explicit charset and | |||
| explicit charset and natural language information, there is never any | natural language information, there is never any question or ambiguity | |||
| question or ambiguity in how the client interprets the response. | in how the client interprets the response. | |||
| Expires December 30, 1998 | ||||
| 3.1.4.2 Response Operation Attributes | 3.1.4.2 Response Operation Attributes | |||
| The Printer object MUST supply and the client MUST support the | The Printer object MUST supply and the client MUST support the following | |||
| following REQUIRED operation attributes in every IPP/1.0 operation | REQUIRED operation attributes in every IPP/1.0 operation response: | |||
| response: | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| "attributes-charset" (charset): | "attributes-charset" (charset): | |||
| This operation attribute identifies the charset used by any | This operation attribute identifies the charset used by any 'text' | |||
| 'text' and 'name' attributes that the Printer object is returning | and 'name' attributes that the Printer object is returning in this | |||
| in this response. The value in this response MUST be the same | response. The value in this response MUST be the same value as the | |||
| value as the "attributes-charset" operation attribute supplied by | "attributes-charset" operation attribute supplied by the client in | |||
| the client in the request. If this is not possible (i.e., the | the request. If this is not possible (i.e., the charset requested | |||
| charset requested is not supported), the request would have been | is not supported), the request would have been rejected. See | |||
| rejected. See "attributes-charset" described in Section 3.1.4.1 | "attributes-charset" described in Section 3.1.4.1 above. | |||
| above. | ||||
| If the Printer object supports more than just the 'utf-8' | If the Printer object supports more than just the 'utf-8' charset, | |||
| charset, the Printer object MUST be able to code convert between | the Printer object MUST be able to code convert between each of the | |||
| each of the charsets supported on a highest fidelity possible | charsets supported on a highest fidelity possible basis in order to | |||
| basis in order to return the 'text' and 'name' attributes in the | return the 'text' and 'name' attributes in the charset requested by | |||
| charset requested by the client. However, some information loss | the client. However, some information loss MAY occur during the | |||
| MAY occur during the charset conversion depending on the charsets | charset conversion depending on the charsets involved. For | |||
| involved. For example, the Printer object may convert from a | example, the Printer object may convert from a UTF-8 'a' to a US- | |||
| UTF-8 'a' to a US-ASCII 'a' (with no loss of information), from | ASCII 'a' (with no loss of information), from an ISO Latin 1 | |||
| an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' | CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the | |||
| (losing the accent), or from a UTF-8 Japanese Kanji character to | accent), or from a UTF-8 Japanese Kanji character to some ISO Latin | |||
| some ISO Latin 1 error character indication such as '?', decimal | 1 error character indication such as '?', decimal code equivalent, | |||
| code equivalent, or to the absence of a character, depending on | or to the absence of a character, depending on implementation. | |||
| implementation. | ||||
| Note: Whether an implementation that supports more than one | Note: Whether an implementation that supports more than one charset | |||
| charset stores the data in the charset supplied by the client or | stores the data in the charset supplied by the client or code | |||
| code converts to one of the other supported charsets, depends on | converts to one of the other supported charsets, depends on | |||
| implementation. The strategy should try to minimize loss of | implementation. The strategy should try to minimize loss of | |||
| information during code conversion. On each response, such an | information during code conversion. On each response, such an | |||
| implementation converts from its internal charset to that | implementation converts from its internal charset to that | |||
| requested. | requested. | |||
| "attributes-natural-language" (naturalLanguage): | "attributes-natural-language" (naturalLanguage): | |||
| This operation attribute identifies the natural language used by | This operation attribute identifies the natural language used by | |||
| any 'text' and 'name' attributes that the IPP object is returning | any 'text' and 'name' attributes that the IPP object is returning | |||
| in this response. Unlike the "attributes-charset" operation | in this response. Unlike the "attributes-charset" operation | |||
| attribute, the IPP object NEED NOT return the same value as that | attribute, the IPP object NEED NOT return the same value as that | |||
| supplied by the client in the request. The IPP object MAY return | supplied by the client in the request. The IPP object MAY return | |||
| the natural language of the Job object or the Printer's | the natural language of the Job object or the Printer's configured | |||
| configured natural language as identified by the Printer object's | natural language as identified by the Printer object's "natural- | |||
| "natural-language-configured" attribute, rather than the natural | language-configured" attribute, rather than the natural language | |||
| language supplied by the client. For any 'text' or 'name' | supplied by the client. For any 'text' or 'name' attribute or | |||
| status message in the response that is in a different natural | ||||
| Expires December 30, 1998 | language than the value returned in the "attributes-natural- | |||
| attribute or status message in the response that is in a | language" operation attribute, the IPP object MUST use the Natural | |||
| different natural language than the value returned in the | Language Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on | |||
| "attributes-natural-language" operation attribute, the IPP object | each attribute value returned. The IPP object MAY use the Natural | |||
| MUST use the Natural Language Override mechanism (see sections | Language Override mechanism redundantly, i.e., use it even when the | |||
| 4.1.1.2 and 4.1.2.2) on each attribute value returned. | value is in the same natural language as the value supplied in the | |||
| "attributes-natural-language" operation attribute of the response. | ||||
| 3.1.5 Operation Targets | 3.1.5 Operation Targets | |||
| All IPP operations are directed at IPP objects. For Printer | All IPP operations are directed at IPP objects. For Printer operations, | |||
| operations, the operation is always directed at a Printer object using | the operation is always directed at a Printer object using one of its | |||
| one of its URIs (i.e., one of the values in the Printer object's | URIs (i.e., one of the values in the Printer object's "printer-uri- | |||
| "printer-uri-supported" attribute). Even if the Printer object | ||||
| supports more than one URI, the client supplies only one URI as the | Isaacson, Powell Expires May 16, 1999 | |||
| target of the operation. The client identifies the target object by | supported" attribute). Even if the Printer object supports more than | |||
| supplying the correct URI in the "printer-uri (uri)" operation | one URI, the client supplies only one URI as the target of the | |||
| attribute. | operation. The client identifies the target object by supplying the | |||
| correct URI in the "printer-uri (uri)" operation attribute. | ||||
| For Job operations, the operation is directed at either: | For Job operations, the operation is directed at either: | |||
| - The Job object itself using the Job object's URI. In this case, | - The Job object itself using the Job object's URI. In this case, | |||
| the client identifies the target object by supplying the correct | the client identifies the target object by supplying the correct | |||
| URI in the "job-uri (uri)" operation attribute. | URI in the "job-uri (uri)" operation attribute. | |||
| - The Printer object that created the Job object using both the | - The Printer object that created the Job object using both the | |||
| Printer objects URI and the Job object's Job ID. Since the | Printer objects URI and the Job object's Job ID. Since the Printer | |||
| Printer object that created the Job object generated the Job ID, | object that created the Job object generated the Job ID, it MUST be | |||
| it MUST be able to correctly associate the client supplied Job ID | able to correctly associate the client supplied Job ID with the | |||
| with the correct Job object. The client supplies the Printer | correct Job object. The client supplies the Printer object's URI | |||
| object's URI in the "printer-uri (uri)" operation attribute and | in the "printer-uri (uri)" operation attribute and the Job object's | |||
| the Job object's Job ID in the "job-id (integer(1:MAX))" | Job ID in the "job-id (integer(1:MAX))" operation attribute. | |||
| operation attribute. | ||||
| If the operation is directed at the Job object directly using the Job | If the operation is directed at the Job object directly using the Job | |||
| object's URI, the client MUST NOT include the redundant "job-id" | object's URI, the client MUST NOT include the redundant "job-id" | |||
| operation attribute. | operation attribute. | |||
| The operation target attributes are REQUIRED operation attributes that | The operation target attributes are REQUIRED operation attributes that | |||
| MUST be included in every operation request. Like the charset and | MUST be included in every operation request. Like the charset and | |||
| natural language attributes (see section 3.1.4), the operation target | natural language attributes (see section 3.1.4), the operation target | |||
| attributes are specially ordered operation attributes. In all cases, | attributes are specially ordered operation attributes. In all cases, | |||
| the operation target attributes immediately follow the "attributes- | the operation target attributes immediately follow the "attributes- | |||
| charset" and "attributes-natural-language" attributes within the | charset" and "attributes-natural-language" attributes within the | |||
| operation attribute group, however the specific ordering rules are: | operation attribute group, however the specific ordering rules are: | |||
| - In the case where there is only one operation target attribute | - In the case where there is only one operation target attribute | |||
| (i.e., either only the "printer-uri" attribute or only the "job- | (i.e., either only the "printer-uri" attribute or only the "job- | |||
| uri" attribute), that attribute MUST be the third attribute in | uri" attribute), that attribute MUST be the third attribute in the | |||
| the operation attributes group. | operation attributes group. | |||
| Expires December 30, 1998 | ||||
| - In the case where Job operations use two operation target | - In the case where Job operations use two operation target | |||
| attributes (i.e., the "printer-uri" and "job-id" attributes), the | attributes (i.e., the "printer-uri" and "job-id" attributes), the | |||
| "printer-uri" attribute MUST be the third attribute and the "job- | "printer-uri" attribute MUST be the third attribute and the "job- | |||
| id" attribute MUST be the fourth attribute. | id" attribute MUST be the fourth attribute. | |||
| In all cases, the target URIs contained within the body of IPP | In all cases, the target URIs contained within the body of IPP operation | |||
| operation requests and responses must be in absolute format rather | requests and responses must be in absolute format rather than relative | |||
| than relative format (a relative URL identifies a resource with the | format (a relative URL identifies a resource with the scope of the HTTP | |||
| scope of the HTTP server, but does not include scheme, host or port). | server, but does not include scheme, host or port). | |||
| The following rules apply to the use of port numbers in URIs that | The following rules apply to the use of port numbers in URIs that | |||
| identify IPP objects: | identify IPP objects: | |||
| 1. If the URI scheme allows the port number to be explicitly | 1. If the URI scheme allows the port number to be explicitly included | |||
| included in the URI string, and a port number is specified within | in the URI string, and a port number is specified within the URI, | |||
| the URI, then that port number MUST be used by the client to | then that port number MUST be used by the client to contact the IPP | |||
| contact the IPP object. | object. | |||
| 2. If the URI scheme allows the port number to be explicitly | 2. If the URI scheme allows the port number to be explicitly included | |||
| included in the URI string, and a port number is not specified | in the URI string, and a port number is not specified within the | |||
| within the URI, then default port number implied by that URI | ||||
| scheme MUST be used by the client to contact the IPP object. | Isaacson, Powell Expires May 16, 1999 | |||
| URI, then default port number implied by that URI scheme MUST be | ||||
| used by the client to contact the IPP object. | ||||
| 3. If the URI scheme does not allow an explicit port number to be | 3. If the URI scheme does not allow an explicit port number to be | |||
| specified within the URI, then the default port number implied by | specified within the URI, then the default port number implied by | |||
| that URI MUST be used by the client to contact the IPP object. | that URI MUST be used by the client to contact the IPP object. | |||
| Note: The IPP encoding and transport document [IPP-PRO] shows a | Note: The IPP encoding and transport document [IPP-PRO] shows a mapping | |||
| mapping of IPP onto HTTP/1.1 and defines a new default port number for | of IPP onto HTTP/1.1 and defines a new default port number for using IPP | |||
| using IPP over HTTP/1.1. | over HTTP/1.1. | |||
| 3.1.6 Operation Status Codes and Messages | 3.1.6 Operation Status Codes and Messages | |||
| Every operation response includes a REQUIRED "status-code" parameter | Every operation response includes a REQUIRED "status-code" parameter and | |||
| and an OPTIONAL "status-message" operation attribute. The "status- | an OPTIONAL "status-message" operation attribute. The "status-code" | |||
| code" provides information on the processing of a request. A "status- | provides information on the processing of a request. A "status-message" | |||
| message" attribute provides a short textual description of the status | attribute provides a short textual description of the status of the | |||
| of the operation. The status code is intended for use by automata, | operation. The status code is intended for use by automata, and the | |||
| and the status message is intended for the human end user. If a | status message is intended for the human end user. If a response does | |||
| response does include a "status-message" attribute, an IPP client NEED | include a "status-message" attribute, an IPP client NEED NOT examine or | |||
| NOT examine or display the message, however it SHOULD do so in some | display the message, however it SHOULD do so in some implementation | |||
| implementation specific manner. | specific manner. | |||
| The "status-code" value is a numeric value that has semantic meaning. | The "status-code" value is a numeric value that has semantic meaning. | |||
| The "status-code" syntax is similar to a "type2 enum" (see section 4.1 | The "status-code" syntax is similar to a "type2 enum" (see section 4.1 | |||
| on "Attribute Syntaxes") except that values can range only from 0x0000 | on "Attribute Syntaxes") except that values can range only from 0x0000 | |||
| to 0x7FFF. Section 14 describes the status codes, assigns the numeric | to 0x7FFF. Section 14 describes the status codes, assigns the numeric | |||
| Expires December 30, 1998 | ||||
| values, and suggests a corresponding status message for each status | values, and suggests a corresponding status message for each status | |||
| code. The "status-message" attribute's syntax is "text(255)". | code. The "status-message" attribute's syntax is "text(255)". A client | |||
| implementation of IPP SHOULD convert status code values into any | ||||
| localized message that has semantic meaning to the end user. | ||||
| A client implementation of IPP SHOULD convert status code values into | If the Printer object supports the "status-message" operation attribute, | |||
| any localized message that has semantic meaning to the end user. If | the Printer object MUST be able to generate this message in any of the | |||
| the Printer object supports the status message, the Printer object | natural languages identified by the Printer object's "generated-natural- | |||
| MUST be able to generate this message in any of the natural languages | language-supported" attribute (see the "attributes-natural-language" | |||
| identified by the Printer object's "generated-natural-language- | operation attribute specified in section 3.1.4.1). As described in | |||
| supported" attribute (see the "attributes-natural-language" operation | section 3.1.4.1 for any returned 'text' attribute, if there is a choice | |||
| attribute specified in section 3.1.4.1). As described in section | for generating this message, the Printer object uses the natural | |||
| 3.1.4.1 for any returned 'text' attribute, if there is a choice for | language indicated by the value of the "attributes-natural-language" in | |||
| generating this message, the Printer object uses the natural language | the client request if supported, otherwise the Printer object uses the | |||
| indicated by the value of the "attributes-natural-language" in the | ||||
| client request if supported, otherwise the Printer object uses the | ||||
| value in the Printer object's own "natural-language-configured" | value in the Printer object's own "natural-language-configured" | |||
| attribute. | attribute. If the Printer object supports the "status-message" | |||
| operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to | ||||
| return a status message for the following error status codes (see | ||||
| section 14): 'client-error-bad-request', 'client-error-charset-not- | ||||
| supported', 'server-error-internal-error', 'server-error-operation-not- | ||||
| supported', and 'server-error-version-not-supported'. In this case, it | ||||
| MUST set the value of the "attributes-charset" operation attribute to | ||||
| 'utf-8' in the error response. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 3.1.7 Versions | 3.1.7 Versions | |||
| Each operation request and response carries with it a "version-number" | Each operation request and response carries with it a "version-number" | |||
| parameter. Each value of the "version-number" is in the form "X.Y" | parameter. Each value of the "version-number" is in the form "X.Y" | |||
| where X is the major version number and Y is the minor version number. | where X is the major version number and Y is the minor version number. | |||
| By including a version number in the client request, it allows the | By including a version number in the client request, it allows the | |||
| client to identify which version of IPP it is interested in using. | client to identify which version of IPP it is interested in using. If | |||
| If the IPP object does not support that version, the object responds | the IPP object does not support that version, the object responds with a | |||
| with a status code of 'server-error-version-not-supported' along with | status code of 'server-error-version-not-supported' along with the | |||
| the closest version number that is supported (see section 14.1.5.4). | closest version number that is supported (see section 14.1.5.4). | |||
| There is no version negotiation per se. However, if after receiving a | There is no version negotiation per se. However, if after receiving a | |||
| 'server-error-version-not-supported' status code from an IPP object, | 'server-error-version-not-supported' status code from an IPP object, | |||
| there is nothing that prevents a client from trying again with a | there is nothing that prevents a client from trying again with a | |||
| different version number. In order to conform to IPP/1.0, an | different version number. In order to conform to IPP/1.0, an | |||
| implementation MUST support at least version '1.0'. | implementation MUST support at least version '1.0'. | |||
| There is only one notion of "version number" that covers both IPP | There is only one notion of "version number" that covers both IPP Model | |||
| Model and IPP Protocol changes. Thus the version number MUST change | and IPP Protocol changes. Thus the version number MUST change when | |||
| when introducing a new version of the Model document or a new version | introducing a new version of the Model and Semantics document [IPP-MOD] | |||
| of the Protocol document. | or a new version of the Encoding and Transport document [IPP-PRO]. | |||
| Changes to the major version number indicate structural or syntactic | Changes to the major version number indicate structural or syntactic | |||
| changes that make it impossible for older version of IPP clients and | changes that make it impossible for older version of IPP clients and | |||
| Printer objects to correctly parse and process the new or changed | Printer objects to correctly parse and process the new or changed | |||
| attributes, operations and responses. If the major version number | attributes, operations and responses. If the major version number | |||
| changes, the minor version numbers is set to zero. As an example, | changes, the minor version numbers is set to zero. As an example, | |||
| adding the "ipp-attribute-fidelity" attribute (if it had not been part | adding the "ipp-attribute-fidelity" attribute (if it had not been part | |||
| of version '1.0'), would have required a change to the major version | of version '1.0'), would have required a change to the major version | |||
| number. Items that might affect the changing of the major version | number. Items that might affect the changing of the major version | |||
| number include any changes to the Model and Semantics document [IPP-MOD] | ||||
| Expires December 30, 1998 | or the Encoding and Transport [IPP-PRO] itself, such as: | |||
| number include any changes to the protocol specification itself, such | ||||
| as: | ||||
| - reordering of ordered attributes or attribute sets | - reordering of ordered attributes or attribute sets | |||
| - changes to the syntax of existing attributes | - changes to the syntax of existing attributes | |||
| - changing Operation or Job Template attributes from OPTIONAL to | - changing Operation or Job Template attributes from OPTIONAL to | |||
| REQUIRED and vice versa | REQUIRED and vice versa | |||
| - adding REQUIRED (for an IPP object to support) operation | - adding REQUIRED (for an IPP object to support) operation attributes | |||
| attributes | - adding REQUIRED (for an IPP object to support) operation attribute | |||
| - adding REQUIRED (for an IPP object to support) operation | groups | |||
| attribute groups | ||||
| - adding values to existing operation attributes | - adding values to existing operation attributes | |||
| - adding REQUIRED operations | - adding REQUIRED operations | |||
| Changes to the minor version number indicate the addition of new | Changes to the minor version number indicate the addition of new | |||
| features, attributes and attribute values that may not be understood | features, attributes and attribute values that may not be understood by | |||
| by all IPP objects, but which can be ignored if not understood. Items | all IPP objects, but which can be ignored if not understood. Items that | |||
| that might affect the changing of the minor version number include any | might affect the changing of the minor version number include any | |||
| changes to the model objects and attributes but not the encoding and | changes to the model objects and attributes but not the encoding and | |||
| transport rules [IPP-PRO] (except adding attribute syntaxes). | transport rules [IPP-PRO] (except adding attribute syntaxes). Examples | |||
| Examples of such changes are: | of such changes are: | |||
| - grouping all extensions not included in a previous version into a | - grouping all extensions not included in a previous version into a | |||
| new version | new version | |||
| - adding new attribute values | - adding new attribute values | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| - adding new object attributes | - adding new object attributes | |||
| - adding OPTIONAL (for an IPP object to support) operation | - adding OPTIONAL (for an IPP object to support) operation attributes | |||
| attributes (i.e., those attributes that an IPP object can ignore | (i.e., those attributes that an IPP object can ignore without | |||
| confusing clients) | ||||
| - adding OPTIONAL (for an IPP object to support) operation attribute | ||||
| groups (i.e., those attributes that an IPP object can ignore | ||||
| without confusing clients) | without confusing clients) | |||
| - adding OPTIONAL (for an IPP object to support) operation | ||||
| attribute groups (i.e., those attributes that an IPP object can | ||||
| ignore without confusing clients) | ||||
| - adding new attribute syntaxes | - adding new attribute syntaxes | |||
| - adding OPTIONAL operations | - adding OPTIONAL operations | |||
| - changing Job Description attributes or Printer Description | - changing Job Description attributes or Printer Description | |||
| attributes from OPTIONAL to REQUIRED or vice versa. | attributes from OPTIONAL to REQUIRED or vice versa. | |||
| The encoding of the "operation-id", the "version-number", the "status- | The encoding of the "operation-id", the "version-number", the "status- | |||
| code", and the "request-id" MUST NOT change over any version number | code", and the "request-id" MUST NOT change over any version number | |||
| (either major or minor). This rule guarantees that all future | (either major or minor). This rule guarantees that all future versions | |||
| versions will be backwards compatible with all previous versions (at | will be backwards compatible with all previous versions (at least for | |||
| least for checking the "operation-id", the "version-number", and the | checking the "operation-id", the "version-number", and the "request- | |||
| "request-id"). In addition, any protocol elements (attributes, error | id"). In addition, any protocol elements (attributes, error codes, | |||
| codes, tags, etc.) that are not carried forward from one version to | tags, etc.) that are not carried forward from one version to the next | |||
| the next are deprecated so that they can never be reused with new | are deprecated so that they can never be reused with new semantics. | |||
| semantics. | ||||
| Expires December 30, 1998 | ||||
| Implementations that support a certain major version NEED NOT support | Implementations that support a certain major version NEED NOT support | |||
| ALL previous versions. As each new major version is defined (through | ALL previous versions. As each new major version is defined (through | |||
| the release of a new specification), that major version will specify | the release of a new specification), that major version will specify | |||
| which previous major versions MUST be supported in compliant | which previous major versions MUST be supported in compliant | |||
| implementations. | implementations. | |||
| 3.1.8 Job Creation Operations | 3.1.8 Job Creation Operations | |||
| In order to "submit a print job" and create a new Job object, a client | In order to "submit a print job" and create a new Job object, a client | |||
| issues a create request. A create request is any one of following | issues a create request. A create request is any one of following three | |||
| three operation requests: | operation requests: | |||
| - The Print-Job Request: A client that wants to submit a print job | - The Print-Job Request: A client that wants to submit a print job | |||
| with only a single document uses the Print-Job operation. The | with only a single document uses the Print-Job operation. The | |||
| operation allows for the client to "push" the document data to | operation allows for the client to "push" the document data to the | |||
| the Printer object by including the document data in the request | Printer object by including the document data in the request | |||
| itself. | itself. | |||
| - The Print-URI Request: A client that wants to submit a print job | - The Print-URI Request: A client that wants to submit a print job | |||
| with only a single document (where the Printer object "pulls" the | with only a single document (where the Printer object "pulls" the | |||
| document data instead of the client "pushing" the data to the | document data instead of the client "pushing" the data to the | |||
| Printer object) uses the Print-URI operation. In this case, the | Printer object) uses the Print-URI operation. In this case, the | |||
| client includes in the request only a URI reference to the | client includes in the request only a URI reference to the document | |||
| document data (not the document data itself). | data (not the document data itself). | |||
| - The Create-Job Request: A client that wants to submit a print job | - The Create-Job Request: A client that wants to submit a print job | |||
| with multiple documents uses the Create-Job operation. This | with multiple documents uses the Create-Job operation. This | |||
| operation is followed by an arbitrary number of Send-Document | operation is followed by an arbitrary number of Send-Document | |||
| and/or Send-URI operations (each creating another document for | and/or Send-URI operations (each creating another document for the | |||
| the newly create Job object). The Send-Document operation | newly create Job object). The Send-Document operation includes the | |||
| includes the document data in the request (the client "pushes" | document data in the request (the client "pushes" the document data | |||
| the document data to the printer), and the Send-URI operation | to the printer), and the Send-URI operation includes only a URI | |||
| includes only a URI reference to the document data in the request | ||||
| (the Printer "pulls" the document data from the referenced | Isaacson, Powell Expires May 16, 1999 | |||
| location). The last Send-Document or Send-URI request for a | reference to the document data in the request (the Printer "pulls" | |||
| given Job object includes a "last-document" operation attribute | the document data from the referenced location). The last Send- | |||
| set to 'true' indicating that this is the last request. | Document or Send-URI request for a given Job object includes a | |||
| "last-document" operation attribute set to 'true' indicating that | ||||
| this is the last request. | ||||
| Throughout this model specification, the term "create request" is used | Throughout this model specification, the term "create request" is used | |||
| to refer to any of these three operation requests. | to refer to any of these three operation requests. | |||
| A Create-Job operation followed by only one Send-Document operation is | A Create-Job operation followed by only one Send-Document operation is | |||
| semantically equivalent to a Print-Job operation, however, for | semantically equivalent to a Print-Job operation, however, for | |||
| performance reasons, the client SHOULD use the Print-Job operation for | performance reasons, the client SHOULD use the Print-Job operation for | |||
| all single document jobs. Also, Print-Job is a REQUIRED operation | all single document jobs. Also, Print-Job is a REQUIRED operation (all | |||
| (all implementations MUST support it) whereas Create-Job is an | implementations MUST support it) whereas Create-Job is an OPTIONAL | |||
| OPTIONAL operation, hence some implementations might not support it. | operation, hence some implementations might not support it. | |||
| Expires December 30, 1998 | ||||
| Job submission time is the point in time when a client issues a create | Job submission time is the point in time when a client issues a create | |||
| request. The initial state of every Job object is the 'pending' or | request. The initial state of every Job object is the 'pending' or | |||
| 'pending-held' state. Later, the Printer object begins processing the | 'pending-held' state. Later, the Printer object begins processing the | |||
| print job. At this point in time, the Job object's state moves to | print job. At this point in time, the Job object's state moves to | |||
| 'processing'. This is known as job processing time. There are | 'processing'. This is known as job processing time. There are | |||
| validation checks that must be done at job submission time and others | validation checks that must be done at job submission time and others | |||
| that must be performed at job processing time. | that must be performed at job processing time. | |||
| At job submission time and at the time a Validate-Job operation is | At job submission time and at the time a Validate-Job operation is | |||
| received, the Printer MUST do the following: | received, the Printer MUST do the following: | |||
| 1. Process the client supplied attributes and either accept or | 1. Process the client supplied attributes and either accept or reject | |||
| reject the request | the request | |||
| 2. Validate the syntax of and support for the scheme of any client | 2. Validate the syntax of and support for the scheme of any client | |||
| supplied URI | supplied URI | |||
| Section 16 describes the rules and issues surrounding the processing | At job submission time the Printer object MUST validate whether or not | |||
| of client supplied attributes. Section 16.3 presents suggested steps | the supplied attributes, attribute syntaxes, and values are supported by | |||
| for an IPP object to either accept or reject any request. Section | matching them with the Printer object's corresponding "xxx-supported" | |||
| 16.4 presents suggested additional steps for processing create | attributes. See section 3.2.1.2 for details. [IPP-IIG] presents | |||
| requests. | suggested steps for an IPP object to either accept or reject any request | |||
| and additional steps for processing create requests. | ||||
| At job submission time the Printer NEED NOT perform the validation | At job submission time the Printer object NEED NOT perform the | |||
| checks reserved for job processing time such as: | validation checks reserved for job processing time such as: | |||
| 1. Validating the document data | 1. Validating the document data | |||
| 2. Validating the actual contents of any client supplied URI | 2. Validating the actual contents of any client supplied URI (resolve | |||
| (resolve the reference and follow the link to the document data) | the reference and follow the link to the document data) | |||
| At job submission time, these additional job processing time | At job submission time, these additional job processing time validation | |||
| validation checks are essentially useless, since they require actually | checks are essentially useless, since they require actually parsing and | |||
| parsing and interpreting the document data, are not guaranteed to be | interpreting the document data, are not guaranteed to be 100% accurate, | |||
| 100% accurate, and MUST be done, yet again, at job processing time. | and MUST be done, yet again, at job processing time. Also, in the case | |||
| Also, in the case of a URI, checking for availability at job | of a URI, checking for availability at job submission time does not | |||
| submission time does not guarantee availability at job processing | guarantee availability at job processing time. In addition, at job | |||
| time. In addition, at job processing time, the Printer object might | processing time, the Printer object might discover any of the following | |||
| discover any of the following conditions that were not detectable at | conditions that were not detectable at job submission time: | |||
| job submission time: | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| - runtime errors in the document data, | - runtime errors in the document data, | |||
| - nested document data that is in an unsupported format, | - nested document data that is in an unsupported format, | |||
| - the URI reference is no longer valid (i.e., the server hosting | - the URI reference is no longer valid (i.e., the server hosting the | |||
| the document might be down), or | document might be down), or | |||
| - any other job processing error | - any other job processing error | |||
| At job processing time, since the Printer object has already responded | At job processing time, since the Printer object has already responded | |||
| with a successful status code in the response to the create request, | with a successful status code in the response to the create request, if | |||
| if the Printer object detects an error, the Printer object is unable | the Printer object detects an error, the Printer object is unable to | |||
| inform the end user of the error with an operation status code. In | ||||
| Expires December 30, 1998 | this case, the Printer, depending on the error, can set the "job-state", | |||
| to inform the end user of the error with an operation status code. | "job-state-reasons", or "job-state-message" attributes to the | |||
| In this case, the Printer, depending on the error, can set the "job- | ||||
| state", "job-state-reasons", or "job-state-message" attributes to the | ||||
| appropriate value(s) so that later queries can report the correct job | appropriate value(s) so that later queries can report the correct job | |||
| status. | status. | |||
| Note: Asynchronous notification of events is outside the scope of | Note: Asynchronous notification of events is outside the scope of | |||
| IPP/1.0. | IPP/1.0. | |||
| 3.2 Printer Operations | 3.2 Printer Operations | |||
| All Printer operations are directed at Printer objects. A client MUST | All Printer operations are directed at Printer objects. A client MUST | |||
| always supply the "printer-uri" operation attribute in order to | always supply the "printer-uri" operation attribute in order to identify | |||
| identify the correct target of the operation. | the correct target of the operation. | |||
| 3.2.1 Print-Job Operation | 3.2.1 Print-Job Operation | |||
| This REQUIRED operation allows a client to submit a print job with | This REQUIRED operation allows a client to submit a print job with only | |||
| only one document and supply the document data (rather than just a | one document and supply the document data (rather than just a reference | |||
| reference to the data). See Section 16 for the suggested steps for | to the data). See Section 16 for the suggested steps for processing | |||
| processing create operations and their Operation and Job Template | create operations and their Operation and Job Template attributes. | |||
| attributes. | ||||
| 3.2.1.1 Print-Job Request | 3.2.1.1 Print-Job Request | |||
| The following groups of attributes are supplied as part of the Print- | The following groups of attributes are supplied as part of the Print-Job | |||
| Job Request: | Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. The Printer object | attributes as described in section 3.1.4.1. The Printer object | |||
| MUST copy these values to the corresponding Job Description | MUST copy these values to the corresponding Job Description | |||
| attributes described in sections 4.3.23 and 4.3.24. | attributes described in sections 4.3.23 and 4.3.24. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target for | |||
| for this operation as described in section 3.1.5. | this operation as described in section 3.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| "job-name" (name(MAX)): | "job-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It contains the client | MUST support this attribute. It contains the client supplied Job | |||
| supplied Job name. If this attribute is supplied by the client, | name. If this attribute is supplied by the client, its value is | |||
| its value is used for the "job-name" attribute of the newly | used for the "job-name" attribute of the newly created Job object. | |||
| created Job object. The client MAY automatically include any | The client MAY automatically include any information that will help | |||
| information that will help the end-user distinguish amongst | the end-user distinguish amongst his/her jobs, such as the name of | |||
| his/her jobs, such as the name of the application program along | the application program along with information from the document, | |||
| with information from the document, such as the document name, | such as the document name, document subject, or source file name. | |||
| document subject, or source file name. If this attribute is not | If this attribute is not supplied by the client, the Printer | |||
| supplied by the client, the Printer generates a name to use in | generates a name to use in the "job-name" attribute of the newly | |||
| the "job-name" attribute of the newly created Job object (see | created Job object (see Section 4.3.5). | |||
| Section 4.3.5). | ||||
| "ipp-attribute-fidelity" (boolean): | "ipp-attribute-fidelity" (boolean): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. The value 'true' indicates | MUST support this attribute. The value 'true' indicates that total | |||
| that total fidelity to client supplied Job Template attributes | fidelity to client supplied Job Template attributes and values is | |||
| and values is required, else the Printer object MUST reject the | required, else the Printer object MUST reject the Print-Job | |||
| Print-Job request. The value 'false' indicates that a reasonable | request. The value 'false' indicates that a reasonable attempt to | |||
| attempt to print the Job object is acceptable and the Printer | print the Job object is acceptable and the Printer object MUST | |||
| object MUST accept the Print-job request. If not supplied, the | accept the Print-job request. If not supplied, the Printer object | |||
| Printer object assumes the value is 'false'. All Printer objects | assumes the value is 'false'. All Printer objects MUST support | |||
| MUST support both types of job processing. See section 16 for a | both types of job processing. See section 16 for a full | |||
| full description of "ipp-attribute-fidelity" and its relationship | description of "ipp-attribute-fidelity" and its relationship to | |||
| to other attributes, especially the Printer object's "pdl- | other attributes, especially the Printer object's "pdl-override- | |||
| override-supported" attribute. | supported" attribute. | |||
| "document-name" (name(MAX)): | "document-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It contains the client | MUST support this attribute. It contains the client supplied | |||
| supplied document name. The document name MAY be different than | document name. The document name MAY be different than the Job | |||
| the Job name. Typically, the client software automatically | name. Typically, the client software automatically supplies the | |||
| supplies the document name on behalf of the end user by using a | document name on behalf of the end user by using a file name or an | |||
| file name or an application generated name. If this attribute is | application generated name. If this attribute is supplied, its | |||
| supplied, its value can be used in a manner defined by each | value can be used in a manner defined by each implementation. | |||
| implementation. Examples include: printed along with the Job | Examples include: printed along with the Job (job start sheet, page | |||
| (job start sheet, page adornments, etc.), used by accounting or | adornments, etc.), used by accounting or resource tracking | |||
| resource tracking management tools, or even stored along with the | management tools, or even stored along with the document as a | |||
| document as a document level attribute. IPP/1.0 does not support | document level attribute. IPP/1.0 does not support the concept of | |||
| the concept of document level attributes. | document level attributes. | |||
| "document-format" (mimeMediaType) : | "document-format" (mimeMediaType) : | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. The value of this attribute | MUST support this attribute. The value of this attribute | |||
| identifies the format of the supplied document data. If the | identifies the format of the supplied document data. If the client | |||
| client does not supply this attribute, the Printer object assumes | does not supply this attribute, the Printer object assumes that the | |||
| that the document data is in the format defined by the Printer | document data is in the format defined by the Printer object's | |||
| "document-format-default" attribute. If the client supplies this | ||||
| attribute, but the value is not supported by the Printer object, | ||||
| i.e., the value is not one of the values of the Printer object's | ||||
| "document-format-supported" attribute, the Printer object MUST | ||||
| reject the request and return the 'client-error-document-format- | ||||
| not-supported' status code. | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| object's "document-format-default" attribute. If the client | ||||
| supplies this attribute, but the value is not supported by the | ||||
| Printer object, i.e., the value is not one of the values of the | ||||
| Printer object's "document-format-supported" attribute, the | ||||
| Printer object MUST reject the request and return the 'client- | ||||
| error-document-format-not-supported' status code. | ||||
| "document-natural-language" (naturalLanguage): | "document-natural-language" (naturalLanguage): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute. This attribute | OPTIONALLY supports this attribute. This attribute specifies the | |||
| specifies the natural language of the document for those | natural language of the document for those document-formats that | |||
| document-formats that require a specification of the natural | require a specification of the natural language in order to image | |||
| language in order to image the document unambiguously. There are | the document unambiguously. There are no particular values required | |||
| no particular values required for the Printer object to support. | for the Printer object to support. | |||
| "compression" (type3 keyword) | "compression" (type3 keyword) | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute and the "compression- | OPTIONALLY supports this attribute and the "compression-supported" | |||
| supported" attribute (see section 4.4.29). The client supplied | attribute (see section 4.4.29). The client supplied "compression" | |||
| "compression" operation attribute identifies the compression | operation attribute identifies the compression algorithm used on | |||
| algorithm used on the document data. If the client omits this | the document data. If the client omits this attribute, the Printer | |||
| attribute, the Printer object MUST assume that the data is not | object MUST assume that the data is not compressed. If the client | |||
| compressed. If the client supplies the attribute and the Printer | supplies the attribute and the Printer object supports the | |||
| object supports the attribute, the Printer object uses the | attribute, the Printer object uses the corresponding decompression | |||
| corresponding decompression algorithm on the document data. If | algorithm on the document data. If the client supplies this | |||
| the client supplies this attribute, but the value is not | attribute, but the value is not supported by the Printer object, | |||
| supported by the Printer object, i.e., the value is not one of | i.e., the value is not one of the values of the Printer object's | |||
| the values of the Printer object's "compression-supported" | "compression-supported" attribute, the Printer object MUST copy the | |||
| attribute, the Printer object MUST copy the attribute and its | attribute and its value to the Unsupported Attributes response | |||
| value to the Unsupported Attributes response group, reject the | group, reject the request, and return the 'client-error-attributes- | |||
| request, and return the 'client-error-attributes-or-values-not- | or-values-not-supported' status code. | |||
| supported' status code. | ||||
| "job-k-octets" (integer(0:MAX)) | "job-k-octets" (integer(0:MAX)) | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute and the "job-k-octets- | OPTIONALLY supports this attribute and the "job-k-octets-supported" | |||
| supported" attribute (see section 4.4.30). The client supplied | attribute (see section 4.4.30). The client supplied "job-k-octets" | |||
| "job-k-octets" operation attribute identifies the total size of | operation attribute identifies the total size of the document(s) in | |||
| the document(s) in K octets being submitted (see section 4.3.17 | K octets being submitted (see section 4.3.17 for the complete | |||
| for the complete semantics). If the client supplies the | semantics). If the client supplies the attribute and the Printer | |||
| attribute and the Printer object supports the attribute, the | object supports the attribute, the value of the attribute is used | |||
| value of the attribute is used to populate the Job object's "job- | to populate the Job object's "job-k-octets" Job Description | |||
| k-octets" Job Description attribute. | attribute. | |||
| Note: For this attribute and the following two attributes ("job- | Note: For this attribute and the following two attributes ("job- | |||
| impressions", and "job-media-sheets"), if the client supplies the | impressions", and "job-media-sheets"), if the client supplies the | |||
| attribute, but the Printer object does not support the attribute, | attribute, but the Printer object does not support the attribute, | |||
| the Printer object ignores the client-supplied value. If the | the Printer object ignores the client-supplied value. If the | |||
| Expires December 30, 1998 | ||||
| client supplies the attribute and the Printer supports the | client supplies the attribute and the Printer supports the | |||
| attribute, and the value is within the range of the corresponding | attribute, and the value is within the range of the corresponding | |||
| Printer object's "xxx-supported" attribute, the Printer object | Printer object's "xxx-supported" attribute, the Printer object MUST | |||
| MUST use the value to populate the Job object's "xxx" attribute. | use the value to populate the Job object's "xxx" attribute. If the | |||
| If the client supplies the attribute and the Printer supports the | client supplies the attribute and the Printer supports the | |||
| attribute, but the value is outside the range of the | attribute, but the value is outside the range of the corresponding | |||
| corresponding Printer object's "xxx-supported" attribute, the | Printer object's "xxx-supported" attribute, the Printer object MUST | |||
| Printer object MUST copy the attribute and its value to the | copy the attribute and its value to the Unsupported Attributes | |||
| Unsupported Attributes response group, reject the request, and | response group, reject the request, and return the 'client-error- | |||
| return the 'client-error-attributes-or-values-not-supported' | attributes-or-values-not-supported' status code. If the client | |||
| status code. If the client does not supply the attribute, the | does not supply the attribute, the Printer object MAY choose to | |||
| Printer object MAY choose to populate the corresponding Job | populate the corresponding Job object attribute depending on | |||
| object attribute depending on whether the Printer object supports | whether the Printer object supports the attribute and is able to | |||
| the attribute and is able to calculate or discern the correct | calculate or discern the correct value. | |||
| value. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| "job-impressions" (integer(0:MAX)) | "job-impressions" (integer(0:MAX)) | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute and the "job- | OPTIONALLY supports this attribute and the "job-impressions- | |||
| impressions-supported" attribute (see section 4.4.31). The | supported" attribute (see section 4.4.31). The client supplied | |||
| client supplied "job-impressions" operation attribute identifies | "job-impressions" operation attribute identifies the total size in | |||
| the total size in number of impressions of the document(s) being | number of impressions of the document(s) being submitted (see | |||
| submitted (see section 4.3.18 for the complete semantics). | section 4.3.18 for the complete semantics). | |||
| See note under "job-k-octets". | See note under "job-k-octets". | |||
| "job-media-sheets" (integer(0:MAX)) | "job-media-sheets" (integer(0:MAX)) | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute and the "job-media- | OPTIONALLY supports this attribute and the "job-media-sheets- | |||
| sheets-supported" attribute (see section 4.4.32). The client | supported" attribute (see section 4.4.32). The client supplied | |||
| supplied "job-media-sheets" operation attribute identifies the | "job-media-sheets" operation attribute identifies the total number | |||
| total number of media sheets to be produced for this job (see | of media sheets to be produced for this job (see section 4.3.19 for | |||
| section 4.3.19 for the complete semantics). | the complete semantics). | |||
| See note under "job-k-octets". | See note under "job-k-octets". | |||
| Group 2: Job Template Attributes | Group 2: Job Template Attributes | |||
| The client OPTIONALLY supplies a set of Job Template attributes | The client OPTIONALLY supplies a set of Job Template attributes as | |||
| as defined in section 4.2. | defined in section 4.2. If the client is not supplying any Job | |||
| Template attributes in the request, the client SHOULD omit Group 2 | ||||
| rather than sending an empty group. However, a Printer object MUST | ||||
| be able to accept an empty group. | ||||
| Group 3: Document Content | Group 3: Document Content | |||
| The client MUST supply the document data to be processed. | The client MUST supply the document data to be processed. | |||
| Note: In addition to the MANDTORY parameters required for every | Note: In addition to the MANDATORY parameters required for every | |||
| operation request, the simplest Print-Job Request consists of just the | operation request, the simplest Print-Job Request consists of just the | |||
| "attributes-charset" and "attributes-natural-language" operation | "attributes-charset" and "attributes-natural-language" operation | |||
| Expires December 30, 1998 | ||||
| attributes; the "printer-uri" target operation attribute; the Document | attributes; the "printer-uri" target operation attribute; the Document | |||
| Content and nothing else. In this simple case, the Printer object: | Content and nothing else. In this simple case, the Printer object: | |||
| - creates a new Job object (the Job object contains a single | - creates a new Job object (the Job object contains a single | |||
| document), | document), | |||
| - stores a generated Job name in the "job-name" attribute in the | - stores a generated Job name in the "job-name" attribute in the | |||
| natural language and charset requested (see Section 3.1.4.1) (if | natural language and charset requested (see Section 3.1.4.1) (if | |||
| those are supported, otherwise using the Printer object's default | those are supported, otherwise using the Printer object's default | |||
| natural language and charset), and | natural language and charset), and | |||
| - at job processing time, uses its corresponding default value | - at job processing time, uses its corresponding default value | |||
| attributes for the supported Job Template attributes that were | attributes for the supported Job Template attributes that were not | |||
| not supplied by the client as IPP attribute or embedded | supplied by the client as IPP attribute or embedded instructions in | |||
| instructions in the document data. | the document data. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 3.2.1.2 Print-Job Response | 3.2.1.2 Print-Job Response | |||
| The Printer object MUST return to the client the following sets of | The Printer object MUST return to the client the following sets of | |||
| attributes as part of the Print-Job Response: | attributes as part of the Print-Job Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.6. If the | operation attribute as described in sections 14 and 3.1.6. If the | |||
| client supplies unsupported or conflicting Job Template | client supplies unsupported or conflicting Job Template attributes | |||
| attributes or values, the Printer object MUST reject or accept | or values, the Printer object MUST reject or accept the Print-Job | |||
| the Print-Job request depending on the whether the client | request depending on the whether the client supplied a 'true' or | |||
| supplied a 'true' or 'false' value for the "ipp-attribute- | 'false' value for the "ipp-attribute-fidelity" operation attribute. | |||
| fidelity" operation attribute. See section 16 for a complete | See the Implementer's Guide [IPP-IIG] for a complete description of | |||
| description of the suggested steps for processing a create | the suggested steps for processing a create request. | |||
| request. | ||||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. | attributes as described in section 3.1.4.2. | |||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| This is a set of Operation and Job Template attributes supplied | This is a set of Operation and Job Template attributes supplied by | |||
| by the client (in the request) that are not supported by the | the client (in the request) that are not supported by the Printer | |||
| Printer object or that conflict with one another (see sections | object or that conflict with one another (see the Implementer's | |||
| 16.3 and 16.4). | Guide [IPP-IIG]). If the Printer object is not returning any | |||
| Unsupported Attributes in the response, the Printer object SHOULD | ||||
| omit Group 2 rather than sending an empty group. However, a client | ||||
| MUST be able to accept an empty group. | ||||
| Unsupported attributes fall into three categories: | Unsupported attributes fall into three categories: | |||
| Expires December 30, 1998 | 1. The Printer object does not support the supplied attribute (no | |||
| 1. The Printer object does not support the named attribute (no | matter what the attribute syntax or value). | |||
| matter what the value). | ||||
| 2. The Printer object does support the attribute, but does not | 2. The Printer object does support the attribute, but does not | |||
| support some or all of the particular values supplied by the | support some or all of the particular attribute syntaxes or | |||
| client (i.e., the Printer object does not have those values | values supplied by the client (i.e., the Printer object does | |||
| in the corresponding supported values attribute). | not have those attribute syntaxes or values in its | |||
| corresponding "xxx-supported" attribute). | ||||
| 3. The Printer object does support the attributes and values | 3. The Printer object does support the attributes and values | |||
| supplied, but the particular values are in conflict with one | supplied, but the particular values are in conflict with one | |||
| another, because they violate a constraint, such as not | another, because they violate a constraint, such as not being | |||
| being able to staple transparencies. | able to staple transparencies. | |||
| In the case of an unsupported attribute name, the Printer object | In the case of an unsupported attribute name, the Printer object | |||
| returns the client-supplied attribute with a substituted "out-of- | returns the client-supplied attribute with a substituted "out-of- | |||
| band" value of 'unsupported' indicating no support for the | band" value of 'unsupported' indicating no support for the | |||
| attribute itself (see the beginning of section 4.1). | attribute itself (see the beginning of section 4.1). | |||
| In the case of a supported attribute with one or more unsupported | In the case of a supported attribute with one or more unsupported | |||
| values, the Printer object simply returns the client-supplied | attribute syntaxes or values, the Printer object simply returns the | |||
| attribute with the unsupported values as supplied by the client. | client-supplied attribute with the unsupported attribute syntaxes | |||
| This indicates support for the attribute, but no support for that | ||||
| particular value. If the client supplies a multi-valued attribute | ||||
| with more than one value and the Printer object supports the | ||||
| attribute but only supports a subset of the client supplied | ||||
| values, the Printer object MUST return only those values that are | ||||
| unsupported. | ||||
| In the case of two (or more) supported attribute values that are | Isaacson, Powell Expires May 16, 1999 | |||
| in conflict with one another (although each is supported | or values as supplied by the client. This indicates support for | |||
| the attribute, but no support for that particular attribute syntax | ||||
| or value. If the client supplies a multi-valued attribute with | ||||
| more than one value and the Printer object supports the attribute | ||||
| but only supports a subset of the client-supplied attribute | ||||
| syntaxes or values, the Printer object MUST return only those | ||||
| attribute syntaxes or values that are unsupported. | ||||
| In the case of two (or more) supported attribute values that are in | ||||
| conflict with one another (although each is supported | ||||
| independently, the values conflict when requested together within | independently, the values conflict when requested together within | |||
| the same job), the Printer object MUST return all the values that | the same job), the Printer object MUST return all the values that | |||
| it ignores or substitutes to resolve the conflict, but not any of | it ignores or substitutes to resolve the conflict, but not any of | |||
| the values that it is still using. The choice for exactly how to | the values that it is still using. The choice for exactly how to | |||
| resolve the conflict is implementation dependent. See Section | resolve the conflict is implementation dependent. See The | |||
| 16.4.4 for an example. | Implementer's Guide [IPP-IIG] for an example. | |||
| In these three cases, the value of the "ipp-attribute-fidelity" | In these three cases, the value of the "ipp-attribute-fidelity" | |||
| supplied by the client does not affect what the Printer object | supplied by the client does not affect what the Printer object | |||
| returns. The value of "ipp-attribute-fidelity" only affects | returns. The value of "ipp-attribute-fidelity" only affects | |||
| whether the Print-Job operation is accepted or rejected. If the | whether the Print-Job operation is accepted or rejected. If the | |||
| job is accepted, the client may query the job using the Get-Job- | job is accepted, the client may query the job using the Get-Job- | |||
| Attributes operation requesting the unsupported attributes that | Attributes operation requesting the unsupported attributes that | |||
| were returned in the create response to see which attributes were | were returned in the create response to see which attributes were | |||
| ignored (not stored on the Job object) and which attributes were | ignored (not stored on the Job object) and which attributes were | |||
| stored with other (substituted) values. | stored with other (substituted) values. | |||
| Group 3: Job Object Attributes | Group 3: Job Object Attributes | |||
| Expires December 30, 1998 | ||||
| "job-uri" (uri): | "job-uri" (uri): | |||
| The Printer object MUST return the Job object's URI by returning | The Printer object MUST return the Job object's URI by returning | |||
| the contents of the REQUIRED "job-uri" Job object attribute. The | the contents of the REQUIRED "job-uri" Job object attribute. The | |||
| client uses the Job object's URI when directing operations at the | client uses the Job object's URI when directing operations at the | |||
| Job object. The Printer object always uses its configured | Job object. The Printer object always uses its configured security | |||
| security policy when creating the new URI. However, if the | policy when creating the new URI. However, if the Printer object | |||
| Printer object supports more than one URI, the Printer object | supports more than one URI, the Printer object also uses | |||
| also uses information about which URI was used in the Print-Job | information about which URI was used in the Print-Job Request to | |||
| Request to generated the new URI so that the new URI references | generated the new URI so that the new URI references the correct | |||
| the correct access channel. In other words, if the Print-Job | access channel. In other words, if the Print-Job Request comes in | |||
| Request comes in over a secure channel, the Printer object MUST | over a secure channel, the Printer object MUST generate a Job URI | |||
| generate a Job URI that uses the secure channel as well. | that uses the secure channel as well. | |||
| "job-id" (integer(1:MAX)): | "job-id" (integer(1:MAX)): | |||
| The Printer object MUST return the Job object's Job ID by | The Printer object MUST return the Job object's Job ID by returning | |||
| returning the REQUIRED "job-id" Job object attribute. The | the REQUIRED "job-id" Job object attribute. The client uses this | |||
| client uses this "job-id" attribute in conjunction with the | "job-id" attribute in conjunction with the "printer-uri" attribute | |||
| "printer-uri" attribute used in the Print-Job Request when | used in the Print-Job Request when directing Job operations at the | |||
| directing Job operations at the Printer object. | Printer object. | |||
| "job-state": | "job-state": | |||
| The Printer object MUST return the Job object's REQUIRED "job- | The Printer object MUST return the Job object's REQUIRED "job- | |||
| state" attribute. The value of this attribute (along with the | state" attribute. The value of this attribute (along with the value | |||
| value of the next attribute "job-state-reasons") is taken from a | of the next attribute "job-state-reasons") is taken from a | |||
| "snapshot" of the new Job object at some meaningful point in time | "snapshot" of the new Job object at some meaningful point in time | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| (implementation defined) between when the Printer object receives | (implementation defined) between when the Printer object receives | |||
| the Print-Job Request and when the Printer object returns the | the Print-Job Request and when the Printer object returns the | |||
| response. | response. | |||
| "job-state-reasons": | "job-state-reasons": | |||
| The Printer object OPTIONALLY returns the Job object's OPTIONAL | The Printer object OPTIONALLY returns the Job object's OPTIONAL | |||
| "job-state-reasons" attribute. If the Printer object supports | "job-state-reasons" attribute. If the Printer object supports this | |||
| this attribute then it MUST be returned in the response. If this | attribute then it MUST be returned in the response. If this | |||
| attribute is not returned in the response, the client can assume | attribute is not returned in the response, the client can assume | |||
| that the "job-state-reasons" attribute is not supported and will | that the "job-state-reasons" attribute is not supported and will | |||
| not be returned in a subsequent Job object query. | not be returned in a subsequent Job object query. | |||
| "job-state-message": | "job-state-message": | |||
| The Printer object OPTIONALLY returns the Job object's OPTIONAL | The Printer object OPTIONALLY returns the Job object's OPTIONAL | |||
| "job-state-message" attribute. If the Printer object supports | "job-state-message" attribute. If the Printer object supports this | |||
| this attribute then it MUST be returned in the response. If this | attribute then it MUST be returned in the response. If this | |||
| attribute is not returned in the response, the client can assume | attribute is not returned in the response, the client can assume | |||
| that the "job-state-message" attribute is not supported and will | that the "job-state-message" attribute is not supported and will | |||
| not be returned in a subsequent Job object query. | not be returned in a subsequent Job object query. | |||
| "number-of-intervening-jobs": | "number-of-intervening-jobs": | |||
| The Printer object OPTIONALLY returns the Job object's OPTIONAL | The Printer object OPTIONALLY returns the Job object's OPTIONAL | |||
| "number-of-intervening-jobs" attribute. If the Printer object | "number-of-intervening-jobs" attribute. If the Printer object | |||
| Expires December 30, 1998 | ||||
| supports this attribute then it MUST be returned in the response. | supports this attribute then it MUST be returned in the response. | |||
| If this attribute is not returned in the response, the client can | If this attribute is not returned in the response, the client can | |||
| assume that the "number-of-intervening-jobs" attribute is not | assume that the "number-of-intervening-jobs" attribute is not | |||
| supported and will not be returned in a subsequent Job object | supported and will not be returned in a subsequent Job object | |||
| query. | query. | |||
| Note: Since any printer state information which affects a job's | Note: Since any printer state information which affects a job's | |||
| state is reflected in the "job-state" and "job-state-reasons" | state is reflected in the "job-state" and "job-state-reasons" | |||
| attributes, it is sufficient to return only these attributes and | attributes, it is sufficient to return only these attributes and no | |||
| no specific printer status attributes. | specific printer status attributes. | |||
| Note: In addition to the MANDTORY parameters required for every | Note: In addition to the MANDATORY parameters required for every | |||
| operation response, the simplest response consists of the just the | operation response, the simplest response consists of the just the | |||
| "attributes-charset" and "attributes-natural-language" operation | "attributes-charset" and "attributes-natural-language" operation | |||
| attributes and the "job-uri", "job-id", and "job-state" Job Object | attributes and the "job-uri", "job-id", and "job-state" Job Object | |||
| Attributes. In this simplest case, the status code is "successful-ok" | Attributes. In this simplest case, the status code is "successful-ok" | |||
| and there is no "status-message" operation attribute. | and there is no "status-message" operation attribute. | |||
| 3.2.2 Print-URI Operation | 3.2.2 Print-URI Operation | |||
| This OPTIONAL operation is identical to the Print-Job operation | This OPTIONAL operation is identical to the Print-Job operation (section | |||
| (section 3.2.1) except that a client supplies a URI reference to the | 3.2.1) except that a client supplies a URI reference to the document | |||
| document data using the "document-uri" (uri) operation attribute (in | data using the "document-uri" (uri) operation attribute (in Group 1) | |||
| Group 1) rather than including the document data itself. Before | rather than including the document data itself. Before returning the | |||
| returning the response, the Printer MUST validate that the Printer | response, the Printer MUST validate that the Printer supports the | |||
| supports the retrieval method (e.g., http, ftp, etc.) implied by the | retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST | |||
| URI, and MUST check for valid URI syntax. If the client-supplied URI | check for valid URI syntax. If the client-supplied URI scheme is not | |||
| scheme is not supported, i.e. the value is not in the Printer object's | supported, i.e. the value is not in the Printer object's "referenced- | |||
| "referenced-uri-scheme-supported" attribute, the Printer object MUST | uri-scheme-supported" attribute, the Printer object MUST reject the | |||
| reject the request and return the 'client-error-uri-scheme-not- | request and return the 'client-error-uri-scheme-not-supported' status | |||
| supported' status code. See Section 16.3.5 for suggested additional | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| code. See The Implementer's Guide [IPP-IIG] for suggested additional | ||||
| checks. The Printer NEED NOT follow the reference and validate the | checks. The Printer NEED NOT follow the reference and validate the | |||
| contents of the reference. | contents of the reference. | |||
| If the Printer object supports this operation, it MUST support the | If the Printer object supports this operation, it MUST support the | |||
| "reference-uri-schemes-supported" Printer attribute (see section | "reference-uri-schemes-supported" Printer attribute (see section | |||
| 4.4.24). | 4.4.24). | |||
| It is up to the IPP object to interpret the URI and subsequently | It is up to the IPP object to interpret the URI and subsequently "pull" | |||
| "pull" the document from the source referenced by the URI string. | the document from the source referenced by the URI string. | |||
| 3.2.3 Validate-Job Operation | 3.2.3 Validate-Job Operation | |||
| This REQUIRED operation is similar to the Print-Job operation (section | This REQUIRED operation is similar to the Print-Job operation (section | |||
| 3.2.1) except that a client supplies no document data and the Printer | 3.2.1) except that a client supplies no document data and the Printer | |||
| allocates no resources (i.e., it does not create a new Job object). | allocates no resources (i.e., it does not create a new Job object). | |||
| Expires December 30, 1998 | ||||
| This operation is used only to verify capabilities of a printer object | This operation is used only to verify capabilities of a printer object | |||
| against whatever attributes are supplied by the client in the | against whatever attributes are supplied by the client in the Validate- | |||
| Validate-Job request. By using the Validate-Job operation a client | Job request. By using the Validate-Job operation a client can validate | |||
| can validate that an identical Print-Job operation (with the document | that an identical Print-Job operation (with the document data) would be | |||
| data) would be accepted. The Validate-Job operation also performs the | accepted. The Validate-Job operation also performs the same security | |||
| same security negotiation as the Print-Job operation (see section 8), | negotiation as the Print-Job operation (see section 8), so that a client | |||
| so that a client can check that the client and Printer object security | can check that the client and Printer object security requirements can | |||
| requirements can be met before performing a Print-Job operation. | be met before performing a Print-Job operation. | |||
| Note: The Validate-Job operation does not accept a "document-uri" | Note: The Validate-Job operation does not accept a "document-uri" | |||
| attribute in order to allow a client to check that the same Print-URI | attribute in order to allow a client to check that the same Print-URI | |||
| operation will be accepted, since the client doesn't send the data | operation will be accepted, since the client doesn't send the data with | |||
| with the Print-URI operation. The client SHOULD just issue the Print- | the Print-URI operation. The client SHOULD just issue the Print-URI | |||
| URI request. | request. | |||
| The Printer object returns the same status codes, Operation Attributes | The Printer object returns the same status codes, Operation Attributes | |||
| (Group 1) and Unsupported Attributes (Group 2) as the Print-Job | (Group 1) and Unsupported Attributes (Group 2) as the Print-Job | |||
| operation. However, no Job Object Attributes (Group 3) are returned, | operation. However, no Job Object Attributes (Group 3) are returned, | |||
| since no Job object is created. | since no Job object is created. | |||
| 3.2.4 Create-Job Operation | 3.2.4 Create-Job Operation | |||
| This OPTIONAL operation is similar to the Print-Job operation (section | This OPTIONAL operation is similar to the Print-Job operation (section | |||
| 3.2.1) except that in the Create-Job request, a client does not supply | 3.2.1) except that in the Create-Job request, a client does not supply | |||
| document data or any reference to document data. Also, the client | document data or any reference to document data. Also, the client does | |||
| does not supply any of the "document-name", "document-format", | not supply any of the "document-name", "document-format", "compression", | |||
| "compression", or "document-natural-language" operation attributes. | or "document-natural-language" operation attributes. This operation is | |||
| This operation is followed by one or more Send-Document or Send-URI | followed by one or more Send-Document or Send-URI operations. In each | |||
| operations. In each of those operation requests, the client | of those operation requests, the client OPTIONALLY supplies the | |||
| OPTIONALLY supplies the "document-name", "document-format", and | "document-name", "document-format", and "document-natural-language" | |||
| "document-natural-language" attributes for each document in the multi- | attributes for each document in the multi-document Job object. | |||
| document Job object. If a Printer object supports the Create-Job | ||||
| operation, it MUST also support the Send-Document operation and also | If a Printer object supports the Create-Job operation, it MUST also | |||
| MAY support the Send-URI operation. | support the Send-Document operation and also MAY support the Send-URI | |||
| operation. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| If the Printer object supports this operation, it MUST support the | ||||
| "multiple-operation-time-out" Printer attribute (see section 4.4.28). | ||||
| In addition to the Print-Job status codes in the following additional | ||||
| error status codes not applicable to Print-Job MAY be returned: | ||||
| 3.2.5 Get-Printer-Attributes Operation | 3.2.5 Get-Printer-Attributes Operation | |||
| This REQUIRED operation allows a client to request the values of the | This REQUIRED operation allows a client to request the values of the | |||
| attributes of a Printer object. In the request, the client supplies | attributes of a Printer object. In the request, the client supplies | |||
| the set of Printer attribute names and/or attribute group names in | the set of Printer attribute names and/or attribute group names in which | |||
| which the requester is interested. In the response, the Printer | the requester is interested. In the response, the Printer object | |||
| object returns a corresponding attribute set with the appropriate | returns a corresponding attribute set with the appropriate attribute | |||
| attribute values filled in. | values filled in. | |||
| For Printer objects, the possible names of attribute groups are: | For Printer objects, the possible names of attribute groups are: | |||
| Expires December 30, 1998 | - 'job-template': all of the Job Template attributes that apply to a | |||
| - 'job-template': all of the Job Template attributes that apply to | Printer object (the last two columns of the table in Section 4.2). | |||
| a Printer object (the last two columns of the table in Section | ||||
| 4.2). | ||||
| - 'printer-description': the attributes specified in Section 4.4. | - 'printer-description': the attributes specified in Section 4.4. | |||
| - 'all': the special group 'all' that includes all supported | - 'all': the special group 'all' that includes all supported | |||
| attributes. | attributes. | |||
| Since a client MAY request specific attributes or named groups, there | Since a client MAY request specific attributes or named groups, there is | |||
| is a potential that there is some overlap. For example, if a client | a potential that there is some overlap. For example, if a client | |||
| requests, 'printer-name' and 'all', the client is actually requesting | requests, 'printer-name' and 'all', the client is actually requesting | |||
| the "printer-name" attribute twice: once by naming it explicitly, and | the "printer-name" attribute twice: once by naming it explicitly, and | |||
| once by inclusion in the 'all' group. In such cases, the Printer | once by inclusion in the 'all' group. In such cases, the Printer object | |||
| object NEED NOT return each attribute only once in the response even | NEED NOT return each attribute only once in the response even if it is | |||
| if it is requested multiple times. The client SHOULD NOT request the | requested multiple times. The client SHOULD NOT request the same | |||
| same attribute in multiple ways. | attribute in multiple ways. | |||
| It is NOT REQUIRED that a Printer object support all attributes | It is NOT REQUIRED that a Printer object support all attributes | |||
| belonging to a group (since some attributes are OPTIONAL). However, | belonging to a group (since some attributes are OPTIONAL). However, it | |||
| it is REQUIRED that each Printer object support all group names. | is REQUIRED that each Printer object support all group names. | |||
| 3.2.5.1 Get-Printer-Attributes Request | 3.2.5.1 Get-Printer-Attributes Request | |||
| The following sets of attributes are part of the Get-Printer- | The following sets of attributes are part of the Get-Printer-Attributes | |||
| Attributes Request: | Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in section 3.1.4.1. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target for | |||
| for this operation as described in section 3.1.5. | this operation as described in section 3.1.5. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| "requested-attributes" (1setOf keyword) : | "requested-attributes" (1setOf keyword) : | |||
| The client OPTIONALLY supplies a set of attribute names and/or | The client OPTIONALLY supplies a set of attribute names and/or | |||
| attribute group names in whose values the requester is | attribute group names in whose values the requester is interested. | |||
| interested. The Printer object MUST support this attribute. If | The Printer object MUST support this attribute. If the client | |||
| the client omits this attribute, the Printer MUST respond as if | omits this attribute, the Printer MUST respond as if this attribute | |||
| this attribute had been supplied with a value of 'all'. | had been supplied with a value of 'all'. | |||
| Expires December 30, 1998 | ||||
| "document-format" (mimeMediaType) : | "document-format" (mimeMediaType) : | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. This attribute is useful for | MUST support this attribute. This attribute is useful for a | |||
| a Printer object to determine the set of supported attribute | Printer object to determine the set of supported attribute values | |||
| values that relate to the requested document format. The Printer | that relate to the requested document format. The Printer object | |||
| object MUST return the attributes and values that it uses to | MUST return the attributes and values that it uses to validate a | |||
| validate a job on a create or Validate-Job operation in which | job on a create or Validate-Job operation in which this document | |||
| this document format is supplied. The Printer object SHOULD | format is supplied. The Printer object SHOULD return only (1) those | |||
| return only (1) those attributes that are supported for the | attributes that are supported for the specified format and (2) the | |||
| specified format and (2) the attribute values that are supported | attribute values that are supported for the specified document | |||
| for the specified document format. By specifying the document | format. By specifying the document format, the client can get the | |||
| format, the client can get the Printer object to eliminate the | Printer object to eliminate the attributes and values that are not | |||
| attributes and values that are not supported for a specific | supported for a specific document format. For example, a Printer | |||
| document format. For example, a Printer object might have | object might have multiple interpreters to support both | |||
| multiple interpreters to support both 'application/postscript' | 'application/postscript' (for PostScript) and 'text/plain' (for | |||
| (for PostScript) and 'text/plain' (for text) documents. However, | text) documents. However, for only one of those interpreters might | |||
| for only one of those interpreters might the Printer object be | the Printer object be able to support "number-up" with values of | |||
| able to support "number-up" with values of '1', '2', and '4'. | '1', '2', and '4'. For the other interpreter it might be able to | |||
| For the other interpreter it might be able to only support | only support "number-up" with a value of '1'. Thus a client can use | |||
| "number-up" with a value of '1'. Thus a client can use the Get- | the Get-Printer-Attributes operation to obtain the attributes and | |||
| Printer-Attributes operation to obtain the attributes and values | values that will be used to accept/reject a create job operation. | |||
| that will be used to accept/reject a create job operation. | ||||
| If the Printer object does not distinguish between different sets | If the Printer object does not distinguish between different sets | |||
| of supported values for each different document format when | of supported values for each different document format when | |||
| validating jobs in the create and Validate-Job operations, it | validating jobs in the create and Validate-Job operations, it MUST | |||
| MUST NOT distinguish between different document formats in the | NOT distinguish between different document formats in the Get- | |||
| Get-Printer-Attributes operation. If the Printer object does | Printer-Attributes operation. If the Printer object does | |||
| distinguish between different sets of supported values for each | distinguish between different sets of supported values for each | |||
| different document format specified by the client, this | different document format specified by the client, this | |||
| specialization applies only to the following Printer object | specialization applies only to the following Printer object | |||
| attributes: | attributes: | |||
| - Printer attributes that are Job Template attributes ("xxx- | - Printer attributes that are Job Template attributes ("xxx- | |||
| default" "xxx-supported", and "xxx-ready" in the Table in | default" "xxx-supported", and "xxx-ready" in the Table in | |||
| Section 4.2), | Section 4.2), | |||
| - "pdl-override-supported", | - "pdl-override-supported", | |||
| - "compression-supported", | - "compression-supported", | |||
| - "job-k-octets-supported", | - "job-k-octets-supported", | |||
| - "job-impressions-supported, | - "job-impressions-supported, | |||
| - "job-media-sheets-supported" | - "job-media-sheets-supported" | |||
| - "printer-driver-installer", | - "printer-driver-installer", | |||
| - "color-supported", and | - "color-supported", and | |||
| - "reference-uri-schemes-supported" | - "reference-uri-schemes-supported" | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| The values of all other Printer object attributes (including | The values of all other Printer object attributes (including | |||
| "document-format-supported") remain invariant with respect to the | "document-format-supported") remain invariant with respect to the | |||
| client supplied document format (except for new Printer description | ||||
| attribute as registered according to section 6.2). | ||||
| Expires December 30, 1998 | If the client omits this "document-format" operation attribute, the | |||
| client supplied document format (except for new Printer | Printer object MUST respond as if the attribute had been supplied | |||
| description attribute as registered according to section 6.2). | with the value of the Printer object's "document-format-default" | |||
| attribute. It is recommended that the client always supply a value | ||||
| If the client omits this "document-format" operation attribute, | for "document-format", since the Printer object's "document-format- | |||
| the Printer object MUST respond as if the attribute had been | default" may be 'application/octet-stream', in which case the | |||
| supplied with the value of the Printer object's "document-format- | returned attributes and values are for the union of the document | |||
| default" attribute. It is recommended that the client always | formats that the Printer can automatically sense. For more | |||
| supply a value for "document-format", since the Printer object's | details, see the description of the 'mimeMediaType' attribute | |||
| "document-format-default" may be 'application/octet-stream', in | syntax in section 4.1.9. | |||
| which case the returned attributes and values are for the union | ||||
| of the document formats that the Printer can automatically sense. | ||||
| For more details, see the description of the 'mimeMediaType' | ||||
| attribute syntax in section 4.1.9. | ||||
| If the client supplies a value for the "document-format" | If the client supplies a value for the "document-format" Operation | |||
| Operation attribute that is not supported by the Printer, i.e., | attribute that is not supported by the Printer, i.e., is not among | |||
| is not among the values of the Printer object's "document-format- | the values of the Printer object's "document-format-supported" | |||
| supported" attribute, the Printer object MUST reject the | attribute, the Printer object MUST reject the operation and return | |||
| operation and return the 'client-error-document-format-not- | the 'client-error-document-format-not-supported' status code. | |||
| supported' status code. | ||||
| 3.2.5.2 Get-Printer-Attributes Response | 3.2.5.2 Get-Printer-Attributes Response | |||
| The Printer object returns the following sets of attributes as part of | The Printer object returns the following sets of attributes as part of | |||
| the Get-Printer-Attributes Response: | the Get-Printer-Attributes Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.5. | operation attribute as described in section 3.1.6. | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. | attributes as described in section 3.1.4.2. | |||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| This is a set of Operation attributes supplied by the client (in | This is a set of Operation attributes supplied by the client (in | |||
| the request) that are not supported by the Printer object or that | the request) that are not supported by the Printer object or that | |||
| conflict with one another (see sections 3.2.1.2 and 16). | conflict with one another (see sections 3.2.1.2 and 16). The | |||
| response NEED NOT contain the "requested-attributes" operation | ||||
| attribute with any supplied values (attribute keywords) that were | ||||
| requested by the client but are not supported by the IPP object. | ||||
| If the Printer object is not returning any Unsupported Attributes | ||||
| in the response, the Printer object SHOULD omit Group 2 rather than | ||||
| sending an empty group. However, a client MUST be able to accept | ||||
| an empty group. | ||||
| Group 3: Printer Object Attributes | Group 3: Printer Object Attributes | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| This is the set of requested attributes and their current values. | This is the set of requested attributes and their current values. | |||
| The Printer object ignores (does not respond with) any requested | The Printer object ignores (does not respond with) any requested | |||
| Expires December 30, 1998 | ||||
| attribute which is not supported. The Printer object MAY respond | attribute which is not supported. The Printer object MAY respond | |||
| with a subset of the supported attributes and values, depending | with a subset of the supported attributes and values, depending on | |||
| on the security policy in force. However, the Printer object | the security policy in force. However, the Printer object MUST | |||
| MUST respond with the 'unknown' value for any supported attribute | respond with the 'unknown' value for any supported attribute | |||
| (including all REQUIRED attributes) for which the Printer object | (including all REQUIRED attributes) for which the Printer object | |||
| does not know the value. Also the Printer object MUST respond | does not know the value. Also the Printer object MUST respond with | |||
| with the 'no-value' for any supported attribute (including all | the 'no-value' for any supported attribute (including all REQUIRED | |||
| REQUIRED attributes) for which the system administrator has not | attributes) for which the system administrator has not configured a | |||
| configured a value. See the description of the "out-of-band" | value. See the description of the "out-of-band" values in the | |||
| values in the beginning of Section 4.1. | beginning of Section 4.1. | |||
| 3.2.6 Get-Jobs Operation | 3.2.6 Get-Jobs Operation | |||
| This REQUIRED operation allows a client to retrieve the list of Job | This REQUIRED operation allows a client to retrieve the list of Job | |||
| objects belonging to the target Printer object. The client may also | objects belonging to the target Printer object. The client may also | |||
| supply a list of Job attribute names and/or attribute group names. A | supply a list of Job attribute names and/or attribute group names. A | |||
| group of Job object attributes will be returned for each Job object | group of Job object attributes will be returned for each Job object that | |||
| that is returned. | is returned. | |||
| This operation is similar to the Get-Job-Attributes operation, except | This operation is similar to the Get-Job-Attributes operation, except | |||
| that this Get-Jobs operation returns attributes from possibly more | that this Get-Jobs operation returns attributes from possibly more than | |||
| than one object (see the description of Job attribute group names in | one object (see the description of Job attribute group names in section | |||
| section 3.3.4). | 3.3.4). | |||
| 3.2.6.1 Get-Jobs Request | 3.2.6.1 Get-Jobs Request | |||
| The client submits the Get-Jobs request to a Printer object. | The client submits the Get-Jobs request to a Printer object. | |||
| The following groups of attributes are part of the Get-Jobs Request: | The following groups of attributes are part of the Get-Jobs Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in section 3.1.4.1. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target for | |||
| for this operation as described in section 3.1.5. | this operation as described in section 3.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| Expires December 30, 1998 | ||||
| "limit" (integer(1:MAX)): | "limit" (integer(1:MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It is an integer value that | MUST support this attribute. It is an integer value that indicates | |||
| indicates a limit to the number of Job objects returned. The | a limit to the number of Job objects returned. The limit is a | |||
| limit is a "stateless limit" in that if the value supplied by the | "stateless limit" in that if the value supplied by the client is | |||
| client is 'N', then only the first 'N' jobs are returned in the | 'N', then only the first 'N' jobs are returned in the Get-Jobs | |||
| Get-Jobs Response. There is no mechanism to allow for the next | Response. There is no mechanism to allow for the next 'M' jobs | |||
| 'M' jobs after the first 'N' jobs. If the client does not supply | ||||
| this attribute, the Printer object responds with all applicable | Isaacson, Powell Expires May 16, 1999 | |||
| jobs. | after the first 'N' jobs. If the client does not supply this | |||
| attribute, the Printer object responds with all applicable jobs. | ||||
| "requested-attributes" (1setOf keyword): | "requested-attributes" (1setOf keyword): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It is a set of Job attribute | MUST support this attribute. It is a set of Job attribute names | |||
| names and/or attribute groups names in whose values the requester | and/or attribute groups names in whose values the requester is | |||
| is interested. This set of attributes is returned for each Job | interested. This set of attributes is returned for each Job object | |||
| object that is returned. The allowed attribute group names are | that is returned. The allowed attribute group names are the same | |||
| the same as those defined in the Get-Job-Attributes operation in | as those defined in the Get-Job-Attributes operation in section | |||
| section 3.3.4. If the client does not supply this attribute, the | 3.3.4. If the client does not supply this attribute, the Printer | |||
| Printer MUST respond as if the client had supplied this attribute | MUST respond as if the client had supplied this attribute with two | |||
| with two values: 'job-uri' and 'job-id'. | values: 'job-uri' and 'job-id'. | |||
| "which-jobs" (keyword): | "which-jobs" (keyword): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It indicates which Job | MUST support this attribute. It indicates which Job objects MUST | |||
| objects MUST be returned by the Printer object. The values for | be returned by the Printer object. The values for this attribute | |||
| this attribute are: | are: | |||
| 'completed': This includes any Job object whose state is | 'completed': This includes any Job object whose state is | |||
| 'completed', 'canceled', or 'aborted'. | 'completed', 'canceled', or 'aborted'. | |||
| 'not-completed': This includes any Job object whose state is | 'not-completed': This includes any Job object whose state is | |||
| 'pending', 'processing', 'processing-stopped', or 'pending- | 'pending', 'processing', 'processing-stopped', or 'pending- | |||
| held'. | held'. | |||
| A Printer object MUST support both values. However, if the | A Printer object MUST support both values. However, if the | |||
| implementation does not keep jobs in the 'completed', 'canceled', | implementation does not keep jobs in the 'completed', 'canceled', | |||
| and 'aborted' states, then it returns no jobs when the | and 'aborted' states, then it returns no jobs when the 'completed' | |||
| 'completed' value is supplied. | value is supplied. | |||
| If a client supplies some other value, the Printer object MUST | If a client supplies some other value, the Printer object MUST copy | |||
| copy the attribute and the unsupported value to the Unsupported | the attribute and the unsupported value to the Unsupported | |||
| Attributes response group, reject the request, and return the | Attributes response group, reject the request, and return the | |||
| 'client-error-attributes-or-values-not-supported' status code. | 'client-error-attributes-or-values-not-supported' status code. | |||
| If the client does not supply this attribute, the Printer object | If the client does not supply this attribute, the Printer object | |||
| MUST respond as if the client had supplied the attribute with a | MUST respond as if the client had supplied the attribute with a | |||
| value of 'not-completed'. | value of 'not-completed'. | |||
| Expires December 30, 1998 | ||||
| "my-jobs" (boolean): | "my-jobs" (boolean): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It indicates whether all | MUST support this attribute. It indicates whether all jobs or just | |||
| jobs or just the jobs submitted by the requesting user of this | the jobs submitted by the requesting user of this request MUST be | |||
| request MUST be returned by the Printer object. If the client | returned by the Printer object. If the client does not supply this | |||
| does not supply this attribute, the Printer object MUST respond | attribute, the Printer object MUST respond as if the client had | |||
| as if the client had supplied the attribute with a value of | supplied the attribute with a value of 'false', i.e., all jobs. | |||
| 'false', i.e., all jobs. The means for authenticating the | The means for authenticating the requesting user and matching the | |||
| requesting user and matching the jobs is described in section 8. | jobs is described in section 8. | |||
| 3.2.6.2 Get-Jobs Response | 3.2.6.2 Get-Jobs Response | |||
| The Printer object returns all of the Job objects that match the | The Printer object returns all of the Job objects that match the | |||
| criteria as defined by the attribute values supplied by the client in | criteria as defined by the attribute values supplied by the client in | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| the request. It is possible that no Job objects are returned since | the request. It is possible that no Job objects are returned since | |||
| there may literally be no Job objects at the Printer, or there may be | there may literally be no Job objects at the Printer, or there may be no | |||
| no Job objects that match the criteria supplied by the client. If the | Job objects that match the criteria supplied by the client. If the | |||
| client requests any Job attributes at all, there is a set of Job | client requests any Job attributes at all, there is a set of Job Object | |||
| Object Attributes returned for each Job object. | Attributes returned for each Job object. | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.5. | operation attribute as described in sections 14 and 3.1.6. | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. | attributes as described in section 3.1.4.2. | |||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| This is a set of Operation attributes supplied by the client (in | This is a set of Operation attributes supplied by the client (in | |||
| the request) that are not supported by the Printer object or that | the request) that are not supported by the Printer object or that | |||
| conflict with one another (see sections 3.2.1.2 and 16.3). | conflict with one another (see sections 3.2.1.2 and the | |||
| Implementer's Guide [IPP-IIG]). The response NEED NOT contain the | ||||
| "requested-attributes" operation attribute with any supplied values | ||||
| (attribute keywords) that were requested by the client but are not | ||||
| supported by the IPP object. If the Printer object is not | ||||
| returning any Unsupported Attributes in the response, the Printer | ||||
| object SHOULD omit Group 2 rather than sending an empty group. | ||||
| However, a client MUST be able to accept an empty group. | ||||
| Groups 3 to N: Job Object Attributes | Groups 3 to N: Job Object Attributes | |||
| The Printer object responds with one set of Job Object Attributes | The Printer object responds with one set of Job Object Attributes | |||
| for each returned Job object. The Printer object ignores (does | for each returned Job object. The Printer object ignores (does not | |||
| not respond with) any requested attribute or value which is not | respond with) any requested attribute or value which is not | |||
| supported or which is restricted by the security policy in force, | supported or which is restricted by the security policy in force, | |||
| including whether the requesting user is the user that submitted | including whether the requesting user is the user that submitted | |||
| the job (job originating user) or not (see section 8). However, | the job (job originating user) or not (see section 8). However, | |||
| the Printer object MUST respond with the 'unknown' value for any | the Printer object MUST respond with the 'unknown' value for any | |||
| supported attribute (including all REQUIRED attributes) for which | supported attribute (including all REQUIRED attributes) for which | |||
| the Printer object does not know the value, unless it would | the Printer object does not know the value, unless it would violate | |||
| the security policy. See the description of the "out-of-band" | ||||
| Expires December 30, 1998 | values in the beginning of Section 4.1. | |||
| violate the security policy. See the description of the "out-of- | ||||
| band" values in the beginning of Section 4.1. | ||||
| For any job submitted in a different natural language than the | ||||
| natural language that the Printer object is returning in the | ||||
| "attributes-natural-language" operation attribute in the Get-Jobs | ||||
| response, the Printer MUST indicate the submitted natural | ||||
| language by returning the Job object's "attributes-natural- | ||||
| language" as the first Job object attribute, which overrides the | ||||
| "attributes-natural-language" operation attribute value being | ||||
| returned by the Printer object. If any returned 'text' or 'name' | ||||
| attribute includes a Natural Language Override as described in | ||||
| the sections 4.1.1.2 and 4.1.2.2, the Natural Language Override | ||||
| overrides the Job object's "attributes-natural-language" value | ||||
| and/or the "attributes-natural-language" operation attribute | ||||
| value. | ||||
| Jobs are returned in the following order: | Jobs are returned in the following order: | |||
| - If the client requests all 'completed' Jobs (Jobs in the | - If the client requests all 'completed' Jobs (Jobs in the | |||
| 'completed', 'aborted', or 'canceled' states), then the Jobs | 'completed', 'aborted', or 'canceled' states), then the Jobs | |||
| are returned newest to oldest (with respect to actual | are returned newest to oldest (with respect to actual | |||
| completion time) | completion time) | |||
| - If the client requests all 'not-completed' Jobs (Jobs in the | - If the client requests all 'not-completed' Jobs (Jobs in the | |||
| 'pending', 'processing', 'pending-held', and 'processing- | 'pending', 'processing', 'pending-held', and 'processing- | |||
| stopped' states), then Jobs are returned in relative | stopped' states), then Jobs are returned in relative | |||
| chronological order of expected time to complete (based on | chronological order of expected time to complete (based on | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| whatever scheduling algorithm is configured for the Printer | whatever scheduling algorithm is configured for the Printer | |||
| object). | object). | |||
| 3.3 Job Operations | 3.3 Job Operations | |||
| All Job operations are directed at Job objects. A client MUST always | All Job operations are directed at Job objects. A client MUST always | |||
| supply some means of identifying the Job object in order to identify | supply some means of identifying the Job object in order to identify the | |||
| the correct target of the operation. That job identification MAY | correct target of the operation. That job identification MAY either be | |||
| either be a single Job URI or a combination of a Printer URI with a | a single Job URI or a combination of a Printer URI with a Job ID. The | |||
| Job ID. The IPP object implementation MUST support both forms of | IPP object implementation MUST support both forms of identification for | |||
| identification for every job. | every job. | |||
| 3.3.1 Send-Document Operation | 3.3.1 Send-Document Operation | |||
| This OPTIONAL operation allows a client to create a multi-document Job | This OPTIONAL operation allows a client to create a multi-document Job | |||
| object that is initially "empty" (contains no documents). In the | object that is initially "empty" (contains no documents). In the | |||
| Create-Job response, the Printer object returns the Job object's URI | Create-Job response, the Printer object returns the Job object's URI | |||
| (the "job-uri" attribute) and the Job object's 32-bit identifier (the | (the "job-uri" attribute) and the Job object's 32-bit identifier (the | |||
| "job-id" attribute). For each new document that the client desires to | "job-id" attribute). For each new document that the client desires to | |||
| Expires December 30, 1998 | ||||
| add, the client uses a Send-Document operation. Each Send-Document | add, the client uses a Send-Document operation. Each Send-Document | |||
| Request contains the entire stream of document data for one document. | Request contains the entire stream of document data for one document. | |||
| Since the Create-Job and the send operations (Send-Document or Send- | Since the Create-Job and the send operations (Send-Document or Send-URI | |||
| URI operations) that follow can occur over arbitrarily long periods of | operations) that follow could occur over an arbitrarily long period of | |||
| time, each Printer object must decide how long to "wait" for the next | time for a particular job, a client MUST send another send operation | |||
| send operation. The Printer object OPTIONALLY supports the "multiple- | within an IPP Printer defined minimum time interval after the receipt of | |||
| operation-timeout" attribute. This attribute indicates the maximum | the previous request for the job. If a Printer object supports multiple | |||
| number of seconds the Printer object will wait for the next send | document jobs, the Printer object MUST support the "multiple-operation- | |||
| operation. If the Printer object times-out waiting for the next send | time-out" attribute (see section 4.4.28). This attribute indicates the | |||
| operation, the Printer object MAY decide on any of the following | minimum number of seconds the Printer object will wait for the next send | |||
| semantic actions: | operation before taking some recovery action. | |||
| An IPP object MUST recover from an errant client that does not supply a | ||||
| send operation, sometime after the minimum time interval specified by | ||||
| the Printer object's "multiple-operation-time-out" attribute. Such | ||||
| recovery MAY include any of the following or other recovery actions: | ||||
| 1. Assume that the Job is an invalid job, start the process of | 1. Assume that the Job is an invalid job, start the process of | |||
| changing the job state to 'aborted', and clean up all resources | changing the job state to 'aborted', add the 'aborted-by-system' | |||
| associated with the Job. In this case, if another send operation | value to the job's "job-state-reasons" attribute (see section | |||
| is finally received, the Printer responds with an "client-error- | 4.3.8), if supported, and clean up all resources associated with | |||
| not-possible" or "client-error-not-found" depending on whether or | the Job. In this case, if another send operation is finally | |||
| not the Job object is still around when it finally arrives. | received, the Printer responds with an "client-error-not-possible" | |||
| 2. Assume that the last send operation received was in fact the | or "client-error-not-found" depending on whether or not the Job | |||
| last document (as if the "last-document" flag had been set to | object is still around when the send operation finally arrives. | |||
| 'true'), close the Job object, and proceed to process it (i.e., | 2. Assume that the last send operation received was in fact the last | |||
| move the Job's state to 'pending'). | document (as if the "last-document" flag had been set to 'true'), | |||
| 3. Assume that the last send operation received was in fact the | close the Job object, and proceed to process it (i.e., move the | |||
| last document, close the Job, but move it to the 'pending-held' | Job's state to 'pending'). | |||
| to allow an operator to determine whether or not to continue | 3. Assume that the last send operation received was in fact the last | |||
| processing the Job by moving it back to the 'pending' state. | document, close the Job, but move it to the 'pending-held' and add | |||
| the 'submission-interrupted' value to the job's "job-state-reasons" | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| attribute (see section 4.3.8), if supported. This action allows | ||||
| the user or an operator to determine whether to continue processing | ||||
| the Job by moving it back to the 'pending' state or to cancel the | ||||
| job. | ||||
| Each implementation is free to decide the "best" action to take | Each implementation is free to decide the "best" action to take | |||
| depending on local policy, the value of "ipp-attribute-fidelity", | depending on local policy, whether any documents have been added, | |||
| and/or any other piece of information available to it. If the choice | whether the implementation spools jobs or not, and/or any other piece | |||
| is to abort the Job object, it is possible that the Job object may | of information available to it. If the choice is to abort the Job | |||
| already have been processed to the point that some media sheet pages | object, it is possible that the Job object may already have been | |||
| have been printed. | processed to the point that some media sheet pages have been printed. | |||
| 3.3.1.1 Send-Document Request | 3.3.1.1 Send-Document Request | |||
| The following attribute sets are part of the Send-Document Request: | The following attribute sets are part of the Send-Document Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in section 3.1.4.1. | |||
| Expires December 30, 1998 | ||||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" | Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or | |||
| (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) | (2) the "job-uri" (uri) operation attribute(s) which define the | |||
| which define the target for this operation as described in | target for this operation as described in section 3.1.5. | |||
| section 3.1.5. | ||||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| "document-name" (name(MAX)): | "document-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. It contains the client | MUST support this attribute. It contains the client supplied | |||
| supplied document name. The document name MAY be different than | document name. The document name MAY be different than the Job | |||
| the Job name. It might be helpful, but NEED NOT be unique across | name. It might be helpful, but NEED NOT be unique across multiple | |||
| multiple documents in the same Job. Typically, the client | documents in the same Job. Typically, the client software | |||
| software automatically supplies the document name on behalf of | automatically supplies the document name on behalf of the end user | |||
| the end user by using a file name or an application generated | by using a file name or an application generated name. See the | |||
| name. See the description of the "document-name" operation | description of the "document-name" operation attribute in the | |||
| attribute in the Print-Job Request (section 3.2.1.1) for more | Print-Job Request (section 3.2.1.1) for more information about this | |||
| information about this attribute. | attribute. | |||
| "document-format" (mimeMediaType) : | "document-format" (mimeMediaType) : | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object MUST support this attribute. The value of this attribute | MUST support this attribute. The value of this attribute | |||
| identifies the format of the supplied document data. If the | identifies the format of the supplied document data. If the client | |||
| client does not supply this attribute, the Printer object assumes | does not supply this attribute, the Printer object assumes that the | |||
| that the document data is in the format defined by the Printer | document data is in the format defined by the Printer object's | |||
| object's "document-format-default" attribute. If the client | "document-format-default" attribute. If the client supplies this | |||
| supplies this attribute, but the value is not supported by the | attribute, but the value is not supported by the Printer object, | |||
| Printer object, i.e., the value is not one of the values of the | i.e., the value is not one of the values of the Printer object's | |||
| Printer object's "document-format-supported" attribute, the | "document-format-supported" attribute, the Printer object MUST | |||
| Printer object MUST reject the request and return the 'client- | ||||
| error-document-format-not-supported' status code. | Isaacson, Powell Expires May 16, 1999 | |||
| reject the request and return the 'client-error-document-format- | ||||
| not-supported' status code. | ||||
| "document-natural-language" (naturalLanguage): | "document-natural-language" (naturalLanguage): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute. This attribute | OPTIONALLY supports this attribute. This attribute specifies the | |||
| specifies the natural language of the document for those | natural language of the document for those document-formats that | |||
| document-formats that require a specification of the natural | require a specification of the natural language in order to image | |||
| language in order to image the document unambiguously. There are | the document unambiguously. There are no particular values | |||
| no particular values required for the Printer object to support. | required for the Printer object to support. | |||
| "compression" (type3 keyword) | "compression" (type3 keyword) | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute and the "compression- | OPTIONALLY supports this attribute and the "compression-supported" | |||
| supported" attribute (see section 4.4.29). The client supplied | attribute (see section 4.4.29). The client supplied "compression" | |||
| "compression" operation attribute identifies the compression | operation attribute identifies the compression algorithm used on | |||
| the document data. If the client omits this attribute, the Printer | ||||
| Expires December 30, 1998 | object MUST assume that the data is not compressed. If the client | |||
| algorithm used on the document data. If the client omits this | supplies the attribute and the Printer object supports the | |||
| attribute, the Printer object MUST assume that the data is not | attribute, the Printer object MUST use the corresponding | |||
| compressed. If the client supplies the attribute and the Printer | decompression algorithm on the document data. If the client | |||
| object supports the attribute, the Printer object MUST use the | supplies this attribute, but the value is not supported by the | |||
| corresponding decompression algorithm on the document data. If | Printer object, i.e., the value is not one of the values of the | |||
| the client supplies this attribute, but the value is not | Printer object's "compression-supported" attribute, the Printer | |||
| supported by the Printer object, i.e., the value is not one of | object MUST copy the attribute and its value to the Unsupported | |||
| the values of the Printer object's "compression-supported" | Attributes response group, reject the request, and return the | |||
| attribute, the Printer object MUST copy the attribute and its | 'client-error-attributes-or-values-not-supported' status code. | |||
| value to the Unsupported Attributes response group, reject the | ||||
| request, and return the 'client-error-attributes-or-values-not- | ||||
| supported' status code. | ||||
| "last-document" (boolean): | "last-document" (boolean): | |||
| The client MUST supply this attribute. The Printer object MUST | The client MUST supply this attribute. The Printer object MUST | |||
| support this attribute. It is a boolean flag that is set to | support this attribute. It is a boolean flag that is set to 'true' | |||
| 'true' if this is the last document for the Job, 'false' | if this is the last document for the Job, 'false' otherwise. | |||
| otherwise. | ||||
| Group 2: Document Content | Group 2: Document Content | |||
| The client MUST supply the document data if the "last-document" | The client MUST supply the document data if the "last-document" | |||
| flag is set to 'false'. However, since a client might not know | flag is set to 'false'. However, since a client might not know | |||
| that the previous document sent with a Send-Document (or Send- | that the previous document sent with a Send-Document (or Send-URI) | |||
| URI) operation was the last document (i.e., the "last-document" | operation was the last document (i.e., the "last-document" | |||
| attribute was set to 'false'), it is legal to send a Send- | attribute was set to 'false'), it is legal to send a Send-Document | |||
| Document request with no document data where the "last-document" | request with no document data where the "last-document" flag is set | |||
| flag is set to 'true'. Such a request MUST NOT increment the | to 'true'. Such a request MUST NOT increment the value of the Job | |||
| value of the Job object's "number-of-documents" attribute, since | object's "number-of-documents" attribute, since no real document | |||
| no real document was added to the job. | was added to the job. | |||
| 3.3.1.2 Send-Document Response | 3.3.1.2 Send-Document Response | |||
| The following sets of attributes are part of the Send-Document | The following sets of attributes are part of the Send-Document Response: | |||
| Response: | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.5. | operation attribute as described in sections 14 and 3.1.6. | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. | attributes as described in section 3.1.4.2. | |||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| Expires December 30, 1998 | ||||
| This is a set of Operation attributes supplied by the client (in | This is a set of Operation attributes supplied by the client (in | |||
| the request) that are not supported by the Printer object or that | the request) that are not supported by the Printer object or that | |||
| conflict with one another (see sections 3.2.1.2 and 16.3). | conflict with one another (see sections 3.2.1.2 and the | |||
| Implementer's Guide [IPP-IIG]). If the Printer object is not | ||||
| returning any Unsupported Attributes in the response, the Printer | ||||
| object SHOULD omit Group 2 rather than sending an empty group. | ||||
| However, a client MUST be able to accept an empty group. | ||||
| Group 3: Job Object Attributes | Group 3: Job Object Attributes | |||
| This is the same set of attributes as described in the Print-Job | This is the same set of attributes as described in the Print-Job | |||
| response (see section 3.2.1.2). | response (see section 3.2.1.2). | |||
| 3.3.2 Send-URI Operation | 3.3.2 Send-URI Operation | |||
| This OPTIONAL operation is identical to the Send-Document operation | This OPTIONAL operation is identical to the Send-Document operation (see | |||
| (see section 3.3.1) except that a client MUST supply a URI reference | section 3.3.1) except that a client MUST supply a URI reference | |||
| ("document-uri" operation attribute) rather than the document data | ("document-uri" operation attribute) rather than the document data | |||
| itself. If a Printer object supports this operation, clients can use | itself. If a Printer object supports this operation, clients can use | |||
| both Send-URI or Send-Document operations to add new documents to an | both Send-URI or Send-Document operations to add new documents to an | |||
| existing multi-document Job object. However, if a client needs to | existing multi-document Job object. However, if a client needs to | |||
| indicate that the previous Send-URI or Send-Document was the last | indicate that the previous Send-URI or Send-Document was the last | |||
| document, the client MUST use the Send-Document operation with no | document, the client MUST use the Send-Document operation with no | |||
| document data and the "last-document" flag set to 'true' (rather than | document data and the "last-document" flag set to 'true' (rather than | |||
| using a Send-URI operation with no "document-uri" operation | using a Send-URI operation with no "document-uri" operation attribute). | |||
| attribute). If a Printer object supports this operation, it MUST also | ||||
| support the Print-URI operation (see section 3.2.2). | If a Printer object supports this operation, it MUST also support the | |||
| Print-URI operation (see section 3.2.2). | ||||
| The Printer object MUST validate the syntax and URI scheme of the | The Printer object MUST validate the syntax and URI scheme of the | |||
| supplied URI before returning a response, just as in the Print-URI | supplied URI before returning a response, just as in the Print-URI | |||
| operation. | operation. | |||
| 3.3.3 Cancel-Job Operation | 3.3.3 Cancel-Job Operation | |||
| This REQUIRED operation allows a client to cancel a Print Job any time | This REQUIRED operation allows a client to cancel a Print Job from the | |||
| after a create job operation. Since a Job might already be printing | time the job is created up to the time it is completed, canceled, or | |||
| by the time a Cancel-Job is received, some media sheet pages might be | aborted. Since a Job might already be printing by the time a Cancel-Job | |||
| printed before the job is actually terminated. | is received, some media sheet pages might be printed before the job is | |||
| actually terminated. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 3.3.3.1 Cancel-Job Request | 3.3.3.1 Cancel-Job Request | |||
| The following groups of attributes are part of the Cancel-Job Request: | The following groups of attributes are part of the Cancel-Job Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in section 3.1.4.1. | |||
| Expires December 30, 1998 | ||||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" | Either (1) the "printer-uri" (uri) plus "job-id" | |||
| (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) | (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) | |||
| which define the target for this operation as described in | which define the target for this operation as described in section | |||
| section 3.1.5. | 3.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| "message" (text(127)): | "message" (text(127)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | The client OPTIONALLY supplies this attribute. The Printer object | |||
| object OPTIONALLY supports this attribute. It is a message to the | OPTIONALLY supports this attribute. It is a message to the | |||
| operator. This "message" attribute is not the same as the "job- | operator. This "message" attribute is not the same as the "job- | |||
| message-from-operator" attribute. That attribute is used to | message-from-operator" attribute. That attribute is used to report | |||
| report a message from the operator to the end user that queries | a message from the operator to the end user that queries that | |||
| that attribute. This "message" operation attribute is used to | attribute. This "message" operation attribute is used to send a | |||
| send a message from the client to the operator along with the | message from the client to the operator along with the operation | |||
| operation request. It is an implementation decision of how or | request. It is an implementation decision of how or where to | |||
| where to display this message to the operator (if at all). | display this message to the operator (if at all). | |||
| 3.3.3.2 Cancel-Job Response | 3.3.3.2 Cancel-Job Response | |||
| The following sets of attributes are part of the Cancel-Job Response: | The following sets of attributes are part of the Cancel-Job Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.5. | operation attribute as described in sections 14 and 3.1.6. | |||
| If the job is already in the 'completed', 'aborted', or | If the job is already in the 'completed', 'aborted', or 'canceled' | |||
| 'canceled' state, or the 'process-to-stop-point' value is set in | state, or the 'process-to-stop-point' value is set in the Job's | |||
| the Job's "job-state-reasons" attribute, the Printer object MUST | "job-state-reasons" attribute, the Printer object MUST reject the | |||
| reject the request and return the 'client-error-not-possible' | request and return the 'client-error-not-possible' error status | |||
| error status code. | code. | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. | attributes as described in section 3.1.4.2. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| This is a set of Operation attributes supplied by the client (in | This is a set of Operation attributes supplied by the client (in | |||
| the request) that are not supported by the Printer object or that | the request) that are not supported by the Printer object or that | |||
| conflict with one another (see sections 3.2.1.2 and 16.3). | conflict with one another (see section 3.2.1.2 and the | |||
| Implementer's Guide [IPP-IIG]). If the Printer object is not | ||||
| Expires December 30, 1998 | returning any Unsupported Attributes in the response, the Printer | |||
| object SHOULD omit Group 2 rather than sending an empty group. | ||||
| However, a client MUST be able to accept an empty group. | ||||
| Once a successful response has been sent, the implementation | Once a successful response has been sent, the implementation guarantees | |||
| guarantees that the Job will eventually end up in the 'canceled' | that the Job will eventually end up in the 'canceled' state. Between the | |||
| state. Between the time of the Cancel-Job operation is accepted and | time of the Cancel-Job operation is accepted and when the job enters the | |||
| when the job enters the 'canceled' job-state (see section 4.3.7), the | 'canceled' job-state (see section 4.3.7), the "job-state-reasons" | |||
| "job-state-reasons" attribute SHOULD contain the ' processing-to-stop- | attribute SHOULD contain the ' processing-to-stop-point ' value which | |||
| point ' value which indicates to later queries that although the Job | indicates to later queries that although the Job might still be | |||
| might still be 'processing', it will eventually end up in the | 'processing', it will eventually end up in the 'canceled' state, not the | |||
| 'canceled' state, not the 'completed' state. | 'completed' state. | |||
| 3.3.4 Get-Job-Attributes Operation | 3.3.4 Get-Job-Attributes Operation | |||
| This REQUIRED operation allows a client to request the values of | This REQUIRED operation allows a client to request the values of | |||
| attributes of a Job object and it is almost identical to the Get- | attributes of a Job object and it is almost identical to the Get- | |||
| Printer-Attributes operation (see section 3.2.5). The only | Printer-Attributes operation (see section 3.2.5). The only differences | |||
| differences are that the operation is directed at a Job object rather | are that the operation is directed at a Job object rather than a Printer | |||
| than a Printer object, there is no "document-format" operation | object, there is no "document-format" operation attribute used when | |||
| attribute used when querying a Job object, and the returned attribute | querying a Job object, and the returned attribute group is a set of Job | |||
| group is a set of Job object attributes rather than a set of Printer | object attributes rather than a set of Printer object attributes. | |||
| object attributes. | ||||
| For Jobs, the possible names of attribute groups are: | For Jobs, the possible names of attribute groups are: | |||
| - 'job-template': all of the Job Template attributes that apply to | - 'job-template': all of the Job Template attributes that apply to a | |||
| a Job object (the first column of the table in Section 4.2). | Job object (the first column of the table in Section 4.2). | |||
| - 'job-description': all of the Job Description attributes | - 'job-description': all of the Job Description attributes specified | |||
| specified in Section 4.3. | in Section 4.3. | |||
| - 'all': the special group 'all' that includes all supported | - 'all': the special group 'all' that includes all supported | |||
| attributes. | attributes. | |||
| Since a client MAY request specific attributes or named groups, there | Since a client MAY request specific attributes or named groups, there is | |||
| is a potential that there is some overlap. For example, if a client | a potential that there is some overlap. For example, if a client | |||
| requests, 'job-name' and 'job-description', the client is actually | requests, 'job-name' and 'job-description', the client is actually | |||
| requesting the "job-name" attribute once by naming it explicitly, and | requesting the "job-name" attribute once by naming it explicitly, and | |||
| once by inclusion in the 'job-description' group. In such cases, the | once by inclusion in the 'job-description' group. In such cases, the | |||
| Printer object NEED NOT return the attribute only once in the response | Printer object NEED NOT return the attribute only once in the response | |||
| even if it is requested multiple times. The client SHOULD NOT request | even if it is requested multiple times. The client SHOULD NOT request | |||
| the same attribute in multiple ways. | the same attribute in multiple ways. | |||
| It is NOT REQUIRED that a Job object support all attributes belonging | It is NOT REQUIRED that a Job object support all attributes belonging to | |||
| to a group (since some attributes are OPTIONAL). However it is | a group (since some attributes are OPTIONAL). However it is REQUIRED | |||
| REQUIRED that each Job object support all group names. | that each Job object support all group names. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 3.3.4.1 Get-Job-Attributes Request | 3.3.4.1 Get-Job-Attributes Request | |||
| The following groups of attributes are part of the Get-Job-Attributes | The following groups of attributes are part of the Get-Job-Attributes | |||
| Request when the request is directed at a Job object: | Request when the request is directed at a Job object: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in section 3.1.4.1. | |||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) | Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) | |||
| or (2) the "job-uri" (uri) operation attribute(s) which define | or (2) the "job-uri" (uri) operation attribute(s) which define the | |||
| the target for this operation as described in section 3.1.5. | target for this operation as described in section 3.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied | |||
| supplied by the client as described in section 8.3. | by the client as described in section 8.3. | |||
| "requested-attributes" (1setOf keyword) : | "requested-attributes" (1setOf keyword) : | |||
| The client OPTIONALLY supplies this attribute. The IPP object | The client OPTIONALLY supplies this attribute. The IPP object MUST | |||
| MUST support this attribute. It is a set of attribute names | support this attribute. It is a set of attribute names and/or | |||
| and/or attribute group names in whose values the requester is | attribute group names in whose values the requester is interested. | |||
| interested. If the client omits this attribute, the IPP object | If the client omits this attribute, the IPP object MUST respond as | |||
| MUST respond as if this attribute had been supplied with a value | if this attribute had been supplied with a value of 'all'. | |||
| of 'all'. | ||||
| 3.3.4.2 Get-Job-Attributes Response | 3.3.4.2 Get-Job-Attributes Response | |||
| The Printer object returns the following sets of attributes as part of | The Printer object returns the following sets of attributes as part of | |||
| the Get-Job-Attributes Response: | the Get-Job-Attributes Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every response, | |||
| response, the response OPTIONALLY includes a "status-message" | the response OPTIONALLY includes a "status-message" (text) | |||
| (text) operation attribute as described in section 3.1.5. | operation attribute as described in sections 14 and 3.1.6. | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.2. The "attributes- | attributes as described in section 3.1.4.2. The "attributes- | |||
| natural-language" MAY be the natural language of the Job object, | natural-language" MAY be the natural language of the Job object, | |||
| rather than the one requested. | rather than the one requested. | |||
| Expires December 30, 1998 | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| This is a set of Operation attributes supplied by the client (in | This is a set of Operation attributes supplied by the client (in | |||
| the request) that are not supported by the Printer object or that | the request) that are not supported by the Printer object or that | |||
| conflict with one another (see sections 3.2.1.2 and 16.3). | conflict with one another (see sections 3.2.1.2 and the | |||
| Implementer's Guide [IPP-IIG]). The response NEED NOT contain the | ||||
| "requested-attributes" operation attribute with any supplied values | ||||
| (attribute keywords) that were requested by the client but are not | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| supported by the IPP object. If the Printer object is not | ||||
| returning any Unsupported Attributes in the response, the Printer | ||||
| object SHOULD omit Group 2 rather than sending an empty group. | ||||
| However, a client MUST be able to accept an empty group. | ||||
| Group 3: Job Object Attributes | Group 3: Job Object Attributes | |||
| This is the set of requested attributes and their current values. | This is the set of requested attributes and their current values. | |||
| The IPP object ignores (does not respond with) any requested | The IPP object ignores (does not respond with) any requested | |||
| attribute or value which is not supported or which is restricted | attribute or value which is not supported or which is restricted by | |||
| by the security policy in force, including whether the requesting | the security policy in force, including whether the requesting user | |||
| user is the user that submitted the job (job originating user) or | is the user that submitted the job (job originating user) or not | |||
| not (see section 8). However, the IPP object MUST respond with | (see section 8). However, the IPP object MUST respond with the | |||
| the 'unknown' value for any supported attribute (including all | 'unknown' value for any supported attribute (including all REQUIRED | |||
| REQUIRED attributes) for which the IPP object does not know the | attributes) for which the IPP object does not know the value, | |||
| value, unless it would violate the security policy. See the | unless it would violate the security policy. See the description | |||
| description of the "out-of-band" values in the beginning of | of the "out-of-band" values in the beginning of Section 4.1. | |||
| Section 4.1. | ||||
| 4. Object Attributes | 4. Object Attributes | |||
| This section describes the attributes with their corresponding | This section describes the attributes with their corresponding attribute | |||
| attribute syntaxes and values that are part of the IPP model. The | syntaxes and values that are part of the IPP model. The sections below | |||
| sections below show the objects and their associated attributes which | show the objects and their associated attributes which are included | |||
| are included within the scope of this protocol. Many of these | within the scope of this protocol. Many of these attributes are derived | |||
| attributes are derived from other relevant specifications: | from other relevant specifications: | |||
| - Document Printing Application (DPA) [ISO10175] | - Document Printing Application (DPA) [ISO10175] | |||
| - RFC 1759 Printer MIB [RFC1759] | - RFC 1759 Printer MIB [RFC1759] | |||
| Each attribute is uniquely identified in this document using a | Each attribute is uniquely identified in this document using a "keyword" | |||
| "keyword" (see section 13.2.1) which is the name of the attribute. | (see section 13.2.1) which is the name of the attribute. The keyword is | |||
| The keyword is included in the section header describing that | included in the section header describing that attribute. | |||
| attribute. | ||||
| Note: Not only are keywords used to identify attributes, but one of | Note: Not only are keywords used to identify attributes, but one of the | |||
| the attribute syntaxes described below is "keyword" so that some | attribute syntaxes described below is "keyword" so that some attributes | |||
| attributes have keyword values. Therefore, these attributes are | have keyword values. Therefore, these attributes are defined as having | |||
| defined as having an attribute syntax that is a set of keywords. | an attribute syntax that is a set of keywords. | |||
| 4.1 Attribute Syntaxes | 4.1 Attribute Syntaxes | |||
| This section defines the basic attribute syntax types that all clients | This section defines the basic attribute syntax types that all clients | |||
| and IPP objects MUST be able to accept in responses and accept in | and IPP objects MUST be able to accept in responses and accept in | |||
| requests, respectively. Each attribute description in sections 3 and | requests, respectively. Each attribute description in sections 3 and 4 | |||
| includes the name of attribute syntax(es) in the heading (in | ||||
| Expires December 30, 1998 | parentheses). A conforming implementation of an attribute MUST include | |||
| 4 includes the name of attribute syntax(es) in the heading (in | the semantics of the attribute syntax(es) so identified. Section 6.3 | |||
| parentheses). A conforming implementation of an attribute MUST | describes how the protocol can be extended with new attribute syntaxes. | |||
| include the semantics of the attribute syntax(es) so identified. | ||||
| Section 6.3 describes how the protocol can be extended with new | ||||
| attribute syntaxes. | ||||
| The attribute syntaxes are specified in the following sub-sections, | The attribute syntaxes are specified in the following sub-sections, | |||
| where the sub-section heading is the keyword name of the attribute | where the sub-section heading is the keyword name of the attribute | |||
| syntax inside the single quotes. In operation requests and responses | syntax inside the single quotes. In operation requests and responses | |||
| each attribute value MUST be represented as one of the attribute | each attribute value MUST be represented as one of the attribute | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| syntaxes specified in the sub-section heading for the attribute. In | syntaxes specified in the sub-section heading for the attribute. In | |||
| addition, the value of an attribute in a response (but not in a | addition, the value of an attribute in a response (but not in a request) | |||
| request) MAY be one of the "out-of-band" values. Standard "out-of- | MAY be one of the "out-of-band" values. Standard "out-of-band" values | |||
| band" values are: | are: | |||
| 'unknown': The attribute is supported by the IPP object, but the | 'unknown': The attribute is supported by the IPP object, but the | |||
| value is unknown to the IPP object for some reason. | value is unknown to the IPP object for some reason. | |||
| 'unsupported': The attribute is unsupported by the IPP object. | 'unsupported': The attribute is unsupported by the IPP object. This | |||
| This value MUST be returned only as the value of an attribute in | value MUST be returned only as the value of an attribute in the | |||
| the Unsupported Attributes Group. | Unsupported Attributes Group. | |||
| 'no-value': The attribute is supported by the Printer object, but | 'no-value': The attribute is supported by the Printer object, but the | |||
| the system administrator has not yet configured a value. | system administrator has not yet configured a value. | |||
| The protocol specification defines mechanisms for passing "out-of- | The Encoding and Transport specification [IPP-PRO] defines mechanisms | |||
| band" values. All attributes in a request MUST have one or more | for passing "out-of-band" values. All attributes in a request MUST have | |||
| values as defined in Sections 4.2 to 4.4. Thus clients MUST NOT | one or more values as defined in Sections 4.2 to 4.4. Thus clients MUST | |||
| supply attributes with "out-of-band" values. All attribute in a | NOT supply attributes with "out-of-band" values. All attribute in a | |||
| response MUST have one or more values as defined in Sections 4.2 to | response MUST have one or more values as defined in Sections 4.2 to 4.4 | |||
| 4.4 or a single "out-of-band" value. | or a single "out-of-band" value. | |||
| Most attributes are defined to have a single attribute syntax. | Most attributes are defined to have a single attribute syntax. However, | |||
| However, a few attributes (e.g., "job-sheet", "media", "job-hold- | a few attributes (e.g., "job-sheet", "media", "job-hold-until") are | |||
| until") are defined to have several attribute syntaxes, depending on | defined to have several attribute syntaxes, depending on the value. | |||
| the value. These multiple attribute syntaxes are separated by the "|" | These multiple attribute syntaxes are separated by the "|" character in | |||
| character in the sub-section heading to indicate the choice. Since | the sub-section heading to indicate the choice. Since each value MUST | |||
| each value MUST be tagged as to its attribute syntax in the protocol, | be tagged as to its attribute syntax in the protocol, a single-valued | |||
| a single-valued attribute instance may have any one of its attribute | attribute instance may have any one of its attribute syntaxes and a | |||
| syntaxes and a multi-valued attribute instance may have a mixture of | multi-valued attribute instance may have a mixture of its defined | |||
| its defined attribute syntaxes. | attribute syntaxes. | |||
| 4.1.1 'text' | 4.1.1 'text' | |||
| A text attribute is an attribute whose value is a sequence of zero or | A text attribute is an attribute whose value is a sequence of zero or | |||
| more characters encoded in a maximum of 1023 ('MAX') octets. MAX is | more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the | |||
| the maximum length for each value of any text attribute. However, if | maximum length for each value of any text attribute. However, if an | |||
| an attribute will always contain values whose maximum length is much | attribute will always contain values whose maximum length is much less | |||
| than MAX, the definition of that attribute will include a qualifier that | ||||
| Expires December 30, 1998 | defines the maximum length for values of that attribute. For example: | |||
| less than MAX, the definition of that attribute will include a | the "printer-location" attribute is specified as "printer-location | |||
| qualifier that defines the maximum length for values of that | (text(127))". In this case, text values for "printer-location" MUST NOT | |||
| attribute. For example: the "printer-location" attribute is specified | exceed 127 octets; if supplied with a longer text string via some | |||
| as "printer-location (text(127))". In this case, text values for | external interface (other than the protocol), implementations are free | |||
| "printer-location" MUST NOT exceed 127 octets; if supplied with a | to truncate to this shorter length limitation. | |||
| longer text string via some external interface (other than the | ||||
| protocol), implementations are free to truncate to this shorter length | ||||
| limitation. | ||||
| In this specification, all text attributes are defined using the | In this specification, all text attributes are defined using the 'text' | |||
| 'text' syntax. However, 'text' is used only for brevity; the formal | syntax. However, 'text' is used only for brevity; the formal | |||
| interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. | interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. | |||
| That is, for any attribute defined in this specification using the | That is, for any attribute defined in this specification using the | |||
| 'text' attribute syntax, all IPP objects and clients MUST support both | 'text' attribute syntax, all IPP objects and clients MUST support both | |||
| the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. | the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. | |||
| However, in actual usage and protocol execution, objects and clients | However, in actual usage and protocol execution, objects and clients | |||
| accept and return only one of the two syntax per attribute. The | ||||
| syntax 'text' never appears "on-the-wire". | ||||
| Both 'textWithoutLanguage' and 'textWithLanguage' are needed to | Isaacson, Powell Expires May 16, 1999 | |||
| support the real world needs of interoperability between sites and | accept and return only one of the two syntax per attribute. The syntax | |||
| systems that use different natural languages as the basis for human | 'text' never appears "on-the-wire". | |||
| communication. Generally, one natural language applies to all text | ||||
| attributes in a given request or response. The language is indicated | ||||
| by the "attributes-natural-language" operation attribute defined in | ||||
| section 3.1.4 or "attributes-natural-language" job attribute defined | ||||
| in section 4.3.24, and there is no need to identify the natural | ||||
| language for each text string on a value-by-value basis. In these | ||||
| cases, the attribute syntax 'textWithoutLanguage' is used for text | ||||
| attributes. In other cases, the client needs to supply or the Printer | ||||
| object needs to return a text value in a natural language that is | ||||
| different from the rest of the text values in the request or response. | ||||
| In these cases, the client or Printer object uses the attribute syntax | ||||
| 'textWithLanguage' for text attributes (this is the Natural Language | ||||
| Override mechanism described in section 3.1.4). | ||||
| The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes | Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support | |||
| are described in more detail in the following sections. | the real world needs of interoperability between sites and systems that | |||
| use different natural languages as the basis for human communication. | ||||
| Generally, one natural language applies to all text attributes in a | ||||
| given request or response. The language is indicated by the "attributes- | ||||
| natural-language" operation attribute defined in section 3.1.4 or | ||||
| "attributes-natural-language" job attribute defined in section 4.3.24, | ||||
| and there is no need to identify the natural language for each text | ||||
| string on a value-by-value basis. In these cases, the attribute syntax | ||||
| 'textWithoutLanguage' is used for text attributes. In other cases, the | ||||
| client needs to supply or the Printer object needs to return a text | ||||
| value in a natural language that is different from the rest of the text | ||||
| values in the request or response. In these cases, the client or | ||||
| Printer object uses the attribute syntax 'textWithLanguage' for text | ||||
| attributes (this is the Natural Language Override mechanism described in | ||||
| section 3.1.4). | ||||
| The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are | ||||
| described in more detail in the following sections. | ||||
| 4.1.1.1 'textWithoutLanguage' | 4.1.1.1 'textWithoutLanguage' | |||
| The 'textWithoutLanguage' syntax indicates a value that is sequence of | The 'textWithoutLanguage' syntax indicates a value that is sequence of | |||
| zero or more characters. Text strings are encoded using the rules of | zero or more characters. Text strings are encoded using the rules of | |||
| some charset. The Printer object MUST support the UTF-8 charset | some charset. The Printer object MUST support the UTF-8 charset | |||
| [RFC2044] and MAY support additional charsets to represent 'text' | [RFC2044] and MAY support additional charsets to represent 'text' | |||
| values, provided that the charsets are registered with IANA [IANA-CS]. | values, provided that the charsets are registered with IANA [IANA-CS]. | |||
| Expires December 30, 1998 | ||||
| See Section 4.1.7 for the specification of the 'charset' attribute | See Section 4.1.7 for the specification of the 'charset' attribute | |||
| syntax, including restricted semantics and examples of charsets. | syntax, including restricted semantics and examples of charsets. | |||
| 4.1.1.2 'textWithLanguage' | 4.1.1.2 'textWithLanguage' | |||
| The 'textWithLanguage' attribute syntax is a compound attribute syntax | The 'textWithLanguage' attribute syntax is a compound attribute syntax | |||
| consisting of two parts: a 'textWithoutLanguage' part plus an | consisting of two parts: a 'textWithoutLanguage' part plus an additional | |||
| additional 'naturalLanguage' (see section 4.1.8) part that overrides | 'naturalLanguage' (see section 4.1.8) part that overrides the natural | |||
| the natural language in force. The 'naturalLanguage' part explicitly | language in force. The 'naturalLanguage' part explicitly identifies the | |||
| identifies the natural language that applies to the text part of that | natural language that applies to the text part of that value and that | |||
| value and that value alone. For any give text attribute, the | value alone. For any give text attribute, the 'textWithoutLanguage' | |||
| 'textWithoutLanguage' part is limited to the maximum length defined | part is limited to the maximum length defined for that attribute, but | |||
| for that attribute, , but the 'naturalLanguage' part is always limited | the 'naturalLanguage' part is always limited to 63 octets. Using the | |||
| to 63 octets. Using the 'textWithLanguage' attribute syntax rather | 'textWithLanguage' attribute syntax rather than the normal | |||
| than the normal 'textWithoutLanguage' syntax is the so-called Natural | 'textWithoutLanguage' syntax is the so-called Natural Language Override | |||
| Language Override mechanism and MUST be supported by all IPP objects | mechanism and MUST be supported by all IPP objects and clients. | |||
| and clients. | ||||
| If the attribute is multi-valued (1setOf text), then the | If the attribute is multi-valued (1setOf text), then the | |||
| 'textWithLanguage' attribute syntax MUST be used to explicitly specify | 'textWithLanguage' attribute syntax MUST be used to explicitly specify | |||
| each attribute value whose natural language needs to be overridden. | each attribute value whose natural language needs to be overridden. | |||
| Other values in a multi-valued 'text' attribute in a request or a | Other values in a multi-valued 'text' attribute in a request or a | |||
| response revert to the natural language of the operation attribute or | response revert to the natural language of the operation attribute. | |||
| to the "attributes-natural-language" Job attribute, if present, in the | ||||
| case of a Get-Jobs response. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| In a create request, the Printer object MUST accept and store with the | In a create request, the Printer object MUST accept and store with the | |||
| Job object any natural language in the "attributes-natural-language" | Job object any natural language in the "attributes-natural-language" | |||
| operation attribute, whether the Printer object supports that natural | operation attribute, whether the Printer object supports that natural | |||
| language or not. Furthermore, the Printer object MUST accept and | language or not. Furthermore, the Printer object MUST accept and store | |||
| store any 'textWithLanguage' attribute value, whether the Printer | any 'textWithLanguage' attribute value, whether the Printer object | |||
| object supports that natural language or not. These requirements are | supports that natural language or not. These requirements are | |||
| independent of the value of the "ipp-attribute-fidelity" operation | independent of the value of the "ipp-attribute-fidelity" operation | |||
| attribute that the client MAY supply. | attribute that the client MAY supply. | |||
| Example: If the client supplies the "attributes-natural-language" | Example: If the client supplies the "attributes-natural-language" | |||
| operation attribute with the value: 'en' indicating English, but the | operation attribute with the value: 'en' indicating English, but the | |||
| value of the "job-name" attribute is in French, the client MUST use | value of the "job-name" attribute is in French, the client MUST use the | |||
| the 'textWithLanguage' attribute syntax with the following two values: | 'textWithLanguage' attribute syntax with the following two values: | |||
| 'fr': Natural Language Override indicating French | 'fr': Natural Language Override indicating French | |||
| 'Rapport Mensuel': the job name in French | 'Rapport Mensuel': the job name in French | |||
| See the Protocol document [IPP-PRO] for a detailed example of the | See the Encoding and Transport document [IPP-PRO] for a detailed example | |||
| 'textWithLanguage' attribute syntax. | of the 'textWithLanguage' attribute syntax. | |||
| Expires December 30, 1998 | ||||
| 4.1.2 'name' | 4.1.2 'name' | |||
| This syntax type is used for user-friendly strings, such as a Printer | This syntax type is used for user-friendly strings, such as a Printer | |||
| name, that, for humans, are more meaningful than identifiers. Names | name, that, for humans, are more meaningful than identifiers. Names are | |||
| are usually never translated from one natural language to another. | never translated from one natural language to another. The 'name' | |||
| The 'name' attribute syntax is essentially the same as 'text', | attribute syntax is essentially the same as 'text', including the | |||
| including the REQUIRED support of UTF-8 except that the sequence of | REQUIRED support of UTF-8 except that the sequence of characters is | |||
| characters is limited so that its encoded form MUST NOT exceed 255 | limited so that its encoded form MUST NOT exceed 255 (MAX) octets. | |||
| (MAX) octets. | ||||
| Also like 'text', 'name' is really an abbreviated notation for either | Also like 'text', 'name' is really an abbreviated notation for either | |||
| 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP | 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects | |||
| objects and clients MUST support both the 'nameWithoutLanguage' and | and clients MUST support both the 'nameWithoutLanguage' and | |||
| 'nameWithLanguage' attribute syntaxes. However, in actual usage and | 'nameWithLanguage' attribute syntaxes. However, in actual usage and | |||
| protocol execution, objects and clients accept and return only one of | protocol execution, objects and clients accept and return only one of | |||
| the two syntax per attribute. The syntax 'name' never appears "on- | the two syntax per attribute. The syntax 'name' never appears "on-the- | |||
| the-wire". | wire". | |||
| Note: Only the 'text' and 'name' attribute syntaxes permit the | Note: Only the 'text' and 'name' attribute syntaxes permit the Natural | |||
| Natural Language Override mechanism. | Language Override mechanism. | |||
| Some attributes are defined as 'type3 keyword | name'. These | Some attributes are defined as 'type3 keyword | name'. These attributes | |||
| attributes support values that are either type3 keywords or names. | support values that are either type3 keywords or names. This dual- | |||
| This dual-syntax mechanism enables a site administrator to extend | syntax mechanism enables a site administrator to extend these attributes | |||
| these attributes to legally include values that are locally defined by | to legally include values that are locally defined by the site | |||
| the site administrator. Such names are not registered with IANA. | administrator. Such names are not registered with IANA. | |||
| 4.1.2.1 'nameWithoutLanguage' | 4.1.2.1 'nameWithoutLanguage' | |||
| The nameWithoutLanguage' syntax indicates a value that is sequence of | The nameWithoutLanguage' syntax indicates a value that is sequence of | |||
| zero or more characters so that its encoded form does not exceed MAX | zero or more characters so that its encoded form does not exceed MAX | |||
| octets. | octets. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.1.2.2 'nameWithLanguage' | 4.1.2.2 'nameWithLanguage' | |||
| The 'nameWithLanguage' attribute syntax is a compound attribute syntax | The 'nameWithLanguage' attribute syntax is a compound attribute syntax | |||
| consisting of two parts: a 'nameWithoutLanguage' part plus an | consisting of two parts: a 'nameWithoutLanguage' part plus an additional | |||
| additional 'naturalLanguage' (see section 4.1.8) part that overrides | 'naturalLanguage' (see section 4.1.8) part that overrides the natural | |||
| the natural language in force. The 'naturalLanguage' part explicitly | language in force. The 'naturalLanguage' part explicitly identifies the | |||
| identifies the natural language that applies to that name value and | natural language that applies to that name value and that name value | |||
| that name value alone. | alone. | |||
| The 'nameWithLanguage' attribute syntax behaves the same as the | The 'nameWithLanguage' attribute syntax behaves the same as the | |||
| 'textWithLanguage' syntax. If a name is in a language that is | 'textWithLanguage' syntax. If a name is in a language that is different | |||
| different than the rest of the object or operation, then this | than the rest of the object or operation, then this 'nameWithLanguage' | |||
| syntax is used rather than the generic 'nameWithoutLanguage' syntax. | ||||
| Expires December 30, 1998 | ||||
| 'nameWithLanguage' syntax is used rather than the generic | ||||
| 'nameWithoutLanguage' syntax. | ||||
| Example: If the client supplies the "attributes-natural-language" | Example: If the client supplies the "attributes-natural-language" | |||
| operation attribute with the value: 'en' indicating English, but the | operation attribute with the value: 'en' indicating English, but the | |||
| "printer-name" attribute is in German, the client MUST use the | "printer-name" attribute is in German, the client MUST use the | |||
| 'nameWithLanguage' attribute syntax as follows: | 'nameWithLanguage' attribute syntax as follows: | |||
| 'de': Natural Language Override indicating German | 'de': Natural Language Override indicating German | |||
| 'Farbdrucker': the Printer name in German | 'Farbdrucker': the Printer name in German | |||
| 4.1.2.3 Matching 'name' attribute values | ||||
| For purposes of matching two 'name' attribute values for equality, such | ||||
| as in job validation (where a client-supplied value for attribute "xxx" | ||||
| is checked to see if the value is among the values of the Printer | ||||
| object's corresponding "xxx-supported" attribute), the following match | ||||
| rules apply: | ||||
| 1. 'keyword' values never match 'name' values. | ||||
| 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match | ||||
| if (1) the name parts match and (2) the Associated Natural-Language | ||||
| parts (see section 3.1.4.1) match. The matching rules are: | ||||
| a. the name parts match if the two names are identical | ||||
| character by character, except it is RECOMMENDED that case be | ||||
| ignored. For example: 'Ajax-letter-head-white' MUST match | ||||
| 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- | ||||
| white' and 'AJAX-LETTER-HEAD-WHITE'. | ||||
| b. the Associated Natural-Language parts match if the shorter | ||||
| of the two meets the syntactic requirements of RFC 1766 | ||||
| [RFC1766] and matches byte for byte with the longer. For | ||||
| example, 'en' matches 'en', 'en-us' and 'en-gb', but matches | ||||
| neither 'fr' nor 'e'. | ||||
| 4.1.3 'keyword' | 4.1.3 'keyword' | |||
| The 'keyword' attribute syntax is a sequence of characters, length: 1 | The 'keyword' attribute syntax is a sequence of characters, length: 1 to | |||
| to 255, containing only the US-ASCII [ASCII] encoded values for | 255, containing only the US-ASCII [ASCII] encoded values for lowercase | |||
| lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot | letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and | |||
| ("."), and underscore ("_"). The first character MUST be a lowercase | ||||
| letter. Furthermore, keywords MUST be in U.S. English. | Isaacson, Powell Expires May 16, 1999 | |||
| underscore ("_"). The first character MUST be a lowercase letter. | ||||
| Furthermore, keywords MUST be in U.S. English. | ||||
| This syntax type is used for enumerating semantic identifiers of | This syntax type is used for enumerating semantic identifiers of | |||
| entities in the abstract protocol, i.e., entities identified in this | entities in the abstract protocol, i.e., entities identified in this | |||
| document. Keywords are used as attribute names or values of | document. Keywords are used as attribute names or values of attributes. | |||
| attributes. Unlike 'text' and 'name' attribute values, 'keyword' | Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use | |||
| values MUST NOT use the Natural Language Override mechanism, since | the Natural Language Override mechanism, since they MUST always be US- | |||
| they MUST always be US-ASCII and U.S. English. | ASCII and U.S. English. | |||
| Keywords are for use in the protocol. A user interface will likely | Keywords are for use in the protocol. A user interface will likely | |||
| provide a mapping between protocol keywords and displayable user- | provide a mapping between protocol keywords and displayable user- | |||
| friendly words and phrases which are localized to the natural language | friendly words and phrases which are localized to the natural language | |||
| of the user. While the keywords specified in this document MAY be | of the user. While the keywords specified in this document MAY be | |||
| displayed to users whose natural language is U.S. English, they MAY be | displayed to users whose natural language is U.S. English, they MAY be | |||
| mapped to other U.S. English words for U.S. English users, since the | mapped to other U.S. English words for U.S. English users, since the | |||
| user interface is outside the scope of this document. | user interface is outside the scope of this document. | |||
| In the definition for each attribute of this syntax type, the full set | In the definition for each attribute of this syntax type, the full set | |||
| of defined keyword values for that attribute are listed. | of defined keyword values for that attribute are listed. | |||
| When a keyword is used to represent an attribute (its name), it MUST | When a keyword is used to represent an attribute (its name), it MUST be | |||
| be unique within the full scope of all IPP objects and attributes. | unique within the full scope of all IPP objects and attributes. When a | |||
| When a keyword is used to represent a value of an attribute, it MUST | keyword is used to represent a value of an attribute, it MUST be unique | |||
| be unique just within the scope of that attribute. That is, the same | just within the scope of that attribute. That is, the same keyword MUST | |||
| keyword MUST NOT be used for two different values within the same | NOT be used for two different values within the same attribute to mean | |||
| attribute to mean two different semantic ideas. However, the same | two different semantic ideas. However, the same keyword MAY be used | |||
| keyword MAY be used across two or more attributes, representing | across two or more attributes, representing different semantic ideas for | |||
| different semantic ideas for each attribute. Section 6.1 describes | each attribute. Section 6.1 describes how the protocol can be extended | |||
| how the protocol can be extended with new keyword values. Examples of | with new keyword values. Examples of attribute name keywords: | |||
| attribute name keywords: | ||||
| Expires December 30, 1998 | ||||
| "job-name" | "job-name" | |||
| "attributes-charset" | "attributes-charset" | |||
| Note: This document uses "type1", "type2", and "type3" prefixes to | Note: This document uses "type1", "type2", and "type3" prefixes to the | |||
| the "keyword" basic syntax to indicate different levels of review for | "keyword" basic syntax to indicate different levels of review for | |||
| extensions (see section 6.1). | extensions (see section 6.1). | |||
| 4.1.4 'enum' | 4.1.4 'enum' | |||
| The 'enum' attribute syntax is an enumerated integer value that is in | The 'enum' attribute syntax is an enumerated integer value that is in | |||
| the range from 1 to 2**31 - 1 (MAX). Each value has an associated | the range from 1 to 2**31 - 1 (MAX). Each value has an associated | |||
| 'keyword' name. In the definition for each attribute of this syntax | 'keyword' name. In the definition for each attribute of this syntax | |||
| type, the full set of possible values for that attribute are listed. | type, the full set of possible values for that attribute are listed. | |||
| This syntax type is used for attributes for which there are enum | This syntax type is used for attributes for which there are enum values | |||
| values assigned by other standards, such as SNMP MIBs. A number of | assigned by other standards, such as SNMP MIBs. A number of attribute | |||
| attribute enum values in this specification are also used for | enum values in this specification are also used for corresponding | |||
| corresponding attributes in other standards [RFC1759]. This syntax | attributes in other standards [RFC1759]. This syntax type is not used | |||
| type is not used for attributes to which the system administrator may | for attributes to which the system administrator may assign values. | |||
| assign values. Section 6.1 describes how the protocol can be extended | Section 6.1 describes how the protocol can be extended with new enum | |||
| with new enum values. | values. | |||
| Enum values are for use in the protocol. A user interface will | Isaacson, Powell Expires May 16, 1999 | |||
| provide a mapping between protocol enum values and displayable user- | Enum values are for use in the protocol. A user interface will provide | |||
| friendly words and phrases which are localized to the natural language | a mapping between protocol enum values and displayable user-friendly | |||
| of the user. While the enum symbols specified in this document MAY be | words and phrases which are localized to the natural language of the | |||
| user. While the enum symbols specified in this document MAY be | ||||
| displayed to users whose natural language is U.S. English, they MAY be | displayed to users whose natural language is U.S. English, they MAY be | |||
| mapped to other U.S. English words for U.S. English users, since the | mapped to other U.S. English words for U.S. English users, since the | |||
| user interface is outside the scope of this document. | user interface is outside the scope of this document. | |||
| Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP | Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- | |||
| "out-of-band" value 'unknown'. See the description of the "out-of- | of-band" value 'unknown'. See the description of the "out-of-band" | |||
| band" values at the beginning of Section 4.1. Therefore, attributes | values at the beginning of Section 4.1. Therefore, attributes of type | |||
| of type 'enum' start at '3'. | 'enum' start at '3'. | |||
| Note: This document uses "type1", "type2", and "type3" prefixes to | Note: This document uses "type1", "type2", and "type3" prefixes to the | |||
| the "enum" basic syntax to indicate different levels of review for | "enum" basic syntax to indicate different levels of review for | |||
| extensions (see section 6.1). | extensions (see section 6.1). | |||
| 4.1.5 'uri' | 4.1.5 'uri' | |||
| The 'uri' attribute syntax is any valid Uniform Resource Identifier or | The 'uri' attribute syntax is any valid Uniform Resource Identifier or | |||
| URI [RFC1630]. Most often, URIs are simply Uniform Resource Locators | URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or | |||
| or URLs [RFC1738] [RFC1808]. The maximum length of URIs used within | URLs. The maximum length of URIs used as values of IPP attributes is | |||
| IPP is 1023 octets. Although most other IPP syntax types allow for | 1023 octets. Although most other IPP attribute syntax types allow for | |||
| only lower-cased values, this syntax type allows for mixed-case | only lower-cased values, this attribute syntax type conforms to the | |||
| case-sensitive and case-insensitive rules specified in [RFC2396]. | ||||
| Expires December 30, 1998 | ||||
| values. The URI and URL standards allow for mixed-case values that | ||||
| are case-sensitive. | ||||
| 4.1.6 'uriScheme' | 4.1.6 'uriScheme' | |||
| The 'uriScheme' attribute syntax is a sequence of characters | The 'uriScheme' attribute syntax is a sequence of characters | |||
| representing a URI scheme according to RFC 1738 [RFC1738]. Though RFC | representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC | |||
| 1736 requires that the values be case-insensitive, IPP requires all | 2396 requires that the values be case-insensitive, IPP requires all | |||
| lower case to simplify comparing by IPP clients and Printer objects. | lower case values in IPP attributes to simplify comparing by IPP clients | |||
| Standard values for this syntax type are the following keywords: | and Printer objects. Standard values for this syntax type are the | |||
| following keywords: | ||||
| 'http': for HTTP schemed URIs (e.g., "http:_") | 'http': for HTTP schemed URIs (e.g., "http:.") | |||
| 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not | 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on | |||
| on standards track) | IETF standards track) | |||
| 'ftp': for FTP schemed URIs (e.g., "ftp:...") | 'ftp': for FTP schemed URIs (e.g., "ftp:...") | |||
| 'mailto': for SMTP schemed URIs (e.g., "mailto:...") | 'mailto': for SMTP schemed URIs (e.g., "mailto:...") | |||
| 'file': for file schemed URIs (e.g., "file:...") | 'file': for file schemed URIs (e.g., "file:...") | |||
| A Printer object MAY support any URI scheme that has been registered | A Printer object MAY support any URI 'scheme' that has been registered | |||
| with IANA [IANA-MT]. The maximum length of URI schemes used within IPP | with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to | |||
| is 63 octets. | represent IPP attribute values is 63 octets. | |||
| 4.1.7 'charset' | 4.1.7 'charset' | |||
| The 'charset' attribute syntax is a standard identifier for a charset. | The 'charset' attribute syntax is a standard identifier for a charset. | |||
| A charset is a coded character set and encoding scheme. Charsets are | A charset is a coded character set and encoding scheme. Charsets are | |||
| used for labeling certain document contents and 'text' and 'name' | used for labeling certain document contents and 'text' and 'name' | |||
| attribute values. The syntax and semantics of this attribute syntax | attribute values. The syntax and semantics of this attribute syntax are | |||
| are specified in RFC 2046 [RFC2046] and contained in the IANA | ||||
| character-set Registry [IANA-CS] according to the IANA procedures | ||||
| [RFC2278]. Though RFC 2046 requires that the values be case- | ||||
| insensitive US-ASCII, IPP requires all lower case to simplify | ||||
| comparing by IPP clients and Printer objects. When a character-set in | ||||
| the IANA registry has more than one name (alias), the name labeled as | ||||
| "(preferred MIME name)", if present, MUST be used. | ||||
| The maximum length of charset values used within IPP is 63 octets. | Isaacson, Powell Expires May 16, 1999 | |||
| specified in RFC 2046 [RFC2046] and contained in the IANA character-set | ||||
| Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though | ||||
| RFC 2046 requires that the values be case-insensitive US-ASCII, IPP | ||||
| requires all lower case values in IPP attributes to simplify comparing | ||||
| by IPP clients and Printer objects. When a character-set in the IANA | ||||
| registry has more than one name (alias), the name labeled as "(preferred | ||||
| MIME name)", if present, MUST be used. | ||||
| The maximum length of 'charset' values used to represent IPP attribute | ||||
| values is 63 octets. | ||||
| Some examples are: | Some examples are: | |||
| 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set | 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set | |||
| (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme | (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme | |||
| in which US-ASCII is a subset charset. | in which US-ASCII is a subset charset. | |||
| 'us-ascii': 7-bit American Standard Code for Information | 'us-ascii': 7-bit American Standard Code for Information Interchange | |||
| Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard | (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, | |||
| but RFC 2045 [RFC2045] eliminates most of the control characters | ||||
| Expires December 30, 1998 | from conformant usage in MIME and IPP. | |||
| defines US-ASCII, but RFC 2045 [46] eliminates most of the | 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr | |||
| control characters from conformant usage in MIME and IPP. | 1 [ISO8859-1]. That standard defines a coded character set that is | |||
| 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet | used by Latin languages in the Western Hemisphere and Western | |||
| Nr 1 [ISO8859-1]. That standard defines a coded character set | Europe. US-ASCII is a subset charset. | |||
| that is used by Latin languages in the Western Hemisphere and | ||||
| Western Europe. US-ASCII is a subset charset. | ||||
| 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded | 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded | |||
| Character Set (UCS) represented as two octets (UCS-2), with the | Character Set (UCS) represented as two octets (UCS-2), with the | |||
| high order octet of each pair coming first (so-called Big Endian | high order octet of each pair coming first (so-called Big Endian | |||
| integer). | integer). | |||
| Some attribute descriptions MAY place additional requirements on | Some attribute descriptions MAY place additional requirements on charset | |||
| charset values that may be used, such as REQUIRED values that MUST be | values that may be used, such as REQUIRED values that MUST be supported | |||
| supported or additional restrictions, such as requiring that the | or additional restrictions, such as requiring that the charset have US- | |||
| charset have US-ASCII as a subset charset. | ASCII as a subset charset. | |||
| 4.1.8 'naturalLanguage' | 4.1.8 'naturalLanguage' | |||
| The 'naturalLanguage' attribute syntax is a standard identifier for a | The 'naturalLanguage' attribute syntax is a standard identifier for a | |||
| natural language and optionally a country. The values for this syntax | natural language and optionally a country. The values for this syntax | |||
| type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that | type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that | |||
| the values be case-insensitive US-ASCII, IPP requires all lower case | the values be case-insensitive US-ASCII, IPP requires all lower case to | |||
| to simplify comparing by IPP clients and Printer objects. Examples | simplify comparing by IPP clients and Printer objects. Examples | |||
| include: | include: | |||
| 'en': for English | 'en': for English | |||
| 'en-us': for US English | 'en-us': for US English | |||
| 'fr': for French | 'fr': for French | |||
| 'de': for German | 'de': for German | |||
| The maximum length of naturalLanguage values used within IPP is 63 | The maximum length of 'naturalLanguage' values used to represent IPP | |||
| octets. | attribute values is 63 octets. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.1.9 'mimeMediaType' | 4.1.9 'mimeMediaType' | |||
| The 'mimeMediaType' attribute syntax is the Internet Media Type | The 'mimeMediaType' attribute syntax is the Internet Media Type | |||
| (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and | (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and | |||
| registered according to the procedures of RFC 2048 [RFC2048] for | registered according to the procedures of RFC 2048 [RFC2048] for | |||
| identifying a document format. The value MAY include a charset | identifying a document format. The value MAY include a charset | |||
| parameter, depending on the specification of the Media Type in the | parameter, depending on the specification of the Media Type in the IANA | |||
| IANA Registry [IANA-MT]. Although most other IPP syntax types allow | Registry [IANA-MT]. Although most other IPP syntax types allow for only | |||
| for only lower-cased values, this syntax type allows for mixed-case | lower-cased values, this syntax type allows for mixed-case values which | |||
| values which are case-insensitive. | are case-insensitive. | |||
| Examples are: | Examples are: | |||
| Expires December 30, 1998 | ||||
| 'text/html': An HTML document | 'text/html': An HTML document | |||
| 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates | 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates | |||
| that in the absence of the charset parameter MUST mean US-ASCII | that in the absence of the charset parameter MUST mean US-ASCII | |||
| rather than simply unspecified) [RFC2046]. | rather than simply unspecified) [RFC2046]. | |||
| 'text/plain; charset=US-ASCII': A plain text document in US-ASCII | 'text/plain; charset=US-ASCII': A plain text document in US-ASCII | |||
| [52, 56]. | [52, 56]. | |||
| 'text/plain; charset=ISO-8859-1': A plain text document in ISO | 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- | |||
| 8859-1 (Latin 1) [ISO8859-1]. | 1 (Latin 1) [ISO8859-1]. | |||
| 'text/plain; charset=utf-8': A plain text document in ISO 10646 | 'text/plain; charset=utf-8': A plain text document in ISO 10646 | |||
| represented as UTF-8 [RFC2044] | represented as UTF-8 [RFC2044] | |||
| 'text/plain, charset=iso-10646-ucs-2': A plain text document in | 'text/plain, charset=iso-10646-ucs-2': A plain text document in ISO | |||
| ISO 10646 represented in two octets (UCS-2) [ISO10646-1] | 10646 represented in two octets (UCS-2) [ISO10646-1] | |||
| 'application/postscript': A PostScript document [RFC2046] | 'application/postscript': A PostScript document [RFC2046] | |||
| 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape | 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape | |||
| sequence embedded in the document data) | sequence embedded in the document data) | |||
| 'application/octet-stream': Auto-sense - see below | 'application/octet-stream': Auto-sense - see below | |||
| One special type is 'application/octet-stream'. If the Printer object | One special type is 'application/octet-stream'. If the Printer object | |||
| supports this value, the Printer object MUST be capable of auto- | supports this value, the Printer object MUST be capable of auto-sensing | |||
| sensing the format of the document data. If the Printer object's | the format of the document data. If the Printer object's default value | |||
| default value attribute "document-format-default" is set to | attribute "document-format-default" is set to 'application/octet- | |||
| 'application/octet-stream', the Printer object not only supports auto- | stream', the Printer object not only supports auto-sensing of the | |||
| sensing of the document format, but will depend on the result of | document format, but will depend on the result of applying its auto- | |||
| applying its auto-sensing when the client does not supply the | sensing when the client does not supply the "document-format" attribute. | |||
| "document-format" attribute. If the client supplies a document format | If the client supplies a document format value, the Printer MUST rely on | |||
| value, the Printer MUST rely on the supplied attribute, rather than | the supplied attribute, rather than trust its auto-sensing algorithm. | |||
| trust its auto-sensing algorithm. To summarize: | To summarize: | |||
| 1. If the client does not supply a document format value, the | 1. If the client does not supply a document format value, the Printer | |||
| Printer MUST rely on its default value setting (which may be | MUST rely on its default value setting (which may be | |||
| 'application/octet-stream' indicating an auto-sensing mechanism). | 'application/octet-stream' indicating an auto-sensing mechanism). | |||
| 2. If the client supplies a value other than 'application/octet- | 2. If the client supplies a value other than 'application/octet- | |||
| stream', the client is supplying valid information about the | stream', the client is supplying valid information about the format | |||
| format of the document data and the Printer object MUST trust the | of the document data and the Printer object MUST trust the client | |||
| client supplied value more than the outcome of applying an | supplied value more than the outcome of applying an automatic | |||
| automatic format detection mechanism. For example, the client | format detection mechanism. For example, the client may be | |||
| may be requesting the printing of a PostScript file as a | requesting the printing of a PostScript file as a 'text/plain' | |||
| 'text/plain' document. The Printer object MUST print a text | document. The Printer object MUST print a text representation of | |||
| representation of the PostScript commands rather than interpret | the PostScript commands rather than interpret the stream of | |||
| the stream of PostScript commands and print the result. | PostScript commands and print the result. | |||
| 3. If the client supplies a value of 'application/octet-stream', | ||||
| the client is indicating that the Printer object MUST use its | ||||
| auto-sensing mechanism on the client supplied document data | ||||
| whether auto-sensing is the Printer object's default or not. | ||||
| Note: Since the auto-sensing algorithm is probabilistic, if the | Isaacson, Powell Expires May 16, 1999 | |||
| client requests both auto-sensing ("document-format" set to | ||||
| 'application/octet-stream') and true fidelity ("ipp-attribute- | ||||
| Expires December 30, 1998 | 3. If the client supplies a value of 'application/octet-stream', the | |||
| fidelity" set to 'true'), the Printer object might not be able to | client is indicating that the Printer object MUST use its auto- | |||
| guarantee exactly what the end user intended (the auto-sensing | sensing mechanism on the client supplied document data whether | |||
| algorithm might mistake one document format for another ), but it is | auto-sensing is the Printer object's default or not. | |||
| able to guarantee that its auto-sensing mechanism be used. | ||||
| The maximum length of a 'mimeMediaType' value in IPP is 255 octets. | Note: Since the auto-sensing algorithm is probabilistic, if the client | |||
| requests both auto-sensing ("document-format" set to 'application/octet- | ||||
| stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the | ||||
| Printer object might not be able to guarantee exactly what the end user | ||||
| intended (the auto-sensing algorithm might mistake one document format | ||||
| for another ), but it is able to guarantee that its auto-sensing | ||||
| mechanism be used. | ||||
| The maximum length of a 'mimeMediaType' value to represent IPP attribute | ||||
| values is 255 octets. | ||||
| 4.1.10 'octetString' | 4.1.10 'octetString' | |||
| The 'octetString' attribute syntax is a sequence of octets encoded in | The 'octetString' attribute syntax is a sequence of octets encoded in a | |||
| a maximum of 1023 octets which is indicated in sub-section headers | maximum of 1023 octets which is indicated in sub-section headers using | |||
| using the notation: octetString(MAX). This syntax type is used for | the notation: octetString(MAX). This syntax type is used for opaque | |||
| opaque data. | data. | |||
| 4.1.11 'boolean' | 4.1.11 'boolean' | |||
| The 'boolean' attribute syntax is similar to an enum with only two | The 'boolean' attribute syntax has only two values: 'true' and 'false'. | |||
| values: 'true' and 'false'. | ||||
| 4.1.12 'integer' | 4.1.12 'integer' | |||
| The 'integer' attribute syntax is an integer value that is in the | The 'integer' attribute syntax is an integer value that is in the range | |||
| range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute | from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may | |||
| may specify the range constraint explicitly in sub-section headers if | specify the range constraint explicitly in sub-section headers if the | |||
| the range is different from the full range of possible integer values. | range is different from the full range of possible integer values. For | |||
| For example: job-priority (integer(1:100)) for the "job-priority" | example: job-priority (integer(1:100)) for the "job-priority" | |||
| attribute. However, the enforcement of that additional constraint is | attribute. However, the enforcement of that additional constraint is up | |||
| up to the IPP objects, not the protocol. | to the IPP objects, not the protocol. | |||
| 4.1.13 'rangeOfInteger' | 4.1.13 'rangeOfInteger' | |||
| The 'rangeOfInteger' attribute syntax is an ordered pair of integers | The 'rangeOfInteger' attribute syntax is an ordered pair of integers | |||
| that defines an inclusive range of integer values. The first integer | that defines an inclusive range of integer values. The first integer | |||
| specifies the lower bound and the second specifies the upper bound. | specifies the lower bound and the second specifies the upper bound. If | |||
| If a range constraint is specified in the header description for an | a range constraint is specified in the header description for an | |||
| attribute in this document whose attribute syntax is 'rangeOfInteger' | attribute in this document whose attribute syntax is 'rangeOfInteger' | |||
| (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum | (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), | |||
| value), then the constraint applies to both integers. | then the constraint applies to both integers. | |||
| 4.1.14 'dateTime' | 4.1.14 'dateTime' | |||
| The 'dateTime' attribute syntax is a standard, fixed length, 11 octet | The 'dateTime' attribute syntax is a standard, fixed length, 11 octet | |||
| representation of the "DateAndTime" syntax as defined in RFC 1903 | representation of the "DateAndTime" syntax as defined in RFC 1903 | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| [RFC1903]. RFC 1903 also identifies an 8 octet representation of a | [RFC1903]. RFC 1903 also identifies an 8 octet representation of a | |||
| "DateAndTime" value, but IPP objects MUST use the 11 octet | "DateAndTime" value, but IPP objects MUST use the 11 octet | |||
| representation. A user interface will provide a mapping between | representation. A user interface will provide a mapping between | |||
| protocol dateTime values and displayable user-friendly words or | protocol dateTime values and displayable user-friendly words or | |||
| presentation values and phrases which are localized to the natural | presentation values and phrases which are localized to the natural | |||
| language and date format of the user. | language and date format of the user. | |||
| 4.1.15 'resolution' | 4.1.15 'resolution' | |||
| The 'resolution' attribute syntax specifies a two-dimensional | The 'resolution' attribute syntax specifies a two-dimensional resolution | |||
| resolution in the indicated units. It consists of 3 integers: a cross | in the indicated units. It consists of 3 values: a cross feed direction | |||
| feed direction resolution (positive integer value), a feed direction | resolution (positive integer value), a feed direction resolution | |||
| resolution (positive integer value), and a units value. The semantics | (positive integer value), and a units value. The semantics of these | |||
| of these three components are taken from the Printer MIB [RFC1759] | three components are taken from the Printer MIB [RFC1759] suggested | |||
| suggested values. That is, the cross feed direction component | values. That is, the cross feed direction component resolution | |||
| resolution component is the same as the | component is the same as the prtMarkerAddressabilityXFeedDir object in | |||
| prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed | the Printer MIB, the feed direction component resolution component is | |||
| direction component resolution component is the same as the | the same as the prtMarkerAddressabilityFeedDir in the Printer MIB, and | |||
| prtMarkerAddressabilityFeedDir in the Printer MIB, and the units | the units component is the same as the prtMarkerAddressabilityUnit | |||
| component is the same as the prtMarkerAddressabilityUnit object in the | object in the Printer MIB (namely, '3' indicates dots per inch and '4' | |||
| Printer MIB (namely, '3' indicates dots per inch and '4' indicates | indicates dots per centimeter). All three values MUST be present even | |||
| dots per centimeter). All three values MUST be present even if the | if the first two values are the same. Example: '300', '600', '3' | |||
| first two values are the same. Example: '300', '600', '3' indicates | indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed | |||
| a 300 dpi cross-feed direction resolution, a 600 dpi feed direction | direction resolution, since a '3' indicates dots per inch (dpi). | |||
| resolution, since a '3' indicates dots per inch (dpi). | ||||
| 4.1.16 '1setOf X' | 4.1.16 '1setOf X' | |||
| The '1setOf X' attribute syntax is 1 or more values of attribute | The '1setOf X' attribute syntax is 1 or more values of attribute syntax | |||
| syntax type X. This syntax type is used for multi-valued attributes. | type X. This syntax type is used for multi-valued attributes. The | |||
| The syntax type is called '1setOf' rather than just 'setOf' as a | syntax type is called '1setOf' rather than just 'setOf' as a reminder | |||
| reminder that the set of values MUST NOT be empty (i.e., a set of size | that the set of values MUST NOT be empty (i.e., a set of size 0). Sets | |||
| 0). Sets are normally unordered. However each attribute description | are normally unordered. However each attribute description of this type | |||
| of this type may specify that the values MUST be in a certain order | may specify that the values MUST be in a certain order for that | |||
| for that attribute. | attribute. | |||
| 4.2 Job Template Attributes | 4.2 Job Template Attributes | |||
| Job Template attributes describe job processing behavior. Support for | Job Template attributes describe job processing behavior. Support for | |||
| Job Template attributes by a Printer object is OPTIONAL (see section | Job Template attributes by a Printer object is OPTIONAL (see section | |||
| 13.2.3 for a description of support for OPTIONAL attributes). Also, | 13.2.3 for a description of support for OPTIONAL attributes). Also, | |||
| clients OPTIONALLY supply Job Template attributes in create requests. | clients OPTIONALLY supply Job Template attributes in create requests. | |||
| Job Template attributes conform to the following rules. For each Job | Job Template attributes conform to the following rules. For each Job | |||
| Template attribute called "xxx": | Template attribute called "xxx": | |||
| Expires December 30, 1998 | ||||
| 1. If the Printer object supports "xxx" then it MUST support both a | 1. If the Printer object supports "xxx" then it MUST support both a | |||
| "xxx-default" attribute (unless there is a "No" in the table | "xxx-default" attribute (unless there is a "No" in the table below) | |||
| below) and a "xxx-supported" attribute. If the Printer object | and a "xxx-supported" attribute. If the Printer object doesn't | |||
| doesn't support "xxx", then it MUST support neither an "xxx- | support "xxx", then it MUST support neither an "xxx-default" | |||
| default" attribute nor an "xxx-supported" attribute, and it MUST | attribute nor an "xxx-supported" attribute, and it MUST treat an | |||
| treat an attribute "xxx" supplied by a client as unsupported. An | attribute "xxx" supplied by a client as unsupported. An attribute | |||
| attribute "xxx" may be supported for some document formats and | "xxx" may be supported for some document formats and not supported | |||
| not supported for other document formats. For example, it is | ||||
| expected that a Printer object would only support "orientation- | Isaacson, Powell Expires May 16, 1999 | |||
| requested" for some document formats (such as 'text/plain' or | for other document formats. For example, it is expected that a | |||
| 'text/html') but not others (such as 'application/postscript'). | Printer object would only support "orientation-requested" for some | |||
| document formats (such as 'text/plain' or 'text/html') but not | ||||
| others (such as 'application/postscript'). | ||||
| 2. "xxx" is OPTIONALLY supplied by the client in a create request. | 2. "xxx" is OPTIONALLY supplied by the client in a create request. | |||
| If "xxx" is supplied, the client is indicating a desired job | If "xxx" is supplied, the client is indicating a desired job | |||
| processing behavior for this Job. When "xxx" is not supplied, | processing behavior for this Job. When "xxx" is not supplied, the | |||
| the client is indicating that the Printer object apply its | client is indicating that the Printer object apply its default job | |||
| default job processing behavior at job processing time if the | processing behavior at job processing time if the document content | |||
| document content does not contain an embedded instruction | does not contain an embedded instruction indicating an xxx-related | |||
| indicating an xxx-related behavior. | behavior. | |||
| Note: Since an administrator MAY change the default value | Note: Since an administrator MAY change the default value attribute | |||
| attribute after a Job object has been submitted but before it has | after a Job object has been submitted but before it has been | |||
| been processed, the default value used by the Printer object at | processed, the default value used by the Printer object at job | |||
| job processing time may be different that the default value in | processing time may be different that the default value in effect | |||
| effect at job submission time. | at job submission time. | |||
| 3. The "xxx-supported" attribute is a Printer object attribute that | 3. The "xxx-supported" attribute is a Printer object attribute that | |||
| describes which job processing behaviors are supported by that | describes which job processing behaviors are supported by that | |||
| Printer object. A client can query the Printer object to find | Printer object. A client can query the Printer object to find out | |||
| out what xxx-related behaviors are supported by inspecting the | what xxx-related behaviors are supported by inspecting the returned | |||
| returned values of the "xxx-supported" attribute. | values of the "xxx-supported" attribute. | |||
| Note: The "xxx" in each "xxx-supported" attribute name is | Note: The "xxx" in each "xxx-supported" attribute name is singular, | |||
| singular, even though an "xxx-supported" attribute usually has | even though an "xxx-supported" attribute usually has more than one | |||
| more than one value, such as "job-sheet-supported", unless the | value, such as "job-sheet-supported", unless the "xxx" Job Template | |||
| "xxx" Job Template attribute is plural, such as "finishings" or | attribute is plural, such as "finishings" or "sides". In such | |||
| "sides". In such cases the "xxx-supported" attribute names are: | cases the "xxx-supported" attribute names are: "finishings- | |||
| "finishings-supported" and "sides-supported". | supported" and "sides-supported". | |||
| 4. The "xxx-default" default value attribute describes what will be | 4. The "xxx-default" default value attribute describes what will be | |||
| done at job processing time when no other job processing | done at job processing time when no other job processing | |||
| information is supplied by the client (either explicitly as an | information is supplied by the client (either explicitly as an IPP | |||
| IPP attribute in the create request or implicitly as an embedded | attribute in the create request or implicitly as an embedded | |||
| instruction within the document data). | instruction within the document data). | |||
| If an application wishes to present an end user with a list of | If an application wishes to present an end user with a list of supported | |||
| supported values from which to choose, the application SHOULD query | values from which to choose, the application SHOULD query the Printer | |||
| the Printer object for its supported value attributes. The | object for its supported value attributes. The application SHOULD also | |||
| query the default value attributes. If the application then limits | ||||
| Expires December 30, 1998 | selectable values to only those value that are supported, the | |||
| application SHOULD also query the default value attributes. If the | application can guarantee that the values supplied by the client in the | |||
| application then limits selectable values to only those value that are | create request all fall within the set of supported values at the | |||
| supported, the application can guarantee that the values supplied by | Printer. When querying the Printer, the client MAY enumerate each | |||
| the client in the create request all fall within the set of supported | attribute by name in the Get-Printer-Attributes Request, or the client | |||
| values at the Printer. When querying the Printer, the client MAY | MAY just name the "job-template" group in order to get the complete set | |||
| enumerate each attribute by name in the Get-Printer-Attributes | of supported attributes (both supported and default attributes). | |||
| Request, or the client MAY just name the "job-template" group in order | ||||
| to get the complete set of supported attributes (both supported and | ||||
| default attributes). | ||||
| The "finishings" attribute is an example of a Job Template attribute. | The "finishings" attribute is an example of a Job Template attribute. | |||
| It can take on a set of values such as 'staple', 'punch', and/or | It can take on a set of values such as 'staple', 'punch', and/or | |||
| 'cover'. A client can query the Printer object for the "finishings- | 'cover'. A client can query the Printer object for the "finishings- | |||
| supported" attribute and the "finishings-default" attribute. The | supported" attribute and the "finishings-default" attribute. The | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| supported attribute contains a set of supported values. The default | supported attribute contains a set of supported values. The default | |||
| value attribute contains the finishing value(s) that will be used for | value attribute contains the finishing value(s) that will be used for a | |||
| a new Job if the client does not supply a "finishings" attribute in | new Job if the client does not supply a "finishings" attribute in the | |||
| the create request and the document data does not contain any | create request and the document data does not contain any corresponding | |||
| corresponding finishing instructions. If the client does supply the | finishing instructions. If the client does supply the "finishings" | |||
| "finishings" attribute in the create request, the IPP object validates | attribute in the create request, the IPP object validates the value or | |||
| the value or values to make sure that they are a subset of the | values to make sure that they are a subset of the supported values | |||
| supported values identified in the Printer object's "finishings- | identified in the Printer object's "finishings-supported" attribute. | |||
| supported" attribute. See section 3.2.1.2. | See section 3.2.1.2. | |||
| The table below summarizes the names and relationships for all Job | The table below summarizes the names and relationships for all Job | |||
| Template attributes. The first column of the table (labeled "Job | Template attributes. The first column of the table (labeled "Job | |||
| Attribute") shows the name and syntax for each Job Template attribute | Attribute") shows the name and syntax for each Job Template attribute in | |||
| in the Job object. These are the attributes that can optionally be | the Job object. These are the attributes that can optionally be supplied | |||
| supplied by the client in a create request. The last two columns | by the client in a create request. The last two columns (labeled | |||
| (labeled "Printer: Default Value Attribute" and "Printer: Supported | "Printer: Default Value Attribute" and "Printer: Supported Values | |||
| Values Attribute") shows the name and syntax for each Job Template | Attribute") shows the name and syntax for each Job Template attribute in | |||
| attribute in the Printer object (the default value attribute and the | the Printer object (the default value attribute and the supported values | |||
| supported values attribute). A "No" in the table means the Printer | attribute). A "No" in the table means the Printer MUST NOT support the | |||
| MUST NOT support the attribute (that is, the attribute is simply not | attribute (that is, the attribute is simply not applicable). For | |||
| applicable). For brevity in the table, the 'text' and 'name' entries | brevity in the table, the 'text' and 'name' entries do not show the | |||
| do not show the maximum length for each attribute. | maximum length for each attribute. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| +===================+======================+======================+ | +===================+======================+======================+ | |||
| | Job Attribute |Printer: Default Value| Printer: Supported | | | Job Attribute |Printer: Default Value| Printer: Supported | | |||
| | | Attribute | Values Attribute | | | | Attribute | Values Attribute | | |||
| +===================+======================+======================+ | +===================+======================+======================+ | |||
| | job-priority | job-priority-default |job-priority-supported| | | job-priority | job-priority-default |job-priority-supported| | |||
| | (integer 1:100) | (integer 1:100) |(integer 1:100) | | | (integer 1:100) | (integer 1:100) |(integer 1:100) | | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| | job-hold-until | job-hold-until- |job-hold-until- | | | job-hold-until | job-hold-until- |job-hold-until- | | |||
| | (type3 keyword | | default | supported | | | (type3 keyword | | default | supported | | |||
| | name) | (type3 keyword | |(1setOf | | | name) | (type3 keyword | |(1setOf | | |||
| skipping to change at page 73, line 4 ¶ | skipping to change at page 65, line 54 ¶ | |||
| | | | rangeOfInteger | | | | | rangeOfInteger | | |||
| | | | (1:MAX)) | | | | | (1:MAX)) | | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| | orientation- |orientation-requested-|orientation-requested-| | | orientation- |orientation-requested-|orientation-requested-| | |||
| | requested | default | supported | | | requested | default | supported | | |||
| | (type2 enum) | (type2 enum) | (1setOf type2 enum) | | | (type2 enum) | (type2 enum) | (1setOf type2 enum) | | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| | media | media-default | media-supported | | | media | media-default | media-supported | | |||
| | (type3 keyword | | (type3 keyword | |(1setOf | | | (type3 keyword | | (type3 keyword | |(1setOf | | |||
| | name) | name) | type3 keyword | name)| | | name) | name) | type3 keyword | name)| | |||
| Expires December 30, 1998 | ||||
| | | | | | | | | | | |||
| | | | media-ready | | | | | media-ready | | |||
| | | |(1setOf | | | | |(1setOf | | |||
| | | | type3 keyword | name)| | | | | type3 keyword | name)| | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| +===================+======================+======================+ | ||||
| | Job Attribute |Printer: Default Value| Printer: Supported | | ||||
| | | Attribute | Values Attribute | | ||||
| +===================+======================+======================+ | ||||
| | printer-resolution| printer-resolution- | printer-resolution- | | | printer-resolution| printer-resolution- | printer-resolution- | | |||
| | (resolution) | default | supported | | | (resolution) | default | supported | | |||
| | | (resolution) |(1setOf resolution) | | | | (resolution) |(1setOf resolution) | | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| | print-quality | print-quality-default| print-quality- | | | print-quality | print-quality-default| print-quality- | | |||
| | (type2 enum) | (type2 enum) | supported | | | (type2 enum) | (type2 enum) | supported | | |||
| | | |(1setOf type2 enum) | | | | |(1setOf type2 enum) | | |||
| +-------------------+----------------------+----------------------+ | +-------------------+----------------------+----------------------+ | |||
| 4.2.1 job-priority (integer(1:100)) | 4.2.1 job-priority (integer(1:100)) | |||
| This attribute specifies a priority for scheduling the Job. A higher | This attribute specifies a priority for scheduling the Job. A higher | |||
| value specifies a higher priority. The value 1 indicates the lowest | value specifies a higher priority. The value 1 indicates the lowest | |||
| possible priority. The value 100 indicates the highest possible | possible priority. The value 100 indicates the highest possible | |||
| priority. Among those jobs that are ready to print, a Printer MUST | priority. Among those jobs that are ready to print, a Printer MUST | |||
| print all jobs with a priority value of n before printing those with a | print all jobs with a priority value of n before printing those with a | |||
| priority value of n-1 for all n. | priority value of n-1 for all n. | |||
| If the Printer object supports this attribute, it MUST always support | If the Printer object supports this attribute, it MUST always support | |||
| the full range from 1 to 100. No administrative restrictions are | the full range from 1 to 100. No administrative restrictions are | |||
| permitted. This way an end-user can always make full use of the | permitted. This way an end-user can always make full use of the entire | |||
| entire range with any Printer object. If privileged jobs are | range with any Printer object. If privileged jobs are implemented | |||
| implemented outside IPP/1.0, they MUST have priorities higher than | outside IPP/1.0, they MUST have priorities higher than 100, rather than | |||
| 100, rather than restricting the range available to end-users. | restricting the range available to end-users. | |||
| If the client does not supply this attribute and this attribute is | If the client does not supply this attribute and this attribute is | |||
| supported by the Printer object, the Printer object MUST use the value | supported by the Printer object, the Printer object MUST use the value | |||
| of the Printer object's "job-priority-default" at job submission time | of the Printer object's "job-priority-default" at job submission time | |||
| (unlike most Job Template attributes that are used if necessary at job | (unlike most Job Template attributes that are used if necessary at job | |||
| processing time). | processing time). | |||
| The syntax for the "job-priority-supported" is also integer(1:100). | The syntax for the "job-priority-supported" is also integer(1:100). | |||
| This single integer value indicates the number of priority levels | This single integer value indicates the number of priority levels | |||
| supported. The Printer object MUST take the value supplied by the | supported. The Printer object MUST take the value supplied by the | |||
| client and map it to the closest integer in a sequence of n integers | client and map it to the closest integer in a sequence of n integers | |||
| values that are evenly distributed over the range from 1 to 100 using | values that are evenly distributed over the range from 1 to 100 using | |||
| the formula: | the formula: | |||
| roundToNearestInt((100x+50)/n) | roundToNearestInt((100x+50)/n) | |||
| Expires December 30, 1998 | ||||
| where n is the value of "job-priority-supported" and x ranges from 0 | where n is the value of "job-priority-supported" and x ranges from 0 | |||
| through n-1. | through n-1. | |||
| For example, if n=1 the sequence of values is 50; if n=2, the | For example, if n=1 the sequence of values is 50; if n=2, the sequence | |||
| sequence of values is: 25 and 75; if n = 3, the sequence of values | of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 | |||
| is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, | and 83; if n = 10, the sequence of values is: 5, 15, 25, 35, 45, 55, | |||
| 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values | 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, . | |||
| is: 1, 2, 3, _ 100. | 100. | |||
| If the value of the Printer object's "job-priority-supported" is 10 | Isaacson, Powell Expires May 16, 1999 | |||
| and the client supplies values in the range 1 to 10, the Printer | If the value of the Printer object's "job-priority-supported" is 10 and | |||
| object maps them to 5, in the range 11 to 20, the Printer object maps | the client supplies values in the range 1 to 10, the Printer object maps | |||
| them to 15, etc. | them to 5, in the range 11 to 20, the Printer object maps them to 15, | |||
| etc. | ||||
| 4.2.2 job-hold-until (type3 keyword | name (MAX)) | 4.2.2 job-hold-until (type3 keyword | name (MAX)) | |||
| This attribute specifies the named time period during which the Job | This attribute specifies the named time period during which the Job MUST | |||
| MUST become a candidate for printing. | become a candidate for printing. | |||
| Standard values for named time periods are: | Standard keyword values for named time periods are: | |||
| 'no-hold': immediately, if there are not other reasons to hold the | 'no-hold': immediately, if there are not other reasons to hold the | |||
| job | job | |||
| 'day-time': during the day | 'day-time': during the day | |||
| 'evening': evening | 'evening': evening | |||
| 'night': night | 'night': night | |||
| 'weekend': weekend | 'weekend': weekend | |||
| 'second-shift': second-shift (after close of business) | 'second-shift': second-shift (after close of business) | |||
| 'third-shift': third-shift (after midnight) | 'third-shift': third-shift (after midnight) | |||
| An administrator MUST associate allowable print times with a named | An administrator MUST associate allowable print times with a named time | |||
| time period (by means outside IPP/1.0). An administrator is | period (by means outside IPP/1.0). An administrator is encouraged to | |||
| encouraged to pick names that suggest the type of time period. An | pick names that suggest the type of time period. An administrator MAY | |||
| administrator MAY define additional values using the 'name' or | define additional values using the 'name' or 'keyword' attribute syntax, | |||
| 'keyword' attribute syntax, depending on implementation. | depending on implementation. | |||
| If the value of this attribute specifies a time period that is in the | If the value of this attribute specifies a time period that is in the | |||
| future, the Printer MUST add the 'job-hold-until-specified' value to | future, the Printer MUST add the 'job-hold-until-specified' value to the | |||
| the job's "job-state-reasons" attribute, move the job to the 'pending- | job's "job-state-reasons" attribute, move the job to the 'pending-held' | |||
| held' state, and MUST NOT schedule the job for printing until the | state, and MUST NOT schedule the job for printing until the specified | |||
| specified time-period arrives. When the specified time period | time-period arrives. When the specified time period arrives, the | |||
| arrives, the Printer MUST remove the 'job-hold-until-specified' value | Printer MUST remove the 'job-hold-until-specified' value from the job's | |||
| from the job's "job-state-reason" attribute and, if there are no other | "job-state-reason" attribute and, if there are no other job state | |||
| job state reasons that keep the job in the 'pending-held' state, the | reasons that keep the job in the 'pending-held' state, the Printer MUST | |||
| Printer MUST consider the job as a candidate for processing by moving | consider the job as a candidate for processing by moving the job to the | |||
| the job to the 'pending' state. | 'pending' state. | |||
| Expires December 30, 1998 | ||||
| If this job attribute value is the named value 'no-hold', or the | If this job attribute value is the named value 'no-hold', or the | |||
| specified time period has already started, the job MUST be a candidate | specified time period has already started, the job MUST be a candidate | |||
| for processing immediately. | for processing immediately. | |||
| If the client does not supply this attribute and this attribute is | If the client does not supply this attribute and this attribute is | |||
| supported by the Printer object, the Printer object MUST use the value | supported by the Printer object, the Printer object MUST use the value | |||
| of the Printer object's "job-hold-until-default" at job submission | of the Printer object's "job-hold-until-default" at job submission time | |||
| time (unlike most Job Template attributes that are used if necessary | (unlike most Job Template attributes that are used if necessary at job | |||
| at job processing time). | processing time). | |||
| 4.2.3 job-sheets (type3 keyword | name(MAX)) | 4.2.3 job-sheets (type3 keyword | name(MAX)) | |||
| This attribute determines which job start/end sheet(s), if any, MUST | This attribute determines which job start/end sheet(s), if any, MUST be | |||
| be printed with a job. | printed with a job. | |||
| Standard values are: | Isaacson, Powell Expires May 16, 1999 | |||
| Standard keyword values are: | ||||
| 'none': no job sheet is printed | 'none': no job sheet is printed | |||
| 'standard': one or more site specific standard job sheets are | 'standard': one or more site specific standard job sheets are | |||
| printed, e.g. a single start sheet or both start and end sheet is | printed, e.g. a single start sheet or both start and end sheet is | |||
| printed | printed | |||
| An administrator MAY define additional values using the 'name' or | An administrator MAY define additional values using the 'name' or | |||
| 'keyword' attribute syntax, depending on implementation. | 'keyword' attribute syntax, depending on implementation. | |||
| Note: The effect of this attribute on jobs with multiple documents MAY | Note: The effect of this attribute on jobs with multiple documents MAY | |||
| be affected by the "multiple-document-handling" job attribute (section | be affected by the "multiple-document-handling" job attribute (section | |||
| 4.2.4), depending on the job sheet semantics. | 4.2.4), depending on the job sheet semantics. | |||
| 4.2.4 multiple-document-handling (type2 keyword) | 4.2.4 multiple-document-handling (type2 keyword) | |||
| This attribute is relevant only if a job consists of two or more | This attribute is relevant only if a job consists of two or more | |||
| documents. The attribute controls finishing operations and the | documents. The attribute controls finishing operations and the placement | |||
| placement of one or more print-stream pages into impressions and onto | of one or more print-stream pages into impressions and onto media | |||
| media sheets. When the value of the "copies" attribute exceeds 1, it | sheets. When the value of the "copies" attribute exceeds 1, it also | |||
| also controls the order in which the copies that result from | controls the order in which the copies that result from processing the | |||
| processing the documents are produced. For the purposes of this | documents are produced. For the purposes of this explanations, if "a" | |||
| explanations, if "a" represents an instance of document data, then the | represents an instance of document data, then the result of processing | |||
| result of processing the data in document "a" is a sequence of media | the data in document "a" is a sequence of media sheets represented by | |||
| sheets represented by "a(*)". | "a(*)". | |||
| Standard values are: | Standard keyword values are: | |||
| 'single-document': If a Job object has multiple documents, say, the | 'single-document': If a Job object has multiple documents, say, the | |||
| document data is called a and b, then the result of processing | document data is called a and b, then the result of processing all | |||
| all the document data (a and then b) MUST be treated as a single | the document data (a and then b) MUST be treated as a single | |||
| Expires December 30, 1998 | ||||
| sequence of media sheets for finishing operations; that is, | sequence of media sheets for finishing operations; that is, | |||
| finishing would be performed on the concatenation of the | finishing would be performed on the concatenation of the sequences | |||
| sequences a(*),b(*). The Printer object MUST NOT force the data | a(*),b(*). The Printer object MUST NOT force the data in each | |||
| in each document instance to be formatted onto a new print-stream | document instance to be formatted onto a new print-stream page, nor | |||
| page, nor to start a new impression on a new media sheet. If more | to start a new impression on a new media sheet. If more than one | |||
| than one copy is made, the ordering of the sets of media sheets | copy is made, the ordering of the sets of media sheets resulting | |||
| resulting from processing the document data MUST be a(*), b(*), | from processing the document data MUST be a(*), b(*), a(*), b(*), | |||
| a(*), b(*), ..., and the Printer object MUST force each copy | ..., and the Printer object MUST force each copy (a(*),b(*)) to | |||
| (a(*),b(*)) to start on a new media sheet. | start on a new media sheet. | |||
| 'separate-documents-uncollated-copies': If a Job object has | 'separate-documents-uncollated-copies': If a Job object has multiple | |||
| multiple documents, say, the document data is called a and b, | documents, say, the document data is called a and b, then the | |||
| then the result of processing the data in each document instance | result of processing the data in each document instance MUST be | |||
| MUST be treated as a single sequence of media sheets for | treated as a single sequence of media sheets for finishing | |||
| finishing operations; that is, the sets a(*) and b(*) would each | operations; that is, the sets a(*) and b(*) would each be finished | |||
| be finished separately. The Printer object MUST force each copy | separately. The Printer object MUST force each copy of the result | |||
| of the result of processing the data in a single document to | of processing the data in a single document to start on a new media | |||
| start on a new media sheet. If more than one copy is made, the | sheet. If more than one copy is made, the ordering of the sets of | |||
| ordering of the sets of media sheets resulting from processing | media sheets resulting from processing the document data MUST be | |||
| the document data MUST be a(*), a(*), ..., b(*), b(*) ... . | a(*), a(*), ..., b(*), b(*) ... . | |||
| 'separate-documents-collated-copies': If a Job object has multiple | 'separate-documents-collated-copies': If a Job object has multiple | |||
| documents, say, the document data is called a and b, then the | documents, say, the document data is called a and b, then the | |||
| result of processing the data in each document instance MUST be | result of processing the data in each document instance MUST be | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| treated as a single sequence of media sheets for finishing | treated as a single sequence of media sheets for finishing | |||
| operations; that is, the sets a(*) and b(*) would each be | operations; that is, the sets a(*) and b(*) would each be finished | |||
| finished separately. The Printer object MUST force each copy of | separately. The Printer object MUST force each copy of the result | |||
| the result of processing the data in a single document to start | of processing the data in a single document to start on a new media | |||
| on a new media sheet. If more than one copy is made, the | sheet. If more than one copy is made, the ordering of the sets of | |||
| ordering of the sets of media sheets resulting from processing | media sheets resulting from processing the document data MUST be | |||
| the document data MUST be a(*), b(*), a(*), b(*), ... . | a(*), b(*), a(*), b(*), ... . | |||
| 'single-document-new-sheet': Same as 'single-document', except that | ||||
| the Printer object MUST ensure that the first impression of each | ||||
| document instance in the job is placed on a new media sheet. This | ||||
| value allows multiple documents to be stapled together with a | ||||
| single staple where each document starts on a new sheet. | ||||
| The 'single-document' value is the same as 'separate-documents- | The 'single-document' value is the same as 'separate-documents-collated- | |||
| collated-copies' with respect to ordering of print-stream pages, but | copies' with respect to ordering of print-stream pages, but not media | |||
| not media sheet generation, since 'single-document' will put the first | sheet generation, since 'single-document' will put the first page of the | |||
| page of the next document on the back side of a sheet if an odd number | next document on the back side of a sheet if an odd number of pages have | |||
| of pages have been produced so far for the job, while 'separate- | been produced so far for the job, while 'separate-documents-collated- | |||
| documents-collated-copies' always forces the next document or document | copies' always forces the next document or document copy on to a new | |||
| copy on to a new sheet. In addition, if the "finishings" attribute | sheet. In addition, if the "finishings" attribute specifies 'staple', | |||
| specifies 'staple', then with 'single-document', documents a and b are | then with 'single-document', documents a and b are stapled together as a | |||
| stapled together as a single document, but with 'separate-documents- | single document with no regard to new sheets, with 'single-document-new- | |||
| uncollated-copies' and 'separate-documents-collated-copies', documents | sheet', documents a and b are stapled together as a single document, but | |||
| a and b are stapled separately. | document b starts on a new sheet, but with 'separate-documents- | |||
| uncollated-copies' and 'separate-documents-collated-copies', documents a | ||||
| and b are stapled separately. | ||||
| Note: None of these values provide means to produce uncollated sheets | Note: None of these values provide means to produce uncollated sheets | |||
| within a document, i.e., where multiple copies of sheet n are produced | within a document, i.e., where multiple copies of sheet n are produced | |||
| before sheet n+1 of the same document. | before sheet n+1 of the same document. | |||
| The relationship of this attribute and the other attributes that | The relationship of this attribute and the other attributes that control | |||
| control document processing is described in section 16.5. | document processing is described in section 16.3. | |||
| Expires December 30, 1998 | ||||
| 4.2.5 copies (integer(1:MAX)) | 4.2.5 copies (integer(1:MAX)) | |||
| This attribute specifies the number of copies to be printed. | This attribute specifies the number of copies to be printed. | |||
| On many devices the supported number of collated copies will be | On many devices the supported number of collated copies will be limited | |||
| limited by the number of physical output bins on the device, and may | by the number of physical output bins on the device, and may be | |||
| be different from the number of uncollated copies which can be | different from the number of uncollated copies which can be supported. | |||
| supported. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| 4.2.6 finishings (1setOf type2 enum) | 4.2.6 finishings (1setOf type2 enum) | |||
| This attribute identifies the finishing operations that the Printer | This attribute identifies the finishing operations that the Printer uses | |||
| uses for each copy of each printed document in the Job. For Jobs with | for each copy of each printed document in the Job. For Jobs with | |||
| multiple documents, the "multiple-document-handling" attribute | multiple documents, the "multiple-document-handling" attribute | |||
| determines what constitutes a "copy" for purposes of finishing. | determines what constitutes a "copy" for purposes of finishing. | |||
| Standard values are: | Isaacson, Powell Expires May 16, 1999 | |||
| Standard enum values are: | ||||
| Value Symbolic Name and Description | Value Symbolic Name and Description | |||
| '3' 'none': Perform no finishing | '3' 'none': Perform no finishing | |||
| '4' 'staple': Bind the document(s) with one or more staples. | '4' 'staple': Bind the document(s) with one or more staples. The | |||
| The exact number and placement of the staples is site- | exact number and placement of the staples is site- | |||
| defined. | defined. | |||
| '5' 'punch': This value indicates that holes are required in | '5' 'punch': This value indicates that holes are required in the | |||
| the finished document. The exact number and placement | finished document. The exact number and placement of the | |||
| of the holes is site-defined The punch specification | holes is site-defined The punch specification MAY be | |||
| MAY be satisfied (in a site- and implementation- | satisfied (in a site- and implementation-specific manner) | |||
| specific manner) either by drilling/punching, or by | either by drilling/punching, or by substituting pre- | |||
| substituting pre-drilled media. | drilled media. | |||
| '6' 'cover': This value is specified when it is desired to | '6' 'cover': This value is specified when it is desired to select | |||
| select a non-printed (or pre-printed) cover for the | a non-printed (or pre-printed) cover for the document. | |||
| document. This does not supplant the specification of a | This does not supplant the specification of a printed | |||
| printed cover (on cover stock medium) by the document | cover (on cover stock medium) by the document itself. | |||
| itself. | '7' 'bind': This value indicates that a binding is to be applied | |||
| '7' 'bind': This value indicates that a binding is to be | to the document; the type and placement of the binding is | |||
| applied to the document; the type and placement of the | site-defined." | |||
| binding is site-defined." | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| Expires December 30, 1998 | ||||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| If the client supplies a value of 'none' along with any other | If the client supplies a value of 'none' along with any other | |||
| combination of values, it is the same as if only that other | combination of values, it is the same as if only that other combination | |||
| combination of values had been supplied (that is the 'none' value has | of values had been supplied (that is the 'none' value has no effect). | |||
| no effect). | ||||
| 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) | 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) | |||
| This attribute identifies the range(s) of print-stream pages that the | This attribute identifies the range(s) of print-stream pages that the | |||
| Printer object uses for each copy of each document which are to be | Printer object uses for each copy of each document which are to be | |||
| printed. Nothing is printed for any pages identified that do not | printed. Nothing is printed for any pages identified that do not exist | |||
| exist in the document(s). Ranges MUST be in ascending order, for | in the document(s). Ranges MUST be in ascending order, for example: 1- | |||
| example: 1-3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling | 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer | |||
| Printer object can process the job in a single pass. If the ranges | object can process the job in a single pass. If the ranges are not | |||
| are not ascending or are overlapping, the IPP object MUST reject the | ascending or are overlapping, the IPP object MUST reject the request and | |||
| request and return the 'client-error-bad-request' status code. The | return the 'client-error-bad-request' status code. The attribute is | |||
| attribute is associated with print-stream pages not application- | associated with print-stream pages not application-numbered pages (for | |||
| numbered pages (for example, the page numbers found in the headers and | example, the page numbers found in the headers and or footers for | |||
| or footers for certain word processing applications). | certain word processing applications). | |||
| For Jobs with multiple documents, the "multiple-document-handling" | For Jobs with multiple documents, the "multiple-document-handling" | |||
| attribute determines what constitutes a "copy" for purposes of the | attribute determines what constitutes a "copy" for purposes of the | |||
| specified page range(s). When "multiple-document-handling" is | specified page range(s). When "multiple-document-handling" is 'single- | |||
| 'single-document', the Printer object MUST apply each supplied page | document', the Printer object MUST apply each supplied page range once | |||
| range once to the concatenation of the print-stream pages. For | to the concatenation of the print-stream pages. For example, if there | |||
| example, if there are 8 documents of 10 pages each, the page-range | are 8 documents of 10 pages each, the page-range '41:60' prints the | |||
| '41:60' prints the pages in the 5th and 6th documents as a single | pages in the 5th and 6th documents as a single document and none of the | |||
| document and none of the pages of the other documents are printed. | pages of the other documents are printed. When "multiple-document- | |||
| When "multiple-document-handling" is 'separate-document-uncollated- | ||||
| copies' or 'separate-document-collated-copies', the Printer object | Isaacson, Powell Expires May 16, 1999 | |||
| MUST apply each supplied page range repeatedly to each document copy. | handling" is 'separate-document-uncollated-copies' or 'separate- | |||
| For the same job, the page-range '1:3, 10:10' would print the first 3 | document-collated-copies', the Printer object MUST apply each supplied | |||
| pages and the 10th page of each of the 8 documents in the Job, as 8 | page range repeatedly to each document copy. For the same job, the | |||
| separate documents. | page-range '1:3, 10:10' would print the first 3 pages and the 10th page | |||
| of each of the 8 documents in the Job, as 8 separate documents. | ||||
| In most cases, the exact pages to be printed will be generated by a | In most cases, the exact pages to be printed will be generated by a | |||
| device driver and this attribute would not be required. However, when | device driver and this attribute would not be required. However, when | |||
| printing an archived document which has already been formatted, the | printing an archived document which has already been formatted, the end | |||
| end user may elect to print just a subset of the pages contained in | user may elect to print just a subset of the pages contained in the | |||
| the document. In this case, if page-range = n.m is specified, the | document. In this case, if page-range = n.m is specified, the first | |||
| first page to be printed will be page n. All subsequent pages of the | page to be printed will be page n. All subsequent pages of the document | |||
| document will be printed through and including page m. | will be printed through and including page m. | |||
| "page-ranges-supported" is a boolean value indicating whether or not | ||||
| the printer is capable of supporting the printing of page ranges. | ||||
| Expires December 30, 1998 | "page-ranges-supported" is a boolean value indicating whether or not the | |||
| This capability may differ from one PDL to another. There is no "page- | printer is capable of supporting the printing of page ranges. This | |||
| ranges-default" attribute. If the "page-ranges" attribute is not | capability may differ from one PDL to another. There is no "page-ranges- | |||
| supplied by the client, all pages of the document will be printed. | default" attribute. If the "page-ranges" attribute is not supplied by | |||
| the client, all pages of the document will be printed. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| 4.2.8 sides (type2 keyword) | 4.2.8 sides (type2 keyword) | |||
| This attribute specifies how print-stream pages are to be imposed upon | This attribute specifies how print-stream pages are to be imposed upon | |||
| the sides of an instance of a selected medium, i.e., an impression. | the sides of an instance of a selected medium, i.e., an impression. | |||
| The standard values are: | The standard keyword values are: | |||
| 'one-sided': imposes each consecutive print-stream page upon the | 'one-sided': imposes each consecutive print-stream page upon the same | |||
| same side of consecutive media sheets. | side of consecutive media sheets. | |||
| 'two-sided-long-edge': imposes each consecutive pair of print- | 'two-sided-long-edge': imposes each consecutive pair of print-stream | |||
| stream pages upon front and back sides of consecutive media | pages upon front and back sides of consecutive media sheets, such | |||
| sheets, such that the orientation of each pair of print-stream | that the orientation of each pair of print-stream pages on the | |||
| pages on the medium would be correct for the reader as if for | medium would be correct for the reader as if for binding on the | |||
| binding on the long edge. This imposition is sometimes called | long edge. This imposition is sometimes called 'duplex' or 'head- | |||
| 'duplex' or 'head-to-head'. | to-head'. | |||
| 'two-sided-short-edge': imposes each consecutive pair of print- | 'two-sided-short-edge': imposes each consecutive pair of print-stream | |||
| stream pages upon front and back sides of consecutive media | pages upon front and back sides of consecutive media sheets, such | |||
| sheets, such that the orientation of each pair of print-stream | that the orientation of each pair of print-stream pages on the | |||
| pages on the medium would be correct for the reader as if for | medium would be correct for the reader as if for binding on the | |||
| binding on the short edge. This imposition is sometimes called | short edge. This imposition is sometimes called 'tumble' or 'head- | |||
| 'tumble' or 'head-to-toe'. | to-toe'. | |||
| 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' | 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' | |||
| all work the same for portrait or landscape. However 'head-to-toe' is | all work the same for portrait or landscape. However 'head-to-toe' is | |||
| 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also | 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also | |||
| switches between 'duplex' and 'tumble' when using portrait and | switches between 'duplex' and 'tumble' when using portrait and landscape | |||
| landscape modes. | modes. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| Expires December 30, 1998 | ||||
| 4.2.9 number-up (integer(1:MAX)) | 4.2.9 number-up (integer(1:MAX)) | |||
| This attribute specifies the number of print-stream pages to impose | This attribute specifies the number of print-stream pages to impose upon | |||
| upon a single side of an instance of a selected medium. For example, | a single side of an instance of a selected medium. For example, if the | |||
| if the value is | value is: | |||
| Value Description | Value Description | |||
| '1' The Printer MUST place one print-stream page on a single | '1' the Printer MUST place one print-stream page on a single side | |||
| side of an instance of the selected medium (MAY add | of an instance of the selected medium (MAY add some sort | |||
| some sort of translation, scaling, or rotation). | of translation, scaling, or rotation). | |||
| '2' The Printer MUST place two print-stream pages on a single | '2' the Printer MUST place two print-stream pages on a single side | |||
| side of an instance of the selected medium (MAY add | of an instance of the selected medium (MAY add some sort | |||
| some sort of translation, scaling, or rotation). | of translation, scaling, or rotation). | |||
| '4' The Printer MUST place four print-stream pages on a single | '4' the Printer MUST place four print-stream pages on a single | |||
| side of an instance of the selected medium (MAY add | side of an instance of the selected medium (MAY add some | |||
| some sort of translation, scaling, or rotation). | sort of translation, scaling, or rotation). | |||
| This attribute primarily controls the translation, scaling and | This attribute primarily controls the translation, scaling and rotation | |||
| rotation of print-stream pages. | of print-stream pages. | |||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| 4.2.10 orientation-requested (type2 enum) | 4.2.10 orientation-requested (type2 enum) | |||
| This attribute indicates the desired orientation for printed print- | This attribute indicates the desired orientation for printed print- | |||
| stream pages; it does not describe the orientation of the client- | stream pages; it does not describe the orientation of the client- | |||
| supplied print-stream pages. | supplied print-stream pages. | |||
| For some document formats (such as 'application/postscript'), the | For some document formats (such as 'application/postscript'), the | |||
| desired orientation of the print-stream pages is specified within the | desired orientation of the print-stream pages is specified within the | |||
| document data. This information is generated by a device driver prior | document data. This information is generated by a device driver prior | |||
| to the submission of the print job. Other document formats (such as | to the submission of the print job. Other document formats (such as | |||
| 'text/plain') do not include the notion of desired orientation within | 'text/plain') do not include the notion of desired orientation within | |||
| the document data. In the latter case it is possible for the Printer | the document data. In the latter case it is possible for the Printer | |||
| object to bind the desired orientation to the document data after it | object to bind the desired orientation to the document data after it has | |||
| has been submitted. It is expected that a Printer object would only | been submitted. It is expected that a Printer object would only support | |||
| support "orientations-requested" for some document formats (e.g., | "orientations-requested" for some document formats (e.g., 'text/plain' | |||
| 'text/plain' or 'text/html') but not others (e.g., | or 'text/html') but not others (e.g., 'application/postscript'). This | |||
| 'application/postscript'). This is no different than any other Job | is no different than any other Job Template attribute since section 4.2, | |||
| Template attribute since section 4.2, item 1, points out that a | item 1, points out that a Printer object may support or not support any | |||
| Printer object may support or not support any Job Template attribute | Job Template attribute based on the document format supplied by the | |||
| based on the document format supplied by the client. However, a | client. However, a special mention is made here since it is very likely | |||
| special mention is made here since it is very likely that a Printer | that a Printer object will support "orientation-requested" for only a | |||
| subset of the supported document formats. | ||||
| Expires December 30, 1998 | ||||
| object will support "orientation-requested" for only a subset of the | ||||
| supported document formats. | ||||
| Standard values are: | Isaacson, Powell Expires May 16, 1999 | |||
| Standard enum values are: | ||||
| Value Symbolic Name and Description | Value Symbolic Name and Description | |||
| '3' 'portrait': The content will be imaged across the short | '3' 'portrait': The content will be imaged across the short edge | |||
| edge of the medium. | of the medium. | |||
| '4' 'landscape': The content will be imaged across the long | '4' 'landscape': The content will be imaged across the long edge | |||
| edge of the medium. Landscape is defined to be a | of the medium. Landscape is defined to be a rotation of | |||
| rotation of the print-stream page to be imaged by +90 | the print-stream page to be imaged by +90 degrees with | |||
| degrees with respect to the medium (i.e. anti- | respect to the medium (i.e. anti-clockwise) from the | |||
| clockwise) from the portrait orientation. Note: The | portrait orientation. Note: The +90 direction was | |||
| +90 direction was chosen because simple finishing on | chosen because simple finishing on the long edge is the | |||
| the long edge is the same edge whether portrait or | same edge whether portrait or landscape | |||
| landscape | '5' 'reverse-landscape': The content will be imaged across the | |||
| '5' 'reverse-landscape': The content will be imaged across the | long edge of the medium. Reverse-landscape is defined to | |||
| long edge of the medium. Reverse-landscape is defined | be a rotation of the print-stream page to be imaged by - | |||
| to be a rotation of the print-stream page to be imaged | 90 degrees with respect to the medium (i.e. clockwise) | |||
| by -90 degrees with respect to the medium (i.e. | from the portrait orientation. Note: The 'reverse- | |||
| clockwise) from the portrait orientation. Note: The | landscape' value was added because some applications | |||
| 'reverse-landscape' value was added because some | rotate landscape -90 degrees from portrait, rather than | |||
| applications rotate landscape -90 degrees from | +90 degrees. | |||
| portrait, rather than +90 degrees. | '6' 'reverse-portrait': The content will be imaged across the | |||
| '6' 'reverse-portrait': The content will be imaged across the | short edge of the medium. Reverse-portrait is defined to | |||
| short edge of the medium. Reverse-portrait is defined | be a rotation of the print-stream page to be imaged by | |||
| to be a rotation of the print-stream page to be imaged | 180 degrees with respect to the medium from the portrait | |||
| by 180 degrees with respect to the medium from the | orientation. Note: The 'reverse-portrait' value was | |||
| portrait orientation. Note: The 'reverse-portrait' | added for use with the "finishings" attribute in cases | |||
| value was added for use with the "finishings" attribute | where the opposite edge is desired for finishing a | |||
| in cases where the opposite edge is desired for | portrait document on simple finishing devices that have | |||
| finishing a portrait document on simple finishing | only one finishing position. Thus a 'text'/plain' | |||
| devices that have only one finishing position. Thus a | portrait document can be stapled "on the right" by a | |||
| 'text'/plain' portrait document can be stapled "on the | simple finishing device as is common use with some middle | |||
| right" by a simple finishing device as is common use | eastern languages such as Hebrew. | |||
| with some middle eastern languages such as Hebrew. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on jobs with multiple documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" job attribute (section | |||
| 4.2.4) and the relationship of this attribute and the other attributes | 4.2.4) and the relationship of this attribute and the other attributes | |||
| that control document processing is described in section 16.5. | that control document processing is described in section 16.3. | |||
| 4.2.11 media (type3 keyword | name(MAX)) | 4.2.11 media (type3 keyword | name(MAX)) | |||
| This attribute identifies the medium that the Printer uses for all | This attribute identifies the medium that the Printer uses for all | |||
| impressions of the Job. | impressions of the Job. | |||
| Expires December 30, 1998 | ||||
| The values for "media" include medium-names, medium-sizes, input-trays | The values for "media" include medium-names, medium-sizes, input-trays | |||
| and electronic forms so that one attribute specifies the media. If a | and electronic forms so that one attribute specifies the media. If a | |||
| Printer object supports a medium name as a value of this attribute, | Printer object supports a medium name as a value of this attribute, such | |||
| such a medium name implicitly selects an input-tray that contains the | a medium name implicitly selects an input-tray that contains the | |||
| specified medium. If a Printer object supports a medium size as a | specified medium. If a Printer object supports a medium size as a value | |||
| value of this attribute, such a medium size implicitly selects a | of this attribute, such a medium size implicitly selects a medium name | |||
| medium name that in turn implicitly selects an input-tray that | ||||
| contains the medium with the specified size. If a Printer object | ||||
| supports an input-tray as the value of this attribute, such an input- | ||||
| tray implicitly selects the medium that is in that input-tray at the | ||||
| time the job prints. This case includes manual-feed input-trays. If | ||||
| a Printer object supports an electronic form as the value of this | ||||
| attribute, such an electronic form implicitly selects a medium-name | ||||
| that in turn implicitly selects an input-tray that contains the medium | that in turn implicitly selects an input-tray that contains the medium | |||
| specified by the electronic form. The electronic form also implicitly | with the specified size. If a Printer object supports an input-tray as | |||
| selects an image that the Printer MUST merge with the document data as | the value of this attribute, such an input-tray implicitly selects the | |||
| its prints each page. | ||||
| Standard values are (taken from ISO DPA and the Printer MIB) and are | Isaacson, Powell Expires May 16, 1999 | |||
| listed in section 15. An administrator MAY define additional values | medium that is in that input-tray at the time the job prints. This case | |||
| includes manual-feed input-trays. If a Printer object supports an | ||||
| electronic form as the value of this attribute, such an electronic form | ||||
| implicitly selects a medium-name that in turn implicitly selects an | ||||
| input-tray that contains the medium specified by the electronic form. | ||||
| The electronic form also implicitly selects an image that the Printer | ||||
| MUST merge with the document data as its prints each page. | ||||
| Standard keyword values are (taken from ISO DPA and the Printer MIB) and | ||||
| are listed in section 15. An administrator MAY define additional values | ||||
| using the 'name' or 'keyword' attribute syntax, depending on | using the 'name' or 'keyword' attribute syntax, depending on | |||
| implementation. | implementation. | |||
| There is also an additional Printer attribute named "media-ready" | There is also an additional Printer attribute named "media-ready" which | |||
| which differs from "media-supported" in that legal values only include | differs from "media-supported" in that legal values only include the | |||
| the subset of "media-supported" values that are physically loaded and | subset of "media-supported" values that are physically loaded and ready | |||
| ready for printing with no operator intervention required. If an IPP | for printing with no operator intervention required. If an IPP object | |||
| object supports "media-supported", it NEED NOT support "media-ready". | supports "media-supported", it NEED NOT support "media-ready". | |||
| The relationship of this attribute and the other attributes that | The relationship of this attribute and the other attributes that control | |||
| control document processing is described in section 16.5. | document processing is described in section 16.3. | |||
| 4.2.12 printer-resolution (resolution) | 4.2.12 printer-resolution (resolution) | |||
| This attribute identifies the resolution that Printer uses for the | This attribute identifies the resolution that Printer uses for the Job. | |||
| Job. | ||||
| 4.2.13 print-quality (type2 enum) | 4.2.13 print-quality (type2 enum) | |||
| This attribute specifies the print quality that the Printer uses for | This attribute specifies the print quality that the Printer uses for the | |||
| the Job. | Job. | |||
| The standard values are: | The standard enum values are: | |||
| Value Symbolic Name and Description | Value Symbolic Name and Description | |||
| Expires December 30, 1998 | '3' 'draft': lowest quality available on the printer | |||
| '3' 'draft': lowest quality available on the printer | '4' 'normal': normal or intermediate quality on the printer | |||
| '4' 'normal': normal or intermediate quality on the printer | '5' 'high': highest quality available on the printer | |||
| '5' 'high': highest quality available on the printer | ||||
| 4.3 Job Description Attributes | 4.3 Job Description Attributes | |||
| The attributes in this section form the attribute group called "job- | The attributes in this section form the attribute group called "job- | |||
| description". The following table summarizes these attributes. The | description". The following table summarizes these attributes. The | |||
| third column indicates whether the attribute is a REQUIRED attribute | third column indicates whether the attribute is a REQUIRED attribute | |||
| that MUST be supported by Printer objects. If it is not indicated as | that MUST be supported by Printer objects. If it is not indicated as | |||
| REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' | REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' | |||
| and 'name' attributes is indicated in parenthesizes. | and 'name' attributes is indicated in parenthesizes. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | Attribute | Syntax | REQUIRED? | | | Attribute | Syntax | REQUIRED? | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-uri | uri | REQUIRED | | | job-uri | uri | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-id | integer(1:MAX) | REQUIRED | | | job-id | integer(1:MAX) | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-printer-uri | uri | REQUIRED | | | job-printer-uri | uri | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-more-info | uri | | | | job-more-info | uri | | | |||
| skipping to change at page 85, line 4 ¶ | skipping to change at page 75, line 54 ¶ | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-media-sheets | integer (0:MAX) | | | | job-media-sheets | integer (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-k-octets-processed | integer (0:MAX) | | | | job-k-octets-processed | integer (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-impressions-completed | integer (0:MAX) | | | | job-impressions-completed | integer (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-media-sheets-completed | integer (0:MAX) | | | | job-media-sheets-completed | integer (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | attributes-charset | charset | REQUIRED | | | attributes-charset | charset | REQUIRED | | |||
| Expires December 30, 1998 | ||||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | attributes-natural-language| naturalLanguage | REQUIRED | | | attributes-natural-language| naturalLanguage | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.3.1 job-uri (uri) | 4.3.1 job-uri (uri) | |||
| This REQUIRED attribute contains the URI for the job. The Printer | This REQUIRED attribute contains the URI for the job. The Printer | |||
| object, on receipt of a new job, generates a URI which identifies the | object, on receipt of a new job, generates a URI which identifies the | |||
| new Job. The Printer object returns the value of the "job-uri" | new Job. The Printer object returns the value of the "job-uri" | |||
| attribute as part of the response to a create request. The precise | attribute as part of the response to a create request. The precise | |||
| format of a Job URI is implementation dependent. If the Printer | format of a Job URI is implementation dependent. If the Printer object | |||
| object supports more than one URI and there is some relationship | supports more than one URI and there is some relationship between the | |||
| between the newly formed Job URI and the Printer object's URI, the | newly formed Job URI and the Printer object's URI, the Printer object | |||
| Printer object uses the Printer URI supplied by the client in the | uses the Printer URI supplied by the client in the create request. For | |||
| create request. For example, if the create request comes in over a | example, if the create request comes in over a secure channel, the new | |||
| secure channel, the new Job URI MUST use the same secure channel. | Job URI MUST use the same secure channel. This can be guaranteed | |||
| This can be guaranteed because the Printer object is responsible for | because the Printer object is responsible for generating the Job URI and | |||
| generating the Job URI and the Printer object is aware of its security | the Printer object is aware of its security configuration and policy as | |||
| configuration and policy as well as the Printer URI used in the create | well as the Printer URI used in the create request. | |||
| request. | ||||
| For a description of this attribute and its relationship to "job-id" | For a description of this attribute and its relationship to "job-id" and | |||
| and "job-printer-uri" attribute, see the discussion in section 2.4 on | "job-printer-uri" attribute, see the discussion in section 2.4 on | |||
| "Object Identity". | "Object Identity". | |||
| 4.3.2 job-id (integer(1:MAX)) | 4.3.2 job-id (integer(1:MAX)) | |||
| This REQUIRED attribute contains the ID of the job. The Printer, on | This REQUIRED attribute contains the ID of the job. The Printer, on | |||
| receipt of a new job, generates an ID which identifies the new Job on | receipt of a new job, generates an ID which identifies the new Job on | |||
| that Printer. The Printer returns the value of the "job-id" attribute | that Printer. The Printer returns the value of the "job-id" attribute | |||
| as part of the response to a create request. The 0 value is not | as part of the response to a create request. The 0 value is not | |||
| included to allow for compatibility with SNMP index values which also | included to allow for compatibility with SNMP index values which also | |||
| cannot be 0. | cannot be 0. | |||
| For a description of this attribute and its relationship to "job-uri" | For a description of this attribute and its relationship to "job-uri" | |||
| and "job-printer-uri" attribute, see the discussion in section 2.4 on | and "job-printer-uri" attribute, see the discussion in section 2.4 on | |||
| "Object Identity". | "Object Identity". | |||
| 4.3.3 job-printer-uri (uri) | 4.3.3 job-printer-uri (uri) | |||
| This REQUIRED attribute identifies the Printer object that created | This REQUIRED attribute identifies the Printer object that created this | |||
| this Job object. When a Printer object creates a Job object, it | Job object. When a Printer object creates a Job object, it populates | |||
| populates this attribute with the Printer object URI that was used in | this attribute with the Printer object URI that was used in the create | |||
| the create request. This attribute permits a client to identify the | request. This attribute permits a client to identify the Printer object | |||
| that created this Job object when only the Job object's URI is available | ||||
| Expires December 30, 1998 | to the client. The client queries the creating Printer object to | |||
| Printer object that created this Job object when only the Job object's | determine which languages, charsets, operations, are supported for this | |||
| URI is available to the client. The client queries the creating | Job. | |||
| Printer object to determine which languages, charsets, operations, are | ||||
| supported for this Job. | ||||
| For a description of this attribute and its relationship to "job-uri" | For a description of this attribute and its relationship to "job-uri" | |||
| and "job-id" attribute, see the discussion in section 2.4 on "Object | and "job-id" attribute, see the discussion in section 2.4 on "Object | |||
| Identity". | Identity". | |||
| 4.3.4 job-more-info (uri) | 4.3.4 job-more-info (uri) | |||
| Similar to "printer-more-info", this attribute contains the URI | Similar to "printer-more-info", this attribute contains the URI | |||
| referencing some resource with more information about this Job object, | referencing some resource with more information about this Job object, | |||
| perhaps an HTML page containing information about the Job. | perhaps an HTML page containing information about the Job. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.3.5 job-name (name(MAX)) | 4.3.5 job-name (name(MAX)) | |||
| This REQUIRED attribute is the name of the job. It is a name that is | This REQUIRED attribute is the name of the job. It is a name that is | |||
| more user friendly than the "job-uri" attribute value. It does not | more user friendly than the "job-uri" attribute value. It does not need | |||
| need to be unique between Jobs. The Job's "job-name" attribute is set | to be unique between Jobs. The Job's "job-name" attribute is set to the | |||
| to the value supplied by the client in the "job-name" operation | value supplied by the client in the "job-name" operation attribute in | |||
| attribute in the create request (see Section 3.2.1.1). If, however, | the create request (see Section 3.2.1.1). If, however, the "job-name" | |||
| the "job-name" operation attribute is not supplied by the client in | operation attribute is not supplied by the client in the create request, | |||
| the create request, the Printer object, on creation of the Job, MUST | the Printer object, on creation of the Job, MUST generate a name. The | |||
| generate a name. The printer SHOULD generate the value of the Job's | printer SHOULD generate the value of the Job's "job-name" attribute from | |||
| "job-name" attribute from the first of the following sources that | the first of the following sources that produces a value: 1) the | |||
| produces a value: 1) the "document-name" operation attribute of the | "document-name" operation attribute of the first (or only) document, 2) | |||
| first (or only) document, 2) the "document-URI" attribute of the first | the "document-URI" attribute of the first (or only) document, or 3) any | |||
| (or only) document, or 3) any other piece of Job specific and/or | other piece of Job specific and/or Document Content information. | |||
| Document Content information. | ||||
| 4.3.6 job-originating-user-name (name(MAX)) | 4.3.6 job-originating-user-name (name(MAX)) | |||
| This REQUIRED attribute contains the name of the end user that | This REQUIRED attribute contains the name of the end user that submitted | |||
| submitted the print job. The Printer object sets this attribute to | the print job. The Printer object sets this attribute to the most | |||
| the most authenticated printable name that it can obtain from the | authenticated printable name that it can obtain from the authentication | |||
| authentication service over which the IPP operation was received. | service over which the IPP operation was received. Only if such is not | |||
| Only if such is not available, does the Printer object use the value | available, does the Printer object use the value supplied by the client | |||
| supplied by the client in the "requesting-user-name" operation | in the "requesting-user-name" operation attribute of the create | |||
| attribute of the create operation (see Section 8). | operation (see Section 8). | |||
| Note: The Printer object needs to keep an internal originating user | ||||
| id of some form, typically as a credential of a principal, with the | ||||
| Job object. Since such an internal attribute is implementation- | ||||
| dependent and not of interest to clients, it is not specified as a Job | ||||
| Expires December 30, 1998 | Note: The Printer object needs to keep an internal originating user id | |||
| Description attribute. This originating user id is used for | of some form, typically as a credential of a principal, with the Job | |||
| authorization checks (if any) on all subsequent operation. | object. Since such an internal attribute is implementation-dependent | |||
| and not of interest to clients, it is not specified as a Job Description | ||||
| attribute. This originating user id is used for authorization checks | ||||
| (if any) on all subsequent operation. | ||||
| 4.3.7 job-state (type1 enum) | 4.3.7 job-state (type1 enum) | |||
| This REQUIRED attribute identifies the current state of the job. Even | This REQUIRED attribute identifies the current state of the job. Even | |||
| though the IPP protocol defines eight values for job states, | though the IPP protocol defines eight values for job states, | |||
| implementations only need to support those states which are | implementations only need to support those states which are appropriate | |||
| appropriate for the particular implementation. In other words, a | for the particular implementation. In other words, a Printer supports | |||
| Printer supports only those job states implemented by the output | only those job states implemented by the output device and available to | |||
| device and available to the Printer object implementation. | the Printer object implementation. | |||
| Standard values are: | Standard enum values are: | |||
| Values Symbolic Name and Description | Values Symbolic Name and Description | |||
| '3' 'pending': The job is a candidate to start processing, but | '3' 'pending': The job is a candidate to start processing, but is | |||
| is not yet processing. | not yet processing. | |||
| '4' 'pending-held': The job is not a candidate for processing | '4' 'pending-held': The job is not a candidate for processing for | |||
| for any number of reasons but will return to the | any number of reasons but will return to the 'pending' | |||
| 'pending' state as soon as the reasons are no longer | state as soon as the reasons are no longer present. The | |||
| present. The job's "job-state-reason" attribute MUST | job's "job-state-reason" attribute MUST indicate why the | |||
| indicate why the job is no longer a candidate for | job is no longer a candidate for processing. | |||
| processing. | ||||
| '5' 'processing': One or more of: | Isaacson, Powell Expires May 16, 1999 | |||
| '5' 'processing': One or more of: | ||||
| 1. the job is using, or is attempting to use, one or | 1. the job is using, or is attempting to use, one or | |||
| more purely software processes that are analyzing, | more purely software processes that are analyzing, | |||
| creating, or interpreting a PDL, etc., | creating, or interpreting a PDL, etc., | |||
| 2. the job is using, or is attempting to use, one or | 2. the job is using, or is attempting to use, one or | |||
| more hardware devices that are interpreting a PDL, | more hardware devices that are interpreting a PDL, making | |||
| making marks on a medium, and/or performing finishing, | marks on a medium, and/or performing finishing, such as | |||
| such as stapling, etc., | stapling, etc., | |||
| 3. the Printer object has made the job ready for | 3. the Printer object has made the job ready for | |||
| printing, but the output device is not yet printing it, | printing, but the output device is not yet printing it, | |||
| either because the job hasn't reached the output device | either because the job hasn't reached the output device | |||
| or because the job is queued in the output device or | or because the job is queued in the output device or some | |||
| some other spooler, awaiting the output device to print | other spooler, awaiting the output device to print it. | |||
| it. | ||||
| When the job is in the 'processing' state, the entire | When the job is in the 'processing' state, the entire job | |||
| job state includes the detailed status represented in | state includes the detailed status represented in the | |||
| the printer's "printer-state", "printer-state-reasons", | printer's "printer-state", "printer-state-reasons", and | |||
| and "printer-state-message" attributes. | "printer-state-message" attributes. | |||
| Expires December 30, 1998 | ||||
| Implementations MAY, though they NEED NOT, include | Implementations MAY, though they NEED NOT, include | |||
| additional values in the job's "job-state-reasons" | additional values in the job's "job-state-reasons" | |||
| attribute to indicate the progress of the job, such as | attribute to indicate the progress of the job, such as | |||
| adding the 'job-printing' value to indicate when the | adding the 'job-printing' value to indicate when the | |||
| output device is actually making marks on paper and/or | output device is actually making marks on paper and/or | |||
| the 'processing-to-stop-point' value to indicate that | the 'processing-to-stop-point' value to indicate that the | |||
| the IPP object is in the process of canceling or | IPP object is in the process of canceling or aborting the | |||
| aborting the job. Most implementations won't bother | job. Most implementations won't bother with this nuance. | |||
| with this nuance. | ||||
| '6' 'processing-stopped': The job has stopped while processing | '6' 'processing-stopped': The job has stopped while processing | |||
| for any number of reasons and will return to the | for any number of reasons and will return to the | |||
| 'processing' state as soon as the reasons are no longer | 'processing' state as soon as the reasons are no longer | |||
| present. | present. | |||
| The job's "job-state-reason" attribute MAY indicate why | The job's "job-state-reason" attribute MAY indicate why | |||
| the job has stopped processing. For example, if the | the job has stopped processing. For example, if the | |||
| output device is stopped, the 'printer-stopped' value | output device is stopped, the 'printer-stopped' value MAY | |||
| MAY be included in the job's "job-state-reasons" | be included in the job's "job-state-reasons" attribute. | |||
| attribute. | ||||
| Note: When an output device is stopped, the device | Note: When an output device is stopped, the device | |||
| usually indicates its condition in human readable form | usually indicates its condition in human readable form | |||
| locally at the device. A client can obtain more | locally at the device. A client can obtain more complete | |||
| complete device status remotely by querying the Printer | device status remotely by querying the Printer object's | |||
| object's "printer-state", "printer-state-reasons" and | "printer-state", "printer-state-reasons" and "printer- | |||
| "printer-state-message" attributes. | state-message" attributes. | |||
| '7' 'canceled': The job has been canceled by a Cancel-Job | '7' 'canceled': The job has been canceled by a Cancel-Job | |||
| operation and the Printer object has completed | operation and the Printer object has completed canceling | |||
| canceling the job and all job status attributes have | the job and all job status attributes have reached their | |||
| reached their final values for the job. While the | final values for the job. While the Printer object is | |||
| Printer object is canceling the job, the job remains in | canceling the job, the job remains in its current state, | |||
| its current state, but the job's "job-state-reasons" | ||||
| attribute SHOULD contain the 'processing-to-stop-point' | ||||
| value and one of the 'canceled-by-user', 'canceled-by- | ||||
| operator', or 'canceled-at-device' value. When the job | ||||
| moves to the 'canceled' state, the 'processing-to- | ||||
| stop-point' value, if present, MUST be removed, but the | ||||
| 'canceled-by-xxx', if present, MUST remain. | ||||
| '8' 'aborted': The job has been aborted by the system, usually | Isaacson, Powell Expires May 16, 1999 | |||
| while the job was in the 'processing' or 'processing- | but the job's "job-state-reasons" attribute SHOULD | |||
| stopped' state and the Printer has completed aborting | contain the 'processing-to-stop-point' value and one of | |||
| the job and all job status attributes have reached | the 'canceled-by-user', 'canceled-by-operator', or | |||
| their final values for the job. While the Printer | 'canceled-at-device' value. When the job moves to the | |||
| object is aborting the job, the job remains in its | 'canceled' state, the 'processing-to-stop-point' value, | |||
| current state, but the job's "job-state-reasons" | if present, MUST be removed, but the 'canceled-by-xxx', | |||
| if present, MUST remain. | ||||
| Expires December 30, 1998 | '8' 'aborted': The job has been aborted by the system, usually | |||
| attribute SHOULD contain the 'processing-to-stop-point' | while the job was in the 'processing' or 'processing- | |||
| and 'aborted-by-system' values. When the job moves to | stopped' state and the Printer has completed aborting the | |||
| the 'aborted' state, the 'processing-to-stop-point' | job and all job status attributes have reached their | |||
| value, if present, MUST be removed, but the 'aborted- | final values for the job. While the Printer object is | |||
| by-system' value, if present, MUST remain. | aborting the job, the job remains in its current state, | |||
| but the job's "job-state-reasons" attribute SHOULD | ||||
| contain the 'processing-to-stop-point' and 'aborted-by- | ||||
| system' values. When the job moves to the 'aborted' | ||||
| state, the 'processing-to-stop-point' value, if present, | ||||
| MUST be removed, but the 'aborted-by-system' value, if | ||||
| present, MUST remain. | ||||
| '9' 'completed': The job has completed successfully or with | '9' 'completed': The job has completed successfully or with | |||
| warnings or errors after processing and all of the job | warnings or errors after processing and all of the job | |||
| media sheets have been successfully stacked in the | media sheets have been successfully stacked in the | |||
| appropriate output bin(s) and all job status attributes | appropriate output bin(s) and all job status attributes | |||
| have reached their final values for the job. The job's | have reached their final values for the job. The job's | |||
| "job-state-reasons" attribute SHOULD contain one of: | "job-state-reasons" attribute SHOULD contain one of: | |||
| 'completed-successfully', 'completed-with-warnings', or | 'completed-successfully', 'completed-with-warnings', or | |||
| 'completed-with-errors' values. | 'completed-with-errors' values. | |||
| The final value for this attribute MUST be one of: 'completed', | The final value for this attribute MUST be one of: 'completed', | |||
| 'canceled', or 'aborted' before the Printer removes the job | 'canceled', or 'aborted' before the Printer removes the job altogether. | |||
| altogether. The length of time that jobs remain in the 'canceled', | The length of time that jobs remain in the 'canceled', 'aborted', and | |||
| 'aborted', and 'completed' states depends on implementation. | 'completed' states depends on implementation. | |||
| The following figure shows the normal job state transitions. | The following figure shows the normal job state transitions. | |||
| +----> canceled | +----> canceled | |||
| / | / | |||
| +----> pending --------> processing ---------+------> completed | +----> pending --------> processing ---------+------> completed | |||
| | ^ ^ \ | | ^ ^ \ | |||
| --->+ | | +----> aborted | --->+ | | +----> aborted | |||
| | v v / | | v v / | |||
| +----> pending-held processing-stopped ---+ | +----> pending-held processing-stopped ---+ | |||
| Normally a job progresses from left to right. Other state transitions | Normally a job progresses from left to right. Other state transitions | |||
| are unlikely, but are not forbidden. Not shown are the transitions to | are unlikely, but are not forbidden. Not shown are the transitions to | |||
| the 'canceled' state from the 'pending', 'pending-held', and | the 'canceled' state from the 'pending', 'pending-held', and | |||
| 'processing-stopped' states. | 'processing-stopped' states. | |||
| Jobs reach one of the three terminal states: 'completed', 'canceled', | Jobs reach one of the three terminal states: 'completed', 'canceled', or | |||
| or 'aborted', after the jobs have completed all activity, including | 'aborted', after the jobs have completed all activity, including | |||
| stacking output media, after the jobs have completed all activity, and | stacking output media, after the jobs have completed all activity, and | |||
| all job status attributes have reached their final values for the job. | all job status attributes have reached their final values for the job. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Note: As with all other IPP attributes, if the implementation can not | Note: As with all other IPP attributes, if the implementation can not | |||
| determine the correct value for this attribute, it SHOULD respond with | determine the correct value for this attribute, it SHOULD respond with | |||
| the out-of-band value 'unknown' (see section 4.1) rather than try to | the out-of-band value 'unknown' (see section 4.1) rather than try to | |||
| guess at some possibly incorrect value and give the end user the wrong | guess at some possibly incorrect value and give the end user the wrong | |||
| impression about the state of the Job object. For example, if the | impression about the state of the Job object. For example, if the | |||
| implementation is just a gateway into some printing system that does | implementation is just a gateway into some printing system that does not | |||
| not provide detailed status about the print job, the IPP Job object's | provide detailed status about the print job, the IPP Job object's state | |||
| state might literally be 'unknown'. | might literally be 'unknown'. | |||
| Expires December 30, 1998 | ||||
| 4.3.8 job-state-reasons (1setOf type2 keyword) | 4.3.8 job-state-reasons (1setOf type2 keyword) | |||
| This attribute provides additional information about the job's current | This attribute provides additional information about the job's current | |||
| state, i.e., information that augments the value of the job's "job- | state, i.e., information that augments the value of the job's "job- | |||
| state" attribute. | state" attribute. | |||
| Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT | Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT | |||
| implement them, even if (1) the output device supports the | implement them, even if (1) the output device supports the functionality | |||
| functionality represented by the reason and (2) is available to the | represented by the reason and (2) is available to the Printer object | |||
| Printer object implementation. These values MAY be used with any job | implementation. These values MAY be used with any job state or states | |||
| state or states for which the reason makes sense. Furthermore, when | for which the reason makes sense. Furthermore, when implemented, the | |||
| implemented, the Printer MUST return these values when the reason | Printer MUST return these values when the reason applies and MUST NOT | |||
| applies and MUST NOT return them when the reason no longer applies | return them when the reason no longer applies whether the value of the | |||
| whether the value of the Job's "job-state" attribute changed or not. | Job's "job-state" attribute changed or not. When the Job does not have | |||
| When the Job does not have any reasons for being in its current state, | any reasons for being in its current state, the value of the Job's "job- | |||
| the value of the Job's "job-state-reasons" attribute MUST be 'none'. | state-reasons" attribute MUST be 'none'. | |||
| Note: While values cannot be added to the 'job-state' attribute | Note: While values cannot be added to the 'job-state' attribute without | |||
| without impacting deployed clients that take actions upon receiving | impacting deployed clients that take actions upon receiving "job-state" | |||
| "job-state" values, it is the intent that additional "job-state- | values, it is the intent that additional "job-state-reasons" values can | |||
| reasons" values can be defined and registered without impacting such | be defined and registered without impacting such deployed clients. In | |||
| deployed clients. In other words, the "job-state-reasons" attribute | other words, the "job-state-reasons" attribute is intended to be | |||
| is intended to be extensible. | extensible. | |||
| The following standard values are defined. For ease of understanding, | The following standard keyword values are defined. For ease of | |||
| the values are presented in the order in which the reasons are likely | understanding, the values are presented in the order in which the | |||
| to occur (if implemented), starting with the 'job-incoming' value: | reasons are likely to occur (if implemented), starting with the 'job- | |||
| incoming' value: | ||||
| 'none': There are no reasons for the job's current state. | 'none': There are no reasons for the job's current state. | |||
| 'job-incoming': The Create-Job operation has been accepted by the | 'job-incoming': The Create-Job operation has been accepted by the | |||
| Printer, but the Printer is expecting additional Send-Document | Printer, but the Printer is expecting additional Send-Document | |||
| and/or Send-URI operations and/or is accessing/accepting document | and/or Send-URI operations and/or is accessing/accepting document | |||
| data. | data. | |||
| 'submission-interrupted': The job was not completely submitted for | 'submission-interrupted': The job was not completely submitted for | |||
| some unforeseen reason, such as: (1) the Printer has crashed | some unforeseen reason, such as: (1) the Printer has crashed before | |||
| before the job was closed by the client, (2) the Printer or the | the job was closed by the client, (2) the Printer or the document | |||
| document transfer method has crashed in some non-recoverable way | transfer method has crashed in some non-recoverable way before the | |||
| before the document data was entirely transferred to the Printer, | document data was entirely transferred to the Printer, (3) the | |||
| (3) the client crashed or failed to close the job before the | client crashed or failed to close the job before the time-out | |||
| time-out period. | period. See section 4.4.28. | |||
| 'job-outgoing': The Printer is transmitting the job to the output | 'job-outgoing': The Printer is transmitting the job to the output | |||
| device. | device. | |||
| 'job-hold-until-specified': The value of the job's "job-hold- | ||||
| until" attribute was specified with a time period that is still | ||||
| in the future. The job MUST NOT be a candidate for processing | ||||
| until this reason is removed and there are no other reasons to | ||||
| hold the job. | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 'job-hold-until-specified': The value of the job's "job-hold-until" | ||||
| attribute was specified with a time period that is still in the | ||||
| future. The job MUST NOT be a candidate for processing until this | ||||
| reason is removed and there are no other reasons to hold the job. | ||||
| 'resources-are-not-ready': At least one of the resources needed by | 'resources-are-not-ready': At least one of the resources needed by | |||
| the job, such as media, fonts, resource objects, etc., is not | the job, such as media, fonts, resource objects, etc., is not ready | |||
| ready on any of the physical printer's for which the job is a | on any of the physical printer's for which the job is a candidate. | |||
| candidate. This condition MAY be detected when the job is | This condition MAY be detected when the job is accepted, or | |||
| accepted, or subsequently while the job is pending or processing, | subsequently while the job is pending or processing, depending on | |||
| depending on implementation. The job may remain in its current | implementation. The job may remain in its current state or be | |||
| state or be moved to the 'pending-held' state, depending on | moved to the 'pending-held' state, depending on implementation | |||
| implementation and/or job scheduling policy. | and/or job scheduling policy. | |||
| 'printer-stopped-partly': The value of the Printer's "printer- | 'printer-stopped-partly': The value of the Printer's "printer-state- | |||
| state-reasons" attribute contains the value 'stopped-partly'. | reasons" attribute contains the value 'stopped-partly'. | |||
| 'printer-stopped': The value of the Printer's "printer-state" | 'printer-stopped': The value of the Printer's "printer-state" | |||
| attribute is 'stopped'. | attribute is 'stopped'. | |||
| 'job-interpreting': Job is in the 'processing' state, but more | 'job-interpreting': Job is in the 'processing' state, but more | |||
| specifically, the Printer is interpreting the document data. | specifically, the Printer is interpreting the document data. | |||
| 'job-queued': Job is in the 'processing' state, but more | 'job-queued': Job is in the 'processing' state, but more | |||
| specifically, the Printer has queued the document data. | specifically, the Printer has queued the document data. | |||
| 'job-transforming': Job is in the 'processing' state, but more | 'job-transforming': Job is in the 'processing' state, but more | |||
| specifically, the Printer is interpreting document data and | specifically, the Printer is interpreting document data and | |||
| producing another electronic representation. | producing another electronic representation. | |||
| 'job-printing': The output device is marking media. This value is | 'job-printing': The output device is marking media. This value is | |||
| useful for Printers which spend a great deal of time processing | useful for Printers which spend a great deal of time processing (1) | |||
| (1) when no marking is happening and then want to show that | when no marking is happening and then want to show that marking is | |||
| marking is now happening or (2) when the job is in the process of | now happening or (2) when the job is in the process of being | |||
| being canceled or aborted while the job remains in the | canceled or aborted while the job remains in the 'processing' | |||
| 'processing' state, but the marking has not yet stopped so that | state, but the marking has not yet stopped so that impression or | |||
| impression or sheet counts are still increasing for the job. | sheet counts are still increasing for the job. | |||
| 'job-canceled-by-user': The job was canceled by the owner of the | 'job-canceled-by-user': The job was canceled by the owner of the job | |||
| job using the Cancel-Job request, i.e., by a user whose | using the Cancel-Job request, i.e., by a user whose authenticated | |||
| authenticated identity is the same as the value of the | identity is the same as the value of the originating user that | |||
| originating user that created the Job object, or by some other | created the Job object, or by some other authorized end-user, such | |||
| authorized end-user, such as a member of the job owner's security | as a member of the job owner's security group. | |||
| group. | ||||
| 'job-canceled-by-operator': The job was canceled by the operator | 'job-canceled-by-operator': The job was canceled by the operator | |||
| using the Cancel-Job request, i.e., by a user who has been | using the Cancel-Job request, i.e., by a user who has been | |||
| authenticated as having operator privileges (whether local or | authenticated as having operator privileges (whether local or | |||
| remote). If the security policy is to allow anyone to cancel | remote). If the security policy is to allow anyone to cancel | |||
| anyone's job, then this value may be used when the job is | anyone's job, then this value may be used when the job is canceled | |||
| canceled by other than the owner of the job. For such a security | by other than the owner of the job. For such a security policy, in | |||
| policy, in effect, everyone is an operator as far as canceling | effect, everyone is an operator as far as canceling jobs with IPP | |||
| jobs with IPP is concerned. | is concerned. | |||
| 'job-canceled-at-device': The job was canceled by an unidentified | 'job-canceled-at-device': The job was canceled by an unidentified | |||
| local user, i.e., a user at a console at the device. | local user, i.e., a user at a console at the device. | |||
| 'aborted-by-system': The job (1) is in the process of being | 'aborted-by-system': The job (1) is in the process of being aborted, | |||
| aborted, (2) has been aborted by the system and placed in the | (2) has been aborted by the system and placed in the 'aborted' | |||
| 'aborted' state, or (3) has been aborted by the system and placed | state, or (3) has been aborted by the system and placed in the | |||
| in the 'pending-held' state, so that a user or operator can | 'pending-held' state, so that a user or operator can manually try | |||
| manually try the job again. | the job again. | |||
| Expires December 30, 1998 | ||||
| 'processing-to-stop-point': The requester has issued a Cancel-job | 'processing-to-stop-point': The requester has issued a Cancel-job | |||
| operation or the Printer object has aborted the job, but is still | operation or the Printer object has aborted the job, but is still | |||
| performing some actions on the job until a specified stop point | performing some actions on the job until a specified stop point | |||
| occurs or job termination/cleanup is completed. | occurs or job termination/cleanup is completed. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| This reason is recommended to be used in conjunction with the | This reason is recommended to be used in conjunction with the | |||
| 'processing' job state to indicate that the Printer object is | 'processing' job state to indicate that the Printer object is still | |||
| still performing some actions on the job while the job remains in | performing some actions on the job while the job remains in the | |||
| the 'processing' state. After all the job's job description | 'processing' state. After all the job's job description attributes | |||
| attributes have stopped incrementing, the Printer object moves | have stopped incrementing, the Printer object moves the job from | |||
| the job from the 'processing' state to the 'canceled' or | the 'processing' state to the 'canceled' or 'aborted' job states. | |||
| 'aborted' job states. | ||||
| 'service-off-line': The Printer is off-line and accepting no jobs. | 'service-off-line': The Printer is off-line and accepting no jobs. | |||
| All 'pending' jobs are put into the 'pending-held' state. This | All 'pending' jobs are put into the 'pending-held' state. This | |||
| situation could be true if the service's or document transform's | situation could be true if the service's or document transform's | |||
| input is impaired or broken. | input is impaired or broken. | |||
| 'job-completed-successfully': The job completed successfully. | 'job-completed-successfully': The job completed successfully. | |||
| 'job-completed-with-warnings': The job completed with warnings. | 'job-completed-with-warnings': The job completed with warnings. | |||
| 'job-completed-with-errors': The job completed with errors (and | 'job-completed-with-errors': The job completed with errors (and | |||
| possibly warnings too). | possibly warnings too). | |||
| 4.3.9 job-state-message (text(MAX)) | 4.3.9 job-state-message (text(MAX)) | |||
| This attribute specifies information about the "job-state" and "job- | This attribute specifies information about the "job-state" and "job- | |||
| state-reasons" attributes in human readable text. If the Printer | state-reasons" attributes in human readable text. If the Printer object | |||
| object supports this attribute, the Printer object MUST be able to | supports this attribute, the Printer object MUST be able to generate | |||
| generate this message in any of the natural languages identified by | this message in any of the natural languages identified by the Printer's | |||
| the Printer's "generated-natural-language-supported" attribute (see | "generated-natural-language-supported" attribute (see the "attributes- | |||
| the "attributes-natural-language" operation attribute specified in | natural-language" operation attribute specified in Section 3.1.4.1). | |||
| Section 3.1.4.1). | ||||
| Note: the value SHOULD NOT contain additional information not | Note: the value SHOULD NOT contain additional information not contained | |||
| contained in the values of the "job-state" and "job-states-reasons" | in the values of the "job-state" and "job-states-reasons" attributes, | |||
| attributes, such as interpreter error information. Otherwise, | such as interpreter error information. Otherwise, application programs | |||
| application programs might attempt to parse the (localized text). For | might attempt to parse the (localized text). For such additional | |||
| such additional information such as interpreter errors for application | information such as interpreter errors for application program | |||
| program consumption, a new attribute with keyword values, needs to be | consumption, a new attribute with keyword values, needs to be developed | |||
| developed and registered. | and registered. | |||
| 4.3.10 number-of-documents (integer(0:MAX)) | 4.3.10 number-of-documents (integer(0:MAX)) | |||
| This attribute indicates the number of documents in the job, i.e., the | This attribute indicates the number of documents in the job, i.e., the | |||
| number of Send-Document, Send-URI, Print-Job, or Print-URI operations | number of Send-Document, Send-URI, Print-Job, or Print-URI operations | |||
| Expires December 30, 1998 | ||||
| that the Printer has accepted for this job, regardless of whether the | that the Printer has accepted for this job, regardless of whether the | |||
| document data has reached the Printer object or not. | document data has reached the Printer object or not. | |||
| Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- | Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- | |||
| URI operations SHOULD support this attribute so that clients can query | URI operations SHOULD support this attribute so that clients can query | |||
| the number of documents in each job. | the number of documents in each job. | |||
| 4.3.11 output-device-assigned (name(127)) | 4.3.11 output-device-assigned (name(127)) | |||
| This attribute identifies the output device to which the Printer | This attribute identifies the output device to which the Printer object | |||
| object has assigned this job. If an output device implements an | has assigned this job. If an output device implements an embedded | |||
| embedded Printer object, the Printer object NEED NOT set this | Printer object, the Printer object NEED NOT set this attribute. If a | |||
| attribute. If a print server implements a Printer object, the value | ||||
| MAY be empty (zero-length string) or not returned until the Printer | Isaacson, Powell Expires May 16, 1999 | |||
| object assigns an output device to the job. This attribute is | print server implements a Printer object, the value MAY be empty (zero- | |||
| particularly useful when a single Printer object support multiple | length string) or not returned until the Printer object assigns an | |||
| devices (so called "fan-out"). | output device to the job. This attribute is particularly useful when a | |||
| single Printer object support multiple devices (so called "fan-out"). | ||||
| 4.3.12 time-at-creation (integer(0:MAX)) | 4.3.12 time-at-creation (integer(0:MAX)) | |||
| This attribute indicates the point in time at which the Job object was | This attribute indicates the point in time at which the Job object was | |||
| created. In order to populate this attribute, the Printer object uses | created. In order to populate this attribute, the Printer object uses | |||
| the value in its "printer-up-time" attribute at the time the Job | the value in its "printer-up-time" attribute at the time the Job object | |||
| object is created. | is created. | |||
| 4.3.13 time-at-processing (integer(0:MAX)) | 4.3.13 time-at-processing (integer(0:MAX)) | |||
| This attribute indicates the point in time at which the Job object | This attribute indicates the point in time at which the Job object began | |||
| began processing. In order to populate this attribute, the Printer | processing. In order to populate this attribute, the Printer object | |||
| object uses the value in its "printer-up-time" attribute at the time | uses the value in its "printer-up-time" attribute at the time the Job | |||
| the Job object is moved into the 'processing' state for the first | object is moved into the 'processing' state for the first time. | |||
| time. | ||||
| 4.3.14 time-at-completed (integer(0:MAX)) | 4.3.14 time-at-completed (integer(0:MAX)) | |||
| This attribute indicates the point in time at which the Job object | This attribute indicates the point in time at which the Job object | |||
| completed (or was cancelled or aborted). In order to populate this | completed (or was cancelled or aborted). In order to populate this | |||
| attribute, the Printer object uses the value in its "printer-up-time" | attribute, the Printer object uses the value in its "printer-up-time" | |||
| attribute at the time the Job object is moved into the 'completed' or | attribute at the time the Job object is moved into the 'completed' or | |||
| 'canceled' or 'aborted' state. | 'canceled' or 'aborted' state. | |||
| Expires December 30, 1998 | ||||
| 4.3.15 number-of-intervening-jobs (integer(0:MAX)) | 4.3.15 number-of-intervening-jobs (integer(0:MAX)) | |||
| This attribute indicates the number of jobs that are "ahead" of this | This attribute indicates the number of jobs that are "ahead" of this job | |||
| job in the relative chronological order of expected time to complete | in the relative chronological order of expected time to complete (i.e., | |||
| (i.e., the current scheduled order). For efficiency, it is only | the current scheduled order). For efficiency, it is only necessary to | |||
| necessary to calculate this value when an operation is performed that | calculate this value when an operation is performed that requests this | |||
| requests this attribute. | attribute. | |||
| 4.3.16 job-message-from-operator (text(127)) | 4.3.16 job-message-from-operator (text(127)) | |||
| This attribute provides a message from an operator, system | This attribute provides a message from an operator, system administrator | |||
| administrator or "intelligent" process to indicate to the end user the | or "intelligent" process to indicate to the end user the reasons for | |||
| reasons for modification or other management action taken on a job. | modification or other management action taken on a job. | |||
| 4.3.17 job-k-octets (integer(0:MAX)) | 4.3.17 job-k-octets (integer(0:MAX)) | |||
| This attribute specifies the total size of the document(s) in K | This attribute specifies the total size of the document(s) in K octets, | |||
| octets, i.e., in units of 1024 octets requested to be processed in the | i.e., in units of 1024 octets requested to be processed in the job. The | |||
| job. The value MUST be rounded up, so that a job between 1 and 1024 | value MUST be rounded up, so that a job between 1 and 1024 octets MUST | |||
| octets MUST be indicated as being 1, 1025 to 2048 MUST be 2, etc. | be indicated as being 1, 1025 to 2048 MUST be 2, etc. | |||
| This value MUST NOT include the multiplicative factors contributed by | This value MUST NOT include the multiplicative factors contributed by | |||
| the number of copies specified by the "copies" attribute, independent | the number of copies specified by the "copies" attribute, independent of | |||
| of whether the device can process multiple copies without making | whether the device can process multiple copies without making multiple | |||
| multiple passes over the job or document data and independent of | ||||
| whether the output is collated or not. Thus the value is independent | ||||
| of the implementation and indicates the size of the document(s) | ||||
| measured in K octets independent of the number of copies. | ||||
| This value MUST also not include the multiplicative factor due to a | Isaacson, Powell Expires May 16, 1999 | |||
| copies instruction embedded in the document data. If the document | passes over the job or document data and independent of whether the | |||
| data actually includes replications of the document data, this value | output is collated or not. Thus the value is independent of the | |||
| will include such replication. In other words, this value is always | implementation and indicates the size of the document(s) measured in K | |||
| the size of the source document data, rather than a measure of the | octets independent of the number of copies. | |||
| hardcopy output to be produced. | ||||
| Note: This attribute and the following two attributes ("job- | This value MUST also not include the multiplicative factor due to a | |||
| impressions" and "job-media-sheets") are not intended to be counters; | copies instruction embedded in the document data. If the document data | |||
| they are intended to be useful routing and scheduling information if | actually includes replications of the document data, this value will | |||
| known. For these three attributes, the Printer object may try to | include such replication. In other words, this value is always the size | |||
| compute the value if it is not supplied in the create request. Even | of the source document data, rather than a measure of the hardcopy | |||
| if the client does supply a value for these three attributes in the | output to be produced. | |||
| create request, the Printer object MAY choose to change the value if | ||||
| the Printer object is able to compute a value which is more accurate | ||||
| than the client supplied value. The Printer object may be able to | ||||
| Expires December 30, 1998 | Note: This attribute and the following two attributes ("job-impressions" | |||
| determine the correct value for these three attributes either right at | and "job-media-sheets") are not intended to be counters; they are | |||
| job submission time or at any later point in time. | intended to be useful routing and scheduling information if known. For | |||
| these three attributes, the Printer object may try to compute the value | ||||
| if it is not supplied in the create request. Even if the client does | ||||
| supply a value for these three attributes in the create request, the | ||||
| Printer object MAY choose to change the value if the Printer object is | ||||
| able to compute a value which is more accurate than the client supplied | ||||
| value. The Printer object may be able to determine the correct value | ||||
| for these three attributes either right at job submission time or at any | ||||
| later point in time. | ||||
| 4.3.18 job-impressions (integer(0:MAX)) | 4.3.18 job-impressions (integer(0:MAX)) | |||
| This attribute specifies the total size in number of impressions of | This attribute specifies the total size in number of impressions of the | |||
| the document(s) being submitted (see the definition of impression in | document(s) being submitted (see the definition of impression in section | |||
| section 13.2.5). | 13.2.5). | |||
| As with "job-k-octets", this value MUST NOT include the multiplicative | As with "job-k-octets", this value MUST NOT include the multiplicative | |||
| factors contributed by the number of copies specified by the "copies" | factors contributed by the number of copies specified by the "copies" | |||
| attribute, independent of whether the device can process multiple | attribute, independent of whether the device can process multiple copies | |||
| copies without making multiple passes over the job or document data | without making multiple passes over the job or document data and | |||
| and independent of whether the output is collated or not. Thus the | independent of whether the output is collated or not. Thus the value is | |||
| value is independent of the implementation and reflects the size of | independent of the implementation and reflects the size of the | |||
| the document(s) measured in impressions independent of the number of | document(s) measured in impressions independent of the number of copies. | |||
| copies. | ||||
| As with "job-k-octets", this value MUST also not include the | As with "job-k-octets", this value MUST also not include the | |||
| multiplicative factor due to a copies instruction embedded in the | multiplicative factor due to a copies instruction embedded in the | |||
| document data. If the document data actually includes replications of | document data. If the document data actually includes replications of | |||
| the document data, this value will include such replication. In other | the document data, this value will include such replication. In other | |||
| words, this value is always the number of impressions in the source | words, this value is always the number of impressions in the source | |||
| document data, rather than a measure of the number of impressions to | document data, rather than a measure of the number of impressions to be | |||
| be produced by the job. | produced by the job. | |||
| See the Note in the "job-k-octets" attribute that also applies to this | See the Note in the "job-k-octets" attribute that also applies to this | |||
| attribute. | attribute. | |||
| 4.3.19 job-media-sheets (integer(0:MAX)) | 4.3.19 job-media-sheets (integer(0:MAX)) | |||
| This attribute specifies the total number of media sheets to be | This attribute specifies the total number of media sheets to be produced | |||
| produced for this job. | for this job. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Unlike the "job-k-octets" and the "job-impressions" attributes, this | Unlike the "job-k-octets" and the "job-impressions" attributes, this | |||
| value MUST include the multiplicative factors contributed by the | value MUST include the multiplicative factors contributed by the number | |||
| number of copies specified by the "copies" attribute and a 'number of | of copies specified by the "copies" attribute and a 'number of copies' | |||
| copies' instruction embedded in the document data, if any. This | instruction embedded in the document data, if any. This difference | |||
| difference allows the system administrator to control the lower and | allows the system administrator to control the lower and upper bounds of | |||
| upper bounds of both (1) the size of the document(s) with "job-k- | both (1) the size of the document(s) with "job-k-octets-supported" and | |||
| octets-supported" and "job-impressions-supported" and (2) the size of | "job-impressions-supported" and (2) the size of the job with "job-media- | |||
| the job with "job-media-sheets-supported". | sheets-supported". | |||
| See the Note in the "job-k-octets" attribute that also applies to this | See the Note in the "job-k-octets" attribute that also applies to this | |||
| attribute. | attribute. | |||
| Expires December 30, 1998 | ||||
| 4.3.20 job-k-octets-processed (integer(0:MAX)) | 4.3.20 job-k-octets-processed (integer(0:MAX)) | |||
| This attribute specifies the total number of octets processed in K | This attribute specifies the total number of octets processed in K | |||
| octets, i.e., in units of 1024 octets so far. The value MUST be | octets, i.e., in units of 1024 octets so far. The value MUST be rounded | |||
| rounded up, so that a job between 1 and 1024 octets inclusive MUST be | up, so that a job between 1 and 1024 octets inclusive MUST be indicated | |||
| indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc. | as being 1, 1025 to 2048 inclusive MUST be 2, etc. | |||
| For implementations where multiple copies are produced by the | For implementations where multiple copies are produced by the | |||
| interpreter with only a single pass over the data, the final value | interpreter with only a single pass over the data, the final value MUST | |||
| MUST be equal to the value of the "job-k-octets" attribute. For | be equal to the value of the "job-k-octets" attribute. For | |||
| implementations where multiple copies are produced by the interpreter | implementations where multiple copies are produced by the interpreter by | |||
| by processing the data for each copy, the final value MUST be a | processing the data for each copy, the final value MUST be a multiple of | |||
| multiple of the value of the "job-k-octets" attribute. | the value of the "job-k-octets" attribute. | |||
| Note: This attribute and the following two attributes ("job- | Note: This attribute and the following two attributes ("job-impressions- | |||
| impressions-completed" and "job-sheets-completed") are intended to be | completed" and "job-sheets-completed") are intended to be counters. That | |||
| counters. That is, the value for a job that has not started processing | is, the value for a job that has not started processing MUST be 0. When | |||
| MUST be 0. When the job's "job-state" is 'processing' or 'processing- | the job's "job-state" is 'processing' or 'processing-stopped', this | |||
| stopped', this value is intended to contain the amount of the job that | value is intended to contain the amount of the job that has been | |||
| has been processed to the time at which the attributes are requested. | processed to the time at which the attributes are requested. | |||
| 4.3.21 job-impressions-completed (integer(0:MAX)) | 4.3.21 job-impressions-completed (integer(0:MAX)) | |||
| This job attribute specifies the number of impressions completed for | This job attribute specifies the number of impressions completed for the | |||
| the job so far. For printing devices, the impressions completed | job so far. For printing devices, the impressions completed includes | |||
| includes interpreting, marking, and stacking the output. | interpreting, marking, and stacking the output. | |||
| See the note in "job-k-octets-processed" which also applies to this | See the note in "job-k-octets-processed" which also applies to this | |||
| attribute. | attribute. | |||
| 4.3.22 job-media-sheets-completed (integer(0:MAX)) | 4.3.22 job-media-sheets-completed (integer(0:MAX)) | |||
| This job attribute specifies the media-sheets completed marking and | This job attribute specifies the media-sheets completed marking and | |||
| stacking for the entire job so far whether those sheets have been | stacking for the entire job so far whether those sheets have been | |||
| processed on one side or on both. | processed on one side or on both. | |||
| See the note in "job-k-octets-processed" which also applies to this | See the note in "job-k-octets-processed" which also applies to this | |||
| attribute. | attribute. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.3.23 attributes-charset (charset) | 4.3.23 attributes-charset (charset) | |||
| This REQUIRED attribute is populated using the value in the client | This REQUIRED attribute is populated using the value in the client | |||
| supplied "attributes-charset" attribute in the create request. It | supplied "attributes-charset" attribute in the create request. It | |||
| identifies the charset (coded character set and encoding method) used | identifies the charset (coded character set and encoding method) used by | |||
| by any Job attributes with attribute syntax 'text' and 'name' that | any Job attributes with attribute syntax 'text' and 'name' that were | |||
| supplied by the client in the create request. See Section 3.1.4 for a | ||||
| Expires December 30, 1998 | complete description of the "attributes-charset" operation attribute. | |||
| were supplied by the client in the create request. See Section 3.1.4 | ||||
| for a complete description of the "attributes-charset" operation | ||||
| attribute. | ||||
| This attribute does not indicate the charset in which the 'text' and | This attribute does not indicate the charset in which the 'text' and | |||
| 'name' values are stored internally in the Job object. The internal | 'name' values are stored internally in the Job object. The internal | |||
| charset is implementation-defined. The IPP object MUST convert from | charset is implementation-defined. The IPP object MUST convert from | |||
| whatever the internal charset is to that being requested in an | whatever the internal charset is to that being requested in an operation | |||
| operation as specified in Section 3.1.4. | as specified in Section 3.1.4. | |||
| 4.3.24 attributes-natural-language (naturalLanguage) | 4.3.24 attributes-natural-language (naturalLanguage) | |||
| This REQUIRED attribute is populated using the value in the client | This REQUIRED attribute is populated using the value in the client | |||
| supplied "attributes-natural-language" attribute in the create | supplied "attributes-natural-language" attribute in the create request. | |||
| request. It identifies the natural language used for any Job | It identifies the natural language used for any Job attributes with | |||
| attributes with attribute syntax 'text' and 'name' that were supplied | attribute syntax 'text' and 'name' that were supplied by the client in | |||
| by the client in the create request. See Section 3.1.4 for a complete | the create request. See Section 3.1.4 for a complete description of the | |||
| description of the "attributes-natural-language" operation attribute. | "attributes-natural-language" operation attribute. See Sections 4.1.1.2 | |||
| See Section 3.2.6 for how this attribute is returned in a Get-Jobs | and 4.1.2.2 for how a Natural Language Override may be supplied | |||
| operation when jobs with different natural languages are returned. | explicitly for each 'text' and 'name' attribute value that differs from | |||
| See Sections 4.1.1.2 and 4.1.2.2 for how a Natural Language Override | the value identified by the "attributes-natural-language" attribute. | |||
| may be supplied explicitly for each 'text' and 'name' attribute value | ||||
| that differs from the value identified by the "attributes-natural- | ||||
| language" attribute. | ||||
| 4.4 Printer Description Attributes | 4.4 Printer Description Attributes | |||
| These attributes form the attribute group called "printer- | These attributes form the attribute group called "printer-description". | |||
| description". The following table summarizes these attributes, their | The following table summarizes these attributes, their syntax, and | |||
| syntax, and whether or not they are REQUIRED for a Printer object to | whether or not they are REQUIRED for a Printer object to support. If | |||
| support. If they are not indicated as REQUIRED, they are OPTIONAL. | they are not indicated as REQUIRED, they are OPTIONAL. The maximum size | |||
| The maximum size in octets for 'text' and 'name' attributes is | in octets for 'text' and 'name' attributes is indicated in | |||
| indicated in parenthesizes. | parenthesizes. | |||
| Note: How these attributes are set by an Administrator is outside the | Note: How these attributes are set by an Administrator is outside the | |||
| scope of this specification. | scope of this specification. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | Attribute | Syntax | REQUIRED? | | | Attribute | Syntax | REQUIRED? | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-uri-supported | 1setOf uri | REQUIRED | | | printer-uri-supported | 1setOf uri | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | uri-security-supported | 1setOf type2 keyword | REQUIRED | | | uri-security-supported | 1setOf type2 keyword | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-name | name (127) | REQUIRED | | | printer-name | name (127) | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-location | text (127) | | | | printer-location | text (127) | | | |||
| skipping to change at page 98, line 52 ¶ | skipping to change at page 87, line 52 ¶ | |||
| | generated-natural-language-| 1setOf | REQUIRED | | | generated-natural-language-| 1setOf | REQUIRED | | |||
| | supported | naturalLanguage | | | | supported | naturalLanguage | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | document-format-default | mimeMediaType | REQUIRED | | | document-format-default | mimeMediaType | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | document-format- | 1setOf | REQUIRED | | | document-format- | 1setOf | REQUIRED | | |||
| | supported | mimeMediaType | | | | supported | mimeMediaType | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-is-accepting-jobs | boolean | REQUIRED | | | printer-is-accepting-jobs | boolean | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | queued-job-count | integer (0:MAX) | | | | queued-job-count | integer (0:MAX) | RECOMMENDED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| Expires December 30, 1998 | ||||
| | printer-message-from- | text (127) | | | | printer-message-from- | text (127) | | | |||
| | operator | | | | | operator | | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | color-supported | boolean | | | | color-supported | boolean | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| +----------------------------+----------------------+----------------+ | ||||
| | Attribute | Syntax | REQUIRED? | | ||||
| +----------------------------+----------------------+----------------+ | ||||
| | reference-uri-schemes- | 1setOf uriScheme | | | | reference-uri-schemes- | 1setOf uriScheme | | | |||
| | supported | | | | | supported | | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | pdl-override-supported | type2 keyword | REQUIRED | | | pdl-override-supported | type2 keyword | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-up-time | integer (1:MAX) | REQUIRED | | | printer-up-time | integer (1:MAX) | REQUIRED | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | printer-current-time | dateTime | | | | printer-current-time | dateTime | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | multiple-operation-time-out| integer (1:MAX) | | | | multiple-operation-time-out| integer (1:MAX) | | | |||
| skipping to change at page 99, line 38 ¶ | skipping to change at page 88, line 36 ¶ | |||
| | | (0:MAX) | | | | | (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| | job-media-sheets-supported | rangeOfInteger | | | | job-media-sheets-supported | rangeOfInteger | | | |||
| | | (0:MAX) | | | | | (0:MAX) | | | |||
| +----------------------------+----------------------+----------------+ | +----------------------------+----------------------+----------------+ | |||
| 4.4.1 printer-uri-supported (1setOf uri) | 4.4.1 printer-uri-supported (1setOf uri) | |||
| This REQUIRED Printer attribute contains at least one URI for the | This REQUIRED Printer attribute contains at least one URI for the | |||
| Printer object. It OPTIONALLY contains more than one URI for the | Printer object. It OPTIONALLY contains more than one URI for the | |||
| Printer object. An administrator determines a Printer object's | Printer object. An administrator determines a Printer object's URI(s) | |||
| URI(s) and configures this attribute to contain those URIs by some | and configures this attribute to contain those URIs by some means | |||
| means outside the scope of IPP/1.0. The precise format of this URI is | outside the scope of IPP/1.0. The precise format of this URI is | |||
| implementation dependent and depends on the protocol. See the next | implementation dependent and depends on the protocol. See the next | |||
| section for a description "uri-security-supported" which is the | section for a description "uri-security-supported" which is the REQUIRED | |||
| REQUIRED companion attribute to this "printer-uri-supported" | companion attribute to this "printer-uri-supported" attribute. See | |||
| attribute. See section 2.4 on Printer object identity and section 8.2 | section 2.4 on Printer object identity and section 8.2 on security and | |||
| on security and URIs for more information. | URIs for more information. | |||
| 4.4.2 uri-security-supported (1setOf type2 keyword) | 4.4.2 uri-security-supported (1setOf type2 keyword) | |||
| This REQUIRED Printer attribute MUST have the same cardinality | This REQUIRED Printer attribute MUST have the same cardinality (contain | |||
| (contain the same number of values) as the "printer-uri-supported" | the same number of values) as the "printer-uri-supported" attribute. | |||
| attribute. This attribute identifies the security mechanisms used for | This attribute identifies the security mechanisms used for each URI | |||
| listed in the "printer-uri-supported" attribute. The "i th" value in | ||||
| Expires December 30, 1998 | "uri-security-supported" corresponds to the "i th" value in "printer- | |||
| each URI listed in the "printer-uri-supported" attribute. The "i th" | uri-supported" and it describes the security mechanisms used for | |||
| value in "uri-security-supported" corresponds to the "i th" value in | accessing the Printer object via that URI. The following standard values | |||
| "printer-uri-supported" and it describes the security mechanisms used | are defined: | |||
| for accessing the Printer object via that URI. The following standard | ||||
| values are defined: | ||||
| 'none': There are no secure communication channel protocols in use | 'none': There are no secure communication channel protocols in use | |||
| for the given URI. | for the given URI. | |||
| 'tls': TLS 1.0 [TLS] is the secure communications channel protocol | ||||
| in use for the given URI. | Isaacson, Powell Expires May 16, 1999 | |||
| 'ssl3': SSL3 is the secure communications channel protocol in use | ||||
| for the given URI. | 'ssl3': SSL3 [SSL] is the secure communications channel protocol in | |||
| use for the given URI. | ||||
| Consider the following example. For a single Printer object, an | Consider the following example. For a single Printer object, an | |||
| administrator configures the "printer-uri-supported" and "uri- | administrator configures the "printer-uri-supported" and "uri-security- | |||
| security-supported" attributes as follows: | supported" attributes as follows: | |||
| "printer-uri-supported": 'http://acme.com/open-use-printer', | "printer-uri-supported": 'http://acme.com/open-use-printer', | |||
| 'http://acme.com/restricted-use-printer', | 'http://acme.com/restricted-use-printer', 'http://acme.com/private- | |||
| 'http://acme.com/private-printer' | printer' | |||
| "uri-security-supported": 'none', 'none', 'tls' | "uri-security-supported": 'none', 'none', 'ssl3' | |||
| In this case, one Printer object has three URIs. | In this case, one Printer object has three URIs. | |||
| - For the first URI, 'http://acme.com/open-use-printer', the value | - For the first URI, 'http://acme.com/open-use-printer', the value | |||
| 'none' in "uri-security-supported" indicates that there is no | 'none' in "uri-security-supported" indicates that there is no | |||
| secure channel protocol configured to run under HTTP. The name | secure channel protocol configured to run under HTTP. The name | |||
| implies that there is no Basic or Digest authentication being | implies that there is no Basic or Digest authentication being used, | |||
| used, but it is up to the client to determine that while using | but it is up to the client to determine that while using HTTP | |||
| HTTP underneath the IPP application protocol. | underneath the IPP application protocol. | |||
| - For the second URI, 'http://acme.com/restricted-use-printer', the | - For the second URI, 'http://acme.com/restricted-use-printer', the | |||
| value 'none' in "uri-security-supported" indicates that there is | value 'none' in "uri-security-supported" indicates that there is no | |||
| no secure channel protocol configured to run under HTTP. In this | secure channel protocol configured to run under HTTP. In this | |||
| case, although the name does imply that there is some sort of | case, although the name does imply that there is some sort of Basic | |||
| Basic or Digest authentication being used within HTTP, it is up | or Digest authentication being used within HTTP, it is up to the | |||
| to the client to determine that while using HTTP and by | client to determine that while using HTTP and by processing any | |||
| processing any '401 Unauthorized' HTTP error messages. | '401 Unauthorized' HTTP error messages. | |||
| - For the third URI, 'http://acme.com/private-printer', the value | - For the third URI, 'http://acme.com/private-printer', the value | |||
| 'tls' in "uri-security-supported" indicates that TLS is being | 'ssl3' in "uri-security-supported" indicates that SSL3 is being | |||
| used to secure the channel. The client SHOULD be prepared to use | used to secure the channel. The client SHOULD be prepared to use | |||
| TLS framing to negotiate an acceptable ciphersuite to use while | SSL3 framing to negotiate an acceptable ciphersuite to use while | |||
| communicating with the Printer object. In this case, the name | communicating with the Printer object. In this case, the name | |||
| implies the use of a secure communications channel, but the fact | implies the use of a secure communications channel, but the fact is | |||
| is made explicit by the presence of the 'tls' value in "uri- | made explicit by the presence of the 'ssl3' value in "uri-security- | |||
| security-supported". The client does not need to resort to | supported". The client does not need to resort to understanding | |||
| understanding which security it must use by following naming | which security it must use by following naming conventions or by | |||
| conventions or by parsing the URI to determine which security | parsing the URI to determine which security mechanisms are implied. | |||
| mechanisms are implied. | ||||
| Expires December 30, 1998 | ||||
| It is expected that many IPP Printer objects will be configured to | It is expected that many IPP Printer objects will be configured to | |||
| support only one channel (either configured to use TLS access or not), | support only one channel (either configured to use SSL3 access or not), | |||
| and will therefore only ever have one URI listed in the "printer-uri- | and will therefore only ever have one URI listed in the "printer-uri- | |||
| supported" attribute. No matter the configuration of the Printer | supported" attribute. No matter the configuration of the Printer object | |||
| object (whether it has only one URI or more than one URI), a client | (whether it has only one URI or more than one URI), a client MUST supply | |||
| MUST supply only one URI in the target "printer-uri" operation | only one URI in the target "printer-uri" operation attribute. | |||
| attribute. | ||||
| 4.4.3 printer-name (name(127)) | 4.4.3 printer-name (name(127)) | |||
| This REQUIRED Printer attribute contains the name of the Printer | This REQUIRED Printer attribute contains the name of the Printer object. | |||
| object. It is a name that is more end-user friendly than a URI. An | It is a name that is more end-user friendly than a URI. An administrator | |||
| administrator determines a printer's name and sets this attribute to | determines a printer's name and sets this attribute to that name. This | |||
| that name. This name may be the last part of the printer's URI or it | name may be the last part of the printer's URI or it may be unrelated. | |||
| may be unrelated. In non-US-English locales, a name may contain | In non-US-English locales, a name may contain characters that are not | |||
| characters that are not allowed in a URI. | allowed in a URI. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.4.4 printer-location (text(127)) | 4.4.4 printer-location (text(127)) | |||
| This Printer attribute identifies the location of the device. This | This Printer attribute identifies the location of the device. This could | |||
| could include things like: "in Room 123A, second floor of building | include things like: "in Room 123A, second floor of building XYZ". | |||
| XYZ". | ||||
| 4.4.5 printer-info (text(127)) | 4.4.5 printer-info (text(127)) | |||
| This Printer attribute identifies the descriptive information about | This Printer attribute identifies the descriptive information about this | |||
| this Printer object. This could include things like: "This printer | Printer object. This could include things like: "This printer can be | |||
| can be used for printing color transparencies for HR presentations", | used for printing color transparencies for HR presentations", or "Out of | |||
| or "Out of courtesy for others, please print only small (1-5 page) | courtesy for others, please print only small (1-5 page) jobs at this | |||
| jobs at this printer", or even "This printer is going away on July 1, | printer", or even "This printer is going away on July 1, 1997, please | |||
| 1997, please find a new printer". | find a new printer". | |||
| 4.4.6 printer-more-info (uri) | 4.4.6 printer-more-info (uri) | |||
| This Printer attribute contains a URI used to obtain more information | This Printer attribute contains a URI used to obtain more information | |||
| about this specific Printer object. For example, this could be an | about this specific Printer object. For example, this could be an HTTP | |||
| HTTP type URI referencing an HTML page accessible to a Web Browser. | type URI referencing an HTML page accessible to a Web Browser. The | |||
| The information obtained from this URI is intended for end user | information obtained from this URI is intended for end user consumption. | |||
| consumption. Features outside the scope of IPP can be accessed from | Features outside the scope of IPP can be accessed from this URI. The | |||
| this URI. The information is intended to be specific to this printer | information is intended to be specific to this printer instance and site | |||
| instance and site specific services (e.g. job pricing, services | specific services (e.g. job pricing, services offered, end user | |||
| offered, end user assistance). The device manufacturer may initially | assistance). The device manufacturer may initially populate this | |||
| populate this attribute. | attribute. | |||
| Expires December 30, 1998 | ||||
| 4.4.7 printer-driver-installer (uri) | 4.4.7 printer-driver-installer (uri) | |||
| This Printer attribute contains a URI to use to locate the driver | This Printer attribute contains a URI to use to locate the driver | |||
| installer for this Printer object. This attribute is intended for | installer for this Printer object. This attribute is intended for | |||
| consumption by automata. The mechanics of print driver installation | consumption by automata. The mechanics of print driver installation is | |||
| is outside the scope of IPP. The device manufacturer may initially | outside the scope of IPP. The device manufacturer may initially | |||
| populate this attribute. | populate this attribute. | |||
| 4.4.8 printer-make-and-model (text(127)) | 4.4.8 printer-make-and-model (text(127)) | |||
| This Printer attribute identifies the make and model of the device. | This Printer attribute identifies the make and model of the device. The | |||
| The device manufacturer may initially populate this attribute. | device manufacturer may initially populate this attribute. | |||
| 4.4.9 printer-more-info-manufacturer (uri) | 4.4.9 printer-more-info-manufacturer (uri) | |||
| This Printer attribute contains a URI used to obtain more information | This Printer attribute contains a URI used to obtain more information | |||
| about this type of device. The information obtained from this URI is | about this type of device. The information obtained from this URI is | |||
| intended for end user consumption. Features outside the scope of IPP | intended for end user consumption. Features outside the scope of IPP | |||
| can be accessed from this URI (e.g., latest firmware, upgrades, print | can be accessed from this URI (e.g., latest firmware, upgrades, print | |||
| drivers, optional features available, details on color support). The | drivers, optional features available, details on color support). The | |||
| information is intended to be germane to this printer without regard | information is intended to be germane to this printer without regard to | |||
| to site specific modifications or services. The device manufacturer | site specific modifications or services. The device manufacturer may | |||
| may initially populate this attribute. | initially populate this attribute. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.4.10 printer-state (type1 enum) | 4.4.10 printer-state (type1 enum) | |||
| This REQUIRED Printer attribute identifies the current state of the | This REQUIRED Printer attribute identifies the current state of the | |||
| device. The "printer-state reasons" attribute augments the "printer- | device. The "printer-state reasons" attribute augments the "printer- | |||
| state" attribute to give more detailed information about the Printer | state" attribute to give more detailed information about the Printer in | |||
| in the given printer state. | the given printer state. | |||
| A Printer object need only update this attribute before responding to | ||||
| an operation which requests the attribute; the Printer object NEED NOT | ||||
| update this attribute continually, since asynchronous event | ||||
| notification is not part of IPP/1.0. A Printer NEED NOT implement all | ||||
| values if they are not applicable to a given implementation. | ||||
| The following standard values are defined: | A Printer object need only update this attribute before responding to an | |||
| operation which requests the attribute; the Printer object NEED NOT | ||||
| update this attribute continually, since asynchronous event notification | ||||
| is not part of IPP/1.0. A Printer NEED NOT implement all values if they | ||||
| are not applicable to a given implementation. | ||||
| Value Symbolic Name and Description | The following standard enum values are defined: | |||
| '3' 'idle': If a Printer receives a job (whose required | Value Symbolic Name and Description | |||
| resources are ready) while in this state, such a job | ||||
| MUST transit into the processing state immediately. If | ||||
| the printer-state-reasons attribute contains any | ||||
| Expires December 30, 1998 | '3' 'idle': If a Printer receives a job (whose required resources | |||
| reasons, they MUST be reasons that would not prevent a | are ready) while in this state, such a job MUST transit | |||
| job from transiting into the processing state | into the 'processing' state immediately. If the | |||
| immediately, e.g., toner-low. Note: if a Printer | "printer-state-reasons" attribute contains any reasons, | |||
| controls more than one output device, the above | they MUST be reasons that would not prevent a job from | |||
| definition implies that a Printer is idle if at least | transiting into the 'processing' state immediately, e.g., | |||
| one output device is idle. | 'toner-low'. Note: if a Printer controls more than one | |||
| output device, the above definition implies that a | ||||
| Printer is 'idle' if at least one output device is idle. | ||||
| '4' 'processing': If a Printer receives a job (whose required | '4' 'processing': If a Printer receives a job (whose required | |||
| resources are ready) while in this state, such a job | resources are ready) while in this state, such a job MUST | |||
| MUST transit into the pending state immediately. Such a | transit into the 'pending' state immediately. Such a job | |||
| job MUST transit into the processing state only after | MUST transit into the 'processing' state only after jobs | |||
| jobs ahead of it complete. If the printer-state- | ahead of it complete. If the "printer-state-reasons" | |||
| reasons attribute contains any reasons, they MUST be | attribute contains any reasons, they MUST be reasons that | |||
| reasons that do not prevent the current job from | do not prevent the current job from printing, e.g. | |||
| printing, e.g. toner-low. Note: if a Printer controls | 'toner-low'. Note: if a Printer controls more than one | |||
| more than one output device, the above definition | output device, the above definition implies that a | |||
| implies that a Printer is processing if at least one | Printer is 'processing' if at least one output device is | |||
| output device is processing, and none is idle. | processing, and none is idle. | |||
| '5' 'stopped': If a Printer receives a job (whose required | '5' 'stopped': If a Printer receives a job (whose required | |||
| resources are ready) while in this state, such a job | resources are ready) while in this state, such a job MUST | |||
| MUST transit into the pending state immediately. Such a | transit into the 'pending' state immediately. Such a job | |||
| job MUST transit into the processing state only after | MUST transit into the 'processing' state only after some | |||
| some human fixes the problem that stopped the printer | human fixes the problem that stopped the printer and | |||
| and after jobs ahead of it complete printing. If | after jobs ahead of it complete processing. If | |||
| supported, the "printer-state-reasons" attribute MUST | supported, the "printer-state-reasons" attribute MUST | |||
| contain at least one reason, e.g. media-jam, which | contain at least one reason, e.g. 'media-jam', which | |||
| prevents it from either processing the current job or | prevents it from either processing the current job or | |||
| transitioning a pending job to the processing state. | transitioning a 'pending' job to the 'processing' state. | |||
| Note: if a Printer controls more than one output | Note: if a Printer controls more than one output device, | |||
| device, the above definition implies that a Printer is | the above definition implies that a Printer is 'stopped' | |||
| stopped only if all output devices are stopped. Also, | only if all output devices are stopped. Also, it is | |||
| it is tempting to define stopped as when a sufficient | tempting to define 'stopped' as when a sufficient number | |||
| number of output devices are stopped and leave it to an | ||||
| implementation to define the sufficient number. But | Isaacson, Powell Expires May 16, 1999 | |||
| such a rule complicates the definition of stopped and | of output devices are stopped and leave it to an | |||
| processing. For example, with this alternate definition | implementation to define the sufficient number. But such | |||
| of stopped, a job can move from idle to processing | a rule complicates the definition of 'stopped' and | |||
| without human intervention, even though the Printer is | 'processing'. For example, with this alternate definition | |||
| stopped. | of 'stopped', a job can move from 'pending' to | |||
| 'processing' without human intervention, even though the | ||||
| Printer is stopped. | ||||
| 4.4.11 printer-state-reasons (1setOf type2 keyword) | 4.4.11 printer-state-reasons (1setOf type2 keyword) | |||
| This Printer attribute supplies additional detail about the device's | This Printer attribute supplies additional detail about the device's | |||
| state. | state. | |||
| Expires December 30, 1998 | Each keyword value MAY have a suffix to indicate its level of severity. | |||
| Each keyword value MAY have a suffix to indicate its level of | The three levels are: report (least severe), warning, and error (most | |||
| severity. The three levels are: report (least severe), warning, and | severe). | |||
| error (most severe). | ||||
| - '-report': This suffix indicates that the reason is a "report". | - '-report': This suffix indicates that the reason is a "report". An | |||
| An implementation may choose to omit some or all reports. Some | implementation may choose to omit some or all reports. Some reports | |||
| reports specify finer granularity about the printer state; others | specify finer granularity about the printer state; others serve as | |||
| serve as a precursor to a warning. A report MUST contain nothing | a precursor to a warning. A report MUST contain nothing that could | |||
| that could affect the printed output. | affect the printed output. | |||
| - '-warning': This suffix indicates that the reason is a "warning". | - '-warning': This suffix indicates that the reason is a "warning". | |||
| An implementation may choose to omit some or all warnings. | An implementation may choose to omit some or all warnings. Warnings | |||
| Warnings serve as a precursor to an error. A warning MUST contain | serve as a precursor to an error. A warning MUST contain nothing | |||
| nothing that prevents a job from completing, though in some cases | that prevents a job from completing, though in some cases the | |||
| the output may be of lower quality. | output may be of lower quality. | |||
| - '-error': This suffix indicates that the reason is an "error". | - '-error': This suffix indicates that the reason is an "error". An | |||
| An implementation MUST include all errors. If this attribute | implementation MUST include all errors. If this attribute contains | |||
| contains one or more errors, printer MUST be in the stopped | one or more errors, printer MUST be in the stopped state. | |||
| state. | ||||
| If the implementation does not add any one of the three suffixes, all | If the implementation does not add any one of the three suffixes, all | |||
| parties MUST assume that the reason is an "error". | parties MUST assume that the reason is an "error". | |||
| If a Printer object controls more than one output device, each value | If a Printer object controls more than one output device, each value of | |||
| of this attribute MAY apply to one or more of the output devices. An | this attribute MAY apply to one or more of the output devices. An error | |||
| error on one output device that does not stop the Printer object as a | on one output device that does not stop the Printer object as a whole | |||
| whole MAY appear as a warning in the Printer's "printer-state-reasons | MAY appear as a warning in the Printer's "printer-state-reasons | |||
| attribute". If the "printer-state" for such a Printer has a value of | attribute". If the "printer-state" for such a Printer has a value of | |||
| 'stopped', then there MUST be an error reason among the values in the | 'stopped', then there MUST be an error reason among the values in the | |||
| "printer-state-reasons" attribute. | "printer-state-reasons" attribute. | |||
| The following standard values are defined: | The following standard keyword values are defined: | |||
| 'other': The device has detected an error other than one listed in | 'other': The device has detected an error other than one listed in | |||
| this document. | this document. | |||
| 'none': There are not reasons. This state reason is semantically | 'none': There are not reasons. This state reason is semantically | |||
| equivalent to "printer-state-reasons" without any value. | equivalent to "printer-state-reasons" without any value. | |||
| 'media-needed': A tray has run out of media. | 'media-needed': A tray has run out of media. | |||
| 'media-jam': The device has a media jam. | 'media-jam': The device has a media jam. | |||
| 'paused': Someone has paused the Printer object. In this state, a | 'paused': Someone has paused the Printer object. In this state, a | |||
| Printer MUST NOT produce printed output, but it MUST perform | Printer MUST NOT produce printed output, but it MUST perform other | |||
| other operations requested by a client. If a Printer had been | operations requested by a client. If a Printer had been printing a | |||
| printing a job when the Printer was paused, the Printer MUST | ||||
| resume printing that job when the Printer is no longer paused and | Isaacson, Powell Expires May 16, 1999 | |||
| leave no evidence in the printed output of such a pause. | job when the Printer was paused, the Printer MUST resume printing | |||
| that job when the Printer is no longer paused and leave no evidence | ||||
| in the printed output of such a pause. | ||||
| 'shutdown': Someone has removed a Printer object from service, and | 'shutdown': Someone has removed a Printer object from service, and | |||
| the device may be powered down or physically removed. In this | the device may be powered down or physically removed. In this | |||
| state, a Printer object MUST NOT produce printed output, and | state, a Printer object MUST NOT produce printed output, and unless | |||
| unless the Printer object is realized by a print server that is | the Printer object is realized by a print server that is still | |||
| active, the Printer object MUST perform no other operations | ||||
| Expires December 30, 1998 | requested by a client, including returning this value. If a Printer | |||
| still active, the Printer object MUST perform no other operations | object had been printing a job when it was shutdown, the Printer | |||
| requested by a client, including returning this value. If a | NEED NOT resume printing that job when the Printer is no longer | |||
| Printer object had been printing a job when it was shutdown, the | shutdown. If the Printer resumes printing such a job, it may leave | |||
| Printer NEED NOT resume printing that job when the Printer is no | evidence in the printed output of such a shutdown, e.g. the part | |||
| longer shutdown. If the Printer resumes printing such a job, it | printed before the shutdown may be printed a second time after the | |||
| may leave evidence in the printed output of such a shutdown, e.g. | shutdown. | |||
| the part printed before the shutdown may be printed a second time | 'connecting-to-device': The Printer object has scheduled a job on the | |||
| after the shutdown. | output device and is in the process of connecting to a shared | |||
| 'connecting-to-device': The Printer object has scheduled a job on | ||||
| the output device and is in the process of connecting to a shared | ||||
| network output device (and might not be able to actually start | network output device (and might not be able to actually start | |||
| printing the job for an arbitrarily long time depending on the | printing the job for an arbitrarily long time depending on the | |||
| usage of the output device by other servers on the network). | usage of the output device by other servers on the network). | |||
| 'timed-out': The server was able to connect to the output device | 'timed-out': The server was able to connect to the output device (or | |||
| (or is always connected), but was unable to get a response from | is always connected), but was unable to get a response from the | |||
| the output device. | output device. | |||
| 'stopping': The Printer object is in the process of stopping the | 'stopping': The Printer object is in the process of stopping the | |||
| device and will be stopped in a while. When the device is | device and will be stopped in a while. When the device is stopped, | |||
| stopped, the Printer object will change the Printer object's | the Printer object will change the Printer object's state to | |||
| state to 'stopped'. The 'stopping-warning' reason is never an | 'stopped'. The 'stopping-warning' reason is never an error, even | |||
| error, even for a Printer with a single output device. When an | for a Printer with a single output device. When an output-device | |||
| output-device ceases accepting jobs, the Printer will have this | ceases accepting jobs, the Printer will have this reason while the | |||
| reason while the output device completes printing. | output device completes printing. | |||
| 'stopped-partly': When a Printer object controls more than one | 'stopped-partly': When a Printer object controls more than one output | |||
| output device, this reason indicates that one or more output | device, this reason indicates that one or more output devices are | |||
| devices are stopped. If the reason is a report, fewer than half | stopped. If the reason is a report, fewer than half of the output | |||
| of the output devices are stopped. If the reason is a warning, | devices are stopped. If the reason is a warning, fewer than all of | |||
| fewer than all of the output devices are stopped. | the output devices are stopped. | |||
| 'toner-low': The device is low on toner. | 'toner-low': The device is low on toner. | |||
| 'marker-supply-low': The device is low on marker supply (ink, | 'marker-supply-low': The device is low on marker supply (ink, paint, | |||
| paint, etc.). | etc.). | |||
| 'spool-area-full': The limit of persistent storage allocated for | 'spool-area-full': The limit of persistent storage allocated for | |||
| spooling has been reached. | spooling has been reached. | |||
| 'cover-open': One or more covers on the device are open. | 'cover-open': One or more covers on the device are open. | |||
| 'interlock-open': One or more interlock devices on the printer are | 'interlock-open': One or more interlock devices on the printer are | |||
| unlocked. | unlocked. | |||
| 'door-open': One or more doors on the device are open. | 'door-open': One or more doors on the device are open. | |||
| 'input-tray-missing': One or more input trays are not in the | 'input-tray-missing': One or more input trays are not in the device. | |||
| device. | ||||
| 'media-low': At least one input tray is low on media. | 'media-low': At least one input tray is low on media. | |||
| 'media-empty': At least one input tray is empty. | 'media-empty': At least one input tray is empty. | |||
| 'output-tray-missing': One or more output trays are not in the | 'output-tray-missing': One or more output trays are not in the device | |||
| device | ||||
| 'output-area-almost-full': One or more output area is almost full | 'output-area-almost-full': One or more output area is almost full | |||
| (e.g. tray, stacker, collator). | (e.g. tray, stacker, collator). | |||
| 'output-area-full': One or more output area is full. (e.g. tray, | 'output-area-full': One or more output area is full. (e.g. tray, | |||
| stacker, collator) | stacker, collator) | |||
| 'marker-supply-low': The device is low on at least one marker supply. | ||||
| (e.g. toner, ink, ribbon) | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 'marker-supply-low': The device is low on at least one marker | ||||
| supply. (e.g. toner, ink, ribbon) | ||||
| 'marker-supply-empty: The device is out of at least one marker | 'marker-supply-empty: The device is out of at least one marker | |||
| supply. (e.g. toner, ink, ribbon) | supply. (e.g. toner, ink, ribbon) | |||
| 'marker-waste-almost-full': The device marker supply waste | 'marker-waste-almost-full': The device marker supply waste receptacle | |||
| receptacle is almost full. | is almost full. | |||
| 'marker-waste-full': The device marker supply waste receptacle is | 'marker-waste-full': The device marker supply waste receptacle is | |||
| full. | full. | |||
| 'fuser-over-temp': The fuser temperature is above normal. | 'fuser-over-temp': The fuser temperature is above normal. | |||
| 'fuser-under-temp': The fuser temperature is below normal. | 'fuser-under-temp': The fuser temperature is below normal. | |||
| 'opc-near-eol': The optical photo conductor is near end of life. | 'opc-near-eol': The optical photo conductor is near end of life. | |||
| 'opc-life-over': The optical photo conductor is no longer | 'opc-life-over': The optical photo conductor is no longer | |||
| functioning. | functioning. | |||
| 'developer-low': The device is low on developer. | 'developer-low': The device is low on developer. | |||
| 'developer-empty: The device is out of developer. | 'developer-empty: The device is out of developer. | |||
| 'interpreter-resource-unavailable': An interpreter resource is | 'interpreter-resource-unavailable': An interpreter resource is | |||
| unavailable (i.e. font, form) | unavailable (i.e. font, form) | |||
| 4.4.12 printer-state-message (text(MAX)) | 4.4.12 printer-state-message (text(MAX)) | |||
| This Printer attribute specifies the additional information about the | This Printer attribute specifies the additional information about the | |||
| printer state and printer state reasons in human readable text. If | printer state and printer state reasons in human readable text. If the | |||
| the Printer object supports this attribute, the Printer object MUST be | Printer object supports this attribute, the Printer object MUST be able | |||
| able to generate this message in any of the natural languages | to generate this message in any of the natural languages identified by | |||
| identified by the Printer's "generated-natural-language-supported" | the Printer's "generated-natural-language-supported" attribute (see the | |||
| attribute (see the "attributes-natural-language" operation attribute | "attributes-natural-language" operation attribute specified in Section | |||
| specified in Section 3.1.4.1). | 3.1.4.1). | |||
| 4.4.13 operations-supported (1setOf type2 enum) | 4.4.13 operations-supported (1setOf type2 enum) | |||
| This REQUIRED Printer attribute specifies the set of supported | This REQUIRED Printer attribute specifies the set of supported | |||
| operations for this Printer object and contained Job objects. No 32- | operations for this Printer object and contained Job objects. All 32- | |||
| bit enum value for this attribute MUST exceed 0x8FFF, since these | bit enum values for this attribute MUST NOT exceed 0x8FFF, since these | |||
| values are passed in two octets in each Protocol request [IPP-PRO]. | values are passed in two octets in each Protocol request [IPP-PRO]. | |||
| The following standard values are defined: | The following standard enum and "operation-id" (see section 3.1.2) | |||
| values are defined: | ||||
| Value Operation Name | Value Operation Name | |||
| ----------------- ------------------------------------- | ----------------- ------------------------------------- | |||
| 0x0000 reserved, not used | 0x0000 reserved, not used | |||
| 0x0001 reserved, not used | 0x0001 reserved, not used | |||
| 0x0002 Print-Job | 0x0002 Print-Job | |||
| 0x0003 Print-URI | 0x0003 Print-URI | |||
| 0x0004 Validate-Job | 0x0004 Validate-Job | |||
| Expires December 30, 1998 | ||||
| 0x0005 Create-Job | 0x0005 Create-Job | |||
| 0x0006 Send-Document | 0x0006 Send-Document | |||
| 0x0007 Send-URI | 0x0007 Send-URI | |||
| 0x0008 Cancel-Job | 0x0008 Cancel-Job | |||
| 0x0009 Get-Job-Attributes | 0x0009 Get-Job-Attributes | |||
| 0x000A Get-Jobs | 0x000A Get-Jobs | |||
| 0x000B Get-Printer-Attributes | 0x000B Get-Printer-Attributes | |||
| 0x000C-0x3FFF reserved for future operations | 0x000C-0x3FFF reserved for future operations | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 0x4000-0x8FFF reserved for private extensions | 0x4000-0x8FFF reserved for private extensions | |||
| This allows for certain vendors to implement private extensions that | This allows for certain vendors to implement private extensions that are | |||
| are guaranteed to not conflict with future registered extensions. | guaranteed to not conflict with future registered extensions. However, | |||
| However, there is no guarantee that two or more private extensions | there is no guarantee that two or more private extensions will not | |||
| will not conflict. | conflict. | |||
| 4.4.14 charset-configured (charset) | 4.4.14 charset-configured (charset) | |||
| This REQUIRED Printer attribute identifies the charset that the | This REQUIRED Printer attribute identifies the charset that the Printer | |||
| Printer object has been configured to represent 'text' and 'name' | object has been configured to represent 'text' and 'name' Printer | |||
| Printer attributes that are set by the operator, system administrator, | attributes that are set by the operator, system administrator, or | |||
| or manufacturer, i.e., for "printer-name" (name), "printer-location" | manufacturer, i.e., for "printer-name" (name), "printer-location" | |||
| (text), "printer-info" (text), and "printer-make-and-model" (text). | (text), "printer-info" (text), and "printer-make-and-model" (text). | |||
| Therefore, the value of the Printer object's "charset-configured" | Therefore, the value of the Printer object's "charset-configured" | |||
| attribute MUST also be among the values of the Printer object's | attribute MUST also be among the values of the Printer object's | |||
| "charset-supported" attribute. | "charset-supported" attribute. | |||
| 4.4.15 charset-supported (1setOf charset) | 4.4.15 charset-supported (1setOf charset) | |||
| This REQUIRED Printer attribute identifies the set of charsets that | This REQUIRED Printer attribute identifies the set of charsets that the | |||
| the Printer and contained Job objects support in attributes with | Printer and contained Job objects support in attributes with attribute | |||
| attribute syntax 'text' and 'name'. At least the value 'utf-8' MUST be | syntax 'text' and 'name'. At least the value 'utf-8' MUST be present, | |||
| present, since IPP objects MUST support the UTF-8 [RFC2044] charset. | since IPP objects MUST support the UTF-8 [RFC2044] charset. If a | |||
| If a Printer object supports a charset, it means that for all | Printer object supports a charset, it means that for all attributes of | |||
| attributes of syntax 'text' and 'name' the IPP object MUST (1) accept | syntax 'text' and 'name' the IPP object MUST (1) accept the charset in | |||
| the charset in requests and return the charset in responses as needed. | requests and return the charset in responses as needed. | |||
| If more charsets than UTF-8 are supported, the IPP object MUST perform | If more charsets than UTF-8 are supported, the IPP object MUST perform | |||
| charset conversion between the charsets as described in Section | charset conversion between the charsets as described in Section 3.2.1.2. | |||
| 3.2.1.2. | ||||
| 4.4.16 natural-language-configured (naturalLanguage) | 4.4.16 natural-language-configured (naturalLanguage) | |||
| This REQUIRED Printer attribute identifies the natural language that | This REQUIRED Printer attribute identifies the natural language that the | |||
| the Printer object has been configured to represent 'text' and 'name' | Printer object has been configured to represent 'text' and 'name' | |||
| Printer attributes that are set by the operator, system administrator, | Printer attributes that are set by the operator, system administrator, | |||
| Expires December 30, 1998 | ||||
| or manufacturer, i.e., for "printer-name" (name), "printer-location" | or manufacturer, i.e., for "printer-name" (name), "printer-location" | |||
| (text), "printer-info" (text), and "printer-make-and-model" (text). | (text), "printer-info" (text), and "printer-make-and-model" (text). | |||
| When returning these Printer attributes, the Printer object MAY return | When returning these Printer attributes, the Printer object MAY return | |||
| them in the configured natural language specified by this attribute, | them in the configured natural language specified by this attribute, | |||
| instead of the natural language requested by the client in the | instead of the natural language requested by the client in the | |||
| "attributes-natural-language" operation attribute. See Section | "attributes-natural-language" operation attribute. See Section 3.1.4.1 | |||
| 3.1.4.1 for the specification of the OPTIONAL multiple natural | for the specification of the OPTIONAL multiple natural language support. | |||
| language support. Therefore, the value of the Printer object's | Therefore, the value of the Printer object's "natural-language- | |||
| "natural-language-configured" attribute MUST also be among the values | configured" attribute MUST also be among the values of the Printer | |||
| of the Printer object's "generated-natural-language-supported" | object's "generated-natural-language-supported" attribute. | |||
| attribute. | ||||
| 4.4.17 generated-natural-language-supported (1setOf naturalLanguage) | 4.4.17 generated-natural-language-supported (1setOf naturalLanguage) | |||
| This REQUIRED Printer attribute identifies the natural language(s) | This REQUIRED Printer attribute identifies the natural language(s) that | |||
| that the Printer object and contained Job objects support in | the Printer object and contained Job objects support in attributes with | |||
| attributes with attribute syntax 'text' and 'name'. The natural | attribute syntax 'text' and 'name'. The natural language(s) supported | |||
| language(s) supported depends on implementation and/or configuration. | ||||
| Unlike charsets, IPP objects MUST accept requests with any natural | Isaacson, Powell Expires May 16, 1999 | |||
| language or any Natural Language Override whether the natural language | depends on implementation and/or configuration. Unlike charsets, IPP | |||
| is supported or not. | objects MUST accept requests with any natural language or any Natural | |||
| Language Override whether the natural language is supported or not. | ||||
| If a Printer object supports a natural language, it means that for any | If a Printer object supports a natural language, it means that for any | |||
| of the attributes for which the Printer or Job object generates | of the attributes for which the Printer or Job object generates | |||
| messages, i.e., for the "job-state-message" and "printer-state- | messages, i.e., for the "job-state-message" and "printer-state-message" | |||
| message" attributes and Operation Messages (see Section 3.1.5) in | attributes and Operation Messages (see Section 3.1.5) in operation | |||
| operation responses, the Printer and Job objects MUST be able to | responses, the Printer and Job objects MUST be able to generate messages | |||
| generate messages in any of the Printer's supported natural languages. | in any of the Printer's supported natural languages. See section 3.1.4 | |||
| See section 3.1.4 for the specification of 'text' and 'name' | for the specification of 'text' and 'name' attributes in operation | |||
| attributes in operation requests and responses. | requests and responses. | |||
| Note: A Printer object that supports multiple natural languages, often | Note: A Printer object that supports multiple natural languages, often | |||
| has separate catalogs of messages, one for each natural language | has separate catalogs of messages, one for each natural language | |||
| supported. | supported. | |||
| 4.4.18 document-format-default (mimeMediaType) | 4.4.18 document-format-default (mimeMediaType) | |||
| This Printer attribute identifies the document format that the Printer | This REQUIRED Printer attribute identifies the document format that the | |||
| object has been configured to assume if the client does not supply a | Printer object has been configured to assume if the client does not | |||
| "document-format" operation attribute in any of the operation requests | supply a "document-format" operation attribute in any of the operation | |||
| that supply document data. The standard values for this attribute are | requests that supply document data. The standard values for this | |||
| Internet Media types (sometimes called MIME types). For further | attribute are Internet Media types (sometimes called MIME types). For | |||
| details see the description of the 'mimeMediaType' attribute syntax in | further details see the description of the 'mimeMediaType' attribute | |||
| Section 4.1.9. | syntax in Section 4.1.9. | |||
| Expires December 30, 1998 | ||||
| 4.4.19 document-format-supported (1setOf mimeMediaType) | 4.4.19 document-format-supported (1setOf mimeMediaType) | |||
| This Printer attribute identifies the set of document formats that the | This REQUIRED Printer attribute identifies the set of document formats | |||
| Printer object and contained Job objects can support. For further | that the Printer object and contained Job objects can support. For | |||
| details see the description of the 'mimeMediaType' attribute syntax in | further details see the description of the 'mimeMediaType' attribute | |||
| Section 4.1.9. | syntax in Section 4.1.9. | |||
| 4.4.20 printer-is-accepting-jobs (boolean) | 4.4.20 printer-is-accepting-jobs (boolean) | |||
| This REQUIRED Printer attribute indicates whether the printer is | This REQUIRED Printer attribute indicates whether the printer is | |||
| currently able to accept jobs, i.e., is accepting Print-Job, Print- | currently able to accept jobs, i.e., is accepting Print-Job, Print-URI, | |||
| URI, and Create-Job requests. If the value is 'true', the printer is | and Create-Job requests. If the value is 'true', the printer is | |||
| accepting jobs. If the value is 'false', the Printer object is | accepting jobs. If the value is 'false', the Printer object is | |||
| currently rejecting any jobs submitted to it. In this case, the | currently rejecting any jobs submitted to it. In this case, the Printer | |||
| Printer object returns the 'server-error-not-accepting-jobs' status | object returns the 'server-error-not-accepting-jobs' status code. | |||
| code. | ||||
| Note: This value is independent of the "printer-state" and "printer- | Note: This value is independent of the "printer-state" and "printer- | |||
| state-reasons" attributes because its value does not affect the | state-reasons" attributes because its value does not affect the current | |||
| current job; rather it affects future jobs. This attribute may cause | job; rather it affects future jobs. This attribute may cause the | |||
| the Printer to reject jobs when the "printer-state" is 'idle' or it | Printer to reject jobs when the "printer-state" is 'idle' or it may | |||
| may cause the Printer object to accepts jobs when the "printer-state" | cause the Printer object to accepts jobs when the "printer-state" is | |||
| is 'stopped'. | 'stopped'. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 4.4.21 queued-job-count (integer(0:MAX)) | 4.4.21 queued-job-count (integer(0:MAX)) | |||
| This Printer attribute contains a count of the number of jobs that are | This RECOMMENDED Printer attribute contains a count of the number of | |||
| either 'pending', 'processing', 'pending-held', or 'processing- | jobs that are either 'pending', 'processing', 'pending-held', or | |||
| stopped' and is set by the Printer object. | 'processing-stopped' and is set by the Printer object. | |||
| 4.4.22 printer-message-from-operator (text(127)) | 4.4.22 printer-message-from-operator (text(127)) | |||
| This Printer attribute provides a message from an operator, system | This Printer attribute provides a message from an operator, system | |||
| administrator or "intelligent" process to indicate to the end user | administrator or "intelligent" process to indicate to the end user | |||
| information or status of the printer, such as why it is unavailable or | information or status of the printer, such as why it is unavailable or | |||
| when it is expected to be available. | when it is expected to be available. | |||
| 4.4.23 color-supported (boolean) | 4.4.23 color-supported (boolean) | |||
| This Printer attribute identifies whether the device is capable of any | This Printer attribute identifies whether the device is capable of any | |||
| type of color printing at all, including highlight color. All | type of color printing at all, including highlight color. All document | |||
| document instructions having to do with color are embedded within the | instructions having to do with color are embedded within the document | |||
| document PDL (none are external IPP attributes in IPP/1.0). | PDL (none are external IPP attributes in IPP/1.0). | |||
| Expires December 30, 1998 | ||||
| Note: end-users are able to determine the nature and details of the | Note: end-users are able to determine the nature and details of the | |||
| color support by querying the "printer-more-info-manufacturer" Printer | color support by querying the "printer-more-info-manufacturer" Printer | |||
| attribute. | attribute. | |||
| 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) | 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) | |||
| This Printer attribute specifies which URI schemes are supported for | This Printer attribute specifies which URI schemes are supported for use | |||
| use in the "document-uri" operation attribute of the Print-URI or | in the "document-uri" operation attribute of the Print-URI or Send-URI | |||
| Send-URI operation. If a Printer object supports these optional | operation. If a Printer object supports these optional operations, it | |||
| operations, it MUST support the "reference-uri-schemes-supported" | MUST support the "reference-uri-schemes-supported" Printer attribute | |||
| Printer attribute with at least the following schemed URI value: | with at least the following schemed URI value: | |||
| 'ftp': The Printer object will use an FTP 'get' operation as | 'ftp': The Printer object will use an FTP 'get' operation as defined | |||
| defined in RFC 2228 [RFC2228] using FTP URLs as defined by | in RFC 2228 [RFC2228] using FTP URLs as defined by [RFC2396] | |||
| [RFC1738] and[RFC2316]. | and[RFC2316]. | |||
| The Printer object MAY OPTIONALLY support other URI schemes (see | The Printer object MAY OPTIONALLY support other URI schemes (see section | |||
| section 4.1.6). | 4.1.6). | |||
| 4.4.25 pdl-override-supported (type2 keyword) | 4.4.25 pdl-override-supported (type2 keyword) | |||
| This REQUIRED Printer attribute expresses the ability for a particular | This REQUIRED Printer attribute expresses the ability for a particular | |||
| Printer implementation to either attempt to override document data | Printer implementation to either attempt to override document data | |||
| instructions with IPP attributes or not. | instructions with IPP attributes or not. | |||
| This attribute takes on the following values: | This attribute takes on the following values: | |||
| - 'attempted': This value indicates that the Printer object | - 'attempted': This value indicates that the Printer object attempts | |||
| attempts to make the IPP attribute values take precedence over | to make the IPP attribute values take precedence over embedded | |||
| embedded instructions in the document data, however there is no | instructions in the document data, however there is no guarantee. | |||
| guarantee. | ||||
| - 'not-attempted': This value indicates that the Printer object | Isaacson, Powell Expires May 16, 1999 | |||
| makes no attempt to make the IPP attribute values take precedence | ||||
| over embedded instructions in the document data. | - 'not-attempted': This value indicates that the Printer object makes | |||
| no attempt to make the IPP attribute values take precedence over | ||||
| embedded instructions in the document data. | ||||
| Section 16 contains a full description of how this attribute interacts | Section 16 contains a full description of how this attribute interacts | |||
| with and affects other IPP attributes, especially the "ipp-attribute- | with and affects other IPP attributes, especially the "ipp-attribute- | |||
| fidelity" attribute. | fidelity" attribute. | |||
| 4.4.26 printer-up-time (integer(1:MAX)) | 4.4.26 printer-up-time (integer(1:MAX)) | |||
| This REQUIRED Printer attribute indicates the amount of time (in | This REQUIRED Printer attribute indicates the amount of time (in | |||
| seconds) that this instance of this Printer implementation has been up | seconds) that this instance of this Printer implementation has been up | |||
| and running. This value is used to populate the Job attributes "time- | and running. This value is used to populate the Job attributes "time- | |||
| at-creation", "time-at-processing", and "time-at-completed". These | at-creation", "time-at-processing", and "time-at-completed". These time | |||
| values are all measured in seconds and all have meaning only relative to | ||||
| Expires December 30, 1998 | this attribute, "printer-up-time". The value is a monotonically | |||
| time values are all measured in seconds and all have meaning only | increasing value starting from 1 when the Printer object is started-up | |||
| relative to this attribute, "printer-up-time". The value is a | (initialized, booted, etc.). | |||
| monotonically increasing value starting from 1 when the Printer object | ||||
| is started-up (initialized, booted, etc.). | ||||
| If the Printer object goes down at some value 'n', and comes back up, | If the Printer object goes down at some value 'n', and comes back up, | |||
| the implementation MAY: | the implementation MAY: | |||
| 1. Know how long it has been down, and resume at some value greater | 1. Know how long it has been down, and resume at some value greater | |||
| than 'n', or | than 'n', or | |||
| 2. Restart from 1. | 2. Restart from 1. | |||
| In the first case, the Printer SHOULD not tweak any existing related | In the first case, the Printer SHOULD not tweak any existing related Job | |||
| Job attributes ("time-at-creation", "time-at-processing", and "time- | attributes ("time-at-creation", "time-at-processing", and "time-at- | |||
| at-completed"). In the second case, the Printer object SHOULD reset | completed"). In the second case, the Printer object SHOULD reset those | |||
| those attributes to 0. If a client queries a time-related Job | attributes to 0. If a client queries a time-related Job attribute and | |||
| attribute and finds the value to be 0, the client MUST assume that the | finds the value to be 0, the client MUST assume that the Job was | |||
| Job was submitted in some life other than the Printer's current life. | submitted in some life other than the Printer's current life. | |||
| 4.4.27 printer-current-time (dateTime) | 4.4.27 printer-current-time (dateTime) | |||
| This Printer attribute indicates the current absolute wall-clock time. | This Printer attribute indicates the current absolute wall-clock time. | |||
| If an implementation supports this attribute, then a client could | If an implementation supports this attribute, then a client could | |||
| calculate the absolute wall-clock time each Job's "time-at-creation", | calculate the absolute wall-clock time each Job's "time-at-creation", | |||
| "time-at-processing", and "time-at-completed" attributes by using both | "time-at-processing", and "time-at-completed" attributes by using both | |||
| "printer-up-time" and this attribute, "printer-current-time". If an | "printer-up-time" and this attribute, "printer-current-time". If an | |||
| implementation does not support this attribute, a client can only | implementation does not support this attribute, a client can only | |||
| calculate the relative time of certain events based on the REQUIRED | calculate the relative time of certain events based on the REQUIRED | |||
| "printer-up-time" attribute. | "printer-up-time" attribute. | |||
| 4.4.28 multiple-operation-time-out (integer(1:MAX)) | 4.4.28 multiple-operation-time-out (integer(1:MAX)) | |||
| This Printer attributes identifies how long (in seconds) the Printer | This Printer attributes identifies the minimum time (in seconds) that | |||
| object waits for additional Send-Document or Send-URI operations to | the Printer object waits for additional Send-Document or Send-URI | |||
| follow a still-open multi-document Job object before taking one of the | operations to follow a still-open multi-document Job object before | |||
| actions indicated in section 3.3.1. | taking any recovery actions, such as the ones indicated in section | |||
| 3.3.1. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| It is RECOMMENDED that vendors supply a value for this attribute that is | ||||
| between 60 and 240 seconds. An implementation MAY allow a system | ||||
| administrator to set this attribute. If so, the system administrator | ||||
| MAY be able to set values outside this range. | ||||
| 4.4.29 compression-supported (1setOf type3 keyword) | 4.4.29 compression-supported (1setOf type3 keyword) | |||
| This Printer attribute identifies the set of supported compression | This Printer attribute identifies the set of supported compression | |||
| algorithms for document data. Compression only applies to the | algorithms for document data. Compression only applies to the document | |||
| document data; compression does not apply to the encoding of the IPP | data; compression does not apply to the encoding of the IPP operation | |||
| operation itself. The supported values are used to validate the | itself. The supported values are used to validate the client supplied | |||
| client supplied "compression" operation attributes in Print-Job, Send- | "compression" operation attributes in Print-Job, Send-Document, and | |||
| Document, and Send-URI requests. | Send-URI requests. | |||
| Expires December 30, 1998 | ||||
| Standard values are : | Standard values are : | |||
| 'none': no compression is used. | 'none': no compression is used. | |||
| 'deflate': ZIP public domain inflate/deflate) compression | 'deflate': ZIP public domain inflate/deflate) compression technology | |||
| technology | ||||
| 'gzip' GNU zip compression technology described in RFC 1952 | 'gzip' GNU zip compression technology described in RFC 1952 | |||
| [RFC1952]. | [RFC1952]. | |||
| 'compress': UNIX compression technology | 'compress': UNIX compression technology | |||
| 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) | 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds of total | This Printer attribute specifies the upper and lower bounds of total | |||
| sizes of jobs in K octets, i.e., in units of 1024 octets. The | sizes of jobs in K octets, i.e., in units of 1024 octets. The supported | |||
| supported values are used to validate the client supplied "job-k- | values are used to validate the client supplied "job-k-octets" operation | |||
| octets" operation attributes in create requests. The corresponding | attributes in create requests. The corresponding job description | |||
| job description attribute "job-k-octets" is defined in section 4.3.17. | attribute "job-k-octets" is defined in section 4.3.17. | |||
| 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) | 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds for the | This Printer attribute specifies the upper and lower bounds for the | |||
| number of impressions per job. The supported values are used to | number of impressions per job. The supported values are used to validate | |||
| validate the client supplied "job-impressions" operation attributes in | the client supplied "job-impressions" operation attributes in create | |||
| create requests. The corresponding job description attribute "job- | requests. The corresponding job description attribute "job-impressions" | |||
| impressions" is defined in section 4.3.18. | is defined in section 4.3.18. | |||
| 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) | 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds for the | This Printer attribute specifies the upper and lower bounds for the | |||
| number of media sheets per job. The supported values are used to | number of media sheets per job. The supported values are used to | |||
| validate the client supplied "job-media-sheets" operation attributes | validate the client supplied "job-media-sheets" operation attributes in | |||
| in create requests. The corresponding Job attribute "job-media- | create requests. The corresponding Job attribute "job-media-sheets" is | |||
| sheets" is defined in section 4.3.19. | defined in section 4.3.19. | |||
| 5. Conformance | 5. Conformance | |||
| This section describes conformance issues and requirements. This | This section describes conformance issues and requirements. This | |||
| document introduces model entities such as objects, operations, | document introduces model entities such as objects, operations, | |||
| attributes, attribute syntaxes, and attribute values. These | ||||
| conformance sections describe the conformance requirements which apply | ||||
| to these model entities. | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| attributes, attribute syntaxes, and attribute values. These conformance | ||||
| sections describe the conformance requirements which apply to these | ||||
| model entities. | ||||
| 5.1 Client Conformance Requirements | 5.1 Client Conformance Requirements | |||
| A conforming client MUST support all REQUIRED operations as defined in | A conforming client MUST support all REQUIRED operations as defined in | |||
| this document. For each attribute included in an operation request, a | this document. For each attribute included in an operation request, a | |||
| conforming client MUST supply a value whose type and value syntax | conforming client MUST supply a value whose type and value syntax | |||
| conforms to the requirements of the Model document as specified in | conforms to the requirements of the Model document as specified in | |||
| Sections 3 and 4. A conforming client MAY supply any registered | Sections 3 and 4. A conforming client MAY supply any registered | |||
| extensions and/or private extensions in an operation request, as long | extensions and/or private extensions in an operation request, as long as | |||
| as they meet the requirements in Section 6. | they meet the requirements in Section 6. | |||
| Otherwise, there are no conformance requirements placed on the user | Otherwise, there are no conformance requirements placed on the user | |||
| interfaces provided by IPP clients or their applications. For | interfaces provided by IPP clients or their applications. For example, | |||
| example, one application might not allow an end user to submit | one application might not allow an end user to submit multiple documents | |||
| multiple documents per job, while another does. One application might | per job, while another does. One application might first query a | |||
| first query a Printer object in order to supply a graphical user | Printer object in order to supply a graphical user interface (GUI) | |||
| interface (GUI) dialogue box with supported and default values whereas | dialogue box with supported and default values whereas a different | |||
| a different implementation might not. | implementation might not. | |||
| When sending a request, an IPP client NEED NOT supply any attributes | When sending a request, an IPP client NEED NOT supply any attributes | |||
| that are indicated as OPTIONALLY supplied by the client. | that are indicated as OPTIONALLY supplied by the client. | |||
| A client MUST be able to accept any of the attribute syntaxes defined | A client MUST be able to accept any of the attribute syntaxes defined in | |||
| in Section 4.1, including their full range, that may be returned to it | Section 4.1, including their full range, that may be returned to it in a | |||
| in a response from a Printer object. For presentation purposes, | response from a Printer object. In particular for each attribute that | |||
| truncation of long attribute values is not recommended. A recommended | the client supports whose attribute syntax is 'text', the client MUST | |||
| approach would be for the client implementation to allow the user to | accept and process both the 'textWithoutLanguage' and 'textWithLanguage' | |||
| scroll through long attribute values. | forms. Similarly, for each attribute that the client supports whose | |||
| attribute syntax is 'name', the client MUST accept and process both the | ||||
| 'nameWithoutLanguage' and 'nameWithLanguage' forms. For presentation | ||||
| purposes, truncation of long attribute values is not recommended. A | ||||
| recommended approach would be for the client implementation to allow the | ||||
| user to scroll through long attribute values. | ||||
| A query response may contain attribute groups, attributes, and values | A query response may contain attribute groups, attributes, and values | |||
| that the client does not expect. Therefore, a client implementation | that the client does not expect. Therefore, a client implementation | |||
| MUST gracefully handle such responses and not refuse to inter-operate | MUST gracefully handle such responses and not refuse to inter-operate | |||
| with a conforming Printer that is returning extended registered or | with a conforming Printer that is returning extended registered or | |||
| private attributes and/or attribute values that conform to Section 6. | private attributes and/or attribute values that conform to Section 6. | |||
| Clients may choose to ignore any parameters, attributes, or values | Clients may choose to ignore any parameters, attributes, or values that | |||
| that they do not understand. | they do not understand. | |||
| 5.2 IPP Object Conformance Requirements | 5.2 IPP Object Conformance Requirements | |||
| This section specifies the conformance requirements for conforming | This section specifies the conformance requirements for conforming | |||
| implementations with respect to objects, operations, and attributes. | implementations with respect to objects, operations, and attributes. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 5.2.1 Objects | 5.2.1 Objects | |||
| Conforming implementations MUST implement all of the model objects as | Conforming implementations MUST implement all of the model objects as | |||
| defined in this specification in the indicated sections: | defined in this specification in the indicated sections: | |||
| Expires December 30, 1998 | ||||
| Section 2.1 - Printer Object | Section 2.1 - Printer Object | |||
| Section 2.2 - Job Object | Section 2.2 - Job Object | |||
| 5.2.2 Operations | 5.2.2 Operations | |||
| Conforming IPP object implementations MUST implement all of the | Conforming IPP object implementations MUST implement all of the REQUIRED | |||
| REQUIRED model operations, including REQUIRED responses, as defined in | model operations, including REQUIRED responses, as defined in this | |||
| this specification in the indicated sections: | specification in the indicated sections: | |||
| For a Printer object: | For a Printer object: | |||
| Print-Job (section 3.2.1) REQUIRED | Print-Job (section 3.2.1) REQUIRED | |||
| Print-URI (section 3.2.2) OPTIONAL | Print-URI (section 3.2.2) OPTIONAL | |||
| Validate-Job (section 3.2.3) REQUIRED | Validate-Job (section 3.2.3) REQUIRED | |||
| Create-Job (section 3.2.4) OPTIONAL | Create-Job (section 3.2.4) OPTIONAL | |||
| Get-Printer-Attributes (section 3.2.5) REQUIRED | Get-Printer-Attributes (section 3.2.5) REQUIRED | |||
| Get-Jobs (section 3.2.6) REQUIRED | Get-Jobs (section 3.2.6) REQUIRED | |||
| For a Job object: | For a Job object: | |||
| Send-Document (section 3.3.1) OPTIONAL | Send-Document (section 3.3.1) OPTIONAL | |||
| Send-URI (section 3.3.2) OPTIONAL | Send-URI (section 3.3.2) OPTIONAL | |||
| Cancel-Job (section 3.3.3) REQUIRED | Cancel-Job (section 3.3.3) REQUIRED | |||
| Get-Job-Attributes (section 3.3.4) REQUIRED | Get-Job-Attributes (section 3.3.4) REQUIRED | |||
| Conforming IPP objects MUST support all REQUIRED operation attributes | Conforming IPP objects MUST support all REQUIRED operation attributes | |||
| and all values of such attributes if so indicated in the description. | and all values of such attributes if so indicated in the description. | |||
| Conforming IPP objects MUST ignore all unsupported or unknown | Conforming IPP objects MUST ignore all unsupported or unknown operation | |||
| operation attributes or operation attribute groups received in a | attributes or operation attribute groups received in a request, but MUST | |||
| request, but MUST reject a request that contains a supported operation | reject a request that contains a supported operation attribute that | |||
| attribute that contains an unsupported value. | contains an unsupported value. | |||
| The following section on object attributes specifies the support | The following section on object attributes specifies the support | |||
| required for object attributes. | required for object attributes. | |||
| 5.2.3 IPP Object Attributes | 5.2.3 IPP Object Attributes | |||
| Conforming IPP objects MUST support all of the REQUIRED object | Conforming IPP objects MUST support all of the REQUIRED object | |||
| attributes, as defined in this specification in the indicated | attributes, as defined in this specification in the indicated sections. | |||
| sections. | ||||
| If an object supports an attribute, it MUST support only those values | If an object supports an attribute, it MUST support only those values | |||
| specified in this document or through the extension mechanism | specified in this document or through the extension mechanism described | |||
| described in section 5.2.4. It MAY support any non-empty subset of | in section 5.2.4. It MAY support any non-empty subset of these values. | |||
| these values. That is, it MUST support at least one of the specified | That is, it MUST support at least one of the specified values and at | |||
| values and at most all of them. | most all of them. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 5.2.4 Extensions | 5.2.4 Extensions | |||
| A conforming IPP object MAY support registered extensions and private | A conforming IPP object MAY support registered extensions and private | |||
| extensions, as long as they meet the requirements specified in Section | extensions, as long as they meet the requirements specified in Section | |||
| 6. | 6. | |||
| For each attribute included in an operation response, a conforming IPP | For each attribute included in an operation response, a conforming IPP | |||
| object MUST return a value whose type and value syntax conforms to the | object MUST return a value whose type and value syntax conforms to the | |||
| requirement of the Model document as specified in Sections 3 and 4. | requirement of the Model document as specified in Sections 3 and 4. | |||
| 5.2.5 Attribute Syntaxes | 5.2.5 Attribute Syntaxes | |||
| An IPP object MUST be able to accept any of the attribute syntaxes | An IPP object MUST be able to accept any of the attribute syntaxes | |||
| defined in Section 4.1, including their full range, in any operation | defined in Section 4.1, including their full range, in any operation in | |||
| in which a client may supply attributes or the system administrator | which a client may supply attributes or the system administrator may | |||
| may configure attributes (by means outside the scope of IPP/1.0). | configure attributes (by means outside the scope of IPP/1.0). In | |||
| Furthermore, an IPP object MUST return attributes to the client in | particular for each attribute that the IPP object supports whose | |||
| operation responses that conform to the syntax specified in Section | attribute syntax is 'text', the IPP object MUST accept and process both | |||
| 4.1, including their full range if supplied previously by a client. | the 'textWithoutLanguage' and 'textWithLanguage' forms. Similarly, for | |||
| each attribute that the IPP object supports whose attribute syntax is | ||||
| 'name', the IPP object MUST accept and process both the | ||||
| 'nameWithoutLanguage' and 'nameWithLanguage' forms. Furthermore, an IPP | ||||
| object MUST return attributes to the client in operation responses that | ||||
| conform to the syntax specified in Section 4.1, including their full | ||||
| range if supplied previously by a client. | ||||
| 5.3 Charset and Natural Language Requirements | 5.3 Charset and Natural Language Requirements | |||
| All clients and IPP objects MUST support the 'utf-8' charset as | All clients and IPP objects MUST support the 'utf-8' charset as defined | |||
| defined in section 4.1.7. | in section 4.1.7. | |||
| IPP objects MUST be able to accept any client request which correctly | IPP objects MUST be able to accept any client request which correctly | |||
| uses the "attributes-natural-language" operation attribute or the | uses the "attributes-natural-language" operation attribute or the | |||
| Natural Language Override mechanism on any individual attribute | Natural Language Override mechanism on any individual attribute whether | |||
| whether or not the natural language is supported by the IPP object. | or not the natural language is supported by the IPP object. If an IPP | |||
| If an IPP object supports a natural language, then it MUST be able to | object supports a natural language, then it MUST be able to translate | |||
| translate (perhaps by table lookup) all generated 'text' or 'name' | (perhaps by table lookup) all generated 'text' or 'name' attribute | |||
| attribute values into one of the supported languages (see section | values into one of the supported languages (see section 3.1.4). That | |||
| 3.1.4). That is, the IPP object that supports a natural language NEED | is, the IPP object that supports a natural language NEED NOT be a | |||
| NOT be a general purpose translator of any arbitrary 'text' or 'name' | general purpose translator of any arbitrary 'text' or 'name' value | |||
| value supplied by the client into that natural language. However, the | supplied by the client into that natural language. However, the object | |||
| object MUST be able to translate (automatically generate) any of its | MUST be able to translate (automatically generate) any of its own | |||
| own attribute values and messages into that natural language. | attribute values and messages into that natural language. | |||
| 5.4 Security Conformance Requirements | 5.4 Security Conformance Requirements | |||
| Conforming IPP Printer objects MAY support Transport Layer Security | Conforming IPP Printer objects MAY support Secure Socket Layer Version 3 | |||
| (TLS) access, support access without TLS or support both means of | (SSL3) [SSL] access, support access without SSL3 or support both means | |||
| access. | of access. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| Conforming IPP clients SHOULD support TLS access and non-TLS access. | Conforming IPP clients SHOULD support SSL3 access and non-SSL3 access. | |||
| Note: This client requirement to support both means that conforming | Note: This client requirement to support both means that conforming IPP | |||
| IPP clients will be able to inter-operate with any IPP Printer object. | clients will be able to inter-operate with any IPP Printer object. | |||
| For a detailed discussion of security considerations and the IPP | For a detailed discussion of security considerations and the IPP | |||
| application security profile required for TLS support, see section 8. | application security profile required for SSL3 support, see section 8. | |||
| 6. IANA Considerations (registered and private extensions) | 6. IANA Considerations (registered and private extensions) | |||
| This section describes how IPP can be extended to allow the following | This section describes how IPP can be extended to allow the following | |||
| registered and private extensions to IPP: | registered and private extensions to IPP: | |||
| 1. keyword attribute values | 1. keyword attribute values | |||
| 2. enum attribute values | 2. enum attribute values | |||
| 3. attributes | 3. attributes | |||
| 4. attribute syntaxes | 4. attribute syntaxes | |||
| 5. operations | 5. operations | |||
| 6. status codes | 6. attribute groups | |||
| 7. status codes | ||||
| Extensions registered for use with IPP/1.0 are OPTIONAL for client and | Extensions registered for use with IPP/1.0 are OPTIONAL for client and | |||
| IPP object conformance to the IPP/1.0 Model specification. | IPP object conformance to the IPP/1.0 Model specification. | |||
| These extension procedures are aligned with the guidelines as set | These extension procedures are aligned with the guidelines as set forth | |||
| forth by the IESG [IANA-CON]. Section 12 describes how to propose new | by the IESG [IANA-CON]. Section 12 describes how to propose new | |||
| registrations for consideration. IANA will reject registration | registrations for consideration. IANA will reject registration | |||
| proposals that leave out required information or do not follow the | proposals that leave out required information or do not follow the | |||
| appropriate format described in Section 12. IPP/1.0 may also be | appropriate format described in Section 12. IPP/1.0 may also be | |||
| extended by an appropriate RFC that specifies any of the above | extended by an appropriate RFC that specifies any of the above | |||
| extensions. | extensions. | |||
| 6.1 Typed 'keyword' and 'enum' Extensions | 6.1 Typed 'keyword' and 'enum' Extensions | |||
| IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.3 and | IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 and | |||
| 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic | 4.1.4). This document uses prefixes to the 'keyword' and 'enum' basic | |||
| attribute syntax type in order to communicate extra information to the | attribute syntax type in order to communicate extra information to the | |||
| reader through its name. This extra information is not represented in | reader through its name. This extra information is not represented in | |||
| the protocol because it is unimportant to a client or Printer object. | the protocol because it is unimportant to a client or Printer object. | |||
| The list below describes the prefixes and their meaning. | The list below describes the prefixes and their meaning. | |||
| "type1": The IPP specification must be revised to add a new | "type1": The IPP specification must be revised to add a new keyword | |||
| keyword or a new enum. No private keywords or enums are allowed. | or a new enum. No private keywords or enums are allowed. | |||
| "type2": Implementers can, at any time, add new keyword or enum | "type2": Implementers can, at any time, add new keyword or enum | |||
| values by proposing the complete specification to IANA: | values by proposing the complete specification to IANA: | |||
| Expires December 30, 1998 | ||||
| iana@iana.org | iana@iana.org | |||
| IANA will forward the registration proposal to the IPP Designated | IANA will forward the registration proposal to the IPP Designated | |||
| Expert who will review the proposal with a mailing list that the | Expert who will review the proposal with a mailing list that the | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Designated Expert keeps for this purpose. Initially, that list | Designated Expert keeps for this purpose. Initially, that list | |||
| will be the mailing list used by the IPP WG: | will be the mailing list used by the IPP WG: | |||
| ipp@pwg.org | ipp@pwg.org | |||
| even after the IPP WG is disbanded as permitted by [IANA-CON]. | even after the IPP WG is disbanded as permitted by [IANA-CON]. The | |||
| The IPP Designated Expert is appointed by the IESG Area Director | IPP Designated Expert is appointed by the IESG Area Director | |||
| responsible for IPP, according to [IANA-CON]. | responsible for IPP, according to [IANA-CON]. | |||
| When a type2 keyword or enum is approved, the IPP Designated | When a type2 keyword or enum is approved, the IPP Designated Expert | |||
| Expert becomes the point of contact for any future maintenance | becomes the point of contact for any future maintenance that might | |||
| that might be required for that registration. | be required for that registration. | |||
| "type3": Implementers can, at any time, add new keyword and enum | "type3": Implementers can, at any time, add new keyword and enum | |||
| values by submitting the complete specification to IANA as for | values by submitting the complete specification to IANA as for | |||
| type2 who will forward the proposal to the IPP Designated Expert. | type2 who will forward the proposal to the IPP Designated Expert. | |||
| While no additional technical review is required, the IPP | While no additional technical review is required, the IPP | |||
| Designated Expert may, at his/her discretion, forward the | Designated Expert may, at his/her discretion, forward the proposal | |||
| proposal to the same mailing list as for type2 registrations for | to the same mailing list as for type2 registrations for advice and | |||
| advice and comment. | comment. | |||
| When a type3 keyword or enum is approved by the IPP Designated | When a type3 keyword or enum is approved by the IPP Designated | |||
| Expert, the original proposer becomes the point of contact for | Expert, the original proposer becomes the point of contact for any | |||
| any future maintenance that might be required for that | future maintenance that might be required for that registration. | |||
| registration. | ||||
| For type2 and type3 keywords, the proposer includes the name of the | For type2 and type3 keywords, the proposer includes the name of the | |||
| keyword in the registration proposal and the name is part of the | keyword in the registration proposal and the name is part of the | |||
| technical review. | technical review. | |||
| After type2 and type3 enums specifications are approved, the IPP | After type2 and type3 enums specifications are approved, the IPP | |||
| Designated Expert in consultation with IANA assigns the next available | Designated Expert in consultation with IANA assigns the next available | |||
| enum number for each enum value. | enum number for each enum value. | |||
| IANA will publish approved type2 and type3 keyword and enum attributes | IANA will publish approved type2 and type3 keyword and enum attributes | |||
| value registration specifications in: | value registration specifications in: | |||
| ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt | ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt | |||
| where xxx is the attribute name that specifies the initial values and | where xxx is the attribute name that specifies the initial values and | |||
| yyy.txt is a descriptive file name that contains one or more enums or | yyy.txt is a descriptive file name that contains one or more enums or | |||
| keywords approved at the same time. For example, if several | keywords approved at the same time. For example, if several additional | |||
| additional enums for stapling are approved for use with the | enums for stapling are approved for use with the "finishings" attribute | |||
| "finishings" attribute (and "finishings-default" and "finishings- | (and "finishings-default" and "finishings-supported" attributes), IANA | |||
| will publish the additional values in the file: | ||||
| Expires December 30, 1998 | ||||
| supported" attributes), IANA will publish the additional values in the | ||||
| file: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute- | ftp.isi.edu/iana/assignments/ipp/attribute- | |||
| values/finishings/stapling.txt. | values/finishings/stapling.txt. | |||
| Note: Some attributes are defined to be: 'type3 keywords' | 'name' | Note: Some attributes are defined to be: 'type3 keywords' | 'name' which | |||
| which allows for attribute values to be extended by a site | allows for attribute values to be extended by a site administrator with | |||
| administrator with administrator defined names. Such names are not | administrator defined names. Such names are not registered with IANA. | |||
| registered with IANA. | ||||
| By definition, each of the three types above assert some sort of | By definition, each of the three types above assert some sort of | |||
| registry or review process in order for extensions to be considered | registry or review process in order for extensions to be considered | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| valid. Each higher numbered level (1, 2, 3) tends to be decreasingly | valid. Each higher numbered level (1, 2, 3) tends to be decreasingly | |||
| less stringent than the previous level. Therefore, any typeN value | less stringent than the previous level. Therefore, any typeN value MAY | |||
| MAY be registered using a process for some typeM where M is less than | be registered using a process for some typeM where M is less than N, | |||
| N, however such registration is NOT REQUIRED. For example, a type3 | however such registration is NOT REQUIRED. For example, a type3 value | |||
| value MAY be registered in a type 1 manner (by being included in a | MAY be registered in a type 1 manner (by being included in a future | |||
| future version of an IPP specification), however, it is NOT REQUIRED. | version of an IPP specification), however, it is NOT REQUIRED. | |||
| This specification defines keyword and enum values for all of the | This specification defines keyword and enum values for all of the above | |||
| above types, including type3 keywords. | types, including type3 keywords. | |||
| For private (unregistered) keyword extensions, implementers SHOULD use | For private (unregistered) keyword extensions, implementers SHOULD use | |||
| keywords with a suitable distinguishing prefix, such as "xxx-" where | keywords with a suitable distinguishing prefix, such as "xxx-" where xxx | |||
| xxx is the (lowercase) fully qualified company name registered with | is the (lowercase) fully qualified company name registered with IANA for | |||
| IANA for use in domain names [RFC1035]. For example, if the company | use in domain names [RFC1035]. For example, if the company XYZ Corp. | |||
| XYZ Corp. had obtained the domain name "XYZ.com", then a private | had obtained the domain name "XYZ.com", then a private keyword 'abc' | |||
| keyword 'abc' would be: 'xyz.com-abc'. | would be: 'xyz.com-abc'. | |||
| Note: RFC 1035 [RFC1035] indicates that while upper and lower case | Note: RFC 1035 [RFC1035] indicates that while upper and lower case | |||
| letters are allowed in domain names, no significance is attached to | letters are allowed in domain names, no significance is attached to the | |||
| the case. That is, two names with the same spelling but different | case. That is, two names with the same spelling but different case are | |||
| case are to be treated as if identical. Also, the labels in a domain | to be treated as if identical. Also, the labels in a domain name must | |||
| name must follow the rules for ARPANET host names: They must start | follow the rules for ARPANET host names: They must start with a letter, | |||
| with a letter, end with a letter or digit, and have as interior | end with a letter or digit, and have as interior characters only | |||
| characters only letters, digits, and hyphen. Labels must be 63 | letters, digits, and hyphen. Labels must be 63 characters or less. | |||
| characters or less. Labels are separated by the "." character. | Labels are separated by the "." character. | |||
| For private (unregistered) enum extension, implementers MUST use | For private (unregistered) enum extension, implementers MUST use values | |||
| values in the reserved integer range which is 2**30 to 2**31-1. | in the reserved integer range which is 2**30 to 2**31-1. | |||
| 6.2 Attribute Extensibility | 6.2 Attribute Extensibility | |||
| Attribute names are type2 keywords. Therefore, new attributes may be | Attribute names are type2 keywords. Therefore, new attributes may be | |||
| registered and have the same status as attributes in this document by | registered and have the same status as attributes in this document by | |||
| following the type2 extension rules. For private (unregistered) | following the type2 extension rules. For private (unregistered) | |||
| Expires December 30, 1998 | ||||
| attribute extensions, implementers SHOULD use keywords with a suitable | attribute extensions, implementers SHOULD use keywords with a suitable | |||
| distinguishing prefix as described in Section 6.1. | distinguishing prefix as described in Section 6.1. | |||
| IANA will publish approved attribute registration specifications as | IANA will publish approved attribute registration specifications as | |||
| separate files: | separate files: | |||
| ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt | ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt | |||
| where "xxx-yyy" is the new attribute name. | where "xxx-yyy" is the new attribute name. | |||
| If a new Printer object attribute is defined and its values can be | If a new Printer object attribute is defined and its values can be | |||
| affected by a specific document format, its specification needs to | affected by a specific document format, its specification needs to | |||
| contain the following sentence: | contain the following sentence: | |||
| "The value of this attribute returned in a Get-Printer- | "The value of this attribute returned in a Get-Printer- | |||
| Attributes response MAY depend on the "document-format" | Attributes response MAY depend on the "document-format" | |||
| attribute supplied (see Section 3.2.5.1)." | attribute supplied (see Section 3.2.5.1)." | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| If the specification does not, then its value in the Get-Printer- | If the specification does not, then its value in the Get-Printer- | |||
| Attributes response MUST NOT depend on the "document-format" supplied | Attributes response MUST NOT depend on the "document-format" supplied in | |||
| in the request. When a new Job Template attribute is registered, the | the request. When a new Job Template attribute is registered, the value | |||
| value of the Printer attributes MAY vary with "document-format" | of the Printer attributes MAY vary with "document-format" supplied in | |||
| supplied in the request without the specification having to indicate | the request without the specification having to indicate so. | |||
| so. | ||||
| 6.3 Attribute Syntax Extensibility | 6.3 Attribute Syntax Extensibility | |||
| Attribute syntaxes are like type2 enums. Therefore, new attribute | Attribute syntaxes are like type2 enums. Therefore, new attribute | |||
| syntaxes may be registered and have the same status as attribute | syntaxes may be registered and have the same status as attribute | |||
| syntaxes in this document by following the type2 extension rules | syntaxes in this document by following the type2 extension rules | |||
| described in Section 6.1. The value codes that identify each of the | described in Section 6.1. The value codes that identify each of the | |||
| attribute syntaxes are assigned in the protocol specification [IPP- | attribute syntaxes are assigned in the Encoding and Transport | |||
| PRO], including a designated range for private, experimental use. | specification [IPP-PRO], including a designated range for private, | |||
| experimental use. | ||||
| For attribute syntaxes, the IPP Designated Expert in consultation with | For attribute syntaxes, the IPP Designated Expert in consultation with | |||
| IANA assigns the next attribute syntax code in the appropriate range | IANA assigns the next attribute syntax code in the appropriate range as | |||
| as specified in [IPP-PRO]. IANA will publish approved attribute | specified in [IPP-PRO]. IANA will publish approved attribute syntax | |||
| syntax registration specifications as separate files: | registration specifications as separate files: | |||
| ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt | ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt | |||
| where 'xxx-yyy' is the new attribute syntax name. | where 'xxx-yyy' is the new attribute syntax name. | |||
| Expires December 30, 1998 | ||||
| 6.4 Operation Extensibility | 6.4 Operation Extensibility | |||
| Operations may also be registered following the type2 procedures | Operations may also be registered following the type2 procedures | |||
| described in Section 6.1, though major new operations will usually be | described in Section 6.1, though major new operations will usually be | |||
| done by a new standards track RFC that augments this document. For | done by a new standards track RFC that augments this document. For | |||
| private (unregistered) operation extensions, implementers MUST use the | private (unregistered) operation extensions, implementers MUST use the | |||
| range for the "operation-id" in requests specified in Section 4.4.13 | range for the "operation-id" in requests specified in Section 4.4.13 | |||
| "operations-supported" Printer attribute. | "operations-supported" Printer attribute. | |||
| For operations, the IPP Designated Expert in consultation with IANA | For operations, the IPP Designated Expert in consultation with IANA | |||
| assigns the next operation-id code as specified in Section 4.4.13. | assigns the next operation-id code as specified in Section 4.4.13. IANA | |||
| IANA will publish approved operation registration specifications as | will publish approved operation registration specifications as separate | |||
| separate files: | files: | |||
| ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt | ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt | |||
| where "Xxx-Yyy" is the new operation name. | where "Xxx-Yyy" is the new operation name. | |||
| 6.5 Status Code Extensibility | 6.5 Attribute Groups | |||
| Attribute groups passed in requests and responses may be registered | ||||
| following the type2 procedures described in Section 6.1. The tags that | ||||
| identify each of the attribute groups are assigned in [IPP-PRO]. | ||||
| For attribute groups, the IPP Designated Expert in consultation with | ||||
| IANA assigns the next attribute group tag code in the appropriate range | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| as specified in [IPP-PRO]. IANA will publish approved attribute group | ||||
| registration specifications as separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- | ||||
| tag.txt | ||||
| where 'xxx-yyy-tag' is the new attribute group tag name. | ||||
| 6.6 Status Code Extensibility | ||||
| Operation status codes may also be registered following the type2 | Operation status codes may also be registered following the type2 | |||
| procedures described in Section 6.1. The values for status codes are | procedures described in Section 6.1. The values for status codes are | |||
| allocated in ranges as specified in Section 14 for each status code | allocated in ranges as specified in Section 14 for each status code | |||
| class: | class: | |||
| "informational" - Request received, continuing process | "informational" - Request received, continuing process | |||
| "successful" - The action was successfully received, understood, | "successful" - The action was successfully received, understood, and | |||
| and accepted | accepted | |||
| "redirection" - Further action must be taken in order to complete | "redirection" - Further action must be taken in order to complete the | |||
| the request | request | |||
| "client-error" - The request contains bad syntax or cannot be | "client-error" - The request contains bad syntax or cannot be | |||
| fulfilled | fulfilled | |||
| "server-error" - The IPP object failed to fulfill an apparently | "server-error" - The IPP object failed to fulfill an apparently | |||
| valid request | valid request | |||
| For private (unregistered) operation status code extensions, | For private (unregistered) operation status code extensions, | |||
| implementers MUST use the top of each range as specified in Section | implementers MUST use the top of each range as specified in Section 14. | |||
| 14. | ||||
| For operation status codes, the IPP Designated Expert in consultation | For operation status codes, the IPP Designated Expert in consultation | |||
| with IANA assigns the next status code in the appropriate class range | with IANA assigns the next status code in the appropriate class range as | |||
| as specified in Section 14. IANA will publish approved status code | specified in Section 14. IANA will publish approved status code | |||
| registration specifications as separate files: | registration specifications as separate files: | |||
| ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt | ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt | |||
| where "xxx-yyy" is the new operation status code keyword. | where "xxx-yyy" is the new operation status code keyword. | |||
| Expires December 30, 1998 | 6.7 Registration of MIME types/sub-types for document-formats | |||
| 6.6 Registration of MIME types/sub-types for document-formats | ||||
| The "document-format" attribute's syntax is 'mimeMediaType'. This | The "document-format" attribute's syntax is 'mimeMediaType'. This means | |||
| means that valid values are Internet Media Types (see Section 4.1.9). | that valid values are Internet Media Types (see Section 4.1.9). RFC | |||
| RFC 2045 [RFC2045] defines the syntax for valid Internet media types. | 2045 [RFC2045] defines the syntax for valid Internet media types. IANA | |||
| IANA is the registry for all Internet media types. | is the registry for all Internet media types. | |||
| 6.7 Registration of charsets for use in 'charset' attribute values | 6.8 Registration of charsets for use in 'charset' attribute values | |||
| The "attributes-charset" attribute's syntax is 'charset'. This means | The "attributes-charset" attribute's syntax is 'charset'. This means | |||
| that valid values are charsets names. When a charset in the IANA | that valid values are charsets names. When a charset in the IANA | |||
| registry has more than one name (alias), the name labeled as | registry has more than one name (alias), the name labeled as "(preferred | |||
| "(preferred MIME name)", if present, MUST be used (see Section 4.1.7). | MIME name)", if present, MUST be used (see Section 4.1.7). IANA is the | |||
| IANA is the registry for charsets following the procedures of | registry for charsets following the procedures of [RFC2278]. | |||
| [RFC2278]. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 7. Internationalization Considerations | 7. Internationalization Considerations | |||
| Some of the attributes have values that are text strings and names | Some of the attributes have values that are text strings and names which | |||
| which are intended for human understanding rather than machine | are intended for human understanding rather than machine understanding | |||
| understanding (see the 'text' and 'name' attribute syntaxes in | (see the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and | |||
| Sections 4.1.1 and 4.1.2). | 4.1.2). | |||
| In each operation request, the client | In each operation request, the client | |||
| - identifies the charset and natural language of the request which | - identifies the charset and natural language of the request which | |||
| affects each supplied 'text' and 'name' attribute value, and | affects each supplied 'text' and 'name' attribute value, and | |||
| - requests the charset and natural language for attributes returned | - requests the charset and natural language for attributes returned | |||
| by the IPP object in operation responses (as described in Section | by the IPP object in operation responses (as described in Section | |||
| 3.1.4.1). | 3.1.4.1). | |||
| In addition, the client MAY separately and individually identify the | In addition, the client MAY separately and individually identify the | |||
| Natural Language Override of a supplied 'text' or 'name' attribute | Natural Language Override of a supplied 'text' or 'name' attribute using | |||
| using the 'textWithLanguage' and 'nameWithLanguage' technique | the 'textWithLanguage' and 'nameWithLanguage' technique described | |||
| described section 4.1.1.2 and 4.1.2.2 respectively. | section 4.1.1.2 and 4.1.2.2 respectively. | |||
| All IPP objects MUST support the UTF-8 [RFC2044] charset in all 'text' | All IPP objects MUST support the UTF-8 [RFC2044] charset in all 'text' | |||
| and 'name' attributes supported. If an IPP object supports more than | and 'name' attributes supported. If an IPP object supports more than | |||
| the UTF-8 charset, the object MUST convert between them in order to | the UTF-8 charset, the object MUST convert between them in order to | |||
| return the requested charset to the client according to Section | return the requested charset to the client according to Section 3.1.4.2. | |||
| 3.1.4.2. If an IPP object supports more than one natural language, | If an IPP object supports more than one natural language, the object | |||
| the object SHOULD return 'text' and 'name' values in the natural | SHOULD return 'text' and 'name' values in the natural language requested | |||
| language requested where those values are generated by the Printer | where those values are generated by the Printer (see Section 3.1.4.1). | |||
| (see Section 3.1.4.1). | ||||
| Expires December 30, 1998 | ||||
| For Printers that support multiple charsets and/or multiple natural | For Printers that support multiple charsets and/or multiple natural | |||
| languages in 'text' and 'name' attributes, different jobs may have | languages in 'text' and 'name' attributes, different jobs may have been | |||
| been submitted in differing charsets and/or natural languages. All | submitted in differing charsets and/or natural languages. All responses | |||
| responses MUST be returned in the charset requested by the client. | MUST be returned in the charset requested by the client. However, the | |||
| However, the Get-Jobs operation uses the 'textWithLanguage' and | Get-Jobs operation uses the 'textWithLanguage' and 'nameWithLanguage' | |||
| 'nameWithLanguage' mechanism to identify the differing natural | mechanism to identify the differing natural languages with each job | |||
| languages with each job returned. | attribute returned. | |||
| The Printer object also has configured charset and natural language | The Printer object also has configured charset and natural language | |||
| attributes. The client can query the Printer object to determine the | attributes. The client can query the Printer object to determine the | |||
| list of charsets and natural languages supported by the Printer object | list of charsets and natural languages supported by the Printer object | |||
| and what the Printer object's configured values are. See the | and what the Printer object's configured values are. See the "charset- | |||
| "charset-configured", "charset-supported", "natural-language- | configured", "charset-supported", "natural-language-configured", and | |||
| configured", and "generated-natural-language-supported" Printer | "generated-natural-language-supported" Printer description attributes | |||
| description attributes for more details. | for more details. | |||
| The "charset-supported" attributed identifies the supported charsets. | The "charset-supported" attributed identifies the supported charsets. | |||
| If a charset is supported, the IPP object MUST be capable of | If a charset is supported, the IPP object MUST be capable of converting | |||
| converting to and from that charset into any other supported charset. | to and from that charset into any other supported charset. In many | |||
| In many cases, an IPP object will support only one charset and it MUST | cases, an IPP object will support only one charset and it MUST be the | |||
| be the UTF-8 charset. | UTF-8 charset. | |||
| The "charset-configured" attribute identifies the one supported | The "charset-configured" attribute identifies the one supported charset | |||
| charset which is the native charset given the current configuration of | which is the native charset given the current configuration of the IPP | |||
| the IPP object (administrator defined). | object (administrator defined). | |||
| The "generated-natural-language-supported" attribute identifies the | Isaacson, Powell Expires May 16, 1999 | |||
| set of supported natural languages for generated messages; it is not | The "generated-natural-language-supported" attribute identifies the set | |||
| related to the set of natural languages that must be accepted for | of supported natural languages for generated messages; it is not related | |||
| client supplied 'text' and 'name' attributes. For client supplied | to the set of natural languages that must be accepted for client | |||
| 'text' and 'name' attributes, an IPP object MUST accept ALL supplied | supplied 'text' and 'name' attributes. For client supplied 'text' and | |||
| natural languages. Just because a Printer object is currently | 'name' attributes, an IPP object MUST accept ALL supplied natural | |||
| configured to support 'en-us' natural language does not mean that the | languages. Just because a Printer object is currently configured to | |||
| Printer object should reject a job if the client supplies a job name | support 'en-us' natural language does not mean that the Printer object | |||
| that is in 'fr-ca'. | should reject a job if the client supplies a job name that is in 'fr- | |||
| ca'. | ||||
| The "natural-language-configured" attribute identifies the one | The "natural-language-configured" attribute identifies the one supported | |||
| supported natural language for generated messages which is the native | natural language for generated messages which is the native natural | |||
| natural language given the current configuration of the IPP object | language given the current configuration of the IPP object | |||
| (administrator defined). | (administrator defined). | |||
| Attributes of type 'text' and 'name' are populated from different | Attributes of type 'text' and 'name' are populated from different | |||
| sources. These attributes can be categorized into following groups | sources. These attributes can be categorized into following groups | |||
| (depending on the source of the attribute): | (depending on the source of the attribute): | |||
| 1. Some attributes are supplied by the client (e.g., the client | 1. Some attributes are supplied by the client (e.g., the client | |||
| supplied "job-name", "document-name", and "requesting-user-name" | supplied "job-name", "document-name", and "requesting-user-name" | |||
| operation attributes along with the corresponding Job object's | operation attributes along with the corresponding Job object's | |||
| Expires December 30, 1998 | ||||
| "job-name" and "job-originating-user-name" attributes). The IPP | "job-name" and "job-originating-user-name" attributes). The IPP | |||
| object MUST accept these attributes in any natural language no | object MUST accept these attributes in any natural language no | |||
| matter what the set of supported languages for generated messages | matter what the set of supported languages for generated messages | |||
| 2. Some attributes are supplied by the system administrator (e.g., | 2. Some attributes are supplied by the system administrator (e.g., | |||
| the Printer object's "printer-name" and "printer-location" | the Printer object's "printer-name" and "printer-location" | |||
| attributes). These too can be in any natural language. If the | attributes). These too can be in any natural language. If the | |||
| natural language for these attributes is different than what a | natural language for these attributes is different than what a | |||
| client requests, then they must be reported using the Natural | client requests, then they must be reported using the Natural | |||
| Language Override mechanism. | Language Override mechanism. | |||
| 3. Some attributes are supplied by the device manufacturer (e.g., | 3. Some attributes are supplied by the device manufacturer (e.g., the | |||
| the Printer object's "printer-make-and-model" attribute). These | Printer object's "printer-make-and-model" attribute). These too | |||
| too can be in any natural language. If the natural language for | can be in any natural language. If the natural language for these | |||
| these attributes is different than what a client requests, then | attributes is different than what a client requests, then they must | |||
| they must be reported using the Natural Language Override | be reported using the Natural Language Override mechanism. | |||
| mechanism. | ||||
| 4. Some attributes are supplied by the operator (e.g., the Job | 4. Some attributes are supplied by the operator (e.g., the Job | |||
| object's "job-message-from-operator" attribute). These too can be | object's "job-message-from-operator" attribute). These too can be | |||
| in any natural language. If the natural language for these | in any natural language. If the natural language for these | |||
| attributes is different than what a client requests, then they | attributes is different than what a client requests, then they must | |||
| must be reported using the Natural Language Override mechanism. | be reported using the Natural Language Override mechanism. | |||
| 5. Some attributes are generated by the IPP object (e.g., the Job | 5. Some attributes are generated by the IPP object (e.g., the Job | |||
| object's "job-state-message" attribute, the Printer object's | object's "job-state-message" attribute, the Printer object's | |||
| "printer-state-message" attribute, and the "status-message" | "printer-state-message" attribute, and the "status-message" | |||
| operation attribute). These attributes can only be in one of | operation attribute). These attributes can only be in one of the | |||
| the "generated-natural-language-supported" natural languages. If | "generated-natural-language-supported" natural languages. If a | |||
| a client requests some natural language for these attributes | client requests some natural language for these attributes other | |||
| other than one of the supported values, the IPP object SHOULD | than one of the supported values, the IPP object SHOULD respond | |||
| respond in using the value of the "natural-language-configured" | using the value of the "natural-language-configured" attribute | |||
| attribute (using the Natural Language Override mechanism if | (using the Natural Language Override mechanism if needed). | |||
| needed). | ||||
| The 'text' and 'name' attributes specified in this version of this | The 'text' and 'name' attributes specified in this version of this | |||
| document (additional ones will be registered according to the | document (additional ones will be registered according to the procedures | |||
| procedures in Section 6) are: | in Section 6) are: | |||
| Attributes Source | Isaacson, Powell Expires May 16, 1999 | |||
| -------------------------- ---------- | Attributes Source | |||
| -------------------------- ---------- | ||||
| Operation Attributes | Operation Attributes | |||
| job-name (name) client | job-name (name) client | |||
| document-name (name) client | document-name (name) client | |||
| requesting-user-name (name) client | requesting-user-name (name) client | |||
| status-message Job or Printer object | ||||
| Job Attributes: | Job Template Attributes: | |||
| job-name (name) client or Printer object | job-hold-until (keyword | name) client matches administrator- | |||
| job-originating-user-name (name) Printer object | configured | |||
| job-state-message (text) Job or Printer object | job-hold-until-default (keyword | name) client matches | |||
| job-message-from-operator (text) operator | administrator-configured | |||
| job-hold-until-supported (keyword | name) client matches | ||||
| administrator-configured | ||||
| job-sheets (keyword | name) client matches administrator- | ||||
| configured | ||||
| job-sheets-default (keyword | name) client matches | ||||
| administrator-configured | ||||
| job-sheets-supported (keyword | name) client matches | ||||
| administrator-configured | ||||
| media (keyword | name) client matches administrator- | ||||
| configured | ||||
| media-default (keyword | name) client matches administrator- | ||||
| configured | ||||
| media-supported (keyword | name) client matches administrator- | ||||
| configured | ||||
| media-ready (keyword | name) client matches administrator- | ||||
| configured | ||||
| Expires December 30, 1998 | Job Description Attributes: | |||
| job-name (name) client or Printer object | ||||
| job-originating-user-name (name) Printer object | ||||
| job-state-message (text) Job or Printer object | ||||
| output-device-assigned (name(127)) administrator | ||||
| job-message-from-operator (text(127)) operator | ||||
| Printer Attributes: | Printer Description Attributes: | |||
| printer-name (name) administrator | printer-name (name(127)) administrator | |||
| printer-location (text) administrator | printer-location (text(127)) administrator | |||
| printer-info (text) administrator | printer-info (text(127)) administrator | |||
| printer-make-and-model (text) admin. or manufacturer | printer-make-and-model (text(127)) administrator or manufacturer | |||
| printer-state-message (text) Printer object | printer-state-message (text) Printer object | |||
| printer-message-from-operator (text) operator | printer-message-from-operator (text(127)) operator | |||
| 8. Security Considerations | 8. Security Considerations | |||
| Some IPP objects MAY be deployed over protocol stacks that support | Some IPP objects MAY be deployed over protocol stacks that support | |||
| Transport Layer Security (TLS) Version 1.0. Other IPP objects MAY be | Secure Socket Layer Version 3 (SSL3) [SSL]. Note: SSL3 is not an IETF | |||
| deployed over protocol stacks that do not support TLS. Some IPP | standards track specification. Other IPP objects MAY be deployed over | |||
| objects MAY be deployed over both types of protocol stacks. Those IPP | protocol stacks that do not support SSL3. Some IPP objects MAY be | |||
| objects that support TLS, are capable of supporting mutual | deployed over both types of protocol stacks. Those IPP objects that | |||
| authentication as well as privacy of messages via multiple encryption | support SSL3, are capable of supporting mutual authentication as well as | |||
| schemes. TLS 1.0 also supports a backwards compatibility mode for | ||||
| negotiating down to SSL3 which leverages the vast installed base of | ||||
| SSL3 aware clients and servers. An important point about security | ||||
| related information for TLS access to an IPP object, is that the | ||||
| security-related parameters (authentication, encryption keys, etc.) | ||||
| are "out-of-band" to the actual IPP protocol. | ||||
| An IPP object that does not support TLS MAY elect to support a | Isaacson, Powell Expires May 16, 1999 | |||
| privacy of messages via multiple encryption schemes. An important point | ||||
| about security related information for SSL3 access to an IPP object, is | ||||
| that the security-related parameters (authentication, encryption keys, | ||||
| etc.) are "out-of-band" to the actual IPP protocol. | ||||
| An IPP object that does not support SSL3 MAY elect to support a | ||||
| transport layer that provides other security mechanisms. For example, | transport layer that provides other security mechanisms. For example, | |||
| in a mapping of IPP over HTTP/1.1 [IPP-PRO], if the IPP object does | in a mapping of IPP over HTTP/1.1 [IPP-PRO], if the IPP object does not | |||
| not support TLS, HTTP still allows for client authentication. | support SSL3, HTTP still allows for client authentication using Digest | |||
| Access Authentication (DAA) [RFC2069]. | ||||
| It is difficult to anticipate the security risks that might exist in | It is difficult to anticipate the security risks that might exist in any | |||
| any given IPP environment. For example, if IPP is used within a given | given IPP environment. For example, if IPP is used within a given | |||
| corporation over a private network, the risks of exposing document | corporation over a private network, the risks of exposing document data | |||
| data may be low enough that the corporation will choose not to use | may be low enough that the corporation will choose not to use encryption | |||
| encryption on that data. However, if the connection between the | on that data. However, if the connection between the client and the IPP | |||
| client and the IPP object is over a public network, the client may | object is over a public network, the client may wish to protect the | |||
| wish to protect the content of the information during transmission | content of the information during transmission through the network with | |||
| through the network with encryption. | encryption. | |||
| Furthermore, the value of the information being printed may vary from | Furthermore, the value of the information being printed may vary from | |||
| one IPP environment to the next. Printing payroll checks, for example, | one IPP environment to the next. Printing payroll checks, for example, | |||
| would have a different value than printing public information from a | would have a different value than printing public information from a | |||
| file. There is also the possibly of denial-of-service attacks, but | file. There is also the possibly of denial-of-service attacks, but | |||
| denial-of-service attacks against printing resources are not well | denial-of-service attacks against printing resources are not well | |||
| understood and there is no published precedents regarding this | understood and there is no published precedents regarding this scenario. | |||
| scenario. | ||||
| Once the authenticated identity of the requester has been supplied to | Once the authenticated identity of the requester has been supplied to | |||
| the IPP object, the object uses that identity to enforce any | the IPP object, the object uses that identity to enforce any | |||
| Expires December 30, 1998 | ||||
| authorization policy that might be in place. For example, one site's | authorization policy that might be in place. For example, one site's | |||
| policy might be that only the job owner is allowed to cancel a job. | policy might be that only the job owner is allowed to cancel a job. The | |||
| The details and mechanisms to set up a particular access control | details and mechanisms to set up a particular access control policy are | |||
| policy are not part of IPP/1.0, and must be established via some other | not part of IPP/1.0, and must be established via some other type of | |||
| type of administrative or access control framework. However, there | administrative or access control framework. However, there are | |||
| are operation status codes that allow an IPP server to return | operation status codes that allow an IPP server to return information | |||
| information back to a client about any potential access control | back to a client about any potential access control violations for an | |||
| violations for an IPP object. | IPP object. | |||
| During a create operation, the client's identity is recorded in the | During a create operation, the client's identity is recorded in the Job | |||
| Job object in an implementation-defined attribute. This information | object in an implementation-defined attribute. This information can be | |||
| can be used to verify a client's identity for subsequent operations on | used to verify a client's identity for subsequent operations on that Job | |||
| that Job object in order to enforce any access control policy that | object in order to enforce any access control policy that might be in | |||
| might be in effect. See section 8.3 below for more details. | effect. See section 8.3 below for more details. | |||
| Since the security levels or the specific threats that any given IPP | Since the security levels or the specific threats that any given IPP | |||
| system administrator may be concerned with cannot be anticipated, IPP | system administrator may be concerned with cannot be anticipated, IPP | |||
| MUST be capable of operating with different security mechanisms and | MUST be capable of operating with different security mechanisms and | |||
| security policies as required by the individual installation. Security | security policies as required by the individual installation. Security | |||
| policies might vary from very strong, to very weak, to none at all, | policies might vary from very strong, to very weak, to none at all, and | |||
| and corresponding security mechanisms will be required. TLS Version | corresponding security mechanisms will be required. SSL3 supports the | |||
| 1.0 supports the type of negotiated levels of security required by | type of negotiated levels of security required by most, if not all, | |||
| most, if not all, potential IPP environments. IPP environments that | potential IPP environments. IPP environments that require no security | |||
| require no security can elect to deploy IPP objects that do not | can elect to deploy IPP objects that do not utilize the optional SSL3 | |||
| utilize the optional TLS security mechanisms. | security mechanisms. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 8.1 Security Scenarios | 8.1 Security Scenarios | |||
| The following sections describe specific security attacks for IPP | The following sections describe specific security attacks for IPP | |||
| environments. Where examples are provided they should be considered | environments. Where examples are provided they should be considered | |||
| illustrative of the environment and not an exhaustive set. Not all of | illustrative of the environment and not an exhaustive set. Not all of | |||
| these environments will necessarily be addressed in initial | these environments will necessarily be addressed in initial | |||
| implementations of IPP. | implementations of IPP. | |||
| 8.1.1 Client and Server in the Same Security Domain | 8.1.1 Client and Server in the Same Security Domain | |||
| This environment is typical of internal networks where traditional | This environment is typical of internal networks where traditional | |||
| office workers print the output of personal productivity applications | office workers print the output of personal productivity applications on | |||
| on shared work-group printers, or where batch applications print their | shared work-group printers, or where batch applications print their | |||
| output on large production printers. Although the identity of the user | output on large production printers. Although the identity of the user | |||
| may be trusted in this environment, a user might want to protect the | may be trusted in this environment, a user might want to protect the | |||
| content of a document against such attacks as eavesdropping, replaying | content of a document against such attacks as eavesdropping, replaying | |||
| or tampering. | or tampering. | |||
| Expires December 30, 1998 | ||||
| 8.1.2 Client and Server in Different Security Domains | 8.1.2 Client and Server in Different Security Domains | |||
| Examples of this environment include printing a document created by | Examples of this environment include printing a document created by the | |||
| the client on a publicly available printer, such as at a commercial | client on a publicly available printer, such as at a commercial print | |||
| print shop; or printing a document remotely on a business associate's | shop; or printing a document remotely on a business associate's printer. | |||
| printer. This latter operation is functionally equivalent to sending | This latter operation is functionally equivalent to sending the document | |||
| the document to the business associate as a facsimile. Printing | to the business associate as a facsimile. Printing sensitive information | |||
| sensitive information on a Printer in a different security domain | on a Printer in a different security domain requires strong security | |||
| requires strong security measures. In this environment authentication | measures. In this environment authentication of the printer is required | |||
| of the printer is required as well as protection against unauthorized | as well as protection against unauthorized use of print resources. Since | |||
| use of print resources. Since the document crosses security domains, | the document crosses security domains, protection against eavesdropping | |||
| protection against eavesdropping and document tampering are also | and document tampering are also required. It will also be important in | |||
| required. It will also be important in this environment to protect | this environment to protect Printers against "spamming" and malicious | |||
| Printers against "spamming" and malicious document content. | document content. | |||
| 8.1.3 Print by Reference | 8.1.3 Print by Reference | |||
| When the document is not stored on the client, printing can be done by | When the document is not stored on the client, printing can be done by | |||
| reference. That is, the print request can contain a reference, or | reference. That is, the print request can contain a reference, or | |||
| pointer, to the document instead of the actual document itself. | pointer, to the document instead of the actual document itself. Standard | |||
| Standard methods currently do not exist for remote entities to | methods currently do not exist for remote entities to "assume" the | |||
| "assume" the credentials of a client for forwarding requests to a 3rd | credentials of a client for forwarding requests to a 3rd party. It is | |||
| party. It is anticipated that Print-By-Reference will be used to | anticipated that Print-By-Reference will be used to access "public" | |||
| access "public" documents and that sophisticated methods for | documents and that sophisticated methods for authenticating "proxies" | |||
| authenticating "proxies" will not be specified for version 1 of IPP. | will not be specified for version 1 of IPP. | |||
| 8.2 URIs for TLS and non-TLS Access | 8.2 URIs for SSL3 and non-SSL3 Access | |||
| As described earlier, an IPP object can support TLS access, non-TLS | As described earlier, an IPP object can support SSL3 access, non-SSL3 | |||
| access, or both. The "printer-uri-supported" attribute contains the | access, or both. The "printer-uri-supported" attribute contains the | |||
| Printer object's URI(s). Its companion attribute, "uri-security- | Printer object's URI(s). Its companion attribute, "uri-security- | |||
| supported", identifies the security mechanism used for each URI listed | supported", identifies the security mechanism used for each URI listed | |||
| in the "printer-uri-supported" attribute. For each Printer operation | in the "printer-uri-supported" attribute. For each Printer operation | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| request, a client MUST supply only one URI in the "printer-uri" | request, a client MUST supply only one URI in the "printer-uri" | |||
| operation attribute. In other words, even though the Printer supports | operation attribute. In other words, even though the Printer supports | |||
| more than one URI, the client only interacts with the Printer object | more than one URI, the client only interacts with the Printer object | |||
| using one if its URIs. This duality is not needed for Job objects, | using one if its URIs. This duality is not needed for Job objects, | |||
| since the Printer objects is the factory for Job objects, and the | since the Printer objects is the factory for Job objects, and the | |||
| Printer object will generate the correct URI for new Job objects | Printer object will generate the correct URI for new Job objects | |||
| depending on the Printer object's security configuration. | depending on the Printer object's security configuration. | |||
| 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute | 8.3 The "requesting-user-name" (name(MAX)) Operation Attribute | |||
| Each operation MUST specify the user who is performing the operation | Each operation MUST specify the user who is performing the operation in | |||
| in both of the following two ways: | both of the following two ways: | |||
| Expires December 30, 1998 | 1) via the REQUIRED "requesting-user-name" operation attribute that a | |||
| 1) via the REQUIRED "requesting-user-name" operation attribute that | client SHOULD supply in all operations. The client MUST obtain the | |||
| a client SHOULD supply in all operations. The client MUST obtain | value for this attribute from an environmental or network login | |||
| the value for this attribute from an environmental or network | name for the user, rather than allowing the user to supply any | |||
| login name for the user, rather than allowing the user to supply | value. If the client does not supply a value for "requesting-user- | |||
| any value. If the client does not supply a value for "requesting- | name", the printer MUST assume that the client is supplying some | |||
| user-name", the printer MUST assume that the client is supplying | anonymous name, such as "anonymous". | |||
| some anonymous name, such as "anonymous". | 2) via an authentication mechanism of the underlying transport which | |||
| 2) via an authentication mechanism of the underlying transport | may be configured to give no authentication information. | |||
| which may be configured to give no authentication information. | ||||
| There are six cases to consider: | There are six cases to consider: | |||
| a) the authentication mechanism gives no information, and the | a) the authentication mechanism gives no information, and the client | |||
| client doesn't specify "requesting-user-name". | doesn't specify "requesting-user-name". | |||
| b) the authentication mechanism gives no information, but the | b) the authentication mechanism gives no information, but the client | |||
| client specifies "requesting-user-name". | specifies "requesting-user-name". | |||
| c) the authentication mechanism specifies a user which has no | c) the authentication mechanism specifies a user which has no human | |||
| human readable representation, and the client doesn't specify | readable representation, and the client doesn't specify | |||
| "requesting-user-name". | ||||
| d) the authentication mechanism specifies a user which has no | ||||
| human readable representation, but the client specifies | ||||
| "requesting-user-name". | "requesting-user-name". | |||
| d) the authentication mechanism specifies a user which has no human | ||||
| readable representation, but the client specifies "requesting-user- | ||||
| name". | ||||
| e) the authentication mechanism specifies a user which has a human | e) the authentication mechanism specifies a user which has a human | |||
| readable representation. The Printer object ignores the | readable representation. The Printer object ignores the | |||
| "requesting-user-name". | "requesting-user-name". | |||
| f) the authentication mechanism specifies a user who is trusted | f) the authentication mechanism specifies a user who is trusted and | |||
| and whose name means that the value of the "requesting-user- | whose name means that the value of the "requesting-user-name", | |||
| name", which MUST be present, is treated as the authenticated | which MUST be present, is treated as the authenticated name. | |||
| name. | ||||
| Note: Case "f" is intended for a tightly coupled gateway and server | Note: Case "f" is intended for a tightly coupled gateway and server to | |||
| to work together so that the "user" name is able to be that of the | work together so that the "user" name is able to be that of the gateway | |||
| gateway client and not that of the gateway. Because most, if not all, | client and not that of the gateway. Because most, if not all, system | |||
| system vendors will initially implement IPP via a gateway into their | vendors will initially implement IPP via a gateway into their existing | |||
| existing print system, this mechanism is necessary unless the | print system, this mechanism is necessary unless the authentication | |||
| authentication mechanism allows a gateway (client) to act on behalf of | mechanism allows a gateway (client) to act on behalf of some other | |||
| some other client. | client. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| The user-name has two forms: | The user-name has two forms: | |||
| - one that is human readable: it is held in the REQUIRED "job- | - one that is human readable: it is held in the REQUIRED "job- | |||
| originating-user-name" Job Description attribute which is set | originating-user-name" Job Description attribute which is set | |||
| during the job creation operations. It is used for presentation | during the job creation operations. It is used for presentation | |||
| only, such as returning in queries or printing on start sheets | only, such as returning in queries or printing on start sheets | |||
| - one for authorization: it is held in an undefined (by IPP) Job | - one for authorization: it is held in an undefined (by IPP) Job | |||
| object attribute which is set by the job creation operation. It | object attribute which is set by the job creation operation. It is | |||
| is used to authorize other operations, such as Send-Document, | used to authorize other operations, such as Send-Document, Send- | |||
| Send-URI, Cancel-Job, to determine the user when the my-jobs' | URI, Cancel-Job, to determine the user when the "my-jobs" attribute | |||
| is specified with Get-Jobs, and to limit what attributes and values | ||||
| Expires December 30, 1998 | to return with Get-Job-Attributes and Get-Jobs. | |||
| attribute is specified with Get-Jobs, and to limit what | ||||
| attributes and values to return with Get-Job-Attributes and Get- | ||||
| Jobs. | ||||
| The human readable user name: | The human readable user name: | |||
| - is the value of the "requesting-user-name" for cases b, d and f. | - is the value of the "requesting-user-name" for cases b, d and f. | |||
| - comes from the authentication mechanism for case e | - comes from the authentication mechanism for case e | |||
| - is some anonymous name, such as "anonymous" for cases a and c. | - is some anonymous name, such as "anonymous" for cases a and c. | |||
| The user name used for authorization: | The user name used for authorization: | |||
| - is the value of the "requesting-user-name" for cases b and f. | - is the value of the "requesting-user-name" for cases b and f. | |||
| - comes from the authentication mechanism for cases c, d and e | - comes from the authentication mechanism for cases c, d and e | |||
| - is some anonymous name, such as "anonymous" for case a. | - is some anonymous name, such as "anonymous" for case a. | |||
| The essence of these rules for resolving conflicting sources of user- | The essence of these rules for resolving conflicting sources of user- | |||
| names is that a printer implementation is free to pick either source | names is that a printer implementation is free to pick either source as | |||
| as long as it achieves consistent results. That is, if a user uses | long as it achieves consistent results. That is, if a user uses the | |||
| the same path for a series of requests, the requests MUST appear to | same path for a series of requests, the requests MUST appear to come | |||
| come from the same user from the standpoint of both the human-readable | from the same user from the standpoint of both the human-readable user | |||
| user name and the user name for authorization. This rule MUST | name and the user name for authorization. This rule MUST continue to | |||
| continue to apply even if a request could be authenticated by two or | apply even if a request could be authenticated by two or more | |||
| more mechanisms. It doesn't matter which of several authentication | mechanisms. It doesn't matter which of several authentication | |||
| mechanisms a Printer uses as long as it achieves consistent results. | mechanisms a Printer uses as long as it achieves consistent results. If | |||
| If a client uses more than one authentication mechanism, it is | a client uses more than one authentication mechanism, it is recommended | |||
| recommended that an administrator make all credentials resolve to the | that an administrator make all credentials resolve to the same user and | |||
| same user and user-name as much as possible. | user-name as much as possible. | |||
| 8.4 Restricted Queries | 8.4 Restricted Queries | |||
| In many IPP operations, a client supplies a list of attributes to be | In many IPP operations, a client supplies a list of attributes to be | |||
| returned in the response. For security reasons, an IPP object may be | returned in the response. For security reasons, an IPP object may be | |||
| configured not to return all attributes (or all values) that a client | configured not to return all attributes (or all values) that a client | |||
| requests. The job attributes returned MAY depend on whether the | requests. The job attributes returned MAY depend on whether the | |||
| requesting user is the same as the user that submitted the job. The | requesting user is the same as the user that submitted the job. The IPP | |||
| IPP object MAY even return none of the requested attributes. In such | object MAY even return none of the requested attributes. In such cases, | |||
| cases, the status returned is the same as if the object had returned | the status returned is the same as if the object had returned all | |||
| all requested attributes. The client cannot tell by such a response | requested attributes. The client cannot tell by such a response whether | |||
| whether the requested attribute was present or absent on the object. | the requested attribute was present or absent on the object. | |||
| 8.5 IPP Security Application Profile for TLS | Isaacson, Powell Expires May 16, 1999 | |||
| 8.5 Queries on jobs submitted using non-IPP protocols | ||||
| The IPP application profile for TLS follows the standard "Mandatory | If the device that an IPP Printer is representing is able to accept jobs | |||
| Cipher Suites" requirement as documented in the TLS specification | using other job submission protocols in addition to IPP, it is | |||
| RECOMMENDED that such an implementation at least allow such "foreign" | ||||
| jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as | ||||
| 'unknown'. Such an implementation NEED NOT support all of the same IPP | ||||
| job attributes as for IPP jobs. The IPP object returns the 'unknown' | ||||
| out-of-band value for any requested attribute of a foreign job that is | ||||
| supported for IPP jobs, but not for foreign jobs. | ||||
| Expires December 30, 1998 | It is further RECOMMENDED, that the IPP Printer generate "job-id" and | |||
| [TLS]. Client implementations MUST NOT assume any other cipher suites | "job-uri" values for such "foreign jobs", if possible, so that they may | |||
| are supported by an IPP Printer object. | be targets of other IPP operations, such as Get-Job-Attributes and | |||
| Cancel-Job. Such an implementation also needs to deal with the problem | ||||
| of authentication of such foreign jobs. One approach would be to treat | ||||
| all such foreign jobs as belonging to users other than the user of the | ||||
| IPP client. Another approach would be for the foreign job to belong to | ||||
| 'anonymous'. Only if the IPP client has been authenticated as an | ||||
| operator or administrator of the IPP Printer object, could the foreign | ||||
| jobs be queried by an IPP request. Alternatively, if the security | ||||
| policy is to allow users to query other users' jobs, then the foreign | ||||
| jobs would also be visible to an end-user IPP client using Get-Jobs and | ||||
| Get-Job-Attributes. | ||||
| If a conforming IPP object supports TLS, it MUST implement and support | 8.6 IPP Security Application Profile for SSL3 | |||
| the "Mandatory Cipher Suites" as specified in the TLS specification | ||||
| and MAY support additional cipher suites. | ||||
| A conforming IPP client SHOULD support TLS including the "Mandatory | The IPP application profile for SSL3 follows the "Secure Socket Layer" | |||
| Cipher Suites" as specified in the TLS specification. A conforming | requirement as documented in the SSL3 specification [SSL]. For | |||
| IPP client MAY support additional cipher suites. | interoperability, the SSL3 cipher suites are: | |||
| SSL_RSA_WITH_RC4_128_MD5 | ||||
| SSL_RSA_WITH_3DES_EDE_CBC_SHA | ||||
| SSL_RSA_WITH_DES_CBC_SHA | ||||
| SSL_RSA_EXPORT_WITH_RC4_40_MD5 | ||||
| SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | ||||
| SSL_RSA_WITH_NULL_MD5 | ||||
| Client implementations MUST NOT assume any other cipher suites are | ||||
| supported by an IPP Printer object. | ||||
| If a conforming IPP object supports SSL3, it MUST implement and support | ||||
| the cipher suites listed above and MAY support additional cipher suites. | ||||
| A conforming IPP client SHOULD support SSL3 including the cipher suites | ||||
| listed above. A conforming IPP client MAY support additional cipher | ||||
| suites. | ||||
| It is possible that due to certain government export restrictions some | It is possible that due to certain government export restrictions some | |||
| non-compliant versions of this extension could be deployed. | non-compliant versions of this extension could be deployed. | |||
| Implementations wishing to inter-operate with such non-compliant | Implementations wishing to inter-operate with such non-compliant | |||
| versions MAY offer the TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | versions MAY offer the SSL_RSA_EXPORT_WITH_RC4_40_MD5 and | |||
| mechanism. However, since 40 bit ciphers are known to be vulnerable | SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 mechanisms. However, since 40 bit | |||
| to attack by current technology, any client which actives a 40 bit | ||||
| cipher MUST NOT indicate to the user that the connection is completely | Isaacson, Powell Expires May 16, 1999 | |||
| secure from eavesdropping. | ciphers are known to be vulnerable to attack by current technology, any | |||
| client which actives a 40 bit cipher MUST NOT indicate to the user that | ||||
| the connection is completely secure from eavesdropping. | ||||
| 9. References | 9. References | |||
| [ASCII] | [ASCII] | |||
| Coded Character Set - 7-bit American Standard Code for | Coded Character Set - 7-bit American Standard Code for Information | |||
| Information Interchange (ASCII), ANSI X3.4-1986. This standard is | Interchange (ASCII), ANSI X3.4-1986. This standard is the | |||
| the specification of the US-ASCII charset. | specification of the US-ASCII charset. | |||
| [HTPP] | [HTPP] | |||
| J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext | J. Barnett, K. Carter, R. DeBry, "Initial Draft - Hypertext | |||
| Printing Protocol - HTPP/1.0", October 1996, | Printing Protocol - HTPP/1.0", October 1996, | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz | ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz | |||
| [IANA-CON] | [IANA-CON] | |||
| Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA | Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA | |||
| Considerations Section in RFCs, Work in Progress, draft-iesg- | Considerations Section in RFCs, Work in Progress, draft-iesg-iana- | |||
| iana-considerations-04.txt, May 21, 1998. | considerations-04.txt, May 21, 1998. | |||
| [IANA-CS] | [IANA-CS] | |||
| IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- | IANA Registry of Coded Character Sets: ftp://ftp.isi.edu/in- | |||
| notes/iana/assignments/character-sets | notes/iana/assignments/character-sets | |||
| [IANA-MT] | [IANA-MT] | |||
| IANA Registry of Media Types: ftp://ftp.isi.edu/in- | IANA Registry of Media Types: ftp://ftp.isi.edu/in- | |||
| notes/iana/assignments/media-types/ | notes/iana/assignments/media-types/ | |||
| Expires December 30, 1998 | [IPP-IIG] | |||
| Hastings, T., Manros, C., "Internet Printing Protocol/1.0: | ||||
| Implementer's Guide", draft-ietf-ipp-implementors-guide-00.txt, | ||||
| November 1998, work in progress. | ||||
| [IPP LPD] | [IPP LPD] | |||
| Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping | Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between | |||
| between LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map- | LPD and IPP Protocols", draft-ietf-ipp-lpd-ipp-map-05.txt, November | |||
| 04.txt, June 1998. | 1998. | |||
| [IPP-PRO] | [IPP-PRO] | |||
| Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing | |||
| Protocol/1.0: Encoding and Transport", draft-ietf-ipp-pro-06.txt, | Protocol/1.0: Encoding and Transport", draft-ietf-ipp-pro-07.txt, | |||
| June, 1998. | November, 1998. | |||
| [IPP-RAT] | [IPP-RAT] | |||
| Zilles, S., "Rationale for the Structure and Model and Protocol | Zilles, S., "Rationale for the Structure and Model and Protocol for | |||
| for the Internet Printing Protocol", draft-ietf-ipp-rat-03.txt, | the Internet Printing Protocol", draft-ietf-ipp-rat-04.txt, | |||
| June, 1998. | November, 1998. | |||
| [IPP-REQ] | [IPP-REQ] | |||
| Wright, D., "Design Goals for an Internet Printing Protocol", | Wright, D., "Design Goals for an Internet Printing Protocol", | |||
| draft-ietf-ipp-req-02.txt, June, 1998. | draft-ietf-ipp-req-03.txt, November, 1998. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| [ISO10646-1] | [ISO10646-1] | |||
| ISO/IEC 10646-1:1993, "Information technology -- Universal | ISO/IEC 10646-1:1993, "Information technology -- Universal | |||
| Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture | Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and | |||
| and Basic Multilingual Plane, JTC1/SC2." | Basic Multilingual Plane, JTC1/SC2." | |||
| [ISO8859-1] | [ISO8859-1] | |||
| ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte | ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte | |||
| Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, | Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987, JTC1/SC2. | |||
| JTC1/SC2. | ||||
| [ISO10175] | [ISO10175] | |||
| ISO/IEC 10175 Document Printing Application (DPA), June 1996. | ISO/IEC 10175 Document Printing Application (DPA), June 1996. | |||
| [LDPA] | [LDPA] | |||
| T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. | T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. | |||
| Zehler, "LDPA - Lightweight Document Printing Application", | Zehler, "LDPA - Lightweight Document Printing Application", | |||
| October 1996, | October 1996, | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz | ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz | |||
| [P1387.4] | [P1387.4] | |||
| Kirk, M. (editor), POSIX System Administration - Part 4: Printing | Kirk, M. (editor), POSIX System Administration - Part 4: Printing | |||
| Interfaces, POSIX 1387.4 D8, 1994. | Interfaces, POSIX 1387.4 D8, 1994. | |||
| [PSIS] Herriot, R. (editor), X/Open A Printing System | [PSIS] Herriot, R. (editor), X/Open A Printing System | |||
| Interoperability Specification (PSIS), August 1995. | Interoperability Specification (PSIS), August 1995. | |||
| [PWG] | [PWG] | |||
| Printer Working Group, http://www.pwg.org. | Printer Working Group, http://www.pwg.org. | |||
| Expires December 30, 1998 | ||||
| [RFC1035] | [RFC1035] | |||
| P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND | P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", | |||
| SPECIFICATION", RFC 1035, November 1987. | RFC 1035, November 1987. | |||
| [RFC1179] | [RFC1179] | |||
| McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC | McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC | |||
| 1179, August 1990. | 1179, August 1990. | |||
| [RFC1630] | ||||
| T. Berners-Lee, "Universal Resource Identifiers in WWW: A | ||||
| Unifying Syntax for the Expression of Names and Addresses of | ||||
| Objects on the Network as used in the World-Wide Web", RFC 1630, | ||||
| June 1994. | ||||
| [RFC1738] | ||||
| Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource | ||||
| Locators (URL)", RFC 1738, December, 1994. | ||||
| [RFC1759] | [RFC1759] | |||
| Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, | Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, | |||
| J., "Printer MIB", RFC 1759, March 1995. | J., "Printer MIB", RFC 1759, March 1995. | |||
| [RFC1766] | [RFC1766] | |||
| H. Alvestrand, "Tags for the Identification of Languages", RFC | H. Alvestrand, "Tags for the Identification of Languages", RFC | |||
| 1766, March 1995. | 1766, March 1995. | |||
| [RFC1808] | ||||
| R. Fielding, "Relative Uniform Resource Locators", RFC 1808, | ||||
| June 1995. | ||||
| [RFC1903] | [RFC1903] | |||
| J. Case, et.al., "Textual Conventions for Version 2 of the Simple | J. Case, et.al., "Textual Conventions for Version 2 of the Simple | |||
| Network Management Protocol (SNMP v2)" RFC 1903, January 1996. | Network Management Protocol (SNMP v2)" RFC 1903, January 1996. | |||
| [RFC1952] | [RFC1952] | |||
| P. Deutsch, "GZIP file format specification version 4.3", RFC | P. Deutsch, "GZIP file format specification version 4.3", RFC 1952, | |||
| 1952, May 1996. | May 1996. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| [RFC2044] | [RFC2044] | |||
| F. Yergeau, "UTF-8, a transformation format of Unicode and ISO | F. Yergeau, "UTF-8, a transformation format of Unicode and ISO | |||
| 10646", RFC 2044, October 1996. | 10646", RFC 2044, October 1996. | |||
| [RFC2068] | [RFC2068] | |||
| R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, | R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee, | |||
| "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 | "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997 | |||
| Expires December 30, 1998 | ||||
| [RFC2069] | [RFC2069] | |||
| J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, | J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen, E. | |||
| E. Sink, L. Stewart, "An Extension to HTTP: Digest Access | Sink, L. Stewart, "An Extension to HTTP: Digest Access | |||
| Authentication", RFC-2069, Jan 1997. | Authentication", RFC-2069, Jan 1997. | |||
| [RFC2045] | [RFC2045] | |||
| N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions | N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions | |||
| (MIME) Part One: Format of Internet Message Bodies " RFC 2045, | (MIME) Part One: Format of Internet Message Bodies " RFC 2045, | |||
| November 1996. | November 1996. | |||
| [RFC2046] | [RFC2046] | |||
| Multipurpose Internet Mail Extensions (MIME) Part Two: Media | Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. | |||
| Types. N. Freed & N. Borenstein. November 1996. (Obsoletes | N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, | |||
| RFC1521, RFC1522, RFC1590), RFC 2046. | RFC1522, RFC1590), RFC 2046. | |||
| [RFC2048] | [RFC2048] | |||
| N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail | N. Freed, J. Klensin & J. Postel, "Multipurpose Internet Mail | |||
| Extension (MIME) Part Four: Registration Procedures". RFC | Extension (MIME) Part Four: Registration Procedures". RFC 2048, | |||
| 2048,November 1996. | November 1996. | |||
| [RFC2119] | [RFC2119] | |||
| S. Bradner, "Key words for use in RFCs to Indicate Requirement | S. Bradner, "Key words for use in RFCs to Indicate Requirement | |||
| Levels", RFC 2119 , March 1997 | Levels", RFC 2119 , March 1997 | |||
| [RFC2228] | [RFC2228] | |||
| M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, | M. Horowitz, S. Lunt, "FTP Security Extensions", RFC 2228, October | |||
| October 1997. | 1997. | |||
| [RFC2277] | [RFC2277] | |||
| H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC | H. Alvestrand, "IETF Policy on Character Sets and Languages" RFC | |||
| 2277, January 1998. | 2277, January 1998. | |||
| [RFC2278] | [RFC2278] | |||
| N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC | N. Freed, J. Postel: "IANA CharSet Registration Procedures", RFC | |||
| 2278, January 1998. | 2278, January 1998. | |||
| [RFC2279] | [RFC2279] | |||
| F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC | F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC | |||
| 2279. January 1998. | 2279. January 1998. | |||
| [RFC2316] | [RFC2316] | |||
| S. Bellovin , "Report of the IAB Security Architecture Workshop", | S. Bellovin , "Report of the IAB Security Architecture Workshop", | |||
| RFC 2316, April 1998. | RFC 2316, April 1998. | |||
| [SWP] | Isaacson, Powell Expires May 16, 1999 | |||
| P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", | ||||
| May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf | ||||
| Expires December 30, 1998 | [RFC2396] | |||
| Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource | ||||
| Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | ||||
| [SSL] | ||||
| Netscape, The SSL Protocol, Version 3, (Text version 3.02), | ||||
| November 1996. | ||||
| [SWP] | ||||
| P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0", May | ||||
| 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf | ||||
| 10. Copyright Notice | 10. Copyright Notice | |||
| This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
| others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it or | |||
| or assist in its implementation may be prepared, copied, published and | assist in its implementation may be prepared, copied, published and | |||
| distributed, in whole or in part, without restriction of any kind, | distributed, in whole or in part, without restriction of any kind, | |||
| provided that the above copyright notice and this paragraph are | provided that the above copyright notice and this paragraph are included | |||
| included on all such copies and derivative works. However, this | on all such copies and derivative works. However, this document itself | |||
| document itself may not be modified in any way, such as by removing | may not be modified in any way, such as by removing the copyright notice | |||
| the copyright notice or references to the Internet Society or other | or references to the Internet Society or other Internet organizations, | |||
| Internet organizations, except as needed for the purpose of | except as needed for the purpose of developing Internet standards in | |||
| developing Internet standards in which case the procedures for | which case the procedures for copyrights defined in the Internet | |||
| copyrights defined in the Internet Standards process must be followed, | Standards process must be followed, or as required to translate it into | |||
| or as required to translate it into languages other than English. | languages other than English. | |||
| The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
| This document and the information contained herein is provided on an | This document and the information contained herein is provided on an "AS | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | |||
| TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT | FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | |||
| NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN | LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | |||
| WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | |||
| MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | FITNESS FOR A PARTICULAR PURPOSE. | |||
| 11. Author's Address | 11. Author's Address | |||
| Scott A. Isaacson (Editor) | Scott A. Isaacson (Editor) | |||
| Novell, Inc. | Novell, Inc. | |||
| 122 E 1700 S | 122 E 1700 S | |||
| Provo, UT 84606 | Provo, UT 84606 | |||
| Phone: 801-861-7366 | Phone: 801-861-7366 | |||
| Fax: 801-861-2517 | Fax: 801-861-2517 | |||
| e-mail: sisaacson@novell.com | e-mail: sisaacson@novell.com | |||
| Tom Hastings | Tom Hastings | |||
| Xerox Corporation | Xerox Corporation | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 701 S. Aviation Blvd. | 701 S. Aviation Blvd. | |||
| El Segundo, CA 90245 | El Segundo, CA 90245 | |||
| Phone: 310-333-6413 | Phone: 310-333-6413 | |||
| Fax: 310-333-5514 | Fax: 310-333-5514 | |||
| e-mail: hastings@cp10.es.xerox.com | e-mail: hastings@cp10.es.xerox.com | |||
| Robert Herriot | Robert Herriot | |||
| Expires December 30, 1998 | ||||
| Sun Microsystems Inc. | Sun Microsystems Inc. | |||
| 901 San Antonio.Road, MPK-17 | 901 San Antonio.Road, MPK-17 | |||
| Palo Alto, CA 94303 | Palo Alto, CA 94303 | |||
| Phone: 650-786-8995 | Phone: 650-786-8995 | |||
| Fax: 650-786-7077 | Fax: 650-786-7077 | |||
| e-mail: robert.herriot@eng.sun.com | e-mail: robert.herriot@eng.sun.com | |||
| Roger deBry | Roger deBry | |||
| HUC/003G | HUC/003G | |||
| skipping to change at page 134, line 23 ¶ | skipping to change at page 120, line 31 ¶ | |||
| Roger deBry | Roger deBry | |||
| HUC/003G | HUC/003G | |||
| IBM Corporation | IBM Corporation | |||
| P.O. Box 1900 | P.O. Box 1900 | |||
| Boulder, CO 80301-9191 | Boulder, CO 80301-9191 | |||
| Phone: (303) 924-4080 | Phone: (303) 924-4080 | |||
| Fax: (303) 924-9889 | Fax: (303) 924-9889 | |||
| e-mail: debry@vnet.ibm.com | e-mail: debry@vnet.ibm.com | |||
| Patrick Powell | Patrick Powell | |||
| Astart Technologies | Astart Technologies | |||
| 9475 Chesapeake Dr., Suite D | 9475 Chesapeake Dr., Suite D | |||
| San Diego, CA 95123 | San Diego, CA 95123 | |||
| Phone: (619) 874-6543 | Phone: (619) 874-6543 | |||
| Fax: (619) 279-8424 | Fax: (619) 279-8424 | |||
| e-mail: papowell@astart.com | e-mail: papowell@astart.com | |||
| IPP Mailing List: ipp@pwg.org | IPP Mailing List: ipp@pwg.org | |||
| IPP Mailing List Subscription: ipp-request@pwg.org | IPP Mailing List Subscription: ipp-request@pwg.org | |||
| IPP Web Page: http://www.pwg.org/ipp/ | IPP Web Page: http://www.pwg.org/ipp/ | |||
| Implementers of this specification are encouraged to join IPP Mailing | Implementers of this specification are encouraged to join IPP Mailing | |||
| List in order to participate in any discussions of clarification | List in order to participate in any discussions of clarification issues | |||
| issues and review of registration proposals for additional attributes | and review of registration proposals for additional attributes and | |||
| and values. | values. | |||
| Other Participants: | Other Participants: | |||
| Chuck Adams - Tektronix | Chuck Adams - Tektronix | |||
| Jeff Barnett - IBM | Jeff Barnett - IBM | |||
| Ron Bergman - Dataproducts Corp. | Ron Bergman - Dataproducts Corp. | |||
| Sylvan Butler, HP | Sylvan Butler - HP | |||
| Keith Carter, IBM Corporation | Keith Carter - IBM Corporation | |||
| Jeff Copeland - QMS | Jeff Copeland - QMS | |||
| Andy Davidson - Tektronix | Andy Davidson - Tektronix | |||
| Mabry Dozier - QMS | Mabry Dozier - QMS | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Lee Farrell - Canon Information Systems | Lee Farrell - Canon Information Systems | |||
| Steve Gebert - IBM | Steve Gebert - IBM | |||
| Babek Jahromi, Microsoft | Babek Jahromi - Microsoft | |||
| Expires December 30, 1998 | ||||
| David Kellerman - Northlake Software | David Kellerman - Northlake Software | |||
| Rick Landau - Digital | Rick Landau - Digital | |||
| Greg LeClair - Epson | Greg LeClair - Epson | |||
| Harry Lewis - IBM | Harry Lewis - IBM | |||
| Pete Loya - HP | Pete Loya - HP | |||
| Ray Lutz - Cognisys | Ray Lutz - Cognisys | |||
| Mike MacKay, Novell, Inc. | Mike MacKay - Novell, Inc. | |||
| Daniel Manchala - Underscore | Daniel Manchala - Xerox | |||
| Carl-Uno Manros, Xerox | Carl-Uno Manros - Xerox | |||
| Jay Martin - Underscore | Jay Martin - Underscore | |||
| Larry Masinter - Xerox | Larry Masinter - Xerox | |||
| Stan McConnell - Xerox | Stan McConnell - Xerox | |||
| Ira McDonald, High North Inc. | Ira McDonald - High North Inc. | |||
| Paul Moore, Microsoft | Paul Moore - Microsoft | |||
| Tetsuya Morita - Ricoh | Tetsuya Morita - Ricoh | |||
| Yuichi Niwa - Ricoh | Yuichi Niwa - Ricoh | |||
| Pat Nogay - IBM | Pat Nogay - IBM | |||
| Ron Norton - Printronics | Ron Norton - Printronics | |||
| Bob Pentecost - HP | Bob Pentecost - HP | |||
| Rob Rhoads - Intel | Rob Rhoads - Intel | |||
| Xavier Riley - Xerox | Xavier Riley - Xerox | |||
| David Roach - Unisys | David Roach - Unisys | |||
| Stuart Rowley, Kyocera | Stuart Rowley - Kyocera | |||
| Hiroyuki Sato - Canon | Hiroyuki Sato - Canon | |||
| Bob Setterbo - Adobe | Bob Setterbo - Adobe | |||
| Devon Taylor, Novell, Inc. | Devon Taylor - Novell, Inc. | |||
| Mike Timperman - Lexmark | Mike Timperman - Lexmark | |||
| Randy Turner - Sharp | Randy Turner - Sharp | |||
| Atsushi Yuki - Kyocera | Atsushi Yuki - Kyocera | |||
| Rick Yardumian - Xerox | Rick Yardumian - Xerox | |||
| Lloyd Young - Lexmark | Lloyd Young - Lexmark | |||
| Bill Wagner - DPI | Bill Wagner - DPI | |||
| Jim Walker - DAZEL | Jim Walker - DAZEL | |||
| Chris Wellens - Interworking Labs | Chris Wellens - Interworking Labs | |||
| Rob Whittle - Novell | Rob Whittle - Novell, Inc. | |||
| Don Wright - Lexmark | Don Wright - Lexmark | |||
| Peter Zehler, Xerox | Peter Zehler - Xerox | |||
| Steve Zilles, Adobe | Steve Zilles - Adobe | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 12. Formats for IPP Registration Proposals | 12. Formats for IPP Registration Proposals | |||
| In order to propose an IPP extension for registration, the proposer | In order to propose an IPP extension for registration, the proposer must | |||
| must submit an application to IANA by email to "iana@iana.org" or by | submit an application to IANA by email to "iana@iana.org" or by filling | |||
| filling out the appropriate form on the IANA web pages | out the appropriate form on the IANA web pages (http://www.iana.org). | |||
| (http://www.iana.org). This section specifies the required | This section specifies the required information and the formats for | |||
| information and the formats for proposing registrations of extensions | proposing registrations of extensions to IPP as provided in Section 6 | |||
| to IPP as provided in Section 6 for: | for: | |||
| 1. type2 'keyword' attribute values | 1. type2 'keyword' attribute values | |||
| 2. type3 'keyword' attribute values | 2. type3 'keyword' attribute values | |||
| 3. type2 'enum' attribute values | 3. type2 'enum' attribute values | |||
| 4. type3 'enum' attribute values | 4. type3 'enum' attribute values | |||
| 5. attributes | 5. attributes | |||
| 6. attribute syntaxes | 6. attribute syntaxes | |||
| 7. operations | 7. operations | |||
| 8. status codes | 8. status codes | |||
| 12.1 Type2 keyword attribute values registration | 12.1 Type2 keyword attribute values registration | |||
| Type of registration: type2 keyword attribute value | Type of registration: type2 keyword attribute value | |||
| Name of attribute to which this keyword specification is to be added: | Name of attribute to which this keyword specification is to be added: | |||
| Proposed keyword name of this keyword value: | Proposed keyword name of this keyword value: | |||
| Specification of this keyword value (follow the style of IPP Model | Specification of this keyword value (follow the style of IPP Model | |||
| Section 4.1.3): | Section 4.1.2.3): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For type2 keywords, the Designated Expert will be the point of | Note: For type2 keywords, the Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any maintenance | |||
| maintenance of the registration specification is needed. | of the registration specification is needed. | |||
| 12.2 Type3 keyword attribute values registration | 12.2 Type3 keyword attribute values registration | |||
| Type of registration: type3 keyword attribute value | Type of registration: type3 keyword attribute value | |||
| Name of attribute to which this keyword specification is to be added: | Name of attribute to which this keyword specification is to be added: | |||
| Proposed keyword name of this keyword value: | Proposed keyword name of this keyword value: | |||
| Specification of this keyword value (follow the style of IPP Model | Specification of this keyword value (follow the style of IPP Model | |||
| Section 4.1.3): | Section 4.1.2.3): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Expires December 30, 1998 | Note: For type3 keywords, the proposer will be the point of contact for | |||
| Note: For type3 keywords, the proposer will be the point of contact | the approved registration specification, if any maintenance of the | |||
| for the approved registration specification, if any maintenance of the | ||||
| registration specification is needed. | registration specification is needed. | |||
| 12.3 Type2 enum attribute values registration | 12.3 Type2 enum attribute values registration | |||
| Type of registration: type2 enum attribute value | Type of registration: type2 enum attribute value | |||
| Name of attribute to which this enum specification is to be added: | Name of attribute to which this enum specification is to be added: | |||
| Keyword symbolic name of this enum value: | Keyword symbolic name of this enum value: | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Specification of this enum value (follow the style of IPP Model | Specification of this enum value (follow the style of IPP Model Section | |||
| Section 4.1.4): | 4.1.4): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For type2 enums, the Designated Expert will be the point of | Note: For type2 enums, the Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any maintenance | |||
| maintenance of the registration specification is needed. | of the registration specification is needed. | |||
| 12.4 Type3 enum attribute values registration | 12.4 Type3 enum attribute values registration | |||
| Type of registration: type3 enum attribute value | Type of registration: type3 enum attribute value | |||
| Name of attribute to which this enum specification is to be added: | Name of attribute to which this enum specification is to be added: | |||
| Keyword symbolic name of this enum value: | Keyword symbolic name of this enum value: | |||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Specification of this enum value (follow the style of IPP Model | Specification of this enum value (follow the style of IPP Model Section | |||
| Section 4.1.4): | 4.1.4): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For type3 enums, the proposer will be the point of contact for | Note: For type3 enums, the proposer will be the point of contact for | |||
| the approved registration specification, if any maintenance of the | the approved registration specification, if any maintenance of the | |||
| registration specification is needed. | registration specification is needed. | |||
| 12.5 Attribute registration | 12.5 Attribute registration | |||
| Type of registration: attribute | Type of registration: attribute | |||
| Proposed keyword name of this attribute: | Proposed keyword name of this attribute: | |||
| Types of attribute (Operation, Job Template, Job Description, Printer | Types of attribute (Operation, Job Template, Job Description, Printer | |||
| Description): | Description): | |||
| Operations to be used with if the attribute is an operation attribute: | Operations to be used with if the attribute is an operation attribute: | |||
| Object (Job, Printer, etc. if bound to an object): | Object (Job, Printer, etc. if bound to an object): | |||
| Attribute syntax(es) (include 1setOf and range as in Section 4.2): | Attribute syntax(es) (include 1setOf and range as in Section 4.2): | |||
| If attribute syntax is 'keyword' or 'enum', is it type2 or type3: | If attribute syntax is 'keyword' or 'enum', is it type2 or type3: | |||
| Expires December 30, 1998 | ||||
| If this is a Printer attribute, MAY the value returned depend on | If this is a Printer attribute, MAY the value returned depend on | |||
| "document-format" (See Section 6.2): | "document-format" (See Section 6.2): | |||
| If this is a Job Template attribute, how does its specification depend | ||||
| on the value of the "multiple-document-handling" attribute: | ||||
| Specification of this attribute (follow the style of IPP Model Section | Specification of this attribute (follow the style of IPP Model Section | |||
| 4.2): | 4.2): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For attributes, the IPP Designated Expert will be the point of | Note: For attributes, the IPP Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any maintenance | |||
| maintenance of the registration specification is needed. | of the registration specification is needed. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 12.6 Attribute Syntax registration | 12.6 Attribute Syntax registration | |||
| Type of registration: attribute syntax | Type of registration: attribute syntax | |||
| Proposed name of this attribute syntax: | Proposed name of this attribute syntax: | |||
| Type of attribute syntax (integer, octetString, character-string, see | Type of attribute syntax (integer, octetString, character-string, see | |||
| [IPP-PRO]): | [IPP-PRO]): | |||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Specification of this attribute (follow the style of IPP Model Section | Specification of this attribute (follow the style of IPP Model Section | |||
| 4.1): | 4.1): | |||
| skipping to change at page 138, line 40 ¶ | skipping to change at page 124, line 28 ¶ | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For attribute syntaxes, the IPP Designated Expert will be the | Note: For attribute syntaxes, the IPP Designated Expert will be the | |||
| point of contact for the approved registration specification, if any | point of contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 12.7 Operation registration | 12.7 Operation registration | |||
| Type of registration: operation | Type of registration: operation | |||
| Proposed name of this operation: | Proposed name of this operation: | |||
| Numeric operation-id value (to be assigned by the IPP Designated | Numeric operation-id value (to be assigned by the IPP Designated Expert | |||
| Expert in consultation with IANA): | in consultation with IANA): | |||
| Object Target (Job, Printer, etc. that operation is upon): | Object Target (Job, Printer, etc. that operation is upon): | |||
| Specification of this attribute (follow the style of IPP Model Section | Specification of this attribute (follow the style of IPP Model Section | |||
| 3): | 3): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For operations, the IPP Designated Expert will be the point of | Note: For operations, the IPP Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any maintenance | |||
| of the registration specification is needed. | ||||
| 12.8 Attribute Group registration | ||||
| Type of registration: attribute group | ||||
| Proposed name of this attribute group: | ||||
| Numeric tag according to [IPP-PRO] (to be assigned by the IPP Designated | ||||
| Expert in consultation with IANA): | ||||
| Operation requests and group number for each operation in which the | ||||
| attribute group occurs: | ||||
| Operation responses and group number for each operation in which the | ||||
| attribute group occurs: | ||||
| Specification of this attribute group (follow the style of IPP Model | ||||
| Section 3): | ||||
| Name of proposer: | ||||
| Address of proposer: | ||||
| Email address of proposer: | ||||
| Note: For attribute groups, the IPP Designated Expert will be the point | ||||
| of contact for the approved registration specification, if any | ||||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| 12.8 Status code registration | 12.9 Status code registration | |||
| Type of registration: status code | Type of registration: status code | |||
| Keyword symbolic name of this status code value: | Keyword symbolic name of this status code value: | |||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Operations that this status code may be used with: | Operations that this status code may be used with: | |||
| Specification of this status code (follow the style of IPP Model | Specification of this status code (follow the style of IPP Model Section | |||
| Section 14 APPENDIX B: Status Codes and Suggested Status Code | 14 APPENDIX B: Status Codes and Suggested Status Code Messages): | |||
| Messages): | ||||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For status codes, the Designated Expert will be the point of | Note: For status codes, the Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any maintenance | |||
| maintenance of the registration specification is needed. | of the registration specification is needed. | |||
| 13. APPENDIX A: Terminology | 13. APPENDIX A: Terminology | |||
| This specification uses the terminology defined in this section. | This specification uses the terminology defined in this section. | |||
| 13.1 Conformance Terminology | 13.1 Conformance Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | interpreted as described in RFC 2119 [RFC2119]. | |||
| 13.1.1 NEED NOT | 13.1.1 NEED NOT | |||
| This term is not included in RFC 2119. The verb "NEED NOT" indicates | This term is not included in RFC 2119. The verb "NEED NOT" indicates an | |||
| an action that the subject of the sentence does not have to implement | action that the subject of the sentence does not have to implement in | |||
| in order to claim conformance to the standard. The verb "NEED NOT" is | order to claim conformance to the standard. The verb "NEED NOT" is used | |||
| used instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. | instead of "MAY NOT" since "MAY NOT" sounds like a prohibition. | |||
| 13.2 Model Terminology | 13.2 Model Terminology | |||
| 13.2.1 Keyword | 13.2.1 Keyword | |||
| Keywords are used within this document as identifiers of semantic | Keywords are used within this document as identifiers of semantic | |||
| entities within the abstract model (see section 4.1.3). Attribute | entities within the abstract model (see section 4.1.2.3). Attribute | |||
| names, some attribute values, attribute syntaxes, and attribute group | names, some attribute values, attribute syntaxes, and attribute group | |||
| names are represented as keywords. | names are represented as keywords. | |||
| Expires December 30, 1998 | ||||
| 13.2.2 Attributes | 13.2.2 Attributes | |||
| An attribute is an item of information that is associated with an | An attribute is an item of information that is associated with an | |||
| instance of an IPP object. An attribute consists of an attribute name | instance of an IPP object. An attribute consists of an attribute name | |||
| and one or more attribute values. Each attribute has a specific | and one or more attribute values. Each attribute has a specific | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| attribute syntax. All object attributes are defined in section 4 and | attribute syntax. All object attributes are defined in section 4 and | |||
| all operation attributes are defined in section 3. | all operation attributes are defined in section 3. | |||
| Job Template Attributes are described in section 4.2. The client | Job Template Attributes are described in section 4.2. The client | |||
| optionally supplies Job Template attributes in a create request | optionally supplies Job Template attributes in a create request | |||
| (operation requests that create Job objects). The Printer object has | (operation requests that create Job objects). The Printer object has | |||
| associated attributes which define supported and default values for | associated attributes which define supported and default values for the | |||
| the Printer. | Printer. | |||
| 13.2.2.1 Attribute Name | 13.2.2.1 Attribute Name | |||
| Each attribute is uniquely identified in this document by its | Each attribute is uniquely identified in this document by its attribute | |||
| attribute name. An attribute name is a keyword. The keyword | name. An attribute name is a keyword. The keyword attribute name is | |||
| attribute name is given in the section header describing that | given in the section header describing that attribute. In running text | |||
| attribute. In running text in this document, attribute names are | in this document, attribute names are indicated inside double quotation | |||
| indicated inside double quotation marks (") where the quotation marks | marks (") where the quotation marks are not part of the keyword itself. | |||
| are not part of the keyword itself. | ||||
| 13.2.2.2 Attribute Group Name | 13.2.2.2 Attribute Group Name | |||
| Related attributes are grouped into named groups. The name of the | Related attributes are grouped into named groups. The name of the group | |||
| group is a keyword. The group name may be used in place of naming all | is a keyword. The group name may be used in place of naming all the | |||
| the attributes in the group explicitly. Attribute groups are defined | attributes in the group explicitly. Attribute groups are defined in | |||
| in section 3. | section 3. | |||
| 13.2.2.3 Attribute Value | 13.2.2.3 Attribute Value | |||
| Each attribute has one or more values. Attribute values are | Each attribute has one or more values. Attribute values are represented | |||
| represented in the syntax type specified for that attribute. In | in the syntax type specified for that attribute. In running text in this | |||
| running text in this document, attribute values are indicated inside | document, attribute values are indicated inside single quotation marks | |||
| single quotation marks ('), whether their attribute syntax is keyword, | ('), whether their attribute syntax is keyword, integer, text, etc. | |||
| integer, text, etc. where the quotation marks are not part of the | where the quotation marks are not part of the value itself. | |||
| value itself. | ||||
| 13.2.2.4 Attribute Syntax | 13.2.2.4 Attribute Syntax | |||
| Each attribute is defined using an explicit syntax type. In this | Each attribute is defined using an explicit syntax type. In this | |||
| document, each syntax type is defined as a keyword with specific | document, each syntax type is defined as a keyword with specific | |||
| meaning. The protocol specification document [IPP-PRO] indicates the | meaning. The Encoding and Transport document [IPP-PRO] indicates the | |||
| actual "on-the-wire" encoding rules for each syntax type. Attribute | ||||
| Expires December 30, 1998 | ||||
| actual "on-the-wire" encoding rules for each syntax type. Attribute | ||||
| syntax types are defined in section 4.1. | syntax types are defined in section 4.1. | |||
| 13.2.3 Supports | 13.2.3 Supports | |||
| By definition, a Printer object supports an attribute only if that | By definition, a Printer object supports an attribute only if that | |||
| Printer object responds with the corresponding attribute populated | Printer object responds with the corresponding attribute populated with | |||
| with some value(s) in a response to a query for that attribute. A | some value(s) in a response to a query for that attribute. A Printer | |||
| Printer object supports an attribute value if the value is one of the | object supports an attribute value if the value is one of the Printer | |||
| Printer object's "supported values" attributes. The device behind a | object's "supported values" attributes. The device behind a Printer | |||
| Printer object may exhibit a behavior that corresponds to some IPP | object may exhibit a behavior that corresponds to some IPP attribute, | |||
| attribute, but if the Printer object, when queried for that attribute, | but if the Printer object, when queried for that attribute, doesn't | |||
| doesn't respond with the attribute, then as far as IPP is concerned, | respond with the attribute, then as far as IPP is concerned, that | |||
| that implementation does not support that feature. If the Printer | implementation does not support that feature. If the Printer object's | |||
| object's "xxx-supported" attribute is not populated with a particular | ||||
| value (even if that value is a legal value for that attribute), then | Isaacson, Powell Expires May 16, 1999 | |||
| that Printer object does not support that particular value. | "xxx-supported" attribute is not populated with a particular value (even | |||
| if that value is a legal value for that attribute), then that Printer | ||||
| object does not support that particular value. | ||||
| A conforming implementation MUST support all REQUIRED attributes. | A conforming implementation MUST support all REQUIRED attributes. | |||
| However, even for REQUIRED attributes, conformance to IPP does not | However, even for REQUIRED attributes, conformance to IPP does not | |||
| mandate that all implementations support all possible values | mandate that all implementations support all possible values | |||
| representing all possible job processing behaviors and features. For | representing all possible job processing behaviors and features. For | |||
| example, if a given instance of a Printer supports only certain | example, if a given instance of a Printer supports only certain document | |||
| document formats, then that Printer responds with the "document- | formats, then that Printer responds with the "document-format-supported" | |||
| format-supported" attribute populated with a set of values, possibly | attribute populated with a set of values, possibly only one, taken from | |||
| only one, taken from the entire set of possible values defined for | the entire set of possible values defined for that attribute. This | |||
| that attribute. This limited set of values represents the Printer's | limited set of values represents the Printer's set of supported document | |||
| set of supported document formats. Supporting an attribute and some | formats. Supporting an attribute and some set of values for that | |||
| set of values for that attribute enables IPP end users to be aware of | attribute enables IPP end users to be aware of and make use of those | |||
| and make use of those features associated with that attribute and | features associated with that attribute and those values. If an | |||
| those values. If an implementation chooses to not support an | implementation chooses to not support an attribute or some specific | |||
| attribute or some specific value, then IPP end users would have no | value, then IPP end users would have no ability to make use of that | |||
| ability to make use of that feature within the context of IPP itself. | feature within the context of IPP itself. However, due to existing | |||
| However, due to existing practice and legacy systems which are not IPP | practice and legacy systems which are not IPP aware, there might be some | |||
| aware, there might be some other mechanism outside the scope of IPP to | other mechanism outside the scope of IPP to control or request the | |||
| control or request the "unsupported" feature (such as embedded | "unsupported" feature (such as embedded instructions within the document | |||
| instructions within the document data itself). | data itself). | |||
| For example, consider the "finishings-supported" attribute. | For example, consider the "finishings-supported" attribute. | |||
| 1) If a Printer object is not physically capable of stapling, the | 1) If a Printer object is not physically capable of stapling, the | |||
| "finishings-supported" attribute MUST NOT be populated with the | "finishings-supported" attribute MUST NOT be populated with the | |||
| value of 'staple'. | value of 'staple'. | |||
| 2) A Printer object is physically capable of stapling, however an | 2) A Printer object is physically capable of stapling, however an | |||
| implementation chooses not to support stapling in the IPP | implementation chooses not to support stapling in the IPP | |||
| "finishings" attribute. In this case, 'staple' MUST NOT be a | "finishings" attribute. In this case, 'staple' MUST NOT be a value | |||
| value in the "finishings-supported" Printer object attribute. | in the "finishings-supported" Printer object attribute. Without | |||
| support for the value 'staple', an IPP end user would have no means | ||||
| Expires December 30, 1998 | within the protocol itself to request that a Job be stapled. | |||
| Without support for the value 'staple', an IPP end user would | However, an existing document data formatter might be able to | |||
| have no means within the protocol itself to request that a Job be | request that the document be stapled directly with an embedded | |||
| stapled. However, an existing document data formatter might be | instruction within the document data. In this case, the IPP | |||
| able to request that the document be stapled directly with an | implementation does not "support" stapling, however the end user is | |||
| embedded instruction within the document data. In this case, the | still able to have some control over the stapling of the completed | |||
| IPP implementation does not "support" stapling, however the end | job. | |||
| user is still able to have some control over the stapling of the | ||||
| completed job. | ||||
| 3) A Printer object is physically capable of stapling, and an | 3) A Printer object is physically capable of stapling, and an | |||
| implementation chooses to support stapling in the IPP | implementation chooses to support stapling in the IPP "finishings" | |||
| "finishings" attribute. In this case, 'staple' MUST be a value in | attribute. In this case, 'staple' MUST be a value in the | |||
| the "finishings-supported" Printer object attribute. Doing so, | "finishings-supported" Printer object attribute. Doing so, would | |||
| would enable end users to be aware of and make use of the | enable end users to be aware of and make use of the stapling | |||
| stapling feature using IPP attributes. | feature using IPP attributes. | |||
| Even though support for Job Template attributes by a Printer object is | Even though support for Job Template attributes by a Printer object is | |||
| OPTIONAL, it is RECOMMENDED that if the device behind a Printer object | OPTIONAL, it is RECOMMENDED that if the device behind a Printer object | |||
| is capable of realizing any feature or function that corresponds to an | is capable of realizing any feature or function that corresponds to an | |||
| IPP attribute and some associated value, then that implementation | IPP attribute and some associated value, then that implementation SHOULD | |||
| SHOULD support that IPP attribute and value. | support that IPP attribute and value. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| The set of values in any of the supported value attributes is set | The set of values in any of the supported value attributes is set | |||
| (populated) by some administrative process or automatic sensing | (populated) by some administrative process or automatic sensing | |||
| mechanism that is outside the scope of IPP. For administrative policy | mechanism that is outside the scope of IPP. For administrative policy | |||
| and control reasons, an administrator may choose to make only a subset | and control reasons, an administrator may choose to make only a subset | |||
| of possible values visible to the end user. In this case, the real | of possible values visible to the end user. In this case, the real | |||
| output device behind the IPP Printer abstraction may be capable of a | output device behind the IPP Printer abstraction may be capable of a | |||
| certain feature, however an administrator is specifying that access to | certain feature, however an administrator is specifying that access to | |||
| that feature not be exposed to the end user through the IPP protocol. | that feature not be exposed to the end user through the IPP protocol. | |||
| Also, since a Printer object may represent a logical print device (not | Also, since a Printer object may represent a logical print device (not | |||
| just a physical device) the actual process for supporting a value is | just a physical device) the actual process for supporting a value is | |||
| undefined and left up to the implementation. However, if a Printer | undefined and left up to the implementation. However, if a Printer | |||
| object supports a value, some manual human action may be needed to | object supports a value, some manual human action may be needed to | |||
| realize the semantic action associated with the value, but no end user | realize the semantic action associated with the value, but no end user | |||
| action is required. | action is required. | |||
| For example, if one of the values in the "finishings-supported" | For example, if one of the values in the "finishings-supported" | |||
| attribute is 'staple', the actual process might be an automatic staple | attribute is 'staple', the actual process might be an automatic staple | |||
| action by a physical device controlled by some command sent to the | action by a physical device controlled by some command sent to the | |||
| device. Or, the actual process of stapling might be a manual action | device. Or, the actual process of stapling might be a manual action by | |||
| by an operator at an operator attended Printer object. | an operator at an operator attended Printer object. | |||
| For another example of how supported attributes function, consider a | For another example of how supported attributes function, consider a | |||
| system administrator who desires to control all print jobs so that no | system administrator who desires to control all print jobs so that no | |||
| job sheets are printed in order to conserve paper. To force no job | job sheets are printed in order to conserve paper. To force no job | |||
| sheets, the system administrator sets the only supported value for the | sheets, the system administrator sets the only supported value for the | |||
| "job-sheets-supported" attribute to 'none'. In this case, if a client | "job-sheets-supported" attribute to 'none'. In this case, if a client | |||
| requests anything except 'none', the create request is rejected or the | requests anything except 'none', the create request is rejected or the | |||
| "job-sheets" value is ignored (depending on the value of "ipp-attribute- | ||||
| Expires December 30, 1998 | fidelity"). To force the use of job start/end sheets on all jobs, the | |||
| "job-sheets" value is ignored (depending on the value of "ipp- | administrator does not include the value 'none' in the "job-sheets- | |||
| attribute-fidelity"). To force the use of job start/end sheets on all | supported" attribute. In this case, if a client requests 'none', the | |||
| jobs, the administrator does not include the value 'none' in the "job- | create request is rejected or the "job-sheets" value is ignored (again | |||
| sheets-supported" attribute. In this case, if a client requests | depending on the value of "ipp-attribute-fidelity"). | |||
| 'none', the create request is rejected or the "job-sheets" value is | ||||
| ignored (again depending on the value of "ipp-attribute-fidelity"). | ||||
| 13.2.4 print-stream page | 13.2.4 print-stream page | |||
| A "print-stream page" is a page according to the definition of pages | A "print-stream page" is a page according to the definition of pages in | |||
| in the language used to express the document data. | the language used to express the document data. | |||
| 13.2.5 impression | 13.2.5 impression | |||
| An "impression" is the image (possibly many print-stream pages in | An "impression" is the image (possibly many print-stream pages in | |||
| different configurations) imposed onto a single media page. | different configurations) imposed onto a single media page. | |||
| 14. APPENDIX B: Status Codes and Suggested Status Code Messages | 14. APPENDIX B: Status Codes and Suggested Status Code Messages | |||
| This section defines status code enum keywords and values that are | This section defines status code enum keywords and values that are used | |||
| used to provide semantic information on the results of an operation | to provide semantic information on the results of an operation request. | |||
| request. Each operation response MUST include a status code. The | Each operation response MUST include a status code. The response MAY | |||
| response MAY also contain a status message that provides a short | also contain a status message that provides a short textual description | |||
| textual description of the status. The status code is intended for | of the status. The status code is intended for use by automata, and the | |||
| use by automata, and the status message is intended for the human end | ||||
| user. Since the status message is an OPTIONAL component of the | Isaacson, Powell Expires May 16, 1999 | |||
| operation response, an IPP application (i.e., a browser, GUI, print | status message is intended for the human end user. Since the status | |||
| driver or gateway) is NOT REQUIRED to examine or display the status | message is an OPTIONAL component of the operation response, an IPP | |||
| message, since it MAY not be returned to the application. | application (i.e., a browser, GUI, print driver or gateway) is NOT | |||
| REQUIRED to examine or display the status message, since it MAY not be | ||||
| returned to the application. | ||||
| The prefix of the status keyword defines the class of response as | The prefix of the status keyword defines the class of response as | |||
| follows: | follows: | |||
| "informational" - Request received, continuing process | "informational" - Request received, continuing process | |||
| "successful" - The action was successfully received, understood, | "successful" - The action was successfully received, understood, and | |||
| and accepted | accepted | |||
| "redirection" - Further action must be taken in order to complete | "redirection" - Further action must be taken in order to complete the | |||
| the request | request | |||
| "client-error" - The request contains bad syntax or cannot be | "client-error" - The request contains bad syntax or cannot be | |||
| fulfilled | fulfilled | |||
| "server-error" - The IPP object failed to fulfill an apparently | "server-error" - The IPP object failed to fulfill an apparently | |||
| valid request | valid request | |||
| Expires December 30, 1998 | ||||
| As with type2 enums, IPP status codes are extensible. IPP clients are | As with type2 enums, IPP status codes are extensible. IPP clients are | |||
| NOT REQUIRED to understand the meaning of all registered status codes, | NOT REQUIRED to understand the meaning of all registered status codes, | |||
| though such understanding is obviously desirable. However, IPP | though such understanding is obviously desirable. However, IPP clients | |||
| clients MUST understand the class of any status code, as indicated by | MUST understand the class of any status code, as indicated by the | |||
| the prefix, and treat any unrecognized response as being equivalent to | prefix, and treat any unrecognized response as being equivalent to the | |||
| the first status code of that class, with the exception that an | first status code of that class, with the exception that an unrecognized | |||
| unrecognized response MUST NOT be cached. For example, if an | response MUST NOT be cached. For example, if an unrecognized status | |||
| unrecognized status code of "client-error-xxx-yyy" is received by the | code of "client-error-xxx-yyy" is received by the client, it can safely | |||
| client, it can safely assume that there was something wrong with its | assume that there was something wrong with its request and treat the | |||
| request and treat the response as if it had received a "client-error- | response as if it had received a "client-error-bad-request" status code. | |||
| bad-request" status code. In such cases, IPP applications SHOULD | In such cases, IPP applications SHOULD present the OPTIONAL message (if | |||
| present the OPTIONAL message (if present) to the end user since the | present) to the end user since the message is likely to contain human | |||
| message is likely to contain human readable information which will | readable information which will help to explain the unusual status. The | |||
| help to explain the unusual status. The name of the enum is the | name of the enum is the suggested status message for US English. | |||
| suggested status message for US English. | ||||
| The status code values range from 0x0000 to 0x7FFF. The value ranges | The status code values range from 0x0000 to 0x7FFF. The value ranges | |||
| for each status code class are as follows: | for each status code class are as follows: | |||
| "successful" - 0x0000 to 0x00FF | "successful" - 0x0000 to 0x00FF | |||
| "informational" - 0x0100 to 0x01FF | "informational" - 0x0100 to 0x01FF | |||
| "redirection" - 0x0200 to 0x02FF | "redirection" - 0x0200 to 0x02FF | |||
| "client-error" - 0x0400 to 0x04FF | "client-error" - 0x0400 to 0x04FF | |||
| "server-error" - 0x0500 to 0x05FF | "server-error" - 0x0500 to 0x05FF | |||
| The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 | The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 to | |||
| to 5) is reserved for private use within each status code class. | 5) is reserved for private use within each status code class. Values | |||
| Values 0x0600 to 0x7FFF are reserved for future assignment and MUST | 0x0600 to 0x7FFF are reserved for future assignment and MUST NOT be | |||
| NOT be used. | used. | |||
| 14.1 Status Codes | 14.1 Status Codes | |||
| Each status code is described below. Section 14.2 contains a table | Each status code is described below. Section 14.1.5.9 contains a table | |||
| that indicates which status codes apply to which operations. Sections | that indicates which status codes apply to which operations. The | |||
| 16.3 and 16.4 describe the suggested steps for processing IPP | Implementer's Guide [IPP-IIG] describe the suggested steps for | |||
| attributes for all operations, including returning status codes. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| processing IPP attributes for all operations, including returning status | ||||
| codes. | ||||
| 14.1.1 Informational | 14.1.1 Informational | |||
| This class of status code indicates a provisional response and is to | This class of status code indicates a provisional response and is to be | |||
| be used for informational purposes only. | used for informational purposes only. | |||
| There are no status codes defined in IPP/1.0 for this class of status | There are no status codes defined in IPP/1.0 for this class of status | |||
| code. | code. | |||
| Expires December 30, 1998 | ||||
| 14.1.2 Successful Status Codes | 14.1.2 Successful Status Codes | |||
| This class of status code indicates that the client's request was | This class of status code indicates that the client's request was | |||
| successfully received, understood, and accepted. | successfully received, understood, and accepted. | |||
| 14.1.2.1 successful-ok (0x0000) | 14.1.2.1 successful-ok (0x0000) | |||
| The request has succeeded. In the case of a response to a create | The request has succeeded and no request attributes were substituted or | |||
| request, the 'successful-ok' status code indicates that the request | ignored. In the case of a response to a create request, the | |||
| was successfully received and validated, and that the Job object has | 'successful-ok' status code indicates that the request was successfully | |||
| been created; it does not indicate that the job has been processed. | received and validated, and that the Job object has been created; it | |||
| The transition of the Job object into the 'completed' state is the | does not indicate that the job has been processed. The transition of | |||
| only indicator that the job has been printed. | the Job object into the 'completed' state is the only indicator that the | |||
| job has been printed. | ||||
| 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) | 14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) | |||
| The request has succeeded, but some attributes were ignored or | The request has succeeded, but some supplied (1) attributes were ignored | |||
| unsupported values were substituted with supported values in order to | or (2) unsupported values were substituted with supported values or were | |||
| process the job without rejecting it. | ignored in order to perform the operation without rejecting it. | |||
| Unsupported attributes, attribute syntaxes, or values MUST be returned | ||||
| in the Unsupported Attributes group of the response for all operations. | ||||
| There is an exception to this rule for the query operations: Get- | ||||
| Printer-Attributes, Get-Jobs, and Get-Job-Attributes for the "requested- | ||||
| attributes" operation attribute only. When the supplied values of the | ||||
| "requested-attributes" operation attribute are requesting attributes | ||||
| that are not supported, the IPP object MAY, but is NOT REQUIRED to, | ||||
| return the "requested-attributes" attribute in the Unsupported Attribute | ||||
| response group (with the unsupported values only). See section 3.2.1.2. | ||||
| 14.1.2.3 successful-ok-conflicting-attributes (0x0002) | 14.1.2.3 successful-ok-conflicting-attributes (0x0002) | |||
| The request has succeeded, but some attribute values conflicted with | The request has succeeded, but some supplied attribute values conflicted | |||
| the values of other attributes. These conflicting values were either | with the values of other supplied attributes. These conflicting values | |||
| (1) substituted with (supported) values or (2) the attributes were | were either (1) substituted with (supported) values or (2) the | |||
| removed in order to process the job without rejecting it. | attributes were removed in order to process the job without rejecting | |||
| it. Attributes or values which conflict with other attributes and have | ||||
| been substituted or ignored MUST be returned in the Unsupported | ||||
| Attributes group of the response for all operations as supplied by the | ||||
| client. See section 3.2.1.2. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.3 Redirection Status Codes | 14.1.3 Redirection Status Codes | |||
| This class of status code indicates that further action needs to be | This class of status code indicates that further action needs to be | |||
| taken to fulfill the request. | taken to fulfill the request. | |||
| There are no status codes defined in IPP/1.0 for this class of status | There are no status codes defined in IPP/1.0 for this class of status | |||
| code. | code. | |||
| 14.1.4 Client Error Status Codes | 14.1.4 Client Error Status Codes | |||
| This class of status code is intended for cases in which the client | This class of status code is intended for cases in which the client | |||
| seems to have erred. The IPP object SHOULD return a message | seems to have erred. The IPP object SHOULD return a message containing | |||
| containing an explanation of the error situation and whether it is a | an explanation of the error situation and whether it is a temporary or | |||
| temporary or permanent condition. | permanent condition. | |||
| Expires December 30, 1998 | ||||
| 14.1.4.1 client-error-bad-request (0x0400) | 14.1.4.1 client-error-bad-request (0x0400) | |||
| The request could not be understood by the IPP object due to malformed | The request could not be understood by the IPP object due to malformed | |||
| syntax (such as the value of a fixed length attribute whose length | syntax (such as the value of a fixed length attribute whose length does | |||
| does not match the prescribed length for that attribute - see section | not match the prescribed length for that attribute - see the | |||
| 16.3). The IPP application SHOULD NOT repeat the request without | Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT repeat | |||
| modifications. | the request without modifications. | |||
| 14.1.4.2 client-error-forbidden (0x0401) | 14.1.4.2 client-error-forbidden (0x0401) | |||
| The IPP object understood the request, but is refusing to fulfill it. | The IPP object understood the request, but is refusing to fulfill it. | |||
| Additional authentication information or authorization credentials | Additional authentication information or authorization credentials will | |||
| will not help and the request SHOULD NOT be repeated. This status | not help and the request SHOULD NOT be repeated. This status code is | |||
| code is commonly used when the IPP object does not wish to reveal | commonly used when the IPP object does not wish to reveal exactly why | |||
| exactly why the request has been refused or when no other response is | the request has been refused or when no other response is applicable. | |||
| applicable. | ||||
| 14.1.4.3 client-error-not-authenticated (0x0402) | 14.1.4.3 client-error-not-authenticated (0x0402) | |||
| The request requires user authentication. The IPP client may repeat | The request requires user authentication. The IPP client may repeat the | |||
| the request with suitable authentication information. If the request | request with suitable authentication information. If the request already | |||
| already included authentication information, then this status code | included authentication information, then this status code indicates | |||
| indicates that authorization has been refused for those credentials. | that authorization has been refused for those credentials. If this | |||
| If this response contains the same challenge as the prior response, | response contains the same challenge as the prior response, and the user | |||
| and the user agent has already attempted authentication at least once, | agent has already attempted authentication at least once, then the | |||
| then the response message may contain relevant diagnostic information. | response message may contain relevant diagnostic information. This | |||
| This status codes reveals more information than "client-error- | status codes reveals more information than "client-error-forbidden". | |||
| forbidden". | ||||
| 14.1.4.4 client-error-not-authorized (0x0403) | 14.1.4.4 client-error-not-authorized (0x0403) | |||
| The requester is not authorized to perform the request. Additional | The requester is not authorized to perform the request. Additional | |||
| authentication information or authorization credentials will not help | authentication information or authorization credentials will not help | |||
| and the request SHOULD NOT be repeated. This status code is used when | and the request SHOULD NOT be repeated. This status code is used when | |||
| the IPP object wishes to reveal that the authentication information is | the IPP object wishes to reveal that the authentication information is | |||
| understandable, however, the requester is explicitly not authorized to | understandable, however, the requester is explicitly not authorized to | |||
| perform the request. This status codes reveals more information than | perform the request. This status codes reveals more information than | |||
| "client-error-forbidden" and "client-error-not-authenticated". | "client-error-forbidden" and "client-error-not-authenticated". | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.4.5 client-error-not-possible (0x0404) | 14.1.4.5 client-error-not-possible (0x0404) | |||
| This status code is used when the request is for something that can | This status code is used when the request is for something that can not | |||
| not happen. For example, there might be a request to cancel a job | happen. For example, there might be a request to cancel a job that has | |||
| already been canceled or aborted by the system. The IPP client SHOULD | ||||
| Expires December 30, 1998 | NOT repeat the request. | |||
| that has already been canceled or aborted by the system. The IPP | ||||
| client SHOULD NOT repeat the request. | ||||
| 14.1.4.6 client-error-timeout (0x0405) | 14.1.4.6 client-error-timeout (0x0405) | |||
| The client did not produce a request within the time that the IPP | The client did not produce a request within the time that the IPP object | |||
| object was prepared to wait. For example, a client issued a Create- | was prepared to wait. For example, a client issued a Create-Job | |||
| Job operation and then, after a long period of time, issued a Send- | operation and then, after a long period of time, issued a Send-Document | |||
| Document operation and this error status code was returned in response | operation and this error status code was returned in response to the | |||
| to the Send-Document request (see section 3.3.1). The IPP object | Send-Document request (see section 3.3.1). The IPP object might have | |||
| might have been forced to clean up resources that had been held for | been forced to clean up resources that had been held for the waiting | |||
| the waiting additional Documents. The IPP object was forced to close | additional Documents. The IPP object was forced to close the Job since | |||
| the Job since the client took too long. The client SHOULD NOT repeat | the client took too long. The client SHOULD NOT repeat the request | |||
| the request without modifications. | without modifications. | |||
| 14.1.4.7 client-error-not-found (0x0406) | 14.1.4.7 client-error-not-found (0x0406) | |||
| The IPP object has not found anything matching the request URI. No | The IPP object has not found anything matching the request URI. No | |||
| indication is given of whether the condition is temporary or | indication is given of whether the condition is temporary or permanent. | |||
| permanent. For example, a client with an old reference to a Job (a | For example, a client with an old reference to a Job (a URI) tries to | |||
| URI) tries to cancel the Job, however in the mean time the Job might | cancel the Job, however in the mean time the Job might have been | |||
| have been completed and all record of it at the Printer has been | completed and all record of it at the Printer has been deleted. This | |||
| deleted. This status code, 'client-error-not-found' is returned | status code, 'client-error-not-found' is returned indicating that the | |||
| indicating that the referenced Job can not be found. This error | referenced Job can not be found. This error status code is also used | |||
| status code is also used when a client supplies a URI as a reference | when a client supplies a URI as a reference to the document data in | |||
| to the document data in either a Print-URI or Send-URI operation, but | either a Print-URI or Send-URI operation, but the document can not be | |||
| the document can not be found. | found. | |||
| In practice, an IPP application should avoid a not found situation by | In practice, an IPP application should avoid a not found situation by | |||
| first querying and presenting a list of valid Printer URIs and Job | first querying and presenting a list of valid Printer URIs and Job URIs | |||
| URIs to the end-user. | to the end-user. | |||
| 14.1.4.8 client-error-gone (0x0407) | 14.1.4.8 client-error-gone (0x0407) | |||
| The requested object is no longer available and no forwarding address | The requested object is no longer available and no forwarding address is | |||
| is known. This condition should be considered permanent. Clients | known. This condition should be considered permanent. Clients with | |||
| with link editing capabilities should delete references to the request | link editing capabilities should delete references to the request URI | |||
| URI after user approval. If the IPP object does not know or has no | after user approval. If the IPP object does not know or has no facility | |||
| facility to determine, whether or not the condition is permanent, the | to determine, whether or not the condition is permanent, the status code | |||
| status code "client-error-not-found" should be used instead. | "client-error-not-found" should be used instead. | |||
| This response is primarily intended to assist the task of maintenance | ||||
| by notifying the recipient that the resource is intentionally | ||||
| unavailable and that the IPP object administrator desires that remote | ||||
| links to that resource be removed. It is not necessary to mark all | ||||
| Expires December 30, 1998 | This response is primarily intended to assist the task of maintenance by | |||
| permanently unavailable resources as "gone" or to keep the mark for | notifying the recipient that the resource is intentionally unavailable | |||
| any length of time -- that is left to the discretion of the IPP object | and that the IPP object administrator desires that remote links to that | |||
| administrator. | resource be removed. It is not necessary to mark all permanently | |||
| unavailable resources as "gone" or to keep the mark for any length of | ||||
| time -- that is left to the discretion of the IPP object administrator. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.4.9 client-error-request-entity-too-large (0x0408) | 14.1.4.9 client-error-request-entity-too-large (0x0408) | |||
| The IPP object is refusing to process a request because the request | The IPP object is refusing to process a request because the request | |||
| entity is larger than the IPP object is willing or able to process. | entity is larger than the IPP object is willing or able to process. An | |||
| An IPP Printer returns this status code when it limits the size of | IPP Printer returns this status code when it limits the size of print | |||
| print jobs and it receives a print job that exceeds that limit or when | jobs and it receives a print job that exceeds that limit or when the | |||
| the attributes are so many that their encoding causes the request | attributes are so many that their encoding causes the request entity to | |||
| entity to exceed IPP object capacity. | exceed IPP object capacity. | |||
| 14.1.4.10 client-error-request-value-too-long (0x0409) | 14.1.4.10 client-error-request-value-too-long (0x0409) | |||
| The IPP object is refusing to service the request because one or more | The IPP object is refusing to service the request because one or more of | |||
| of the client-supplied attributes has a variable length value that is | the client-supplied attributes has a variable length value that is | |||
| longer than the maximum length specified for that attribute. The IPP | longer than the maximum length specified for that attribute. The IPP | |||
| object might not have sufficient resources (memory, buffers, etc.) to | object might not have sufficient resources (memory, buffers, etc.) to | |||
| process (even temporarily), interpret, and/or ignore a value larger | process (even temporarily), interpret, and/or ignore a value larger than | |||
| than the maximum length. Another use of this error code is when the | the maximum length. Another use of this error code is when the IPP | |||
| IPP object supports the processing of a large value that is less than | object supports the processing of a large value that is less than the | |||
| the maximum length, but during the processing of the request as a | maximum length, but during the processing of the request as a whole, the | |||
| whole, the object may pass the value onto some other system component | object may pass the value onto some other system component which is not | |||
| which is not able to accept the large value. For more details, see | able to accept the large value. For more details, see the Implementer's | |||
| section 16.3. | Guide [IPP-IIG] . | |||
| Note: For attribute values that are URIs, this rare condition is only | Note: For attribute values that are URIs, this rare condition is only | |||
| likely to occur when a client has improperly submitted a request with | likely to occur when a client has improperly submitted a request with | |||
| long query information (e.g. an IPP application allows an end-user to | long query information (e.g. an IPP application allows an end-user to | |||
| enter an invalid URI), when the client has descended into a URI "black | enter an invalid URI), when the client has descended into a URI "black | |||
| hole" of redirection (e.g., a redirected URI prefix that points to a | hole" of redirection (e.g., a redirected URI prefix that points to a | |||
| suffix of itself), or when the IPP object is under attack by a client | suffix of itself), or when the IPP object is under attack by a client | |||
| attempting to exploit security holes present in some IPP objects using | attempting to exploit security holes present in some IPP objects using | |||
| fixed-length buffers for reading or manipulating the Request-URI. | fixed-length buffers for reading or manipulating the Request-URI. | |||
| 14.1.4.11 client-error-document-format-not-supported (0x040A) | 14.1.4.11 client-error-document-format-not-supported (0x040A) | |||
| The IPP object is refusing to service the request because the document | The IPP object is refusing to service the request because the document | |||
| data is in a format, as specified in the "document-format" operation | data is in a format, as specified in the "document-format" operation | |||
| attribute, that is not supported by the Printer object. This error is | attribute, that is not supported by the Printer object. This error is | |||
| returned independent of the client-supplied "ipp-attribute-fidelity". | returned independent of the client-supplied "ipp-attribute-fidelity". | |||
| The Printer object MUST return this status code, even if there are | The Printer object MUST return this status code, even if there are other | |||
| other attributes that are not supported as well, since this error is a | attributes that are not supported as well, since this error is a bigger | |||
| bigger problem than with Job Template attributes. | problem than with Job Template attributes. | |||
| Expires December 30, 1998 | ||||
| 14.1.4.12 client-error-attributes-or-values-not-supported (0x040B) | 14.1.4.12 client-error-attributes-or-values-not-supported (0x040B) | |||
| In a create request, if the Printer object does not support one or | In a create request, if the Printer object does not support one or more | |||
| more attributes or attribute values supplied in the request and the | attributes, attribute syntaxes, or attribute values supplied in the | |||
| client supplied the "ipp-attributes-fidelity" operation attribute with | request and the client supplied the "ipp-attributes-fidelity" operation | |||
| the 'true' value, the Printer object MUST return this status code. | attribute with the 'true' value, the Printer object MUST return this | |||
| For example, if the request indicates 'iso-a4' media, but that media | status code. For example, if the request indicates 'iso-a4' media, but | |||
| type is not supported by the Printer object. Or, if the client | that media type is not supported by the Printer object. Or, if the | |||
| supplies an optional attribute and the attribute itself is not even | client supplies an optional attribute and the attribute itself is not | |||
| supported by the Printer. If the "ipp-attribute-fidelity" attribute | even supported by the Printer. If the "ipp-attribute-fidelity" | |||
| is 'false', the Printer MUST ignore or substitute values for | attribute is 'false', the Printer MUST ignore or substitute values for | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| unsupported attributes and values rather than reject the request and | unsupported attributes and values rather than reject the request and | |||
| return this status code. | return this status code. | |||
| For any operation where a client requests attributes (such as a Get- | For any operation where a client requests attributes (such as a Get- | |||
| Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the | Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if the | |||
| IPP object does not support one or more of the requested attributes, | IPP object does not support one or more of the requested attributes, the | |||
| the IPP object simply ignores the unsupported requested attributes and | IPP object simply ignores the unsupported requested attributes and | |||
| processes the request as if they had not been supplied, rather than | processes the request as if they had not been supplied, rather than | |||
| returning this status code. | returning this status code. In this case, the IPP object MUST return | |||
| the 'successful-ok-ignored-or-substituted-attributes' status code and | ||||
| MAY return the unsupported attributes as values of the "requested- | ||||
| attributes" in the Unsupported Attributes Group (see section 14.1.2.2). | ||||
| 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) | 14.1.4.13 client-error-uri-scheme-not-supported (0x040C) | |||
| The type of the client supplied URI in a Print-URI or a Send-URI | The type of the client supplied URI in a Print-URI or a Send-URI | |||
| operation is not supported. | operation is not supported. | |||
| 14.1.4.14 client-error-charset-not-supported (0x040D) | 14.1.4.14 client-error-charset-not-supported (0x040D) | |||
| For any operation, if the IPP Printer does not support the charset | For any operation, if the IPP Printer does not support the charset | |||
| supplied by the client in the "attributes-charset" operation | supplied by the client in the "attributes-charset" operation attribute, | |||
| attribute, the Printer MUST reject the operation and return this | the Printer MUST reject the operation and return this status and any | |||
| status (see Section 3.1.4.1). | 'text' or 'name' attributes using the 'utf-8' charset (see Section | |||
| 3.1.4.1). | ||||
| 14.1.4.15 client-error-conflicting-attributes (0x040E) | 14.1.4.15 client-error-conflicting-attributes (0x040E) | |||
| The request is rejected because some attribute values conflicted with | The request is rejected because some attribute values conflicted with | |||
| the values of other attributes. | the values of other attributes which this specification does not permit | |||
| to be substituted or ignored. | ||||
| 14.1.5 Server Error Status Codes | 14.1.5 Server Error Status Codes | |||
| This class of status codes indicates cases in which the IPP object is | This class of status codes indicates cases in which the IPP object is | |||
| aware that it has erred or is incapable of performing the request. | aware that it has erred or is incapable of performing the request. The | |||
| The IPP object SHOULD include a message containing an explanation of | IPP object SHOULD include a message containing an explanation of the | |||
| error situation, and whether it is a temporary or permanent condition. | ||||
| Expires December 30, 1998 | ||||
| the error situation, and whether it is a temporary or permanent | ||||
| condition. | ||||
| 14.1.5.1 server-error-internal-error (0x0500) | 14.1.5.1 server-error-internal-error (0x0500) | |||
| The IPP object encountered an unexpected condition that prevented it | The IPP object encountered an unexpected condition that prevented it | |||
| from fulfilling the request. This error status code differs from | from fulfilling the request. This error status code differs from | |||
| "server-error-temporary-error" in that it implies a more permanent | "server-error-temporary-error" in that it implies a more permanent type | |||
| type of internal error. It also differs from "server-error-device- | of internal error. It also differs from "server-error-device-error" in | |||
| error" in that it implies an unexpected condition (unlike a paper-jam | that it implies an unexpected condition (unlike a paper-jam or out-of- | |||
| or out-of-toner problem which is undesirable but expected). This | toner problem which is undesirable but expected). This error status | |||
| error status code indicates that probably some knowledgeable human | code indicates that probably some knowledgeable human intervention is | |||
| intervention is required. | required. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.5.2 server-error-operation-not-supported (0x0501) | 14.1.5.2 server-error-operation-not-supported (0x0501) | |||
| The IPP object does not support the functionality required to fulfill | The IPP object does not support the functionality required to fulfill | |||
| the request. This is the appropriate response when the IPP object does | the request. This is the appropriate response when the IPP object does | |||
| not recognize an operation or is not capable of supporting it. | not recognize an operation or is not capable of supporting it. | |||
| 14.1.5.3 server-error-service-unavailable (0x0502) | 14.1.5.3 server-error-service-unavailable (0x0502) | |||
| The IPP object is currently unable to handle the request due to a | The IPP object is currently unable to handle the request due to a | |||
| temporary overloading or maintenance of the IPP object. The | temporary overloading or maintenance of the IPP object. The implication | |||
| implication is that this is a temporary condition which will be | is that this is a temporary condition which will be alleviated after | |||
| alleviated after some delay. If known, the length of the delay may be | some delay. If known, the length of the delay may be indicated in the | |||
| indicated in the message. If no delay is given, the IPP application | message. If no delay is given, the IPP application should handle the | |||
| should handle the response as it would for a "server-error-temporary- | response as it would for a "server-error-temporary-error" response. If | |||
| error" response. If the condition is more permanent, the error status | the condition is more permanent, the error status codes "client-error- | |||
| codes "client-error-gone" or "client-error-not-found" could be used. | gone" or "client-error-not-found" could be used. | |||
| 14.1.5.4 server-error-version-not-supported (0x0503) | 14.1.5.4 server-error-version-not-supported (0x0503) | |||
| The IPP object does not support, or refuses to support, the IPP | The IPP object does not support, or refuses to support, the IPP protocol | |||
| protocol version that was used in the request message. The IPP object | version that was used in the request message. The IPP object is | |||
| is indicating that it is unable or unwilling to complete the request | indicating that it is unable or unwilling to complete the request using | |||
| using the same version as supplied in the request other than with this | the same version as supplied in the request other than with this error | |||
| error message. The response should contain a Message describing why | message. The response should contain a Message describing why that | |||
| that version is not supported and what other versions are supported by | version is not supported and what other versions are supported by that | |||
| that IPP object. | IPP object. | |||
| A conforming IPP/1.0 client MUST specify the valid version ('1.0') on | A conforming IPP/1.0 client MUST specify the valid version ('1.0') on | |||
| each request. A conforming IPP/1.0 object MUST NOT return this status | each request. A conforming IPP/1.0 object MUST NOT return this status | |||
| code to a conforming IPP/1.0 client. An IPP object MUST return this | code to a conforming IPP/1.0 client. An IPP object MUST return this | |||
| status code to a non-conforming IPP client. The response MUST identify | ||||
| Expires December 30, 1998 | in the "version-number" operation attribute the closest version number | |||
| status code to a non-conforming IPP client. The response MUST | that the IPP object does support. | |||
| identify in the "version-number" operation attribute the closest | ||||
| version number that the IPP object does support. | ||||
| 14.1.5.5 server-error-device-error (0x0504) | 14.1.5.5 server-error-device-error (0x0504) | |||
| A printer error, such as a paper jam, occurs while the IPP object | A printer error, such as a paper jam, occurs while the IPP object | |||
| processes a Print or Send operation. The response contains the true | processes a Print or Send operation. The response contains the true Job | |||
| Job Status (the values of the "job-state" and "job-state-reasons" | Status (the values of the "job-state" and "job-state-reasons" | |||
| attributes). Additional information can be returned in the optional | attributes). Additional information can be returned in the optional | |||
| "job-state-message" attribute value or in the OPTIONAL status message | "job-state-message" attribute value or in the OPTIONAL status message | |||
| that describes the error in more detail. This error status code is | that describes the error in more detail. This error status code is only | |||
| only returned in situations where the Printer is unable to accept the | returned in situations where the Printer is unable to accept the create | |||
| create request because of such a device error. For example, if the | request because of such a device error. For example, if the Printer is | |||
| Printer is unable to spool, and can only accept one job at a time, the | unable to spool, and can only accept one job at a time, the reason it | |||
| reason it might reject a create request is that the printer currently | might reject a create request is that the printer currently has a paper | |||
| has a paper jam. In many cases however, where the Printer object can | jam. In many cases however, where the Printer object can accept the | |||
| accept the request even though the Printer has some error condition, | request even though the Printer has some error condition, the | |||
| the 'successful-ok' status code will be returned. In such a case, the | 'successful-ok' status code will be returned. In such a case, the | |||
| client would look at the returned Job Object Attributes or later query | client would look at the returned Job Object Attributes or later query | |||
| the Printer to determine its state and state reasons. | the Printer to determine its state and state reasons. | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.1.5.6 server-error-temporary-error (0x0505) | 14.1.5.6 server-error-temporary-error (0x0505) | |||
| A temporary error such as a buffer full write error, a memory overflow | A temporary error such as a buffer full write error, a memory overflow | |||
| (i.e. the document data exceeds the memory of the Printer), or a disk | (i.e. the document data exceeds the memory of the Printer), or a disk | |||
| full condition, occurs while the IPP Printer processes an operation. | full condition, occurs while the IPP Printer processes an operation. | |||
| The client MAY try the unmodified request again at some later point in | The client MAY try the unmodified request again at some later point in | |||
| time with an expectation that the temporary internal error condition | time with an expectation that the temporary internal error condition may | |||
| may have been cleared. Alternatively, as an implementation option, a | have been cleared. Alternatively, as an implementation option, a | |||
| Printer object MAY delay the response until the temporary condition is | Printer object MAY delay the response until the temporary condition is | |||
| cleared so that no error is returned. | cleared so that no error is returned. | |||
| 14.1.5.7 server-error-not-accepting-jobs (0x0506) | 14.1.5.7 server-error-not-accepting-jobs (0x0506) | |||
| A temporary error indicating that the Printer is not currently | A temporary error indicating that the Printer is not currently accepting | |||
| accepting jobs, because the administrator has set the value of the | jobs, because the administrator has set the value of the Printer's | |||
| Printer's "printer-is-not-accepting-jobs" attribute to 'false' (by | "printer-is-not-accepting-jobs" attribute to 'false' (by means outside | |||
| means outside of IPP/1.0). | of IPP/1.0). | |||
| 14.1.5.8 server-error-busy (0x0507) | 14.1.5.8 server-error-busy (0x0507) | |||
| A temporary error indicating that the Printer is too busy processing | A temporary error indicating that the Printer is too busy processing | |||
| jobs and/or other requests. The client SHOULD try the unmodified | jobs and/or other requests. The client SHOULD try the unmodified request | |||
| again at some later point in time with an expectation that the temporary | ||||
| busy condition will have been cleared. | ||||
| Expires December 30, 1998 | 14.1.5.9 server-error-job-canceled (0x0508) | |||
| request again at some later point in time with an expectation that the | ||||
| temporary busy condition will have been cleared. | An error indicating that the job has been canceled by an operator or the | |||
| system while the client was transmitting the data to the IPP Printer. | ||||
| If a job-id and job-uri had been created, then they are returned in the | ||||
| Print-Job, Send-Document, or Send-URI response as usual; otherwise, no | ||||
| job-id and job-uri are returned in the response. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 14.2 Status Codes for IPP Operations | 14.2 Status Codes for IPP Operations | |||
| PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document | PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document | |||
| SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and | SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and | |||
| Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job | Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job | |||
| IPP Operations | IPP Operations | |||
| IPP Status Keyword PJ PU CJ SD SU V GA GJ C | IPP Status Keyword PJ PU CJ SD SU V GA GJ C | |||
| ------------------ -- -- -- -- -- - -- -- - | ------------------ -- -- -- -- -- - -- -- - | |||
| successful-ok x x x x x x x x x | successful-ok x x x x x x x x x | |||
| successful-ok-ignored-or-substituted- x x x x x x x x x | successful-ok-ignored-or-substituted- x x x x x x x x x | |||
| attributes | attributes | |||
| successful-ok-conflicting-attributes x x x x x x x x x | successful-ok-conflicting-attributes x x x x x x x x x | |||
| client-error-bad-request x x x x x x x x x | client-error-bad-request x x x x x x x x x | |||
| client-error-forbidden x x x x x x x x x | client-error-forbidden x x x x x x x x x | |||
| client-error-not-authenticated x x x x x x x x x | client-error-not-authenticated x x x x x x x x x | |||
| client-error-not-authorized x x x x x x x x x | client-error-not-authorized x x x x x x x x x | |||
| client-error-not-possible x x x x x x x x x | client-error-not-possible x x x x x x x x x | |||
| client-error-timeout x x x x x x x x x | client-error-timeout x x | |||
| client-error-not-found x x x x x x x x x | client-error-not-found x x x x x x x x x | |||
| client-error-gone x x x x x x x x x | client-error-gone x x x x x x x x x | |||
| client-error-request-entity-too-large x x x x x x x x x | client-error-request-entity-too-large x x x x x x x x x | |||
| client-error-request-value-too-long x x x x x x x x x | client-error-request-value-too-long x x x x x x x x x | |||
| client-error-document-format-not- x x x x x x | client-error-document-format-not- x x x x x x | |||
| supported | supported | |||
| client-error-attributes-or-values-not- x x x x x x x x x | client-error-attributes-or-values-not- x x x x x x x x x | |||
| supported | supported | |||
| client-error-uri-scheme-not-supported x x | client-error-uri-scheme-not-supported x x | |||
| client-error-charset-not-supported x x x x x x x x x | client-error-charset-not-supported x x x x x x x x x | |||
| client-error-conflicting-attributes x x x x x x x x x | client-error-conflicting-attributes x x x x x x x x x | |||
| server-error-internal-error x x x x x x x x x | server-error-internal-error x x x x x x x x x | |||
| server-error-operation-not-supported x x x x | server-error-operation-not-supported x x x x | |||
| server-error-service-unavailable x x x x x x x x x | server-error-service-unavailable x x x x x x x x x | |||
| server-error-version-not-supported x x x x x x x x x | server-error-version-not-supported x x x x x x x x x | |||
| server-error-device-error x x x x x | server-error-device-error x x x x x | |||
| server-error-temporary-error x x x x x | server-error-temporary-error x x x x x | |||
| server-error-not-accepting-jobs x x x x x x | server-error-not-accepting-jobs x x x x | |||
| server-error-busy x x x x x x x x x | server-error-busy x x x x x x x x x | |||
| server-error-job-canceled x x | ||||
| Expires December 30, 1998 | ||||
| 15. APPENDIX C: "media" keyword values | 15. APPENDIX C: "media" keyword values | |||
| Standard keyword values are taken from several sources. | Standard keyword values are taken from several sources. | |||
| Standard values are defined (taken from DPA[ISO10175] and the Printer | Standard values are defined (taken from DPA[ISO10175] and the Printer | |||
| MIB[RFC1759]): | MIB[RFC1759]): | |||
| 'default': The default medium for the output device | 'default': The default medium for the output device | |||
| 'iso-a4-white': Specifies the ISO A4 white medium | 'iso-a4-white': Specifies the ISO A4 white medium | |||
| 'iso-a4-colored': Specifies the ISO A4 colored medium | 'iso-a4-colored': Specifies the ISO A4 colored medium | |||
| 'iso-a4-transparent' Specifies the ISO A4 transparent medium | 'iso-a4-transparent' Specifies the ISO A4 transparent medium | |||
| 'iso-a3-white': Specifies the ISO A3 white medium | 'iso-a3-white': Specifies the ISO A3 white medium | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 'iso-a3-colored': Specifies the ISO A3 colored medium | 'iso-a3-colored': Specifies the ISO A3 colored medium | |||
| 'iso-a5-white': Specifies the ISO A5 white medium | 'iso-a5-white': Specifies the ISO A5 white medium | |||
| 'iso-a5-colored': Specifies the ISO A5 colored medium | 'iso-a5-colored': Specifies the ISO A5 colored medium | |||
| 'iso-b4-white': Specifies the ISO B4 white medium | 'iso-b4-white': Specifies the ISO B4 white medium | |||
| 'iso-b4-colored': Specifies the ISO B4 colored medium | 'iso-b4-colored': Specifies the ISO B4 colored medium | |||
| 'iso-b5-white': Specifies the ISO B5 white medium | 'iso-b5-white': Specifies the ISO B5 white medium | |||
| 'iso-b5-colored': Specifies the ISO B5 colored medium | 'iso-b5-colored': Specifies the ISO B5 colored medium | |||
| 'jis-b4-white': Specifies the JIS B4 white medium | 'jis-b4-white': Specifies the JIS B4 white medium | |||
| 'jis-b4-colored': Specifies the JIS B4 colored medium | 'jis-b4-colored': Specifies the JIS B4 colored medium | |||
| 'jis-b5-white': Specifies the JIS B5 white medium | 'jis-b5-white': Specifies the JIS B5 white medium | |||
| 'jis-b5-colored': Specifies the JIS B5 colored medium | 'jis-b5-colored': Specifies the JIS B5 colored medium | |||
| The following standard values are defined for North American media: | The following standard values are defined for North American media: | |||
| 'na-letter-white': Specifies the North American letter white medium | 'na-letter-white': Specifies the North American letter white medium | |||
| 'na-letter-colored': Specifies the North American letter colored | 'na-letter-colored': Specifies the North American letter colored | |||
| medium | medium | |||
| 'na-letter-transparent': Specifies the North American letter | 'na-letter-transparent': Specifies the North American letter | |||
| transparent medium | transparent medium | |||
| 'na-legal-white': Specifies the North American legal white medium | 'na-legal-white': Specifies the North American legal white medium | |||
| 'na-legal-colored': Specifies the North American legal colored | 'na-legal-colored': Specifies the North American legal colored medium | |||
| medium | ||||
| The following standard values are defined for envelopes: | The following standard values are defined for envelopes: | |||
| 'iso-b4-envelope': Specifies the ISO B4 envelope medium | 'iso-b4-envelope': Specifies the ISO B4 envelope medium | |||
| 'iso-b5-envelope': Specifies the ISO B5 envelope medium | 'iso-b5-envelope': Specifies the ISO B5 envelope medium | |||
| 'iso-c3-envelope': Specifies the ISO C3 envelope medium | 'iso-c3-envelope': Specifies the ISO C3 envelope medium | |||
| 'iso-c4-envelope': Specifies the ISO C4 envelope medium | 'iso-c4-envelope': Specifies the ISO C4 envelope medium | |||
| 'iso-c5-envelope': Specifies the ISO C5 envelope medium | 'iso-c5-envelope': Specifies the ISO C5 envelope medium | |||
| 'iso-c6-envelope': Specifies the ISO C6 envelope medium | 'iso-c6-envelope': Specifies the ISO C6 envelope medium | |||
| 'iso-designated-long-envelope': Specifies the ISO Designated Long | 'iso-designated-long-envelope': Specifies the ISO Designated Long | |||
| envelope medium | envelope medium | |||
| Expires December 30, 1998 | ||||
| 'na-10x13-envelope': Specifies the North American 10x13 envelope | 'na-10x13-envelope': Specifies the North American 10x13 envelope | |||
| medium | medium | |||
| 'na-9x12-envelope': Specifies the North American 9x12 envelope | 'na-9x12-envelope': Specifies the North American 9x12 envelope medium | |||
| medium | ||||
| 'monarch-envelope': Specifies the Monarch envelope | 'monarch-envelope': Specifies the Monarch envelope | |||
| 'na-number-10-envelope': Specifies the North American number 10 | 'na-number-10-envelope': Specifies the North American number 10 | |||
| business envelope medium | business envelope medium | |||
| 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | |||
| 'na-9x11-envelope': Specifies the North American 9x11 inch envelope | 'na-9x11-envelope': Specifies the North American 9x11 inch envelope | |||
| 'na-10x14-envelope': Specifies the North American 10x14 inch | 'na-10x14-envelope': Specifies the North American 10x14 inch envelope | |||
| envelope | ||||
| 'na-number-9-envelope': Specifies the North American number 9 | 'na-number-9-envelope': Specifies the North American number 9 | |||
| business envelope | business envelope | |||
| 'na-6x9-envelope': Specifies the North American 6x9 inch envelope | 'na-6x9-envelope': Specifies the North American 6x9 inch envelope | |||
| 'na-10x15-envelope': Specifies the North American 10x15 inch | 'na-10x15-envelope': Specifies the North American 10x15 inch envelope | |||
| envelope | ||||
| The following standard values are defined for the less commonly used | The following standard values are defined for the less commonly used | |||
| media (white-only): | media (white-only): | |||
| 'executive-white': Specifies the white executive medium | 'executive-white': Specifies the white executive medium | |||
| 'folio-white': Specifies the folio white medium | 'folio-white': Specifies the folio white medium | |||
| 'invoice-white': Specifies the white invoice medium | 'invoice-white': Specifies the white invoice medium | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 'ledger-white': Specifies the white ledger medium | 'ledger-white': Specifies the white ledger medium | |||
| 'quarto-white': Specified the white quarto medium | 'quarto-white': Specified the white quarto medium | |||
| 'iso-a0-white': Specifies the ISO A0 white medium | 'iso-a0-white': Specifies the ISO A0 white medium | |||
| 'iso-a1-white': Specifies the ISO A1 white medium | 'iso-a1-white': Specifies the ISO A1 white medium | |||
| 'iso-a2-white': Specifies the ISO A2 white medium | 'iso-a2-white': Specifies the ISO A2 white medium | |||
| 'iso-a6-white': Specifies the ISO A6 white medium | 'iso-a6-white': Specifies the ISO A6 white medium | |||
| 'iso-a7-white': Specifies the ISO A7 white medium | 'iso-a7-white': Specifies the ISO A7 white medium | |||
| 'iso-a8-white': Specifies the ISO A8 white medium | 'iso-a8-white': Specifies the ISO A8 white medium | |||
| 'iso-a9-white': Specifies the ISO A9 white medium | 'iso-a9-white': Specifies the ISO A9 white medium | |||
| 'iso-10-white': Specifies the ISO A10 white medium | 'iso-10-white': Specifies the ISO A10 white medium | |||
| skipping to change at page 155, line 4 ¶ | skipping to change at page 139, line 30 ¶ | |||
| 'iso-b6-white': Specifies the ISO B6 white medium | 'iso-b6-white': Specifies the ISO B6 white medium | |||
| 'iso-b7-white': Specifies the ISO B7 white medium | 'iso-b7-white': Specifies the ISO B7 white medium | |||
| 'iso-b8-white': Specifies the ISO B8 white medium | 'iso-b8-white': Specifies the ISO B8 white medium | |||
| 'iso-b9-white': Specifies the ISO B9 white medium | 'iso-b9-white': Specifies the ISO B9 white medium | |||
| 'iso-b10-white': Specifies the ISO B10 white medium | 'iso-b10-white': Specifies the ISO B10 white medium | |||
| 'jis-b0-white': Specifies the JIS B0 white medium | 'jis-b0-white': Specifies the JIS B0 white medium | |||
| 'jis-b1-white': Specifies the JIS B1 white medium | 'jis-b1-white': Specifies the JIS B1 white medium | |||
| 'jis-b2-white': Specifies the JIS B2 white medium | 'jis-b2-white': Specifies the JIS B2 white medium | |||
| 'jis-b3-white': Specifies the JIS B3 white medium | 'jis-b3-white': Specifies the JIS B3 white medium | |||
| 'jis-b6-white': Specifies the JIS B6 white medium | 'jis-b6-white': Specifies the JIS B6 white medium | |||
| Expires December 30, 1998 | ||||
| 'jis-b7-white': Specifies the JIS B7 white medium | 'jis-b7-white': Specifies the JIS B7 white medium | |||
| 'jis-b8-white': Specifies the JIS B8 white medium | 'jis-b8-white': Specifies the JIS B8 white medium | |||
| 'jis-b9-white': Specifies the JIS B9 white medium | 'jis-b9-white': Specifies the JIS B9 white medium | |||
| 'jis-b10-white': Specifies the JIS B10 white medium | 'jis-b10-white': Specifies the JIS B10 white medium | |||
| The following standard values are defined for engineering media: | The following standard values are defined for engineering media: | |||
| 'a': Specifies the engineering A size medium | 'a': Specifies the engineering A size medium | |||
| 'b': Specifies the engineering B size medium | 'b': Specifies the engineering B size medium | |||
| 'c': Specifies the engineering C size medium | 'c': Specifies the engineering C size medium | |||
| 'd': Specifies the engineering D size medium | 'd': Specifies the engineering D size medium | |||
| 'e': Specifies the engineering E size medium | 'e': Specifies the engineering E size medium | |||
| The following standard values are defined for input-trays (from ISO | The following standard values are defined for input-trays (from ISO DPA | |||
| DPA and the Printer MIB): | and the Printer MIB): | |||
| 'top': The top input tray in the printer. | 'top': The top input tray in the printer. | |||
| 'middle': The middle input tray in the printer. | 'middle': The middle input tray in the printer. | |||
| 'bottom': The bottom input tray in the printer. | 'bottom': The bottom input tray in the printer. | |||
| 'envelope': The envelope input tray in the printer. | 'envelope': The envelope input tray in the printer. | |||
| 'manual': The manual feed input tray in the printer. | 'manual': The manual feed input tray in the printer. | |||
| 'large-capacity': The large capacity input tray in the printer. | 'large-capacity': The large capacity input tray in the printer. | |||
| 'main': The main input tray | 'main': The main input tray | |||
| 'side': The side input tray | 'side': The side input tray | |||
| The following standard values are defined for media sizes (from ISO | The following standard values are defined for media sizes (from ISO | |||
| DPA): | DPA): | |||
| 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined | Isaacson, Powell Expires May 16, 1999 | |||
| in ISO 216 | 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in | |||
| ISO 216 | ||||
| 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in | 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in | 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in | 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in | 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in | 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in | 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in | 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO | ||||
| Expires December 30, 1998 | 216 | |||
| 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO | ||||
| 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in | 216 | |||
| 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in | ||||
| ISO 216 | ISO 216 | |||
| 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in | 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in | 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined | ||||
| in ISO 216 | ||||
| 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined | ||||
| in ISO 216 | ||||
| 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in | 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in | 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in | 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in | 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in | 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in | 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in | 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO | |||
| ISO 216 | 216 | |||
| 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in | 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO | |||
| ISO 216 | 216 | |||
| 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in | 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in | |||
| ISO 216 | ISO 216 | |||
| 'na-letter': Specifies the North American letter size: 8.5 inches | 'na-letter': Specifies the North American letter size: 8.5 inches by | |||
| by 11 inches | 11 inches | |||
| 'na-legal': Specifies the North American legal size: 8.5 inches by | 'na-legal': Specifies the North American legal size: 8.5 inches by 14 | |||
| 14 inches | inches | |||
| 'executive': Specifies the executive size (7.25 X 10.5 in) | 'executive': Specifies the executive size (7.25 X 10.5 in) | |||
| 'folio': Specifies the folio size (8.5 X 13 in) | 'folio': Specifies the folio size (8.5 X 13 in) | |||
| 'invoice': Specifies the invoice size (5.5 X 8.5 in) | 'invoice': Specifies the invoice size (5.5 X 8.5 in) | |||
| 'ledger': Specifies the ledger size (11 X 17 in) | 'ledger': Specifies the ledger size (11 X 17 in) | |||
| 'quarto': Specifies the quarto size (8.5 X 10.83 in) | 'quarto': Specifies the quarto size (8.5 X 10.83 in) | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in | 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in | |||
| ISO 269 | ISO 269 | |||
| 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in | 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in | |||
| ISO 269 | ISO 269 | |||
| 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in | 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in | |||
| ISO 269 | ISO 269 | |||
| 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in | 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in | |||
| ISO 269 | ISO 269 | |||
| 'iso-designated-long': Specifies the ISO Designated Long size: 110 | 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm | |||
| mm by 220 mm as defined in ISO 269 | by 220 mm as defined in ISO 269 | |||
| Expires December 30, 1998 | ||||
| 'na-10x13-envelope': Specifies the North American 10x13 size: 10 | 'na-10x13-envelope': Specifies the North American 10x13 size: 10 | |||
| inches by 13 inches | inches by 13 inches | |||
| 'na-9x12-envelope': Specifies the North American 9x12 size: 9 | 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches | |||
| inches by 12 inches | by 12 inches | |||
| 'na-number-10-envelope': Specifies the North American number 10 | 'na-number-10-envelope': Specifies the North American number 10 | |||
| business envelope size: 4.125 inches by 9.5 inches | business envelope size: 4.125 inches by 9.5 inches | |||
| 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | |||
| size | size | |||
| 'na-9x11-envelope': Specifies the North American 9x11 inch envelope | 'na-9x11-envelope': Specifies the North American 9x11 inch envelope | |||
| size | size | |||
| 'na-10x14-envelope': Specifies the North American 10x14 inch | 'na-10x14-envelope': Specifies the North American 10x14 inch envelope | |||
| envelope size | size | |||
| 'na-number-9-envelope': Specifies the North American number 9 | 'na-number-9-envelope': Specifies the North American number 9 | |||
| business envelope size | business envelope size | |||
| 'na-6x9-envelope': Specifies the North American 6x9 envelope size | 'na-6x9-envelope': Specifies the North American 6x9 envelope size | |||
| 'na-10x15-envelope': Specifies the North American 10x15 envelope | 'na-10x15-envelope': Specifies the North American 10x15 envelope size | |||
| size | ||||
| 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 | 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 | |||
| in) | in) | |||
| 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm | 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm | |||
| 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm | 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm | |||
| 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm | 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm | |||
| 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm | 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm | |||
| 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm | 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm | |||
| 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm | 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm | |||
| 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm | 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm | |||
| 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm | 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm | |||
| 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm | 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm | |||
| 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm | 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm | |||
| 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm | 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm | |||
| 16. APPENDIX D: Processing IPP Attributes | 16. APPENDIX D: Processing IPP Attributes | |||
| When submitting a print job to a Printer object, the IPP model allows | When submitting a print job to a Printer object, the IPP model allows a | |||
| a client to supply operation and Job Template attributes along with | client to supply operation and Job Template attributes along with the | |||
| the document data. These Job Template attributes in the create | document data. These Job Template attributes in the create request | |||
| request affect the rendering, production and finishing of the | affect the rendering, production and finishing of the documents in the | |||
| documents in the job. Similar types of instructions may also be | job. Similar types of instructions may also be contained in the | |||
| contained in the document to be printed, that is, embedded within the | document to be printed, that is, embedded within the print data itself. | |||
| print data itself. In addition, the Printer has a set of attributes | In addition, the Printer has a set of attributes that describe what | |||
| that describe what rendering and finishing options which are supported | rendering and finishing options which are supported by that Printer. | |||
| by that Printer. This model, which allows for flexibility and power, | This model, which allows for flexibility and power, also introduces the | |||
| also introduces the potential that at job submission time, these | potential that at job submission time, these client-supplied attributes | |||
| client-supplied attributes may conflict with either: | may conflict with either: | |||
| Isaacson, Powell Expires May 16, 1999 | ||||
| - what the implementation is capable of realizing (i.e., what the | - what the implementation is capable of realizing (i.e., what the | |||
| Printer supports), as well as | Printer supports), as well as | |||
| Expires December 30, 1998 | ||||
| - the instructions embedded within the print data itself. | - the instructions embedded within the print data itself. | |||
| The following sections describe how these two types of conflicts are | The following sections describe how these two types of conflicts are | |||
| handled in the IPP model. | handled in the IPP model. | |||
| 16.1 Fidelity | 16.1 Fidelity | |||
| If there is a conflict between what the client requests and what a | If there is a conflict between what the client requests and what a | |||
| Printer object supports, the client may request one of two possible | Printer object supports, the client may request one of two possible | |||
| conflict handling mechanisms: | conflict handling mechanisms: | |||
| 1) either reject the job since the job can not be processed exactly | 1) either reject the job since the job can not be processed exactly | |||
| as specified, or | as specified, or | |||
| 2) allow the Printer to make any changes necessary to proceed with | 2) allow the Printer to make any changes necessary to proceed with | |||
| processing the Job the best it can. | processing the Job the best it can. | |||
| In the first case the client is indicating to the Printer object: | In the first case the client is indicating to the Printer object: "Print | |||
| "Print the job exactly as specified with no exceptions, and if that | the job exactly as specified with no exceptions, and if that can't be | |||
| can't be done, don't even bother printing the job at all." In the | done, don't even bother printing the job at all." In the second case, | |||
| second case, the client is indicating to the Printer object: "It is | the client is indicating to the Printer object: "It is more important to | |||
| more important to make sure the job is printed rather than be | make sure the job is printed rather than be processed exactly as | |||
| processed exactly as specified; just make sure the job is printed even | specified; just make sure the job is printed even if client supplied | |||
| if client supplied attributes need to be changed or ignored." | attributes need to be changed or ignored." | |||
| The IPP model accounts for this situation by introducing an "ipp- | The IPP model accounts for this situation by introducing an "ipp- | |||
| attribute-fidelity" attribute. | attribute-fidelity" attribute. | |||
| In a create request, "ipp-attribute-fidelity" is a boolean operation | In a create request, "ipp-attribute-fidelity" is a boolean operation | |||
| attribute that is OPTIONALLY supplied by the client. The value 'true' | attribute that is OPTIONALLY supplied by the client. The value 'true' | |||
| indicates that total fidelity to client supplied Job Template | indicates that total fidelity to client supplied Job Template attributes | |||
| attributes and values is required. The client is requesting that the | and values is required. The client is requesting that the Job be | |||
| Job be printed exactly as specified, and if that is not possible then | printed exactly as specified, and if that is not possible then the job | |||
| the job MUST be rejected rather than processed incorrectly. The value | MUST be rejected rather than processed incorrectly. The value 'false' | |||
| 'false' indicates that a reasonable attempt to print the Job is | indicates that a reasonable attempt to print the Job is acceptable. If | |||
| acceptable. If a Printer does not support some of the client supplied | a Printer does not support some of the client supplied Job Template | |||
| Job Template attributes or values, the Printer MUST ignore them or | attributes or values, the Printer MUST ignore them or substitute any | |||
| substitute any supported value for unsupported values, respectively. | supported value for unsupported values, respectively. The Printer may | |||
| The Printer may choose to substitute the default value associated with | choose to substitute the default value associated with that attribute, | |||
| that attribute, or use some other supported value that is similar to | or use some other supported value that is similar to the unsupported | |||
| the unsupported requested value. For example, if a client supplies a | requested value. For example, if a client supplies a "media" value of | |||
| "media" value of 'na-letter', the Printer may choose to substitute | 'na-letter', the Printer may choose to substitute 'iso-a4' rather than a | |||
| 'iso-a4' rather than a default value of 'envelope'. If the client does | default value of 'envelope'. If the client does not supply the "ipp- | |||
| not supply the "ipp-attribute-fidelity" attribute, the Printer assumes | attribute-fidelity" attribute, the Printer assumes a value of 'false'. | |||
| a value of 'false'. | ||||
| Expires December 30, 1998 | ||||
| Each Printer implementation MUST support both types of "fidelity" | Each Printer implementation MUST support both types of "fidelity" | |||
| printing (that is whether the client supplies a value of 'true' or | printing (that is whether the client supplies a value of 'true' or | |||
| 'false'): | 'false'): | |||
| - If the client supplies 'false' or does not supply the attribute, | - If the client supplies 'false' or does not supply the attribute, | |||
| the Printer object MUST always accept the request by ignoring | the Printer object MUST always accept the request by ignoring | |||
| unsupported Job Template attributes and by substituting | ||||
| unsupported values of supported Job Template attributes with | Isaacson, Powell Expires May 16, 1999 | |||
| supported values. | unsupported Job Template attributes and by substituting unsupported | |||
| values of supported Job Template attributes with supported values. | ||||
| - If the client supplies 'true', the Printer object MUST reject the | - If the client supplies 'true', the Printer object MUST reject the | |||
| request if the client supplies unsupported Job Template | request if the client supplies unsupported Job Template attributes. | |||
| attributes. | ||||
| Since a client can always query a Printer to find out exactly what is | Since a client can always query a Printer to find out exactly what is | |||
| and is not supported, "ipp-attribute-fidelity" set to 'false' is | and is not supported, "ipp-attribute-fidelity" set to 'false' is useful | |||
| useful when: | when: | |||
| 1) The End-User uses a command line interface to request attributes | 1) The End-User uses a command line interface to request attributes | |||
| that might not be supported. | that might not be supported. | |||
| 2) In a GUI context, if the End User expects the job might be moved | 2) In a GUI context, if the End User expects the job might be moved | |||
| to another printer and prefers a sub-optimal result to nothing at | to another printer and prefers a sub-optimal result to nothing at | |||
| all. | all. | |||
| 3) The End User just wants something reasonable in lieu of nothing | 3) The End User just wants something reasonable in lieu of nothing at | |||
| at all. | all. | |||
| 16.2 Page Description Language (PDL) Override | 16.2 Page Description Language (PDL) Override | |||
| If there is a conflict between the value of an IPP Job Template | If there is a conflict between the value of an IPP Job Template | |||
| attribute and a corresponding instruction in the document data, the | attribute and a corresponding instruction in the document data, the | |||
| value of the IPP attribute SHOULD take precedence over the document | value of the IPP attribute SHOULD take precedence over the document | |||
| instruction. Consider the case where a previously formatted file of | instruction. Consider the case where a previously formatted file of | |||
| document data is sent to an IPP Printer. In this case, if the client | document data is sent to an IPP Printer. In this case, if the client | |||
| supplies any attributes at job submission time, the client desires | supplies any attributes at job submission time, the client desires that | |||
| that those attributes override the embedded instructions. Consider | those attributes override the embedded instructions. Consider the case | |||
| the case were a previously formatted document has embedded in it | were a previously formatted document has embedded in it commands to load | |||
| commands to load 'iso-a4' media. However, the document is passed to | 'iso-a4' media. However, the document is passed to an end user that | |||
| an end user that only has access to a printer with 'na-letter' media | only has access to a printer with 'na-letter' media loaded. That end | |||
| loaded. That end user most likely wants to submit that document to an | user most likely wants to submit that document to an IPP Printer with | |||
| IPP Printer with the "media" Job Template attribute set to 'na- | the "media" Job Template attribute set to 'na-letter'. The job | |||
| letter'. The job submission attribute should take precedence over the | submission attribute should take precedence over the embedded PDL | |||
| embedded PDL instruction. However, until companies that supply | instruction. However, until companies that supply document data | |||
| document data interpreters allow a way for external IPP attributes to | interpreters allow a way for external IPP attributes to take precedence | |||
| take precedence over embedded job production instructions, a Printer | over embedded job production instructions, a Printer might not be able | |||
| might not be able to support the semantics that IPP attributes | to support the semantics that IPP attributes override the embedded | |||
| override the embedded instructions. | instructions. | |||
| Expires December 30, 1998 | ||||
| The IPP model accounts for this situation by introducing a "pdl- | The IPP model accounts for this situation by introducing a "pdl- | |||
| override-supported" attribute that describes the Printer objects | override-supported" attribute that describes the Printer objects | |||
| capabilities to override instructions embedded in the PDL data stream. | capabilities to override instructions embedded in the PDL data stream. | |||
| The value of the "pdl-override-supported" attribute is configured by | The value of the "pdl-override-supported" attribute is configured by | |||
| means outside IPP/1.0. | means outside IPP/1.0. | |||
| This REQUIRED Printer attribute takes on the following values: | This REQUIRED Printer attribute takes on the following values: | |||
| - 'attempted': This value indicates that the Printer object | - 'attempted': This value indicates that the Printer object attempts | |||
| attempts to make the IPP attribute values take precedence over | to make the IPP attribute values take precedence over embedded | |||
| embedded instructions in the document data, however there is no | instructions in the document data, however there is no guarantee. | |||
| guarantee. | - 'not-attempted': This value indicates that the Printer object makes | |||
| - 'not-attempted': This value indicates that the Printer object | no attempt to make the IPP attribute values take precedence over | |||
| makes no attempt to make the IPP attribute values take precedence | embedded instructions in the document data. | |||
| over embedded instructions in the document data. | ||||
| Isaacson, Powell Expires May 16, 1999 | ||||
| At job processing time, an implementation that supports the value of | At job processing time, an implementation that supports the value of | |||
| 'attempted' might do one of several different actions: | 'attempted' might do one of several different actions: | |||
| 1) Generate an output device specific command sequence to realize | 1) Generate an output device specific command sequence to realize the | |||
| the feature represented by the IPP attribute value. | feature represented by the IPP attribute value. | |||
| 2) Parse the document data itself and replace the conflicting | 2) Parse the document data itself and replace the conflicting | |||
| embedded instruction with a new embedded instruction that matches | embedded instruction with a new embedded instruction that matches | |||
| the intent of the IPP attribute value. | the intent of the IPP attribute value. | |||
| 3) Indicate to the Printer that external supplied attributes take | 3) Indicate to the Printer that external supplied attributes take | |||
| precedence over embedded instructions and then pass the external | precedence over embedded instructions and then pass the external | |||
| IPP attribute values to the document data interpreter. | IPP attribute values to the document data interpreter. | |||
| 4) Anything else that allows for the semantics that IPP attributes | 4) Anything else that allows for the semantics that IPP attributes | |||
| override embedded document data instructions. | override embedded document data instructions. | |||
| Since 'attempted' does not offer any type of guarantee, even though a | Since 'attempted' does not offer any type of guarantee, even though a | |||
| given Printer object might not do a very "good" job of attempting to | given Printer object might not do a very "good" job of attempting to | |||
| ensure that IPP attributes take a higher precedence over instructions | ensure that IPP attributes take a higher precedence over instructions | |||
| embedded in the document data, it would still be a conforming | embedded in the document data, it would still be a conforming | |||
| implementation. | implementation. | |||
| At job processing time, an implementation that supports the value of | At job processing time, an implementation that supports the value of | |||
| 'not-attempted' might do one of the following actions: | 'not-attempted' might do one of the following actions: | |||
| 1) Simply pre-pend the document data with the PDL instruction that | 1) Simply pre-pend the document data with the PDL instruction that | |||
| corresponds to the client-supplied PDL attribute, such that if | corresponds to the client-supplied PDL attribute, such that if the | |||
| the document data also has the same PDL instruction, it will | document data also has the same PDL instruction, it will override | |||
| override what the Printer object pre-pended. In other words, | what the Printer object pre-pended. In other words, this | |||
| this implementation is using the same implementation semantics | implementation is using the same implementation semantics for the | |||
| for the client-supplied IPP attributes as for the Printer object | client-supplied IPP attributes as for the Printer object defaults. | |||
| defaults. | ||||
| 2) Parse the document data and replace the conflicting embedded | 2) Parse the document data and replace the conflicting embedded | |||
| instruction with a new embedded instruction that approximates, | instruction with a new embedded instruction that approximates, but | |||
| does not match, the semantic intent of the IPP attribute value. | ||||
| Expires December 30, 1998 | ||||
| but does not match, the semantic intent of the IPP attribute | ||||
| value. | ||||
| Note: The "ipp-attribute-fidelity" attribute applies to the Printer's | Note: The "ipp-attribute-fidelity" attribute applies to the Printer's | |||
| ability to either accept or reject other unsupported Job Template | ability to either accept or reject other unsupported Job Template | |||
| attributes. In other words, if "ipp-attribute-fidelity" is set to | attributes. In other words, if "ipp-attribute-fidelity" is set to | |||
| 'true', a Job is accepted if and only if the client supplied Job | 'true', a Job is accepted if and only if the client supplied Job | |||
| Template attributes and values are supported by the Printer. Whether | Template attributes and values are supported by the Printer. Whether | |||
| these attributes actually affect the processing of the Job when the | these attributes actually affect the processing of the Job when the | |||
| document data contains embedded instructions depends on the ability of | document data contains embedded instructions depends on the ability of | |||
| the Printer to override the instructions embedded in the document data | the Printer to override the instructions embedded in the document data | |||
| with the semantics of the IPP attributes. If the document data | with the semantics of the IPP attributes. If the document data | |||
| attributes can be overridden ("pdl-override-supported" set to | attributes can be overridden ("pdl-override-supported" set to | |||
| 'attempted'), the Printer makes an attempt to use the IPP attributes | 'attempted'), the Printer makes an attempt to use the IPP attributes | |||
| when processing the Job. If the document data attributes can not be | when processing the Job. If the document data attributes can not be | |||
| overridden ("pdl-override-supported" set to 'not-attempted'), the | overridden ("pdl-override-supported" set to 'not-attempted'), the | |||
| Printer makes no attempt to override the embedded document data | Printer makes no attempt to override the embedded document data | |||
| instructions with the IPP attributes when processing the Job, and | instructions with the IPP attributes when processing the Job, and hence, | |||
| hence, the IPP attributes may fail to affect the Job processing and | the IPP attributes may fail to affect the Job processing and output when | |||
| output when the corresponding instruction is embedded in the document | the corresponding instruction is embedded in the document data. | |||
| data. | ||||
| 16.3 Suggested Operation Processing Steps for All Operations | ||||
| When an IPP object receives a request, the IPP object either accepts | ||||
| or rejects the request. In order to determine whether or not to accept | ||||
| or reject the request, the IPP object SHOULD execute the following | ||||
| steps. The order of the steps may be rearranged and/or combined, | ||||
| including making one or multiple passes over the request. Therefore, | ||||
| the error status codes returned may differ between implementations. | ||||
| The next section contains the additional steps for the Print-Job, | ||||
| Validate-Job, Print-URI, Create-Job, Send-Document, and Send-URI | ||||
| operations that create jobs, adds documents, and validates jobs. | ||||
| In the following, processing continues step by step until a "RETURNS | ||||
| the xxx status code _" statement is encountered. Error returns are | ||||
| indicated by the verb: "REJECTS". Since clients have difficulty | ||||
| getting the status code before sending all of the document data in a | ||||
| Print-Job request, clients SHOULD use the Validate-Job operation | ||||
| before sending large documents to be printed, in order to validate | ||||
| whether the IPP Printer will accept the job or not. | ||||
| It is assumed that security authentication and authorization has | ||||
| already taken place at a lower layer. | ||||
| Expires December 30, 1998 | ||||
| 16.3.1 Validate version number | ||||
| Every request and every response contains the "version-number" | ||||
| attribute. The value of this attribute is the major and minor version | ||||
| number of the syntax and semantics that the client and IPP object is | ||||
| using, respectively. The "version-number" attribute remains in a | ||||
| fixed position across all future versions so that all clients and IPP | ||||
| object that support future versions can determine which version is | ||||
| being used. The IPP object checks to see if the major version number | ||||
| supplied in the request is supported. If not, the Printer object | ||||
| REJECTS the request and RETURNS the 'server-error-version-not- | ||||
| supported' status code in the response. The IPP object returns in the | ||||
| "version-number" response attribute the major and minor version for | ||||
| the error response. Thus the client can learn at least one major and | ||||
| minor version that the IPP object supports. The IPP object is | ||||
| encouraged to return the closest version number to the one supplied by | ||||
| the client. | ||||
| The checking of the minor version number is implementation dependent, | ||||
| however if the client supplied minor version is explicitly supported, | ||||
| the IPP object MUST respond using that identical minor version number. | ||||
| If the requested minor version is not supported (the requested minor | ||||
| version is either higher or lower) than a supported minor version, the | ||||
| IPP object SHOULD return the closest supported minor version. | ||||
| 16.3.2 Validate operation identifier | ||||
| The Printer object checks to see if the "operation-id" attribute | ||||
| supplied by the client is supported as indicated in the Printer | ||||
| object's "printer-operations-supported" attribute. If not, the | ||||
| Printer REJECTS the request and returns the 'server-error-operation- | ||||
| not-supported' status code in the response. | ||||
| 16.3.3 Validate the request identifier | ||||
| The Printer object checks to see if the "request-id" attribute | ||||
| supplied by the client is in range. If the value is not between 1 and | ||||
| 2**31 - 1 (inclusive), the Printer object REJECTS the request and | ||||
| returns the 'client-error-bad-request' status code in the response. | ||||
| Note: The "version-number", attribute, "operation-id", and the | ||||
| "request-id" attributes in the same fixed octet positions in all | ||||
| versions of the protocol. These fields are validated before | ||||
| proceeding with the rest of the validation. | ||||
| Expires December 30, 1998 | ||||
| 16.3.4 Validate attribute group and attribute presence and order | ||||
| The order of the following validation steps depends on implementation. | ||||
| 16.3.4.1 Validate the presence and order of attribute groups | ||||
| Client requests and IPP object responses contain attribute groups that | ||||
| Section 3 requires to be present and in a specified order. An IPP | ||||
| object verifies that the attribute groups are present and in the | ||||
| correct order in requests supplied by clients (attribute groups | ||||
| without an * in the following tables). | ||||
| If an IPP object receives a request with (1) required attribute groups | ||||
| missing, or (2) the attributes groups are out of order, or (3) the | ||||
| groups are repeated, the IPP object REJECTS the request and RETURNS | ||||
| the 'client-error-bad-request' status code. For example, it is an | ||||
| error for the Job Template Attributes group to occur before the | ||||
| Operation Attributes group, for the Operation Attributes group to be | ||||
| omitted, or for an attribute group to occur more than once, except in | ||||
| the Get-Jobs response. | ||||
| Since this kind of attribute group error is most likely to be an error | ||||
| detected by a client developer rather than by a customer, the IPP | ||||
| object NEED NOT return an indication of which attribute group was in | ||||
| error in either the Unsupported Attributes group or the Status | ||||
| Message. Also, the IPP object NEED NOT find all attribute group | ||||
| errors before returning this error. | ||||
| 16.3.4.2 Ignore unknown attribute groups in the expected position | ||||
| Future attribute groups may be added to the specification at the end | ||||
| of requests just before the Document Content and at the end of | ||||
| response, except for the Get-Jobs response, where it maybe there or | ||||
| before the first job attributes returned. If an IPP object receives | ||||
| an unknown attribute group in these positions, it ignores the entire | ||||
| group, rather than returning an error, since that group may be a new | ||||
| group in a later minor version of the protocol that can be ignored. | ||||
| (If the new attribute group cannot be ignored without confusing the | ||||
| client, the major version number would have been increased in the | ||||
| protocol document and in the request). If the unknown group occurs in | ||||
| a different position, the IPP object REJECTS the request and RETURNS | ||||
| the 'client-error-bad-request' status code. | ||||
| Clients also ignore unknown attribute groups returned in a response. | ||||
| Expires December 30, 1998 | ||||
| Note: By validating that requests are in the proper form, IPP objects | ||||
| force clients to use the proper form which, in turn, increases the | ||||
| chances that customers will be able to use such clients from multiple | ||||
| vendors with IPP objects from other vendors. | ||||
| 16.3.4.3 Validate the presence of a single occurrence of required | ||||
| Operation attributes | ||||
| Client requests and IPP object responses contain Operation attributes | ||||
| that Section 3 requires to be present. Attributes within a group may | ||||
| be in any order, except for the ordering of target, charset, and | ||||
| natural languages attributes. These attributes must be first, and | ||||
| must be supplied in the following order: charset, natural language, | ||||
| and then target. An IPP object verifies that the attributes that | ||||
| Section 4 requires to be supplied by the client have been supplied in | ||||
| the request (attributes without an * in the following tables). An | ||||
| asterisk (*) indicates groups and Operation attributes that the client | ||||
| may omit in a request or an IPP object may omit in a response. | ||||
| If an IPP object receives a request with required attributes missing | ||||
| or repeated from a group, the IPP object REJECTS the request and | ||||
| RETURNS the 'client-error-bad-request' status code. For example, it | ||||
| is an error for the "attributes-charset" or "attributes-natural- | ||||
| language" attribute to be omitted in any operation request, or for an | ||||
| Operation attribute to be supplied in a Job Template group or a Job | ||||
| Template attribute to be supplied in an Operation Attribute group in a | ||||
| create request. It is also an error to supply the "attributes- | ||||
| charset" attribute twice. | ||||
| Since these kinds of attribute errors are most likely to be detected | ||||
| by a client developer rather than by a customer, the IPP object NEED | ||||
| NOT return an indication of which attribute was in error in either the | ||||
| Unsupported Attributes group or the Status Message. Also, the IPP | ||||
| object NEED NOT find all attribute errors before returning this error. | ||||
| The following tables list all the attributes for all the operations by | ||||
| attribute group in each request and each response. The order of the | ||||
| groups is the order that the client supplies the groups as specified | ||||
| in Section 3. The order of the attributes within a group is | ||||
| arbitrary, except as noted for some of the special operation | ||||
| attributes (charset, natural language, and target). The tables below | ||||
| use the following notation: | ||||
| R indicates a REQUIRED attribute that an IPP object MUST | ||||
| support | ||||
| O indicates an OPTIONAL attribute that an IPP object NEED NOT | ||||
| support | ||||
| Expires December 30, 1998 | ||||
| * indicates that a client MAY omit the attribute in a request | ||||
| and that an IPP object MAY omit the attribute in a | ||||
| response. The absence of an * means that a client MUST | ||||
| supply the attribute in a request and an IPP object | ||||
| MUST supply the attribute in a response. | ||||
| Operation Requests | ||||
| The tables below show the attributes in their proper attribute groups | ||||
| for operation requests: | ||||
| Note: All operation requests contain "version-number", "operation-id", | ||||
| and "request-id" parameters. | ||||
| Print-Job Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| requesting-user-name (R*) | ||||
| job-name (R*) | ||||
| ipp-attribute-fidelity (R*) | ||||
| document-name (R*) | ||||
| document-format (R*) | ||||
| document-natural-language (O*) | ||||
| compression (O*) | ||||
| job-k-octets (O*) | ||||
| job-impressions (O*) | ||||
| job-media-sheets (O*) | ||||
| Group 2: Job Template Attributes (R) | ||||
| <Job Template attributes> (O*) (see Section 4.2) | ||||
| Group 3: Document Content (R) | ||||
| <document content> | ||||
| Validate-Job Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| requesting-user-name (R*) | ||||
| job-name (R*) | ||||
| ipp-attribute-fidelity (R*) | ||||
| document-name (R*) | ||||
| document-format (R*) | ||||
| document-natural-language (O*) | ||||
| compression (O*) | ||||
| job-k-octets (O*) | ||||
| job-impressions (O*) | ||||
| Expires December 30, 1998 | ||||
| job-media-sheets (O*) | ||||
| Group 2: Job Template Attributes (R) | ||||
| <Job Template attributes> (O*) (see Section 4.2) | ||||
| Create-Job Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| requesting-user-name (R*) | ||||
| job-name (R*) | ||||
| ipp-attribute-fidelity (R*) | ||||
| job-k-octets (O*) | ||||
| job-impressions (O*) | ||||
| job-media-sheets (O*) | ||||
| Group 2: Job Template Attributes (R) | ||||
| <Job Template attributes> (O*) (see Section 4.2) | ||||
| Print-URI Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| document-uri (R) | ||||
| requesting-user-name (R*) | ||||
| job-name (R*) | ||||
| ipp-attribute-fidelity (R*) | ||||
| document-name (R*) | ||||
| document-format (R*) | ||||
| document-natural-language (O*) | ||||
| compression (O*) | ||||
| job-k-octets (O*) | ||||
| job-impressions (O*) | ||||
| job-media-sheets (O*) | ||||
| Group 2: Job Template Attributes (R) | ||||
| <Job Template attributes> (O*) (see Section 4.2) | ||||
| Send-Document Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| (printer-uri & job-id) | job-uri (R) | ||||
| last-document (R) | ||||
| requesting-user-name (R*) | ||||
| document-name (R*) | ||||
| document-format (R*) | ||||
| document-natural-language (O*) | ||||
| compression (O*) | ||||
| Expires December 30, 1998 | ||||
| Group 2: Document Content (R) | ||||
| <document content> | ||||
| Send-URI Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| (printer-uri & job-id) | job-uri (R) | ||||
| last-document (R) | ||||
| document-uri (R) | ||||
| requesting-user-name (R*) | ||||
| document-name (R*) | ||||
| document-format (R*) | ||||
| document-natural-language (O*) | ||||
| compression (O*) | ||||
| Cancel-Job Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| (printer-uri & job-id) | job-uri (R) | ||||
| requesting-user-name (R*) | ||||
| message (O*) | ||||
| Get-Printer-Attributes Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| requesting-user-name (R*) | ||||
| requested-attributes (R*) | ||||
| document-format (R*) | ||||
| Get-Job-Attributes Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| (printer-uri & job-id) | job-uri (R) | ||||
| requesting-user-name (R*) | ||||
| requested-attributes (R*) | ||||
| Get-Jobs Request: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| printer-uri (R) | ||||
| requesting-user-name (R*) | ||||
| limit (R*) | ||||
| Expires December 30, 1998 | ||||
| requested-attributes (R*) | ||||
| which-jobs (R*) | ||||
| my-jobs (R*) | ||||
| Operation Responses | ||||
| The tables below show the response attributes in their proper | ||||
| attribute groups for responses. | ||||
| Note: All operation responses contain "version-number", "status-code", | ||||
| and "request-id" parameters. | ||||
| Print-Job Response: | ||||
| Print-URI Response: | ||||
| Create-Job Response: | ||||
| Send-Document Response: | ||||
| Send-URI Response: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| status-message (O*) | ||||
| Group 2: Unsupported Attributes (R*) (see Note 3) | ||||
| <unsupported attributes> (R*) | ||||
| Group 3: Job Object Attributes(R*) (see Note 2) | ||||
| job-uri (R) | ||||
| job-id (R) | ||||
| job-state (R) | ||||
| job-state-reasons (O*) | ||||
| job-state-message (O*) | ||||
| number-of-intervening-jobs (O*) | ||||
| Validate-Job Response: | ||||
| Cancel-Job Response: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| status-message (O*) | ||||
| Group 2: Unsupported Attributes (R*) (see Note 3) | ||||
| <unsupported attributes> (R*) | ||||
| Note 2 - the Job Object Attributes and Printer Object Attributes are | ||||
| returned only if the IPP object returns one of the success status | ||||
| codes. | ||||
| Expires December 30, 1998 | ||||
| Note 3 - the Unsupported Attributes Group is present only if the | ||||
| client included some Operation and/or Job Template attributes that the | ||||
| Printer doesn't support whether a success or an error return. | ||||
| Get-Printer-Attributes Response: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| status-message (O*) | ||||
| Group 2: Unsupported Attributes (R*) (see Note 4) | ||||
| <unsupported attributes> (R*) | ||||
| Group 3: Printer Object Attributes(R*) (see Note 2) | ||||
| <requested attributes> (R*) | ||||
| Note 4 - the Unsupported Attributes Group is present only if the | ||||
| client included some Operation attributes that the Printer doesn't | ||||
| support whether a success or an error return. | ||||
| Get-Job-Attributes Response: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| status-message (O*) | ||||
| Group 2: Unsupported Attributes (R*) (see Note 4) | ||||
| <unsupported attributes> (R*) | ||||
| Group 3: Job Object Attributes(R*) (see Note 2) | ||||
| <requested attributes> (R*) | ||||
| Get-Jobs Response: | ||||
| Group 1: Operation Attributes (R) | ||||
| attributes-charset (R) | ||||
| attributes-natural-language (R) | ||||
| status-message (O*) | ||||
| Group 2: Unsupported Attributes (R*) (see Note 4) | ||||
| <unsupported attributes> (R*) | ||||
| Group 3: Job Object Attributes(R*) (see Note 2, 5) | ||||
| <requested attributes> (R*) | ||||
| Note 5: for the Get-Jobs operation the response contains a separate | ||||
| Job Object Attributes group 3 to N containing requested-attributes for | ||||
| each job object in the response. | ||||
| 16.3.5 Validate the values of the REQUIRED Operation attributes | ||||
| An IPP object validates the values supplied by the client of the | ||||
| REQUIRED Operation attribute that the IPP object MUST support. The | ||||
| Expires December 30, 1998 | ||||
| next section specifies the validation of the values of the OPTIONAL | ||||
| Operation attributes that IPP objects MAY support. | ||||
| The IPP object performs the following syntactic validation checks of | ||||
| each Operation attribute value: | ||||
| a) | ||||
| that the length of each Operation attribute value is correct | ||||
| for the attribute syntax tag supplied by the client according | ||||
| to Section 4.1. | ||||
| b) | ||||
| that the attribute syntax tag is correct for that Operation | ||||
| attribute according to Section 3, | ||||
| c) | ||||
| that the value is in the range specified for that Operation | ||||
| attribute according to Section 3, | ||||
| d) | ||||
| that multiple values are supplied by the client only for | ||||
| operation attributes that are multi-valued, i.e., that are | ||||
| 1setOf X according to Section 3. | ||||
| If any of these checks fail, the IPP object REJECTS the request and | ||||
| RETURNS the 'client-error-bad-request' or the 'client-error-request- | ||||
| value-too-long' status code. Since such an error is most likely to be | ||||
| an error detected by a client developer, rather than by an end-user, | ||||
| the IPP object NEED NOT return an indication of which attribute had | ||||
| the error in either the Unsupported Attributes Group or the Status | ||||
| Message. The description for each of these syntactic checks is | ||||
| explicitly expressed in the first IF statement in the following table. | ||||
| In addition, the IPP object checks each Operation attribute value | ||||
| against some Printer object attribute or some hard-coded value if | ||||
| there is no "xxx-supported" Printer object attribute defined. If its | ||||
| value is not among those supported or is not in the range supported, | ||||
| then the IPP object REJECTS the request and RETURNS the error status | ||||
| code indicated in the table by the second IF statement. If the value | ||||
| of the Printer object's "xxx-supported" attribute is 'no-value' | ||||
| (because the system administrator hasn't configured a value), the | ||||
| check always fails. | ||||
| attributes-charset (charset) | ||||
| IF NOT any single non-empty 'charset' value less than or equal to | ||||
| 63 octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "charset-supported" attribute, | ||||
| REJECT/RETURN "client-error-charset-not-supported". | ||||
| attributes-natural-language(naturalLanguage) | ||||
| IF NOT any single non-empty 'naturalLanguage' value less than or | ||||
| equal to 63 octets, REJECT/RETURN 'client-error-request-value- | ||||
| too-long'. | ||||
| Expires December 30, 1998 | ||||
| ACCEPT the request even if not a member of the set in the Printer | ||||
| object's "generated-natural-language-supported" attribute. | ||||
| requesting-user-name | ||||
| IF NOT any single 'name' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF the IPP object can obtain a better authenticated name, use it | ||||
| instead. | ||||
| job-name(name) | ||||
| IF NOT any single 'name' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT supplied by the client, the Printer object creates a name | ||||
| from the document-name or document-uri. | ||||
| document-name (name) | ||||
| IF NOT any single 'name' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| ipp-attribute-fidelity (boolean) | ||||
| IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 | ||||
| octet, REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT supplied by the client, the IPP object assumes the value | ||||
| 'false'. | ||||
| document-format (mimeMediaType) | ||||
| IF NOT any single non-empty 'mimeMediaType' value less than or | ||||
| equal to 255 octets, REJECT/RETURN 'client-error-request-value- | ||||
| too-long'. | ||||
| IF NOT in the Printer object's "document-format-supported" | ||||
| attribute, REJECT/RETURN 'client-error-document-format-not- | ||||
| supported' | ||||
| IF NOT supplied by the client, the IPP object assumes the value of | ||||
| the Printer object's "document-format-default" attribute. | ||||
| document-uri (uri) | ||||
| IF NOT any single non-empty 'uri' value less than or equal to 1023 | ||||
| octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad- | ||||
| request'. | ||||
| IF scheme is NOT in the Printer object's "reference-uri-schemes- | ||||
| supported" attribute, REJECT/RETURN 'client-error'-uri-scheme- | ||||
| not-supported'. | ||||
| last-document (boolean) | ||||
| IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 | ||||
| octet, REJECT/RETURN 'client-error-bad-request'. | ||||
| Expires December 30, 1998 | ||||
| job-id (integer(1:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets AND in the | ||||
| range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT a job-id of an existing Job object, REJECT/RETURN 'client- | ||||
| error-not-found' or 'client-error-gone' status code, if keep | ||||
| track of recently deleted jobs. | ||||
| requested-attributes (1setOf keyword) | ||||
| IF NOT any number of 'keyword' values less than or equal to 255 | ||||
| octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| Ignore unsupported values which are the keyword names of | ||||
| unsupported attributes. Don't bother to copy such requested | ||||
| (unsupported) attributes to the Unsupported Attribute response | ||||
| group since the response will not return them. | ||||
| which-jobs (type2 keyword) | ||||
| IF NOT a single 'keyword' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NEITHER 'completed' NOR 'not-completed', copy the attribute and | ||||
| the unsupported value to the Unsupported Attributes response | ||||
| group and REJECT/RETURN 'client-error-attributes-or-values-not- | ||||
| supported'. | ||||
| Note: a Printer still supports the 'completed' value even if it | ||||
| keeps no completed/canceled/aborted jobs: by returning no jobs | ||||
| when so queried. | ||||
| IF NOT supplied by the client, the IPP object assumes the 'not- | ||||
| completed' value. | ||||
| my-jobs (boolean) | ||||
| IF NOT either a single 'true' or 'false' 'boolean' value equal to 1 | ||||
| octet, REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT supplied by the client, the IPP object assumes the 'false' | ||||
| value. | ||||
| limit (integer(1:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets AND in the | ||||
| range 1 to MAX, REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT supplied by the client, the IPP object returns all jobs, no | ||||
| matter how many. | ||||
| 16.3.6 Validate the values of the OPTIONAL Operation attributes | ||||
| OPTIONAL Operation attributes are those that an IPP object MAY or MAY | ||||
| NOT support. An IPP object validates the values of the OPTIONAL | ||||
| attributes supplied by the client. The IPP object performs the same | ||||
| Expires December 30, 1998 | ||||
| syntactic validation checks for each OPTIONAL attribute value as in | ||||
| Section 16.3.5. As in Section 16.3.5, if any fail, the IPP object | ||||
| REJECTS the request and RETURNS the 'client-error-bad-request' or the | ||||
| 'client-error-request-value-too-long' status code. | ||||
| In addition, the IPP object checks each Operation attribute value | ||||
| against some Printer attribute or some hard-coded value if there is no | ||||
| "xxx-supported" Printer attribute defined. If its value is not among | ||||
| those supported or is not in the range supported, then the IPP object | ||||
| REJECTS the request and RETURNS the error status code indicated in the | ||||
| table. If the value of the Printer object's "xxx-supported" attribute | ||||
| is 'no-value' (because the system administrator hasn't configured a | ||||
| value), the check always fails. | ||||
| If the IPP object doesn't recognize/support an attribute, the IPP | ||||
| object treats the attribute as an unknown or unsupported attribute | ||||
| (see the last row in the table below). | ||||
| document-natural-language (naturalLanguage) | ||||
| IF NOT any single non-empty 'naturalLanguage' value less than or | ||||
| equal to 63 octets, REJECT/RETURN 'client-error-request-value- | ||||
| too-long'. | ||||
| IF NOT a value that the Printer object supports in document | ||||
| formats, (no standard "xxx-supported" Printer attribute), | ||||
| REJECT/RETURN 'client-error-natural-language-not-supported'. | ||||
| compression (type3 keyword) | ||||
| IF NOT any single 'keyword' values less than or equal to 255 | ||||
| octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "compression-supported" attribute, | ||||
| copy the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group and REJECT/RETURN 'client-error- | ||||
| attributes-or-values-not-supported'. | ||||
| job-k-octets (integer(0:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in the range of the Printer object's "job-k-octets- | ||||
| supported" attribute, copy the attribute and the unsupported | ||||
| value to the Unsupported Attributes response group and | ||||
| REJECT/RETURN 'client-error-attributes-or-values-not-supported'. | ||||
| job-impressions (integer(0:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in the range of the Printer object's "job-impressions- | ||||
| supported" attribute, copy the attribute and the unsupported | ||||
| Expires December 30, 1998 | ||||
| value to the Unsupported Attributes response group and | ||||
| REJECT/RETURN 'client-error-attributes-or-values-not-supported'. | ||||
| job-media-sheets (integer(0:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in the range of the Printer object's "job-media-supported" | ||||
| attribute, copy the attribute and the unsupported value to the | ||||
| Unsupported Attributes response group and REJECT/RETURN 'client- | ||||
| error-attributes-or-values-not-supported'. | ||||
| message (text(127)) | ||||
| IF NOT any single 'text' value less than or equal to 127 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| unknown or unsupported attribute | ||||
| IF the attribute syntax supplied by the client is supported but the | ||||
| length is not legal for that attribute syntax, REJECT/RETURN | ||||
| 'client-error-request-value-too-long'. | ||||
| ELSE copy the attribute and value to the Unsupported Attributes | ||||
| response group and change the attribute value to the "out-of- | ||||
| band" 'unsupported' value, but otherwise ignore the attribute. | ||||
| Note: Future Operation attributes may be added to the protocol | ||||
| specification that may occur anywhere in the specified group. When | ||||
| the operation is otherwise successful, the IPP object returns the | ||||
| 'successful-ok-ignored-or-substituted-attributes' status code. | ||||
| Ignoring unsupported Operation attributes in all operations is | ||||
| analogous to the handling of unsupported Job Template attributes in | ||||
| the create and Validate-Job operations when the client supplies the | ||||
| "ipp-attribute-fidelity" Operation attribute with the 'false' | ||||
| value. This last rule is so that we can add OPTIONAL Operation | ||||
| attributes to future versions of IPP so that older clients can | ||||
| inter-work with new IPP objects and newer clients can inter-work | ||||
| with older IPP objects. (If the new attribute cannot be ignored | ||||
| without performing unexpectedly, the major version number would | ||||
| have been increased in the protocol document and in the request). | ||||
| This rule for Operation attributes is independent of the value of | ||||
| the "ipp-attribute-fidelity" attribute. For example, if an IPP | ||||
| object doesn't support the OPTIONAL "job-k-octets" attribute', the | ||||
| IPP object treats "job-k-octets" as an unknown attribute and only | ||||
| checks the length for the 'integer' attribute syntax supplied by | ||||
| the client. If it is not four octets, the IPP object REJECTS the | ||||
| request and RETURNS the 'client-error-bad-request' status code, | ||||
| else the IPP object copies the attribute to the Unsupported | ||||
| Attribute response group, setting the value to the "out-of-band" | ||||
| 'unsupported' value, but otherwise ignores the attribute. | ||||
| Expires December 30, 1998 | ||||
| 16.4 Suggested Additional Processing Steps for Operations that | ||||
| Create/Validate Jobs and Add Documents | ||||
| This section in combination with the previous section recommends the | ||||
| processing steps for the Print-Job, Validate-Job, Print-URI, Create- | ||||
| Job, Send-Document, and Send-URI operations that IPP objects SHOULD | ||||
| use. These are the operations that create jobs, validate a Print-Job | ||||
| request, and add documents to a job. | ||||
| 16.4.1 Default "ipp-attribute-fidelity" if not supplied | ||||
| The Printer object checks to see if the client supplied an "ipp- | ||||
| attribute-fidelity" Operation attribute. If the attribute is not | ||||
| supplied by the client, the IPP object assumes that the value is | ||||
| 'false'. | ||||
| 16.4.2 Check that the Printer object is accepting jobs | ||||
| If the value of the Printer object's "printer-is-accepting-jobs" is | ||||
| 'false', the Printer object REJECTS the request and RETURNS the | ||||
| 'server-error-not-accepting-jobs' status code. | ||||
| 16.4.3 Validate the values of the Job Template attributes | ||||
| An IPP object validates the values of all Job Template attribute | ||||
| supplied by the client. The IPP object performs the analogous | ||||
| syntactic validation checks of each Job Template attribute value that | ||||
| it performs for Operation attributes (see Section 16.3.5.): | ||||
| a) | ||||
| that the length of each value is correct for the attribute | ||||
| syntax tag supplied by the client according to Section 4.1. | ||||
| b) | ||||
| that the attribute syntax tag is correct for that attribute | ||||
| according to Sections 4.2 to 4.4, | ||||
| c) | ||||
| that multiple values are supplied only for multi-valued | ||||
| attributes, i.e., that are 1setOf X according to Sections 4.2 | ||||
| to 4.4 | ||||
| As in Section 16.3.5, if any of these syntactic checks fail, the IPP | ||||
| object REJECTS the request and RETURNS the 'client-error-bad-request' | ||||
| or 'client-error-request-value-too-long' status code, independent of | ||||
| the value of the "ipp-attribute-fidelity". Since such an error is | ||||
| most likely to be an error detected by a client developer, rather than | ||||
| by an end-user, the IPP object NEED NOT return an indication of which | ||||
| attribute had the error in either the Unsupported Attributes Group or | ||||
| Expires December 30, 1998 | ||||
| the Status Message. The description for each of these syntactic | ||||
| checks is explicitly expressed in the first IF statement in the | ||||
| following table. | ||||
| In addition, the IPP object loops through all the client-supplied Job | ||||
| Template attributes, checking to see if the supplied attribute | ||||
| value(s) are supported or in the range supported, i.e., the value of | ||||
| the "xxx" attribute in the request is (1) a member of the set of | ||||
| values or is in the range of values of the Printer' objects "xxx- | ||||
| supported" attribute. If the value of the Printer object's "xxx- | ||||
| supported" attribute is 'no-value' (because the system administrator | ||||
| hasn't configured a value), the check always fails. If the check | ||||
| fails, the IPP object copies the attribute to the Unsupported | ||||
| Attributes response group with its unsupported value. If the | ||||
| attribute contains more than one value, each value is checked and each | ||||
| unsupported value is separately copied, while supported values are not | ||||
| copied. If an IPP object doesn't recognize/support a Job Template | ||||
| attribute, i.e., there is no corresponding Printer object "xxx- | ||||
| supported" attribute, the IPP object treats the attribute as an | ||||
| unknown or unsupported attribute (see the last row in the table | ||||
| below). | ||||
| If some Job Template attributes are supported for some document | ||||
| formats and not for others or the values are different for different | ||||
| document formats, the IPP object SHOULD take that into account in this | ||||
| validation using the value of the "document-format" supplied by the | ||||
| client (or defaulted to the value of the Printer's "document-format- | ||||
| default" attribute, if not supplied by the client). For example, if | ||||
| "number-up" is supported for the 'text/plain' document format, but not | ||||
| for the 'application/postscript' document format, the check SHOULD | ||||
| (though it NEED NOT) depend on the value of the "document-format" | ||||
| operation attribute. See "document-format" in section 3.2.1.1 and | ||||
| 3.2.5.1. | ||||
| Note: whether the request is accepted or rejected is determined by the | ||||
| value of the "ipp-attribute-fidelity" attribute in a subsequent step, | ||||
| so that all Job Template attribute supplied are examined and all | ||||
| unsupported attributes and/or values are copied to the Unsupported | ||||
| Attributes response group. | ||||
| job-priority (integer(1:100)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, REJECT/RETURN | ||||
| 'client-error-bad-request'. | ||||
| IF NOT supplied by the client, use the value of the Printer | ||||
| object's "job-priority-default" attribute at job submission time. | ||||
| IF NOT in the range 1 to 100, inclusive, copy the attribute and the | ||||
| unsupported value to the Unsupported Attributes response group. | ||||
| Expires December 30, 1998 | ||||
| Map the value to the nearest supported value in the range 1:100 as | ||||
| specified by the number of discrete values indicated by the value | ||||
| of the Printer's "job-priority-supported" attribute. See the | ||||
| formula in Section 4.2.1. | ||||
| job-hold-until (type3 keyword | name) | ||||
| IF NOT any single 'keyword' or 'name' value less than or equal to | ||||
| 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT supplied by the client, use the value of the Printer | ||||
| object's "job-hold-until" attribute at job submission time. | ||||
| IF NOT in the Printer object's "job-hold-until-supported" | ||||
| attribute, copy the attribute and the unsupported value to the | ||||
| Unsupported Attributes response group. | ||||
| job-sheets (type3 keyword | name) | ||||
| IF NOT any single 'keyword' or 'name' value less than or equal to | ||||
| 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "job-sheets-supported" attribute, | ||||
| copy the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| multiple-document-handling (type2 keyword) | ||||
| IF NOT any single 'keyword' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "multiple-document-handling- | ||||
| supported" attribute, copy the attribute and the unsupported | ||||
| value to the Unsupported Attributes response group. | ||||
| copies (integer(1:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in range of the Printer object's "copies-supported" | ||||
| attribute | ||||
| copy the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| finishings (1setOf type2 enum) | ||||
| IF NOT any 'enum' value(s) equal to 4 octets, REJECT/RETURN | ||||
| 'client-error-bad-request'. | ||||
| IF NOT in the Printer object's "finishings-supported" attribute, | ||||
| copy the attribute and the unsupported value(s), but not any | ||||
| supported values, to the Unsupported Attributes response group. | ||||
| page-ranges (1setOf rangeOfInteger(1:MAX)) | ||||
| IF NOT any 'rangeOfInteger' value(s) each equal to 8 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| Expires December 30, 1998 | ||||
| IF first value is greater than second value in any range, the | ||||
| ranges are not in ascending order, or ranges overlap, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF the value of the Printer object's "page-ranges-supported" | ||||
| attribute is 'false', copy the attribute to the Unsupported | ||||
| Attributes response group and set the value to the "out-of-band" | ||||
| 'unsupported' value. | ||||
| sides (type2 keyword) | ||||
| IF NOT any single 'keyword' value less than or equal to 255 octets, | ||||
| REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "sides-supported" attribute, copy | ||||
| the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| number-up (integer(1:MAX)) | ||||
| IF NOT any single 'integer' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT a value or in the range of one of the values of the Printer | ||||
| object's "number-up-supported" attribute, copy the attribute and | ||||
| value to the Unsupported Attribute response group. | ||||
| orientation-requested (type2 enum) | ||||
| IF NOT any single 'enum' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in the Printer object's "orientation-requested-supported" | ||||
| attribute, copy the attribute and the unsupported value to the | ||||
| Unsupported Attributes response group. | ||||
| media (type3 keyword | name) | ||||
| IF NOT any single 'keyword' or 'name' value less than or equal to | ||||
| 255 octets, REJECT/RETURN 'client-error-request-value-too-long'. | ||||
| IF NOT in the Printer object's "media-supported" attribute, copy | ||||
| the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| printer-resolution (resolution) | ||||
| IF NOT any single 'resolution' value equal to 9 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| IF NOT in the Printer object's "multiple-document-handling- | ||||
| supported" attribute, copy the attribute and the unsupported | ||||
| value to the Unsupported Attributes response group. | ||||
| print-quality (type2 enum) | ||||
| IF NOT any single 'enum' value equal to 4 octets, | ||||
| REJECT/RETURN 'client-error-bad-request'. | ||||
| Expires December 30, 1998 | ||||
| IF NOT in the Printer object's "print-quality-supported" attribute, | ||||
| copy the attribute and the unsupported value to the Unsupported | ||||
| Attributes response group. | ||||
| unknown or unsupported attribute (i.e., there is no corresponding | ||||
| Printer object "xxx-supported" attribute) | ||||
| IF the attribute syntax supplied by the client is supported but the | ||||
| length is not legal for that attribute syntax, | ||||
| REJECT/RETURN 'client-error-bad-request' or 'client-error-request- | ||||
| value-too-long'. | ||||
| ELSE copy the attribute and value to the Unsupported Attributes | ||||
| response group and change the attribute value to the "out-of- | ||||
| band" 'unsupported' value. Any remaining Job Template Attributes | ||||
| are either unknown or unsupported Job Template attributes and are | ||||
| validated algorithmically according to their attribute syntax for | ||||
| proper length (see below). | ||||
| If the attribute syntax is supported AND the length check fails, the | Isaacson, Powell Expires May 16, 1999 | |||
| IPP object REJECTS the request and RETURNS the 'client-error-request- | 16.3 Using Job Template Attributes During Document Processing. | |||
| value-too-long' status code, else the IPP object copies the | ||||
| unsupported Job Template attribute to the Unsupported Attributes | ||||
| response group and changes the attribute value to the "out-of-band" | ||||
| 'unsupported' value. The following table shows the length checks for | ||||
| all attribute syntaxes. In the following table: "<=" means less than | ||||
| or equal, "=" means equal to: | ||||
| Expires December 30, 1998 | The Printer object uses some of the Job object's Job Template attributes | |||
| Name Octet length check for read-write attributes | during the processing of the document data associated with that job. | |||
| 'textWithLanguage <= 1023 AND 'naturalLanguage' <= 63 | These include, but are not limited to, "orientation", "number-up", | |||
| 'textWithoutLanguage' <= 1023 | "sides", "media", and "copies". The processing of each document in a | |||
| 'nameWithLanguage' <= 255 AND 'naturalLanguage' <= 63 | Job Object MUST follow the steps below. These steps are intended only to | |||
| 'nameWithoutLanguage' <= 255 | identify when and how attributes are to be used in processing document | |||
| 'keyword' <= 255 | data and any alternative steps that accomplishes the same effect can be | |||
| 'enum' = 4 | used to implement this specification. | |||
| 'uri' <= 1023 | ||||
| 'uriScheme' <= 63 | ||||
| 'charset' <= 63 | ||||
| 'naturalLanguage' <= 63 | ||||
| 'mimeMediaType' <= 255 | ||||
| 'octetString' <= 1023 | ||||
| 'boolean' = 1 | ||||
| 'integer' = 4 | ||||
| 'rangeOfInteger' = 8 | ||||
| 'dateTime' = 11 | ||||
| 'resolution' = 9 | ||||
| '1setOf X' | ||||
| 16.4.4 Check for conflicting Job Template attributes values | 1. Using the client supplied "document-format" attribute or some form | |||
| of document format detection algorithm (if the value of "document- | ||||
| format" is not specific enough), determine whether or not the | ||||
| document data has already been formatted for printing. If the | ||||
| document data has been formatted, then go to step 2. Otherwise, the | ||||
| document data MUST be formatted. The formatting detection algorithm | ||||
| is implementation defined and is not specified by this | ||||
| specification. The formatting of the document data uses the | ||||
| "orientation-requested" attribute to determine how the formatted | ||||
| print data should be placed on a print-stream page, see section | ||||
| 4.2.10 for the details. | ||||
| Once all the Operation and Job Template attributes have been checked | 2. The document data is in the form of a print-stream in a known | |||
| individually, the Printer object SHOULD check for any conflicting | media type. The "page-ranges" attribute is used to select, as | |||
| values among all the supported values supplied by the client. For | specified in section 4.2.7, a sub-sequence of the pages in the | |||
| example, a Printer object might be able to staple and to print on | print-stream that are to be processed and images. | |||
| transparencies, however due to physical stapling constraints, the | ||||
| Printer object might not be able to staple transparencies. The IPP | ||||
| object copies the supported attributes and their conflicting attribute | ||||
| values to the Unsupported Attributes response group. The Printer | ||||
| object only copies over those attributes that the Printer object | ||||
| either ignores or substitutes in order to resolve the conflict, and it | ||||
| returns the original values which were supplied by the client. For | ||||
| example suppose the client supplies "finishings" equals 'staple' and | ||||
| "media" equals 'transparency', but the Printer object does not support | ||||
| stapling transparencies. If the Printer chooses to ignore the | ||||
| stapling request in order to resolve the conflict, the Printer objects | ||||
| returns "finishings" equal to 'staple' in the Unsupported Attributes | ||||
| response group. If any attributes are multi-valued, only the | ||||
| conflicting values of the attributes are copied. | ||||
| Note: The decisions made to resolve the conflict (if there is a | 3. The input to this step is a sequence of print-stream pages. This | |||
| choice) is implementation dependent. | step is controlled by the "number-up" attribute. If the value of | |||
| "number-up" is N, then during the processing of the print-stream | ||||
| pages, each N print-stream pages are positioned, as specified in | ||||
| section 4.2.9, to create a single impression. If a given document | ||||
| does not have N more print-stream pages, then the completion of the | ||||
| impression is controlled by the "multiple-document-handling" | ||||
| attribute as described in section 4.2.4; when the value of this | ||||
| attribute is 'single-document' or 'single-document-new-sheet', the | ||||
| print-stream pages of document data from subsequent documents is | ||||
| used to complete the impression. | ||||
| Expires December 30, 1998 | The size(scaling), position(translation) and rotation of the print- | |||
| 16.4.5 Decide whether to REJECT the request | stream pages on the impression is implementation defined. Note | |||
| that during this process the print-stream pages may be rendered to | ||||
| a form suitable for placing on the impression; this rendering is | ||||
| controlled by the values of the "printer-resolution" and "print- | ||||
| quality" attributes as described in sections 4.2.12 and 4.2.13. In | ||||
| the case N=1, the impression is nearly the same as the print-stream | ||||
| page; the differences would only be in the size, position and | ||||
| rotation of the print-stream page and/or any decoration, such as a | ||||
| frame to the page, that is added by the implementation. | ||||
| If there were any unsupported Job Template attributes or | 4. The collection of impressions is placed, in sequence, onto sides | |||
| unsupported/conflicting Job Template attribute values and the client | of the media sheets. This placement is controlled by the "sides" | |||
| supplied the "ipp-attribute-fidelity" attribute with the 'true' value, | attribute and the orientation of the print-stream page, as | |||
| the Printer object REJECTS the request and return the status code: | ||||
| (1) 'client-error-conflicting-attributes' status code, if there | Isaacson, Powell Expires May 16, 1999 | |||
| were any conflicts between attributes supplied by the client. | described in section 4.2.8. The orientation of the print-stream | |||
| (2) 'client-error-attributes-or-values-not-supported' status code, | pages affects the orientation of the impression; for example, if | |||
| otherwise. | "number-up" equals 2, then, typically, two portrait print-stream | |||
| pages become one landscape impression. Note that the placement of | ||||
| impressions onto media sheets is also controlled by the "multiple- | ||||
| document-handling" attribute as described in section 4.2.4. | ||||
| Note: Unsupported Operation attributes or values that are returned do | 5. The "copies" and "multiple-document-handling" attributes are used | |||
| not affect the status returned in this step. If the unsupported | to determine how many copies of each media instance are created and | |||
| Operation attribute was a serious error, the above already rejected | in what order. See sections 4.2.5 and 4.2.4 for the details. | |||
| the request in a previous step. If control gets to this step with | ||||
| unsupported Operation attributes being returned, they are not serious | ||||
| errors. | ||||
| 16.4.6 For the Validate-Job operation, RETURN one of the success | 6. When the correct number of copies are created, the media instances | |||
| status codes | are finished according to the values of the "finishings" attribute | |||
| as described in 4.2.6. Note that sometimes finishing operations may | ||||
| require manual intervention to perform the finishing operations on | ||||
| the copies, especially uncollated copies. This specification allows | ||||
| any or all of the processing steps to be performed automatically or | ||||
| manually at the discretion of the Printer object. | ||||
| If the requested operation is the Validate-Job operation, the Printer | 17. APPENDIX E: Generic Directory Schema | |||
| object returns: | ||||
| (1) the "successful-ok" status code, if there are no unsupported or | This section defines a generic schema for an entry in a directory | |||
| conflicting Job Template attributes or values. | service. A directory service is a means by which service users can | |||
| (2) the "successful-ok-conflicting-attributes, if there are any | locate service providers. In IPP environments, this means that IPP | |||
| conflicting Job Template attribute or values. | Printers can be registered (either automatically or with the help of an | |||
| (3) the "successful-ok-ignored-or-substituted-attributes, if there | administrator) as entries of type printer in the directory using an | |||
| are only unsupported Job Template attributes or values. | implementation specific mechanism such as entry attributes, entry type | |||
| fields, specific branches, etc. IPP clients can search or browse for | ||||
| entries of type printer. Clients use the directory service to find | ||||
| entries based on naming, organizational contexts, or filtered searches | ||||
| on attribute values of entries. For example, a client can find all | ||||
| printers in the "Local Department" context. Authentication and | ||||
| authorization are also often part of a directory service so that an | ||||
| administrator can place limits on end users so that they are only | ||||
| allowed to find entries to which they have certain access rights. IPP | ||||
| itself does not require any specific directory service protocol or | ||||
| provider. | ||||
| Note: Unsupported Operation attributes or values that are returned do | Note: Some directory implementations allow for the notion of "aliasing". | |||
| not affect the status returned in this step. If the unsupported | That is, one directory entry object can appear as multiple directory | |||
| Operation attribute was a serious error, the above already rejected | entry object with different names for each object. In each case, each | |||
| the request in a previous step. If control gets to this step with | alias refers to the same directory entry object which refers to a single | |||
| unsupported Operation attributes being returned, they are not serious | IPP Printer object. | |||
| errors. | ||||
| 16.4.7 Create the Job object with attributes to support | The generic schema is a subset of IPP Printer Job Template and Printer | |||
| Description attributes (sections 4.2 and 4.4). These attributes are | ||||
| identified as either RECOMMENDED or OPTIONAL for the directory entry | ||||
| itself. This conformance labeling is NOT the same conformance labeling | ||||
| applied to the attributes of IPP Printers objects. The conformance | ||||
| labeling in this Appendix is intended to apply to directory templates | ||||
| and to IPP Printer implementations that subscribe by adding one or more | ||||
| entries to a directory. RECOMMENDED attributes SHOULD be associated | ||||
| with each directory entry. OPTIONAL attributes MAY be associated with | ||||
| If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied | Isaacson, Powell Expires May 16, 1999 | |||
| by the client), the Printer object: | the directory entry (if known or supported). In addition, all directory | |||
| entry attributes SHOULD reflect the current attribute values for the | ||||
| corresponding Printer object. | ||||
| Expires December 30, 1998 | The names of attributes in directory schema and entries SHOULD be the | |||
| (1) creates a Job object, assigns a unique value to the job's "job- | same as the IPP Printer attribute names as shown. | |||
| uri" and "job-id" attributes, and initializes all of the job's | ||||
| other supported Job Description attributes. | ||||
| (2) removes all unsupported attributes from the Job object. | ||||
| (3) for each unsupported value, removes either the unsupported | ||||
| value or substitutes the unsupported attribute value with some | ||||
| supported value. If an attribute has no values after removing | ||||
| unsupported values from it, the attribute is removed from the Job | ||||
| object (so that the normal default behavior at job processing | ||||
| time will take place for that attribute). | ||||
| (4) for each conflicting value, removes either the conflicting | ||||
| value or substitutes the conflicting attribute value with some | ||||
| other supported value. If an attribute has no values after | ||||
| removing conflicting values from it, the attribute is removed | ||||
| from the Job object (so that the normal default behavior at job | ||||
| processing time will take place for that attribute). | ||||
| If there were no attributes or values flagged as unsupported, or the | In order to bridge between the directory service and the IPP Printer | |||
| value of 'ipp-attribute-fidelity" was 'false', the Printer object is | object, one of the RECOMMENDED directory entry attributes is the Printer | |||
| able to accept the create request and create a new Job object. If the | object's "printer-uri-supported" attribute. The IPP client queries the | |||
| "ipp-attribute-fidelity" attribute is set to 'true', the Job Template | "printer-uri-supported" attribute in the directory entry and then | |||
| attributes that populate the new Job object are necessarily all the | addresses the IPP Printer object using one of its URIs. The "uri- | |||
| Job Template attributes supplied in the create request. If the "ipp- | security-supported" attribute identifies the protocol (if any) used to | |||
| attribute-fidelity" attribute is set to 'false', the Job Template | secure a channel. | |||
| attributes that populate the new Job object are all the client | ||||
| supplied Job Template attributes that are supported or that have value | ||||
| substitution. Thus, some of the requested Job Template attributes may | ||||
| not appear in the Job object because the Printer object did not | ||||
| support those attributes. The attributes that populate the Job object | ||||
| are persistently stored with the Job object for that Job. A Get-Job- | ||||
| Attributes operation on that Job object will return only those | ||||
| attributes that are persistently stored with the Job object. | ||||
| Note: All Job Template attributes that are persistently stored with | The following attributes define the generic schema for directory entries | |||
| the Job object are intended to be "override values"; that is, they | of type PRINTER: | |||
| that take precedence over whatever other embedded instructions might | ||||
| be in the document data itself. However, it is not possible for all | ||||
| Printer objects to realize the semantics of "override". End users may | ||||
| query the Printer's "pdl-override-supported" attribute to determine if | ||||
| the Printer either attempts or does not attempt to override document | ||||
| data instructions with IPP attributes. | ||||
| There are some cases, where a Printer supports a Job Template | printer-uri-supported RECOMMENDED Section 4.4.1 | |||
| attribute and has an associated default value set for that attribute. | uri-security-supported RECOMMENDED Section 4.4.2 | |||
| In the case where a client does not supply the corresponding | printer-name RECOMMENDED Section 4.4.3 | |||
| attribute, the Printer does not use its default values to populate Job | printer-location RECOMMENDED Section 4.4.4 | |||
| attributes when creating the new Job object; only Job Template | printer-info OPTIONAL Section 4.4.5 | |||
| attributes actually in the create request are used to populate the Job | printer-more-info OPTIONAL Section 4.4.6 | |||
| printer-make-and-model RECOMMENDED Section 4.4.8 | ||||
| charset-supported OPTIONAL Section 4.4.15 | ||||
| generated-natural-language- | ||||
| supported OPTIONAL Section 4.4.17 | ||||
| document-format-supported RECOMMENDED Section 4.4.19 | ||||
| color-supported RECOMMENDED Section 4.4.23 | ||||
| finishings-supported OPTIONAL Section 4.2.6 | ||||
| number-up-supported OPTIONAL Section 4.2.7 | ||||
| sides-supported RECOMMENDED Section 4.2.8 | ||||
| media-supported RECOMMENDED Section 4.2.11 | ||||
| printer-resolution-supported OPTIONAL Section 4.2.12 | ||||
| print-quality-supported OPTIONAL Section 4.2.13 | ||||
| Expires December 30, 1998 | 18. APPENDIX F: Change History for the IPP Model and Semantics document | |||
| object. The Printer's default values are only used later at Job | ||||
| processing time if no other IPP attribute or instruction embedded in | ||||
| the document data is present. | ||||
| Note: If the default values associated with Job Template attributes | The following substantive changes and major clarifications have been | |||
| that the client did not supply were to be used to populate the Job | made to this document from the June 30, 1998 version based on the | |||
| object, then these values would become "override values" rather than | interoperability testing that took place September 23-25 1998 and | |||
| defaults. If the Printer supports the 'attempted' value of the "pdl- | subsequent mailing list and meeting discussions. They are listed in the | |||
| override-supported" attribute, then these override values could | order of occurrence in the document. These changes are the ones that | |||
| replace values specified within the document data. This is not the | might affect implementations. Clarifications that are unlikely to | |||
| intent of the default value mechanism. A default value for an | affect implementations are not listed. The issue numbers refer to the | |||
| attribute is used only if the create request did not specify that | IPP Issues List which is available in the following directory: | |||
| attribute (or it was ignored when allowed by "ipp-attribute-fidelity" | ||||
| being 'false') and no value was provided within the content of the | ||||
| document data. | ||||
| If the client does not supply a value for some Job Template attribute, | ftp://ftp.pwg.org/pub/pwg/ipp/approved-clarifications/ | |||
| and the Printer does not support that attribute, as far as IPP is | ||||
| concerned, the result of processing that Job (with respect to the | ||||
| missing attribute) is undefined. | ||||
| 16.4.8 Return one of the success status codes | Isaacson, Powell Expires May 16, 1999 | |||
| Once the Job object has been created, the Printer object accepts the | Section Description | |||
| request and returns to the client: | ||||
| (1) the 'successful-ok' status code, if there are no unsupported or | global Replaced TLS references with SSL3 references as agreed | |||
| conflicting Job Template attributes or values. | with our Area Director on 11/12/1998. | |||
| (2) the 'successful-ok-conflicting-attributes' status code, if | ||||
| there are any conflicting Job Template attribute or values. | ||||
| (3) the 'successful-ok-ignored-or-substituted-attributes' status | ||||
| code, if there are only unsupported Job Template attributes or | ||||
| values. | ||||
| Note: Unsupported Operation attributes or values that are returned do | global Removed the indications that some of these IPP documents | |||
| not affect the status returned in this step. If the unsupported | are informational, since the intent is now to publish | |||
| Operation attribute was a serious error, the above already rejected | all IPP/1.0 documents as informational as agreed with | |||
| the request in a previous step. If control gets to this step with | our Area Director on 11/12/1998. | |||
| unsupported Operation attributes being returned, they are not serious | ||||
| errors. | ||||
| The Printer object also returns Job status attributes that indicate | 3.1.2, Clarify that the IPP object SHOULD NOT validate the | |||
| the initial state of the Job ('pending', 'pending-held', 'processing', | 16.3.3 range of the request-id being 1 to 2**31-1, but accepts | |||
| etc.), etc. See Print-Job Response, section 3.2.1.2. | [now IPP- and returns any value. Clients MUST still keep in the | |||
| IIG] range 1 to 2**31 though. If the request is terminated | ||||
| before the complete "request-id" is received, the IPP | ||||
| object rejects the request and returns a response with a | ||||
| "request-id" of 0 (Issue 1.36). | ||||
| Expires December 30, 1998 | 3.1.4.1, Clarified that when a client submits a request in a | |||
| 16.4.9 Accept appended Document Content | 14.1.4.14 charset that is not supported, the IPP object SHOULD | |||
| return any 'text' or 'name' attributes in the 'utf-8' | ||||
| charset, if it returns any, since clients and IPP | ||||
| objects MUST support 'utf-8'. (Issue 1.19) | ||||
| The Printer object accepts the appended Document Content data and | 3.1.4.1 Clarified Section 3.1.4.1 Request Operation Attributes | |||
| either starts it printing, or spools it for later processing. | that a client MAY use the attribute level natural | |||
| language override (text/nameWithLanguage) redundantly in | ||||
| a request. (Issue 1.46) | ||||
| 16.4.10 Scheduling and Starting to Process the Job | 3.1.4.2 Clarified Section 3.1.4.2 Response Operation Attributes | |||
| that an IPP object MAY use the attribute level natural | ||||
| language override (text/nameWithLanguage) redundantly in | ||||
| a response. (Issue 1.46) | ||||
| The Printer object uses its own configuration and implementation | 3.1.6 Clarified section 3.1.6: If the Printer object supports | |||
| specific algorithms for scheduling the Job in the correct processing | the "status-message" operation attribute, it NEED NOT | |||
| order. Once the Printer object begins processing the Job, the Printer | return a status message for the following error status | |||
| changes the Job's state to 'processing'. If the Printer object | codes: 'client-error-bad-request', 'client-error- | |||
| supports PDL override (the "pdl-override-supported" attribute set to | charset-not-supported', 'server-error-internal-error', | |||
| 'attempted'), the implementation does its best to see that IPP | 'server-error-operation-not-supported', and 'server- | |||
| attributes take precedence over embedded instructions in the document | error-version-not-supported'. | |||
| data. | ||||
| 16.4.11 Completing the Job | 3.2.1.1 Clarified that if a client is not supplying any Job | |||
| Template attributes in a request, the client SHOULD omit | ||||
| Group 2 rather than sending an empty group. However, a | ||||
| Printer object MUST be able to accept an empty group. | ||||
| This makes [IPP-MOD] agree with [IPP-PRO]. (Issue 1.16) | ||||
| The Printer object continues to process the Job until it can move the | 3.2.1.2, Clarified that if an IPP object is not returning any | |||
| Job into the 'completed' state. If an Cancel-Job operation is | 3.2.5.2, Unsupported Attributes in a response, the IPP object | |||
| received, the implementation eventually moves the Job into the | 3.2.6.2, SHOULD omit Group 2 rather than sending an empty group. | |||
| 'canceled' state. If the system encounters errors during processing | 3.3.1.2, However, a client MUST be able to accept an empty group. | |||
| that do not allow it to progress the Job into a completed state, the | 3.3.3.2, This makes [IPP-MOD] agree with [IPP-PRO]. (Issue 1.17) | |||
| implementation halts all processing, cleans up any resources, and | 3.3.4.2, | |||
| moves the Job into the 'aborted' state. | ||||
| 16.4.12 Destroying the Job after completion | 3.2.1.2, Clarified that an IPP object MUST treat an unsupported | |||
| 14.1.2.2, attribute syntax supplied in a request in the same way | ||||
| 14.1.4.12 as an unsupported value. The IPP object MUST return the | ||||
| attribute, the attribute syntax, and the value in the | ||||
| Unsupported Attributes group. (Issue 1.26) | ||||
| Once the Job moves to the 'completed', 'aborted', or 'canceled' state, | 3.2.5.2, Clarified for Get-Printer-Attributes, Get-Jobs, and Get- | |||
| it is an implementation decision as to when to destroy the Job object | 3.2.6.2, Job-Attributes that an IPP object MUST return | |||
| and release all associated resources. Once the Job has been | 3.3.4.2, 'successful-ok-ignored-or-substituted-attributes' (0x1), | |||
| destroyed, the Printer would return either the "client-error-not- | ||||
| found" or "client-error-gone" status codes for operations directed at | ||||
| that Job. | ||||
| Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id" | Isaacson, Powell Expires May 16, 1999 | |||
| value for a sufficiently long time after a job has been destroyed, so | 14.1.2.1, rather than 'successful-ok' (0x0), when a client | |||
| that stale references kept by clients are less likely to access the | 14.1.2.2, supplies unsupported attributes as values of the | |||
| wrong (newer) job. | 14.1.4.12 'requested-attributes' operation attribute. (Issue | |||
| 1.24) | ||||
| Also clarified that the response NEED NOT contain the | ||||
| "requested-attributes" operation attribute with any | ||||
| supplied values (attribute keywords) that were requested | ||||
| by the client but are not supported by the IPP object. | ||||
| (Issue 1.18) | ||||
| 16.4.13 Interaction with "ipp-attribute-fidelity" | 3.2.6.2 Deleted the job-level natural language override (NLO) | |||
| 4.1.1.2 from Section 3.2.6.2 Get-Jobs Response so that all | ||||
| 4.3.24 operation responses are the same with respect to NLO. | ||||
| (Issue 1.47) | ||||
| Some Printer object implementations may support "ipp-attribute- | 3.3.1 Clarified that an IPP Printer that supports the Create- | |||
| fidelity" set to 'true' and "pdl-override-supported" set to | Job operation MUST handle the situation when a client | |||
| does not supply Send-Document or Send-URI operations | ||||
| within a one- to four-minute time period. Also | ||||
| clarified that a client MUST send documents in a multi- | ||||
| document job without undue or unbounded delay. (Issue | ||||
| 1.28) | ||||
| Expires December 30, 1998 | 3.3.3 Clarified that the IPP object MUST reject a Cancel-Job | |||
| 'attempted' and yet still not be able to realize exactly what the | request if the job is in 'completed', 'canceled', or | |||
| client specifies in the create request. This is due to legacy | 'aborted' job states. (Issue 1.12) | |||
| decisions and assumptions that have been made about the role of job | ||||
| instructions embedded within the document data and external job | ||||
| instructions that accompany the document data and how to handle | ||||
| conflicts between such instructions. The inability to be 100% precise | ||||
| about how a given implementation will behave is also compounded by the | ||||
| fact that the two special attributes, "ipp-attribute-fidelity" and | ||||
| "pdl-override-supported", apply to the whole job rather than specific | ||||
| values for each attribute. For example, some implementations may be | ||||
| able to override almost all Job Template attributes except for | ||||
| "number-up". | ||||
| 16.5 Using Job Template Attributes During Document Processing. | 4.1.2.3 Added this new sub-section: it specifies that | |||
| nameWithoutLanguage plus the implicit natural language | ||||
| matches nameWithLanguage, if the values and natural | ||||
| languages are the same. Also added that keyword never | ||||
| matches nameWithLanguage or nameWithoutLanguage. | ||||
| Clarified that if both have countries, that the | ||||
| countries SHOULD match as well. If either do not, then | ||||
| the country field SHOULD be ignored. (Issues 1.33 and | ||||
| 1.34) | ||||
| The Printer object uses some of the Job object's Job Template | 4.1.5 Clarified regarding the case-insensitivity of URLs to | |||
| attributes during the processing of the document data associated with | refer only to the RFCs that define them. (Issue 1.10) | |||
| that job. These include, but are not limited to, "orientation", | ||||
| "number-up", "sides", "media", and "copies". The processing of each | ||||
| document in a Job Object MUST follow the steps below. These steps are | ||||
| intended only to identify when and how attributes are to be used in | ||||
| processing document data and any alternative steps that accomplishes | ||||
| the same effect can be used to implement this specification. | ||||
| 1. Using the client supplied "document-format" attribute or some | 4.1.11 Clarified that 'boolean' is not a full-sized integer. | |||
| form of document format detection algorithm (if the value of | (Issue 1.38) | |||
| "document-format" is not specific enough), determine whether or | ||||
| not the document data has already been formatted for printing. If | ||||
| the document data has been formatted, then go to step 2. | ||||
| Otherwise, the document data MUST be formatted. The formatting | ||||
| detection algorithm is implementation defined and is not | ||||
| specified by this specification. The formatting of the document | ||||
| data uses the "orientation-requested" attribute to determine how | ||||
| the formatted print data should be placed on a print-stream page, | ||||
| see section 4.2.10 for the details. | ||||
| 2. The document data is in the form of a print-stream in a known | 4.1.15 Clarified that 'resolution' is not three full-sized | |||
| media type. The "page-ranges" attribute is used to select, as | integers. (Issue 1.20) | |||
| specified in section 4.2.7, a sub-sequence of the pages in the | ||||
| print-stream that are to be processed and images. | ||||
| 3. The input to this step is a sequence of print-stream pages. This | 4.2.* Clarified that standard values are keywords or enums, | |||
| step is controlled by the "number-up" attribute. If the value of | not names. (Issue 1.49). | |||
| "number-up" is N, then during the processing of the print-stream | ||||
| pages, each N print-stream pages are positioned, as specified in | ||||
| section 4.2.9, to create a single impression. If a given document | ||||
| does not have N more print-stream pages, then the completion of | ||||
| Expires December 30, 1998 | 4.2.4 Added the 'single-document-new-sheet' value to Section | |||
| the impression is controlled by the "multiple-document-handling" | 4.2.4 multiple-document-handling. (Issue 1.54) | |||
| attribute as described in section 4.2.4; when the value of this | ||||
| attribute is 'single-document', the print-stream pages of | ||||
| document data from subsequent documents is used to complete the | ||||
| impression. | ||||
| The size(scaling), position(translation) and rotation of the | 4.4.18, Clarified that the "document-format-default" and | |||
| print-stream pages on the impression is implementation defined. | 4.4.19 "document-format-supported" Printer Description | |||
| Note that during this process the print-stream pages may be | attributes are REQUIRED to agree with the table. (Issue | |||
| rendered to a form suitable for placing on the impression; this | 1.4) | |||
| rendering is controlled by the values of the "printer-resolution" | ||||
| and "print-quality" attributes as described in sections 4.2.12 | ||||
| and 4.2.13. In the case N=1, the impression is nearly the same as | ||||
| the print-stream page; the differences would only be in the size, | ||||
| position and rotation of the print-stream page and/or any | ||||
| decoration, such as a frame to the page, that is added by the | ||||
| implementation. | ||||
| 4. The collection of impressions is placed, in sequence, onto sides | 4.4.21 Changed "queued-job-count" from OPTIONAL to RECOMMENDED. | |||
| of the media sheets. This placement is controlled by the "sides" | (Issue 1.14) | |||
| attribute and the orientation of the print-stream page, as | ||||
| described in section 4.2.8. The orientation of the print-stream | ||||
| pages affects the orientation of the impression; for example, if | ||||
| "number-up" equals 2, then, typically, two portrait print-stream | ||||
| pages become one landscape impression. Note that the placement of | ||||
| impressions onto media sheets is also controlled by the | ||||
| "multiple-document-handling" attribute as described in section | ||||
| 4.2.4. | ||||
| 5. The "copies" and "multiple-document-handling" attributes are | 4.4.28 Clarified that the implementation supplied value for the | |||
| used to determine how many copies of each media instance are | "multiple-operation-time-out" attribute SHOULD be | |||
| created and in what order. See sections 4.2.5 and 4.2.4 for the | between 30 and 240 seconds, though the implementation | |||
| details. | MAY allow the administrator to set values, and MAY allow | |||
| values outside this range. (Issue 1.28) | ||||
| 6. When the correct number of copies are created, the media | Isaacson, Powell Expires May 16, 1999 | |||
| instances are finished according to the values of the | ||||
| "finishings" attribute as described in 4.2.6. Note that sometimes | ||||
| finishing operations may require manual intervention to perform | ||||
| the finishing operations on the copies, especially uncollated | ||||
| copies. This specification allows any or all of the processing | ||||
| steps to be performed automatically or manually at the discretion | ||||
| of the Printer object. | ||||
| 17. APPENDIX E: Generic Directory Schema | 5.1, Clarified Client Conformance that if a client supports | |||
| 5.2.5 an attribute of 'text' attribute syntax, that it MUST | ||||
| support both the textWithoutLanguage and the | ||||
| textWithLanguage forms. Same for 'name' attribute | ||||
| syntax. Same for an IPP object (Issue 1.48) | ||||
| This section defines a generic schema for an entry in a directory | 6.5, Added new section to allow Attribute Groups to be | |||
| service. A directory service is a means by which service users can | 12.8 registered as extensions for being passed in operation | |||
| requests and responses. (Issue 1.25) | ||||
| Expires December 30, 1998 | 7. Updated the table of text and name attributes to agree | |||
| locate service providers. In IPP environments, this means that IPP | with Section 4.2. | |||
| Printers can be registered (either automatically or with the help of | ||||
| an administrator) as entries of type printer in the directory using an | ||||
| implementation specific mechanism such as entry attributes, entry type | ||||
| fields, specific branches, etc. IPP clients can search or browse for | ||||
| entries of type printer. Clients use the directory service to find | ||||
| entries based on naming, organizational contexts, or filtered searches | ||||
| on attribute values of entries. For example, a client can find all | ||||
| printers in the "Local Department" context. Authentication and | ||||
| authorization are also often part of a directory service so that an | ||||
| administrator can place limits on end users so that they are only | ||||
| allowed to find entries to which they have certain access rights. IPP | ||||
| itself does not require any specific directory service protocol or | ||||
| provider. | ||||
| Note: Some directory implementations allow for the notion of | 8.5 Added a new section RECOMMENDING that the Get-Jobs | |||
| "aliasing". That is, one directory entry object can appear as | SHOULD return non-IPP jobs whether or not assigning them | |||
| multiple directory entry object with different names for each object. | a job-id and job-uri. Also RECOMMENDED generating, if | |||
| In each case, each alias refers to the same directory entry object | possible, job-id and job-uri and supporting other IPP | |||
| which refers to a single IPP Printer object. | operations on foreign jobs as an implementer option. | |||
| (Issue 1.32) | ||||
| The generic schema is a subset of IPP Printer Job Template and Printer | 9. Updated document references. | |||
| Description attributes (sections 4.2 and 4.4). These attributes are | ||||
| identified as either REQUIRED or OPTIONAL for the directory entry | ||||
| itself. This conformance labeling is NOT the same conformance | ||||
| labeling applied to the attributes of IPP Printers objects. REQUIRED | ||||
| attributes MUST be associated with each directory entry. OPTIONAL | ||||
| attributes SHOULD be associated with the directory entry (if known or | ||||
| supported). In addition, all directory entry attributes SHOULD | ||||
| reflect the current attribute values for the corresponding Printer | ||||
| object. | ||||
| In order to bridge between the directory service and the IPP Printer | 14.1.4.14 Clarified 'client-error-charset-not-supported' that | |||
| object, one of the REQUIRED directory entry attributes is the Printer | 'utf-8' must be used for any 'text' or 'name' attributes | |||
| object's "printer-uri-supported" attribute. The IPP client queries | returned in the error response (Issue 1.19). | |||
| the "printer-uri-supported" attribute in the directory entry and then | ||||
| addresses the IPP Printer object using one of its URIs. The "uri- | ||||
| security-supported" attribute identifies the protocol (if any) used to | ||||
| secure a channel. | ||||
| The following attributes define the generic schema for directory | 14.1.5.9 Added a new error code 'server-error-job-canceled' | |||
| entries of type PRINTER: | (0x0508) to be returned if a job is canceled by another | |||
| client or aborted by the IPP object while the first | ||||
| client is still sending the document data. (Issue 1.29) | ||||
| printer-uri-supported REQUIRED Section 4.4.1 | 16.3, Moved these sections recommending operation processing | |||
| uri-security-supported REQUIRED Section 4.4.2 | 16.4 steps to the new Implementer's Guide (informational). | |||
| printer-name REQUIRED Section 4.4.3 | There indicated that all of the error checks are not | |||
| printer-location OPTIONAL Section 4.4.4 | required, so an IPP object MAY be forgiving and accept | |||
| printer-info OPTIONAL Section 4.4.5 | non-conforming requests. However, a conforming client | |||
| MUST supply requests that would pass all of the error | ||||
| checks indicated. (Issue 1.21) | ||||
| Expires December 30, 1998 | 17 Changed directory schema attributes from REQUIRED to | |||
| printer-more-info OPTIONAL Section 4.4.6 | RECOMMENDED. Changed some of the OPTIONAL to | |||
| printer-make-and-model OPTIONAL Section 4.4.8 | RECOMMENDED to agree with the SLP template. Changed the | |||
| charset-supported REQUIRED Section 4.4.15| | "charset-supported" and "natural-language-supported" | |||
| generated-natural-language- | from REQUIRED to OPTIONAL. Recommended that the names | |||
| supported REQUIRED Section 4.4.17 | be the same in a directory entry as the IPP attribute | |||
| document-format-supported OPTIONAL Section 4.4.19 | names. (Issue 1.53) | |||
| color-supported OPTIONAL Section 4.4.23 | ||||
| finishings-supported OPTIONAL Section 4.2.6 | ||||
| number-up-supported OPTIONAL Section 4.2.7 | ||||
| sides-supported OPTIONAL Section 4.2.8 | ||||
| media-supported OPTIONAL Section 4.2.11 | ||||
| printer-resolution-supported OPTIONAL Section 4.2.12 | ||||
| print-quality-supported OPTIONAL Section 4.2.13 | ||||
| Expires December 30, 1998 | Isaacson, Powell Expires May 16, 1999 | |||
| End of changes. 937 change blocks. | ||||
| 4987 lines changed or deleted | 4139 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||