diff options
Diffstat (limited to 'doc/rfc/rfc2566.txt')
| -rw-r--r-- | doc/rfc/rfc2566.txt | 9691 | 
1 files changed, 9691 insertions, 0 deletions
| diff --git a/doc/rfc/rfc2566.txt b/doc/rfc/rfc2566.txt new file mode 100644 index 0000000..f373d6a --- /dev/null +++ b/doc/rfc/rfc2566.txt @@ -0,0 +1,9691 @@ + + + + + + +Network Working Group                                           R. deBry +Request for Comments: 2566                     Utah Valley State College +Category: Experimental                                       T. Hastings +                                                       Xerox Corporation +                                                              R. Herriot +                                                       Xerox Corporation +                                                             S. Isaacson +                                                            Novell, Inc. +                                                               P. Powell +                                                     Astart Technologies +                                                              April 1999 + + +          Internet Printing Protocol/1.0: Model and Semantics + +Status of this Memo + +   This memo defines an Experimental Protocol for the Internet +   community.  It does not specify an Internet standard of any kind. +   Discussion and suggestions for improvement are requested. +   Distribution of this memo is unlimited. + +Copyright Notice + +   Copyright (C) The Internet Society (1999).  All Rights Reserved. + +IESG Note + +   This document defines an Experimental protocol for the Internet +   community.  The IESG expects that a revised version of this protocol +   will be published as Proposed Standard protocol.  The Proposed +   Standard, when published, is expected to change from the protocol +   defined in this memo.  In particular, it is expected that the +   standards-track version of the protocol will incorporate strong +   authentication and privacy features, and that an "ipp:" URL type will +   be defined which supports those security measures.  Other changes to +   the protocol are also possible.  Implementors are warned that future +   versions of this protocol may not interoperate with the version of +   IPP defined in this document, or if they do interoperate, that some +   protocol features may not be available. + +   The IESG encourages experimentation with this protocol, especially in +   combination with Transport Layer Security (TLS) [RFC 2246], to help +   determine how TLS may effectively be used as a security layer for +   IPP. + + + + + + +deBry, et al.                 Experimental                      [Page 1] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +Abstract + +   This document is one of a set of documents, which together describe +   all aspects of a new Internet Printing Protocol (IPP).  IPP is an +   application level protocol that can be used for distributed printing +   using Internet tools and technologies.  This document describes a +   simplified model consisting of abstract objects, their attributes, +   and their operations that is independent of encoding and transport. +   The model consists of a Printer and a Job object.  A Job optionally +   supports 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. + +   The full set of IPP documents includes: + +     Design Goals for an Internet Printing Protocol [RFC2567] +     Rationale for the Structure and Model and Protocol for the Internet +        Printing Protocol [RFC2568] +     Internet Printing Protocol/1.0: Model and Semantics (this document) +     Internet Printing Protocol/1.0: Encoding and Transport [RFC2565] +     Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig] +     Mapping between LPD and IPP Protocols [RFC2569] + +   The "Design Goals for an Internet Printing Protocol" document takes a +   broad look at distributed printing functionality, and it enumerates +   real-life 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.  It 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. + +   The "Rationale for the Structure and Model and Protocol for the +   Internet Printing Protocol" 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. + +   The "Internet Printing Protocol/1.0: Encoding and Transport" document +   is a formal mapping of the abstract operations and attributes defined +   in the model document onto HTTP/1.1.  It defines the encoding rules +   for a new Internet media type called "application/ipp". + +   The "Internet Printing Protocol/1.0: Implementer's Guide" document +   gives insight and advice to implementers of IPP clients and IPP +   objects.  It is intended to help them understand IPP/1.0 and some of + + + +deBry, et al.                 Experimental                      [Page 2] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   the 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) implementations. + +Table of Contents + +1. Introduction                                                        8 + 1.1   Simplified Printing Model                                       9 +2. IPP Objects                                                        11 + 2.1   Printer Object                                                 12 + 2.2   Job Object                                                     14 + 2.3   Object Relationships                                           14 + 2.4   Object Identity                                                15 +3. IPP Operations                                                     18 + 3.1   Common Semantics                                               19 +  3.1.1   Required Parameters                                         19 +  3.1.2   Operation IDs and Request IDs                               20 +  3.1.3   Attributes                                                  20 +  3.1.4   Character Set and Natural Language Operation Attributes     22 +   3.1.4.1  Request Operation Attributes                              22 +   3.1.4.2  Response Operation Attributes                             26 +  3.1.5   Operation Targets                                           28 +  3.1.6   Operation Status Codes and Messages                         29 +  3.1.7   Versions                                                    30 +  3.1.8   Job Creation Operations                                     32 + 3.2   Printer Operations                                             34 +  3.2.1   Print-Job Operation                                         34 +   3.2.1.1  Print-Job Request                                         34 +   3.2.1.2  Print-Job Response                                        38 +  3.2.2   Print-URI Operation                                         41 +  3.2.3   Validate-Job Operation                                      42 +  3.2.4   Create-Job Operation                                        42 +  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 + + + +deBry, et al.                 Experimental                      [Page 3] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +  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                                             59 +  4.1.1   'text'                                                      60 +   4.1.1.1  'textWithoutLanguage'                                     61 +   4.1.1.2  'textWithLanguage'                                        61 +  4.1.2   'name'                                                      62 +   4.1.2.1  'nameWithoutLanguage'                                     62 +   4.1.2.2  'nameWithLanguage'                                        63 +   4.1.2.3  Matching 'name' attribute values                          63 +  4.1.3   'keyword'                                                   64 +  4.1.4   'enum'                                                      65 +  4.1.5   'uri'                                                       65 +  4.1.6   'uriScheme'                                                 65 +  4.1.7   'charset'                                                   66 +  4.1.8   'naturalLanguage'                                           67 +  4.1.9   'mimeMediaType'                                             67 +  4.1.10  'octetString'                                               69 +  4.1.11  'boolean'                                                   69 +  4.1.12  'integer'                                                   69 +  4.1.13  'rangeOfInteger'                                            69 +  4.1.14  'dateTime'                                                  69 +  4.1.15  'resolution'                                                69 +  4.1.16  '1setOf  X'                                                 70 + 4.2   Job Template Attributes                                        70 +  4.2.1   job-priority (integer(1:100))                               74 +  4.2.2   job-hold-until (type3 keyword | name (MAX))                 75 +  4.2.3   job-sheets (type3 keyword | name(MAX))                      75 +  4.2.4   multiple-document-handling (type2 keyword)                  76 +  4.2.5   copies (integer(1:MAX))                                     77 +  4.2.6   finishings (1setOf type2 enum)                              78 +  4.2.7   page-ranges (1setOf rangeOfInteger (1:MAX))                 79 +  4.2.8   sides (type2 keyword)                                       80 +  4.2.9   number-up (integer(1:MAX))                                  80 +  4.2.10  orientation-requested (type2 enum)                          81 +  4.2.11  media (type3 keyword | name(MAX))                           82 +  4.2.12  printer-resolution (resolution)                             83 +  4.2.13  print-quality (type2 enum)                                  83 + 4.3   Job Description Attributes                                     84 +  4.3.1   job-uri (uri)                                               85 +  4.3.2   job-id (integer(1:MAX))                                     85 +  4.3.3   job-printer-uri (uri)                                       86 +  4.3.4   job-more-info (uri)                                         86 + + + +deBry, et al.                 Experimental                      [Page 4] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +  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))                        93 +  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))                          94 +  4.3.15  number-of-intervening-jobs (integer(0:MAX))                 94 +  4.3.16  job-message-from-operator (text(127))                       94 +  4.3.17  job-k-octets (integer(0:MAX))                               94 +  4.3.18  job-impressions (integer(0:MAX))                            95 +  4.3.19  job-media-sheets (integer(0:MAX))                           95 +  4.3.20  job-k-octets-processed (integer(0:MAX))                     96 +  4.3.21  job-impressions-completed (integer(0:MAX))                  96 +  4.3.22  job-media-sheets-completed (integer(0:MAX))                 96 +  4.3.23  attributes-charset (charset)                                97 +  4.3.24  attributes-natural-language (naturalLanguage)               97 + 4.4   Printer Description Attributes                                 97 +  4.4.1   printer-uri-supported (1setOf uri)                          99 +  4.4.2   uri-security-supported (1setOf type2 keyword)              100 +  4.4.3   printer-name (name(127))                                   101 +  4.4.4   printer-location (text(127))                               101 +  4.4.5   printer-info (text(127))                                   101 +  4.4.6   printer-more-info (uri)                                    101 +  4.4.7   printer-driver-installer (uri)                             102 +  4.4.8   printer-make-and-model (text(127))                         102 +  4.4.9   printer-more-info-manufacturer (uri)                       102 +  4.4.10  printer-state (type1 enum)                                 102 +  4.4.11  printer-state-reasons (1setOf type2 keyword)               103 +  4.4.12  printer-state-message (text(MAX))                          106 +  4.4.13  operations-supported (1setOf type2 enum)                   106 +  4.4.14  charset-configured (charset)                               107 +  4.4.15  charset-supported (1setOf charset)                         107 +  4.4.16  natural-language-configured (naturalLanguage)              107 +  4.4.17  generated-natural-language-supported(1setOf naturalLanguage108 +  4.4.18  document-format-default (mimeMediaType)                    108 +  4.4.19  document-format-supported (1setOf mimeMediaType)           108 +  4.4.20  printer-is-accepting-jobs (boolean)                        109 +  4.4.21  queued-job-count (integer(0:MAX))                          109 +  4.4.22  printer-message-from-operator (text(127))                  109 +  4.4.23  color-supported (boolean)                                  109 +  4.4.24  reference-uri-schemes-supported (1setOf uriScheme)         109 +  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 + + + +deBry, et al.                 Experimental                      [Page 5] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +  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                               112 + 5.2   IPP Object Conformance Requirements                           113 +  5.2.1   Objects                                                    113 +  5.2.2   Operations                                                 113 +  5.2.3   IPP Object Attributes                                      114 +  5.2.4   Extensions                                                 114 +  5.2.5   Attribute Syntaxes                                         115 + 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                                       119 + 6.3   Attribute Syntax Extensibility                                119 + 6.4   Operation Extensibility                                       120 + 6.5   Attribute Groups                                              120 + 6.6   Status Code Extensibility                                     120 + 6.7   Registration of MIME types/sub-types for document-formats     121 + 6.8   Registration of charsets for use in 'charset' attribute values121 +7. Internationalization Considerations                               121 +8. Security Considerations                                           125 + 8.1   Security Scenarios                                            126 +  8.1.1   Client and Server in the Same Security Domain              126 +  8.1.2   Client and Server in Different Security Domains            126 +  8.1.3   Print by Reference                                         127 + 8.2   URIs for SSL3 and non-SSL3 Access                             127 + 8.3   The "requesting-user-name" (name(MAX)) Operation Attribute    127 + 8.4   Restricted Queries                                            129 + 8.5   Queries on jobs submitted using non-IPP protocols             129 + 8.6   IPP Security Application Profile for SSL3                     130 +9. References                                                        131 +10. Authors' Addresses                                               134 +11. Formats for IPP Registration Proposals                           136 + 11.1  Type2 keyword attribute values registration                   136 + 11.2  Type3 keyword attribute values registration                   137 + 11.3  Type2 enum attribute values registration                      137 + 11.4  Type3 enum attribute values registration                      137 + 11.5  Attribute registration                                        138 + 11.6  Attribute Syntax registration                                 138 + 11.7  Operation registration                                        139 + 11.8  Attribute Group registration                                  139 + 11.9  Status code registration                                      139 +12.APPENDIX A: Terminology                                           141 + + + +deBry, et al.                 Experimental                      [Page 6] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + + 12.1  Conformance Terminology                                       141 +  12.1.1  NEED NOT                                                   141 + 12.2  Model Terminology                                             141 +  12.2.1  Keyword                                                    141 +  12.2.2  Attributes                                                 141 +   12.2.2.1 Attribute Name                                           141 +   12.2.2.2 Attribute Group Name                                     142 +   12.2.2.3 Attribute Value                                          142 +   12.2.2.4 Attribute Syntax                                         142 +  12.2.3  Supports                                                   142 +  12.2.4  print-stream page                                          144 +  12.2.5  impression                                                 144 +13.APPENDIX B:  Status Codes and Suggested Status Code Messages      145 + 13.1  Status Codes                                                  146 +  13.1.1  Informational                                              146 +  13.1.2  Successful Status Codes                                    146 +   13.1.2.1 successful-ok (0x0000)                                   146 +   13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) 146 +   13.1.2.3 successful-ok-conflicting-attributes (0x0002)            147 +  13.1.3  Redirection Status Codes                                   147 +  13.1.4  Client Error Status Codes                                  147 +   13.1.4.1 client-error-bad-request (0x0400)                        147 +   13.1.4.2 client-error-forbidden (0x0401)                          147 +   13.1.4.3 client-error-not-authenticated (0x0402)                  148 +   13.1.4.4 client-error-not-authorized (0x0403)                     148 +   13.1.4.5 client-error-not-possible (0x0404)                       148 +   13.1.4.6 client-error-timeout (0x0405)                            148 +   13.1.4.7 client-error-not-found (0x0406)                          149 +   13.1.4.8 client-error-gone (0x0407)                               149 +   13.1.4.9 client-error-request-entity-too-large (0x0408)           149 +   13.1.4.10client-error-request-value-too-long (0x0409)             150 +   13.1.4.11client-error-document-format-not-supported (0x040A)      150 +   13.1.4.12client-error-attributes-or-values-not-supported (0x040B) 150 +   13.1.4.13client-error-uri-scheme-not-supported (0x040C)           151 +   13.1.4.14client-error-charset-not-supported (0x040D)              151 +   13.1.4.15client-error-conflicting-attributes (0x040E)             151 +  13.1.5  Server Error Status Codes                                  151 +   13.1.5.1 server-error-internal-error (0x0500)                     151 +   13.1.5.2 server-error-operation-not-supported (0x0501)            152 +   13.1.5.3 server-error-service-unavailable (0x0502)                152 +   13.1.5.4 server-error-version-not-supported (0x0503)              152 +   13.1.5.5 server-error-device-error (0x0504)                       152 +   13.1.5.6 server-error-temporary-error (0x0505)                    153 +   13.1.5.7 server-error-not-accepting-jobs (0x0506)                 153 +   13.1.5.8 server-error-busy (0x0507)                               153 +   13.1.5.9 server-error-job-canceled (0x0508)                       153 + 13.2  Status Codes for IPP Operations                               153 +14.APPENDIX C:  "media" keyword values                               155 + + + +deBry, et al.                 Experimental                      [Page 7] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +15.APPENDIX D: Processing IPP Attributes                             160 + 15.1  Fidelity                                                      160 + 15.2  Page Description Language (PDL) Override                      161 + 15.3  Using Job Template Attributes During Document Processing.     163 +16.APPENDIX E: Generic Directory Schema                              166 +17.APPENDIX F: Change History for the Model and Semantics document   168 +18.FULL COPYRIGHT STATEMENT                                          173 + +1. Introduction + +   The Internet Printing Protocol (IPP) is an application level protocol +   that can be used for distributed printing using Internet tools and +   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 fully define IPP.  The full set of IPP documents includes: + +     Design Goals for an Internet Printing Protocol [RFC2567] +     Rationale for the Structure and Model and Protocol for the Internet +        Printing Protocol [RFC2568] +     Internet Printing Protocol/1.0: Model and Semantics (this document) +     Internet Printing Protocol/1.0: Encoding and Transport [RFC2565] +     Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig] +     Mapping between LPD and IPP Protocols [RFC2569] + +   Anyone reading these documents for the first time is strongly +   encouraged to read the IPP documents in the above order. + +   This document is laid out as follows: + +     - The rest of Section 1 is an introduction to the IPP simplified +       model for distributed printing. +     - Section 2 introduces the object types covered in the model with +       their basic behaviors, attributes, and interactions. +     - Section 3 defines the operations included in IPP/1.0.  IPP +       operations are synchronous, therefore, for each operation, there +       is a both request and a response. +     - Section 4 defines the attributes (and their syntaxes) that are +       used in the model. +     - Sections 5 - 6 summarizes the implementation conformance +       requirements for objects that support the protocol and IANA +       considerations, respectively. +     - Sections 7 - 11 cover the Internationalization and Security +       considerations as well as References, Author contact information, +       and Formats for Registration Proposals. +     - Sections 12 - 14 are appendices that cover Terminology, Status +       Codes and Messages, and "media" keyword values. + + + + + +deBry, et al.                 Experimental                      [Page 8] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +             Note: This document uses terms such as "attributes", +             "keywords", and "support".  These terms have special +             meaning and are defined in the model terminology section +             12.2.  Capitalized terms, such as MUST, MUST NOT, REQUIRED, +             SHOULD, SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have +             special meaning relating to conformance.  These terms are +             defined in section 12.1 on conformance terminology, most of +             which is taken from RFC 2119 [RFC2119]. + +     - Section 15 is an appendix that helps to clarify the effects of +       interactions between related attributes and their values. +     - Section 16 is an appendix that enumerates the subset of Printer +       attributes that form a generic directory schema.  These +       attributes are useful when registering a Printer so that a +       client can find the Printer not just by name, but by filtered +       searches as well. +     - Section 17 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 + +   In order to achieve its goal of realizing a workable printing +   protocol for the Internet, the Internet Printing Protocol (IPP) is +   based on a simplified printing model that abstracts the many +   components of real world printing solutions.  The Internet is a +   distributed computing environment where requesters of print services +   (clients, applications, printer drivers, etc.) cooperate and interact +   with print service providers.  This model and semantics document +   describes a simple, abstract model for IPP even though the underlying +   configurations may be complex "n-tier" client/server systems.  An +   important simplifying step in the IPP model is to expose only the key +   objects and interfaces required for printing.  The model described in +   this model document does not include features, interfaces, and +   relationships that are beyond the scope of the first version of IPP +   (IPP/1.0).  IPP/1.0 incorporates many 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 printing into two object types: + +     - Printer (Section 2.1) +     - Job (Section 2.2) + + + +deBry, et al.                 Experimental                      [Page 9] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Each object type has an associated set of operations (see section 3) +   and attributes (see section 4). + +   It is important, however, to understand that in real system +   implementations (which lie underneath the abstracted IPP/1.0 model), +   there are other components of a print service which are not +   explicitly defined in the IPP/1.0 model. The following figure +   illustrates where IPP/1.0 fits with respect to these other +   components. + +                                +--------------+ +                                |  Application | +                      o         +. . . . . . . | +                     \|/        |   Spooler    | +                     / \        +. . . . . . . |   +---------+ +                   End-User     | Print Driver |---|  File   | +         +-----------+ +-----+  +------+-------+   +----+----+ +         |  Browser  | | GUI |         |                | +         +-----+-----+ +--+--+         |                | +               |          |            |                | +               |      +---+------------+---+            | +   N   D   S   |      |      IPP Client    |------------+ +   O   I   E   |      +---------+----------+ +   T   R   C   |                | +   I   E   U   | +   F   C   R   -------------- Transport ------------------ +   I   T   I +   C   O   T                    |         --+ +   A   R   Y           +--------+--------+  | +   T   Y               |    IPP Server   |  | +   I                   +--------+--------+  | +   O                            |           | +   N                   +-----------------+  | IPP Printer +                       |  Print Service  |  | +                       +-----------------+  | +                                |         --+ +                       +-----------------+ +                       | Output Device(s)| +                       +-----------------+ + +   An IPP Printer object encapsulates the functions normally associated +   with physical output devices along with the spooling, scheduling and +   multiple device management functions often associated with a print +   server. Printer objects are optionally registered as entries in a +   directory where end users find and select them based on some sort of +   filtered and context based searching mechanism (see section 16).  The +   directory is used to store relatively static information about the +   Printer, allowing end users to search for and find Printers that + + + +deBry, et al.                 Experimental                     [Page 10] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   match their search criteria, for example: name, context, printer +   capabilities, etc.  The more dynamic information, such as state, +   currently loaded and ready media, number of jobs at the Printer, +   errors, warnings, and so forth, is directly associated with the +   Printer object itself rather than with the entry in the directory +   which only represents the Printer object. + +   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 +   query Printer objects and submit and manage print jobs.  An IPP +   server is just that part of the Printer object that implements the +   server-side protocol.  The rest of the Printer object implements (or +   gateways into) the application semantics of the print service itself. +   The 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. + +   When a job is submitted to the Printer object and 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 Job object to query its status and monitor the progress of +   the job.  End users may also cancel the print job by using the Job +   object's Cancel-Job operation.  The notification service is out of +   scope for IPP/1.0, but using such a notification service, the end +   user is able to register for and receive Printer specific and Job +   specific events.  An end user can query the status of Printer objects +   and can follow the progress of Job objects by polling using the Get- +   Printer-Attributes, Get-Jobs, and Get-Job-Attributes operations. + +2. IPP Objects + +   The IPP/1.0 model introduces objects of type Printer and Job.  Each +   type of object models relevant aspects of a real-world entity such as +   a real printer or real print job.  Each object type is defined as a +   set of possible attributes that may be supported by instances of that +   object type.  For each object (instance), the actual set of supported +   attributes and values describe a specific implementation.  The +   object's attributes and values describe its state, capabilities, +   realizable features, job processing functions, and default behaviors +   and characteristics.  For example, the Printer object type is defined +   as a set of attributes that each Printer object potentially supports. +   In the same manner, the Job object type is defined as a set of +   attributes that are potentially supported by each Job object. + +   Each attribute included in the set of attributes defining an object +   type is labeled as: + + + + + +deBry, et al.                 Experimental                     [Page 11] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     - "REQUIRED": each object MUST support the attribute. +     - "OPTIONAL": each object MAY support the attribute. + +   There is no such similar labeling of attribute values.  However, if +   an implementation supports an attribute, it MUST support at least one +   of the possible values for that attribute. + +2.1 Printer Object + +   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. +   Using the protocol, end users may query the attributes of the Printer +   object and submit print jobs to the Printer object.  The actual +   implementation components behind the Printer abstraction may take on +   different forms and different configurations.  However, the model +   abstraction allows the details of the configuration of real +   components to remain opaque to the end user.  Section 3 describes +   each of the Printer operations in detail. + +   The capabilities and state of a Printer object are described by its +   attributes.  Printer attributes are divided into two groups: + +     - "job-template" attributes: These attributes describe supported +       job processing capabilities and defaults for the Printer object. +       (See section 4.2) +     - "printer-description" attributes: These attributes describe the +       Printer object's identification, state, location, references to +       other sources of information about the Printer object, etc. (see +       section 4.4) + +   Since a Printer object is an abstraction of a generic document output +   device and print service provider, a Printer object could be used to +   represent any real or virtual device with semantics consistent with +   the Printer object, such as a fax device, an imager, or even a CD +   writer. + +   Some examples of configurations supporting a Printer object include: + +     1) An output device with no spooling capabilities +     2) An output device with a built-in spooler +     3) A print server supporting IPP with one or more associated output +        devices +        3a) The associated output devices may or may not be capable of +          spooling jobs +        3b) The associated output devices may or may not support IPP + + + + + + +deBry, et al.                 Experimental                     [Page 12] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   The following figures show some examples of how Printer objects can +   be realized on top of various distributed printing configurations. +   The embedded case below represents configurations 1 and 2. The hosted +   and fan-out figures below represent configurations 3a and 3b. + +   Legend: + +   ##### indicates a Printer object which is +         either embedded in an output device or is +         hosted in a server.  The Printer object +         might or might not be capable of queuing/spooling. + +   any   indicates any network protocol or direct +         connect, including IPP + + +   embedded printer: +                                             output device +                                           +---------------+ +    O   +--------+                         |  ###########  | +   /|\  | client |------------IPP------------># Printer #  | +   / \  +--------+                         |  # Object  #  | +                                           |  ###########  | +                                           +---------------+ + + +   hosted printer: +                                           +---------------+ +    O   +--------+        ###########      |               | +   /|\  | client |--IPP--># Printer #-any->| output device | +   / \  +--------+        # Object  #      |               | +                          ###########      +---------------+ + + + +                                            +---------------+ +   fan out:                                 |               | +                                        +-->| output device | +                                    any/    |               | +    O   +--------+      ###########   /     +---------------+ +   /|\  | client |-IPP-># Printer #--* +   / \  +--------+      # Object  #   \     +---------------+ +                        ########### any\    |               | +                                        +-->| output device | +                                            |               | +                                            +---------------+ + + + + + +deBry, et al.                 Experimental                     [Page 13] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +2.2 Job Object + +   A Job object is used to model a print job.  A Job object contains +   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 object.  The Printer object validates the create request, and +   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. + +   The characteristics and state of a Job object are described by its +   attributes.  Job attributes are grouped into two groups as follows: + +     - "job-template" attributes: These attributes can be supplied by +       the client or end user and include job processing instructions +       which are intended to override any Printer object defaults and/or +       instructions embedded within the document data. (See section 4.2) +     - "job-description" attributes: These attributes describe the Job +       object's identification, state, size, etc. The client supplies +       some of these attributes, and the Printer object generates others. +       (See section 4.3) + +   An implementation MUST support at least one document per Job object. +   An implementation MAY support multiple documents per Job object.  A +   document is either: + +     - a stream of document data in a format supported by the Printer +       object (typically a Page Description Language - PDL), or +     - a reference to such a stream of document data + +   In IPP/1.0, a document is not modeled as an IPP object, therefore it +   has no object identifier or associated attributes.  All job +   processing instructions are modeled as Job object attributes.  These +   attributes are called Job Template attributes and they apply equally +   to all documents within a Job object. + +2.3 Object Relationships + +   IPP objects have relationships that are maintained persistently along +   with the persistent storage of the object attributes. + +   A Printer object can represent either one or more physical output +   devices or a logical device which "processes" jobs but never actually +   uses a physical output device to put marks on paper.  Examples of +   logical devices include a Web page publisher or a gateway into an +   online document archive or repository.  A Printer object contains +   zero or more Job objects. + + + + +deBry, et al.                 Experimental                     [Page 14] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   A Job object is contained by exactly one Printer object, however the +   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 Job object would be created which would be almost identical to +   the first Job object, however it would have new (different) Job +   object identifiers (see section 2.4). + +   A Job object is either empty (before any documents have been added) +   or contains one or more documents.  If the contained document is a +   stream of document data, that stream can be contained in only one +   document.  However, there can be identical copies of the stream in +   other documents in the same or different Job objects.  If the +   contained document is just a reference to a stream of document data, +   other documents (in the same or different Job object(s)) may contain +   the same reference. + +2.4 Object Identity + +   All Printer and Job objects are identified by a Uniform Resource +   Identifier (URI) [RFC2396] so that they can be persistently and +   unambiguously referenced.  The notion of a URI is a useful concept, +   however, until the notion of URI is more stable (i.e., defined more +   completely and deployed more widely), it is expected that the URIs +   used for IPP objects will actually be URLs [RFC2396].  Since every +   URL is a specialized form of a URI, even though the more generic term +   URI is used throughout the rest of this document, its usage is +   intended to cover the more specific notion of URL as well. + +   An administrator configures Printer objects to either support or not +   support authentication and/or message privacy using SSL3 [SSL] (the +   mechanism for security configuration is outside the scope of +   IPP/1.0).  In some situations, both types of connections (both +   authenticated and unauthenticated) can be established using a single +   communication channel that has some sort of negotiation mechanism. +   In other situations, multiple communication channels are used, one +   for each type of security configuration.  Section 8 provides a full +   description of all security considerations and configurations. + +   If a Printer object supports more than one communication channel, +   some or all of those channels might support and/or require different +   security mechanisms.  In such cases, an administrator could expose +   the simultaneous support for these multiple communication channels as +   multiple URIs for a single Printer object where each URI represents +   one of the communication channels to the Printer object. To support +   this flexibility, the IPP Printer object type defines a multi-valued +   identification attribute called the "printer-uri-supported" +   attribute.  It MUST contain at least one URI.  It MAY contain more +   than one URI.  That is, every Printer object will have at least one + + + +deBry, et al.                 Experimental                     [Page 15] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   URI that identifies at least one communication channel to the Printer +   object, but it may have more than one URI where each URI identifies a +   different communication channel to the Printer object.  The +   "printer-uri-supported" attribute has a companion attribute, the +   "uri-security-supported" attribute, that has the same cardinality as +   "printer-uri-supported".  The purpose of the "uri-security-supported" +   attribute is to indicate the security mechanisms (if any) used for +   each URI listed in "printer-uri-supported".  These two attributes are +   fully described in sections 4.4.1 and 4.4.2. + +   When a job is submitted to the Printer object via a create request, +   the client supplies only a single Printer object URI.  The client +   supplied Printer object URI MUST be one of the values in the +   "printer-uri-supported" Printer attribute. + +   Note:  IPP/1.0 does not specify how the client obtains the client +   supplied URI, but it is RECOMMENDED that a Printer object be +   registered as an entry in a directory service.  End-users and +   programs can then interrogate the directory searching for Printers. +   Section 16 defines a generic schema for Printer object entries in the +   directory service and describes how the entry acts as a bridge to the +   actual IPP Printer object.  The entry in the directory that +   represents the IPP Printer 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 +   Printer object validates the request and creates a new Job object. +   The Printer object assigns the new Job object a URI which is stored +   in the "job-uri" Job attribute.  This URI is then used by clients as +   the target for subsequent Job operations.  The Printer object +   generates a Job URI based on its configured security policy and the +   URI used by the client in the create request. + +   For example, consider a Printer object that supports both a +   communication channel secured by the use of SSL3 (using HTTP over +   SSL3 with an "https" schemed URI) and another open communication +   channel that is not secured with SSL3 (using a simple "http" schemed +   URI).  If a client were to submit a job using the secure URI, the +   Printer object would assign the new Job object a secure URI as well. +   If a client were to submit a job using the open-channel URI, the +   Printer would assign the new Job object an open-channel URI. + +   In addition, the Printer object also populates the Job object's +   "job-printer-uri" attribute.  This is a reference back to the Printer +   object that created the Job object.  If a client only has access to a +   Job object's "job-uri" identifier, the client can query the Job's +   "job-printer-uri" attribute in order to determine which Printer +   object created the Job object.  If the Printer object supports more + + + +deBry, et al.                 Experimental                     [Page 16] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   than one 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 "job-printer-uri" attribute. + +   Allowing Job objects to have URIs allows for flexibility and +   scalability.  For example, in some implementations, the Printer +   object 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 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 this paragraph.  In other implementations, +   the Printer object might be a central clearing-house for validating +   all Job object creation requests, but the Job object itself might be +   created in some environment that is remote from the Printer object. +   In this case, the Job object's URI may have no physical-location +   relationship at all to the Printer object's URI.  Again, the fact +   that Job objects have URIs allows for flexibility and scalability, +   however, many existing printing systems have local models or +   interface constraints that force print jobs to be identified using +   only a 32-bit positive integer rather than an independent URI.  This +   numeric Job ID is only unique within the context of the Printer +   object to which the create request was originally submitted. +   Therefore, in order to allow both types of client access to IPP Job +   objects (either by Job URI or by numeric Job ID), when the Printer +   object successfully processes a create request and creates a new Job +   object, the Printer object MUST generate both a Job URI and a Job ID. +   The Job ID (stored in the "job-id" attribute) only has meaning in the +   context of the Printer object to which the create request was +   originally submitted. This requirement to support both Job URIs and +   Job IDs allows all types of 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 ("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 and set by an administrator through some mechanism outside +   the scope of IPP/1.0.  A Job object's name is optionally chosen and +   supplied by the IPP client submitting the job.  If the client does +   not supply a Job object name, the Printer object generates a name for +   the new Job object.  In all cases, the name only has local meaning. + +   To summarize: + +     - Each Printer object is identified with one or more URIs.  The +       Printer's "printer-uri-supported" attribute contains the URI(s). + + + + + +deBry, et al.                 Experimental                     [Page 17] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     - The Printer object's "uri-security-supported" attribute +       identifies the communication channel security protocols that may +       or may not have been configured for the various Printer object +       URIs (e.g., 'ssl3' or 'none'). +     - Each Job object is identified with a Job URI.  The Job's "job-uri" +       attribute contains the URI. +     - 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 +       ID.  The Job ID is only unique within the context of the Printer +       object  which created the Job object. +     - Each Job object has a "job-printer-uri" attribute which contains +       the URI of the Printer object that was used to create the Job +       object.  This attribute is used to determine the Printer object +       that created a Job object when given only the URI for the Job +       object.  This linkage is necessary to determine the languages, +       charsets, and operations which are supported on that Job (the +       basis for such support comes from the creating Printer object). +     - Each Printer object has a name (which is not necessarily unique). +       The administrator chooses and sets this name through some +       mechanism outside the scope of IPP/1.0 itself.  The Printer +       object's "printer-name" attribute contains the name. +     - Each Job object has a name (which is not necessarily unique).  The +       client optionally supplies this name in the create request.  If +       the client does not supply this name, the Printer object generates +       a name for the Job object. The Job object's "job-name" attribute +       contains the name. + +3. IPP Operations + +   IPP objects support operations.  An operation consists of a request +   and a response.  When a client communicates with an IPP object, the +   client issues an operation request to the URI for that object. +   Operation requests and responses have parameters that identify the +   operation.  Operations also have attributes that affect the run-time +   characteristics of the operation (the intended target, localization +   information, etc.).  These operation-specific attributes are called +   operation attributes (as compared to object attributes such as +   Printer object attributes or Job object attributes).  Each request +   carries along with it any operation attributes, object attributes, +   and/or document data required to perform the operation.  Each request +   requires a response from the object.  Each response indicates success +   or failure of the operation with a status code as a response +   parameter.  The response contains any operation attributes, object +   attributes, and/or status messages generated during the execution of +   the operation request. + + + + + + +deBry, et al.                 Experimental                     [Page 18] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   This section describes the semantics of the IPP operations, both +   requests and responses, in terms of the parameters, attributes, and +   other data associated with each operation. + +   The IPP/1.0 Printer operations are: + +     Print-Job (section 3.2.1) +     Print-URI (section 3.2.2) +     Validate-Job (section 3.2.3) +     Create-Job (section 3.2.4) +     Get-Printer-Attributes (section 3.2.5) +     Get-Jobs (section 3.2.6) + +   The Job operations are: + +     Send-Document (section 3.3.1) +     Send-URI (section 3.3.2) +     Cancel-Job (section 3.3.3) +     Get-Job-Attributes (section 3.3.4) + +   The Send-Document and Send-URI Job operations are used to add a new +   document to an existing multi-document Job object created using the +   Create-Job operation. + +3.1 Common Semantics + +   All IPP operations require some common parameters and operation +   attributes.  These common elements and their semantic characteristics +   are defined and described in more detail in the following sections. + +3.1.1 Required Parameters + +   Every operation request contains the following REQUIRED parameters: + +     - a "version-number", +     - an "operation-id", +     - a "request-id", and +     - the attributes that are REQUIRED for that type of request. + +   Every operation response contains the following REQUIRED parameters: + +     - a "version-number", +     - a "status-code", +     - the "request-id" that was supplied in the corresponding request, +        and +     - the attributes that are REQUIRED for that type of response. + + + + + +deBry, et al.                 Experimental                     [Page 19] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   The encoding and transport document [RFC2565] defines special rules +   for the encoding of these parameters.  All other operation elements +   are represented using the more generic encoding rules for attributes +   and groups of attributes. + +3.1.2 Operation IDs and Request IDs + +   Each IPP operation request includes an identifying "operation-id" +   value.  Valid values are defined in the "operations-supported" +   Printer attribute section (see section 4.4.13).  The client specifies +   which operation is being requested by supplying the correct +   "operation-id" value. + +   In addition, every invocation of an operation is identified by a +   "request-id" value. For each request, the client chooses the +   "request-id" which MUST be an integer (possibly unique depending on +   client requirements) in the range from 1 to 2**31 - 1 (inclusive). +   This "request-id" allows clients to manage multiple outstanding +   requests. The receiving IPP object copies all 32-bits of the client- +   supplied "request-id" attribute into the response so that the client +   can match the 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 +   connection oriented protocol that would make it impossible for a +   client to receive responses in any order other than the order in +   which the corresponding requests were sent.  In such cases, the +   "request-id" attribute would not be essential for correct protocol +   operation.  However, in other mappings, the operation responses can +   come back in any order.  In these cases, the "request-id" would be +   essential. + +3.1.3 Attributes + +   Operation requests and responses are both composed of groups of +   attributes and/or document data.  The attributes groups are: + +     - Operation Attributes: These attributes are passed in the +       operation and affect the IPP object's behavior while processing +       the operation request and may affect other attributes or groups +       of attributes.  Some operation attributes describe the document +       data associated with the print job and are associated with new +       Job objects, however most operation attributes do not persist +       beyond the life of the operation.  The description of each +       operation attribute includes conformance statements indicating +       which operation attributes are REQUIRED and which are OPTIONAL + + + +deBry, et al.                 Experimental                     [Page 20] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +       for an IPP object to support and which attributes a client MUST +       supply in a request and an IPP object MUST supply in a response. +     - 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 +       queried to find out what Job Template attributes were originally +       requested in the create request, and such attributes are returned +       in the response as Job Object Attributes.  The Printer object can +       be queried about its Job Template attributes to find out what +       type of job processing capabilities are supported and/or what the +       default job processing behaviors are, though such attributes are +       returned in the response as Printer Object Attributes.  The +       "ipp-attribute-fidelity" operation attribute affects processing +       of all client-supplied Job Template attributes (see section 15 +       for a full description of "ipp-attribute-fidelity" and its +       relationship to other attributes). +     - Job Object Attributes: These attributes are returned in response +       to a query operation directed at a Job object. +     - Printer Object Attributes: These attributes are returned in +       response to a query operation directed at a Printer object. +     - Unsupported Attributes: In a create request, the client supplies +       a set of Operation and Job Template attributes.  If any of these +       attributes or their values is unsupported by the Printer object, +       the Printer object returns the set of unsupported attributes in +       the response.  Section 15 gives a full description of how Job +       Template attributes supplied by the client in a create request +       are processed by the Printer object and how unsupported +       attributes are returned to the client.  Because of extensibility, +       any IPP object might receive a request that contains new or +       unknown attributes or values for which it has no support. In such +       cases, the IPP object processes what it can and returns the +       unsupported attributes in the response. + +   Later in this section, each operation is formally defined by +   identifying the allowed and expected groups of attributes for each +   request and response.  The model identifies a specific order for each +   group in each request or response, but the attributes within each +   group may be in any order, unless specified otherwise. + +   Each attribute specification includes the attribute's name followed +   by the name of its attribute syntax(es) in parenthesizes.  In +   addition, each 'integer' attribute is followed by the allowed range +   in parentheses, (m:n), for values of that attribute.  Each 'text' or +   'name' attribute is followed by the maximum size in octets in +   parentheses, (size), for values of that attribute. For more details +   on attribute syntax notation, see the descriptions of these +   attributes syntaxes in section 4.1. + + + +deBry, et al.                 Experimental                     [Page 21] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Note: Document data included in the operation is not strictly an +   attribute, but it is treated as a special attribute group for +   ordering purposes.  The only operations that support supplying the +   document data within an operation request are Print-Job and Send- +   Document.  There are no operation responses that include document +   data. + +   Note: Some operations are REQUIRED for IPP objects to support; the +   others are OPTIONAL (see section 5.2.2).  Therefore, before using an +   OPTIONAL operation, a client SHOULD first use the REQUIRED Get- +   Printer-Attributes operation to query the Printer's "operations- +   supported" attribute in order to determine which OPTIONAL Printer and +   Job operations are actually supported.  The client SHOULD NOT use an +   OPTIONAL operation that is not supported.  When an IPP object +   receives a request to perform an operation it does not support, it +   returns the 'server-error-operation-not-supported' status code (see +   section 13.1.5.2).  An IPP object is non-conformant if it does not +   support a REQUIRED operation. + +3.1.4 Character Set and Natural Language Operation Attributes + +   Some Job and Printer attributes have values that are text strings and +   names intended for human understanding rather than machine +   understanding (see the 'text' and 'name' attribute syntax +   descriptions in section 4.1).  The following sections describe two +   special Operation Attributes called "attributes-charset" and +   "attributes-natural-language".  These attributes are always part of +   the Operation Attributes group.  For most attribute groups, the order +   of the attributes within the group is not important.  However, for +   these two attributes within the Operation Attributes group, the order +   is critical.  The "attributes-charset" attribute MUST be the first +   attribute in the group and the "attributes-natural-language" +   attribute MUST be the second attribute in the group.  In other words, +   these attributes MUST be supplied in every IPP request and response, +   they MUST come first in the group, and MUST come in the specified +   order.  For job creation operations, the IPP Printer implementation +   saves these two attributes with the new Job object as Job Description +   attributes.  For the sake of brevity in this document, these +   operation attribute descriptions are not repeated with every +   operation request and response, but have a reference back to this +   section instead. + +3.1.4.1 Request Operation Attributes + +   The client MUST supply and the Printer object MUST support the +   following REQUIRED operation attributes in every IPP/1.0 operation +   request: + + + + +deBry, et al.                 Experimental                     [Page 22] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     "attributes-charset" (charset): +        This operation attribute identifies the charset (coded character +        set and encoding method) used by any 'text' and 'name' +        attributes that the client is supplying in this request.  It +        also identifies the charset that the Printer object MUST use (if +        supported) for all '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. + +        All clients and IPP objects MUST support the 'utf-8' charset +        [RFC2279] and MAY support additional charsets provided that they +        are registered with IANA [IANA-CS].  If the Printer object does +        not support the client supplied charset value, the Printer +        object MUST reject the request, set the "attributes-charset" to +        'utf-8' in the response, and return the 'client-error-charset- +        not-supported' status code and any 'text' or 'name' attributes +        using the 'utf-8' charset.  The Printer object MUST indicate the +        charset(s) supported as the values of the "charset-supported" +        Printer 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 +        to support the 'utf-8' charset, in order to maximize +        interoperability with multiple IPP object implementations, a +        client may want to supply 'utf-8' in the "attributes-charset" +        operation attribute, even though the client is only passing and +        able to present a simpler charset, such as US-ASCII or ISO- +        8859-1.  Then the client will have to filter out (or charset +        convert) those characters that are returned in the response that +        it cannot present to its user.  On the other hand, if both the +        client and the IPP objects also support a charset in common +        besides utf-8, the client may want to use that charset in order +        to avoid charset conversion or data loss. + +        See the 'charset' attribute syntax description in Section 4.1.7 +        for the syntax and semantic interpretation of the values of this +        attribute and for example values. + +     "attributes-natural-language" (naturalLanguage): +        This operation attribute identifies the natural language used by +        any 'text' and 'name' attributes that the client is supplying in +        this request.  This attribute also identifies the natural +        language that the Printer object SHOULD use for all 'text' and ' +        name' attributes and status messages that the Printer object +        returns in the response to this request. + + + + + +deBry, et al.                 Experimental                     [Page 23] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        There are no REQUIRED natural languages required for the Printer +        object to support.  However, the Printer object's "generated- +        natural-language-supported" attribute identifies the natural +        languages supported by the Printer object and any contained Job +        objects for all text strings generated by the IPP object.  A +        client MAY query this attribute to determine which natural +        language(s) are supported for generated messages. + +        For any of the attributes for which the Printer object generates +        text, i.e., for the "job-state-message", "printer-state- +        message", and status messages (see Section 3.1.6), the Printer +        object MUST be able to generate these text strings in any of its +        supported natural languages.  If the client requests a natural +        language that is not supported, the Printer object MUST return +        these generated messages in the Printer's configured natural +        language as specified by the Printer's "natural-language- +        configured" attribute" (see Section 4.4.16). + +        For other 'text' and 'name' attributes supplied by the client, +        authentication system, operator, system administrator, or +        manufacturer (i.e., for "job-originating-user-name", "printer- +        name" (name), "printer-location" (text), "printer-info" (text), +        and "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- +        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 +        different natural language than the value supplied in the +        "attributes-natural-language" operation attribute, the client +        MUST use the Natural Language Override mechanism (see sections +        4.1.1.2 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 +        Language Override, whether the IPP object supports that natural +        language or not (and independent of the value of the "ipp- +        attribute-fidelity" Operation attribute).  That is the IPP +        object accepts all client supplied values no matter what the +        values are in the Printer object's "generated-natural-language- +        supported" attribute.  That attribute, "generated-natural- +        language-supported", only applies to generated messages, + + + + + +deBry, et al.                 Experimental                     [Page 24] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        not client supplied messages.  The IPP object MUST remember that +        natural language for all client-supplied attributes, and when +        returning those attributes in response to a query, the IPP +        object MUST indicate that natural language. + +        Each value whose attribute syntax type is 'text' or 'name' (see +        sections 4.1.1 and 4.1.2) has an Associated Natural-Language. +        This document does not specify how this association is stored in +        a Printer or Job object.  When such a value is encoded in a +        request or response, the natural language is either implicit or +        explicit: + +             - In the implicit case, the value contains only the +               text/name value, and the language is specified by the +               "attributes-natural-language" operation attribute in the +               request or response (see sections 4.1.1.1 +               textWithoutLanguage and 4.1.2.1 nameWithoutLanguage). + +             - 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 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 4.1.8 for the syntax and semantic interpretation of the +        values of this attribute and for example values. + + + +deBry, et al.                 Experimental                     [Page 25] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Clients SHOULD NOT supply 'text' or 'name' attributes that use an +   illegal combination of natural language and charset.  For example, +   suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and +   'iso-8859-7'.  Suppose also, that it supports natural languages 'en' +   (English), 'fr' (French), and 'el' (Greek).  Although the Printer +   object supports the charset 'iso-8859-1' and natural language 'el', +   it probably does not support the combination of Greek text strings +   using the 'iso-8859-1' charset.  The Printer object handles this +   apparent incompatibility differently depending on the context in +   which it occurs: + +     - In a create request: If the client supplies a text or name +       attribute (for example, the "job-name" operation attribute) that +       uses an apparently incompatible combination, it is a client +       choice that does not affect the Printer object or its correct +       operation.  Therefore, the Printer object simply accepts the +       client supplied value, stores it with the Job object, and +       responds back with the same combination whenever the client (or +       any client) queries for that attribute. +     - In a query-type operation, like Get-Printer-Attributes: If the +       client requests an apparently incompatible combination, the +       Printer object responds (as described in section 3.1.4.2) using +       the Printer's configured natural language rather than the natural +       language requested by the client. + +   In either case, the Printer object does not reject the request +   because of the apparent incompatibility.  The potential incompatible +   combination of charset and natural language can occur either at the +   global operation level or at the Natural Language Override +   attribute-by-attribute level.  In addition, since the response always +   includes explicit charset and natural language information, there is +   never any question or ambiguity in how the client interprets the +   response. + +3.1.4.2 Response Operation Attributes + +   The Printer object MUST supply and the client MUST support the +   following REQUIRED operation attributes in every IPP/1.0 operation +   response: + +     "attributes-charset" (charset): +        This operation attribute identifies the charset used by any ' +        text' and 'name' attributes that the Printer object is returning +        in this response.  The value in this response MUST be the same +        value as the "attributes-charset" operation attribute supplied +        by the client in the request.  If this is not possible + + + + + +deBry, et al.                 Experimental                     [Page 26] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        (i.e., the charset requested is not supported), the request +        would have been rejected.  See "attributes-charset" described in +        Section 3.1.4.1 above. + +        If the Printer object supports more than just the 'utf-8' +        charset, the Printer object MUST be able to code convert between +        each of the charsets supported on a highest fidelity possible +        basis in order to return the 'text' and 'name' attributes in the +        charset requested by the client.  However, some information loss +        MAY occur during the charset conversion depending on the +        charsets involved.  For example, the Printer object may convert +        from a UTF-8 'a' to a US-ASCII 'a' (with no loss of +        information), from an ISO Latin 1 CAPITAL LETTER A WITH ACUTE +        ACCENT to US-ASCII 'A' (losing the accent), or from a UTF-8 +        Japanese Kanji character to some ISO Latin 1 error character +        indication such as '?', decimal code equivalent, or to the +        absence of a character, depending on implementation. + +        Note: Whether an implementation that supports more than one +        charset stores the data in the charset supplied by the client or +        code converts to one of the other supported charsets, depends on +        implementation.  The strategy should try to minimize loss of +        information during code conversion.  On each response, such an +        implementation converts from its internal charset to that +        requested. + +     "attributes-natural-language" (naturalLanguage): +        This operation attribute identifies the natural language used by +        any 'text' and 'name' attributes that the IPP object is +        returning in this response.  Unlike the "attributes-charset" +        operation attribute, the IPP object NEED NOT return the same +        value as that supplied by the client in the request.  The IPP +        object MAY return the natural language of the Job object or the +        Printer's configured natural language as identified by the +        Printer object's "natural-language-configured" attribute, rather +        than the natural language supplied by the client.  For any ' +        text' or 'name' attribute or status message in the response that +        is in a different natural language than the value returned in +        the "attributes-natural-language" operation attribute, the IPP +        object MUST use the Natural Language Override mechanism (see +        sections 4.1.1.2 and 4.1.2.2) on each attribute value returned. +        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. + + + + + + +deBry, et al.                 Experimental                     [Page 27] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +3.1.5 Operation Targets + +   All IPP operations are directed at IPP objects.  For Printer +   operations, the operation is always directed at a Printer object +   using one of its URIs (i.e., one of the values in the Printer +   object's "printer-uri-supported" attribute).  Even if the Printer +   object supports more than one URI, the client supplies only one URI +   as the target of the 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: + +     - The Job object itself using the Job object's URI.  In this case, +       the client identifies the target object by supplying the correct +       URI in the "job-uri (uri)" operation attribute. +     - The Printer object that created the Job object using both the +       Printer objects URI and the Job object's Job ID.  Since the +       Printer object that created the Job object generated the Job ID, +       it MUST be able to correctly associate the client supplied Job ID +       with the correct Job object.  The client supplies the Printer +       object's URI in the "printer-uri (uri)" operation attribute and +       the Job object's Job ID in the "job-id (integer(1:MAX))" +       operation attribute. + +   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" +   operation attribute. + +   The operation target attributes are REQUIRED operation attributes +   that MUST be included in every operation request.  Like the charset +   and natural language attributes (see section 3.1.4), the operation +   target attributes are specially ordered operation attributes.  In all +   cases, the operation target attributes immediately follow the +   "attributes-charset" and "attributes-natural-language" attributes +   within the operation attribute group, however the specific ordering +   rules are: + +     - In the case where there is only one operation target attribute +       (i.e., either only the "printer-uri" attribute or only the "job- +       uri" attribute), that attribute MUST be the third attribute in +       the operation attributes group. +     - In the case where Job operations use two operation target +       attributes (i.e., the "printer-uri" and "job-id" attributes), the +       "printer-uri" attribute MUST be the third attribute and the +       "job-id" attribute MUST be the fourth attribute. + + + + + +deBry, et al.                 Experimental                     [Page 28] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   In all cases, the target URIs contained within the body of IPP +   operation requests and responses must be in absolute format rather +   than relative format (a relative URL identifies a resource with the +   scope of the HTTP server, but does not include scheme, host or port). + +   The following rules apply to the use of port numbers in URIs that +   identify IPP objects: + +     1. If the URI scheme allows the port number to be explicitly +        included in the URI string, and a port number is specified +        within the URI, then that port number MUST be used by the client +        to contact the IPP object. + +     2. If the URI scheme allows the port number to be explicitly +        included in the URI string, and a port number is not specified +        within the 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 +        specified within the URI, then the default port number implied +        by that URI MUST be used by the client to contact the IPP +        object. + +   Note: The IPP encoding and transport document [RFC2565] shows a +   mapping of IPP onto HTTP/1.1 and defines a new default port number +   for using IPP over HTTP/1.1. + +3.1.6 Operation Status Codes and Messages + +   Every operation response includes a REQUIRED "status-code" parameter +   and an OPTIONAL "status-message" operation attribute.  The "status- +   code" provides information on the processing of a request.  A +   "status-message" attribute provides a short textual description of +   the status of the operation.  The status code is intended for use by +   automata, and the status message is intended for the human end user. +   If a response does include a "status-message" attribute, an IPP +   client NEED NOT examine or display the message, however it SHOULD do +   so in some implementation specific manner. + +   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 on "Attribute Syntaxes") except that values can range only from +   0x0000 to 0x7FFF.  Section 13 describes the status codes, assigns the +   numeric values, and suggests a corresponding status message for each +   status 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. + + + + +deBry, et al.                 Experimental                     [Page 29] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   If the Printer object supports the "status-message" operation +   attribute, the Printer object MUST be able to generate this message +   in any of the natural languages identified by the Printer object's +   "generated-natural-language-supported" attribute (see the +   "attributes-natural-language" operation attribute specified in +   section 3.1.4.1).  As described in section 3.1.4.1 for any returned ' +   text' attribute, if there is a choice for generating this message, +   the Printer object uses the natural language 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" 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 13): '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. + +3.1.7 Versions + +   Each operation request and response carries with it a "version- +   number" 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.  By including a version number in the client request, it +   allows the client  to identify which version of IPP it is interested +   in using.  If the IPP object does not support that version, the +   object responds with a status code of 'server-error-version-not- +   supported' along with the closest version number that is supported +   (see section 13.1.5.4). + +   There is no version negotiation per se.  However, if after receiving +   a 'server-error-version-not-supported' status code from an IPP +   object, there is nothing that prevents a client from trying again +   with a different version number. In order to conform to IPP/1.0, an +   implementation MUST support at least version '1.0'. + +   There is only one notion of "version number" that covers both IPP +   Model and IPP Protocol changes. Thus the version number MUST change +   when introducing a new version of the Model and Semantics document +   [RFC2566] or a new version of the Encoding and Transport document +   [RFC2565]. + +   Changes to the major version number indicate structural or syntactic +   changes that make it impossible for older version of IPP clients and +   Printer objects to correctly parse and process the new or changed +   attributes, operations and responses.  If the major version number + + + +deBry, et al.                 Experimental                     [Page 30] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   changes, the minor version numbers is set to zero.  As an example, +   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 number.  Items that might affect the changing of the major +   version number include any changes to the Model and Semantics +   document [RFC2566] or the Encoding and Transport [RFC2565] itself, +   such as: + +     - reordering of ordered attributes or attribute sets +     - changes to the syntax of existing attributes +     - changing Operation or Job Template attributes from OPTIONAL to +       REQUIRED and vice versa +     - adding REQUIRED (for an IPP object to support) operation +       attributes +     - adding REQUIRED (for an IPP object to support) operation +       attribute groups +     - adding values to existing operation attributes +     - adding REQUIRED operations + +   Changes to the minor version number indicate the addition of new +   features, attributes and attribute values that may not be understood +   by all IPP objects, but which can be ignored if not understood. +   Items that might affect the changing of the minor version number +   include any changes to the model objects and attributes but not the +   encoding and transport rules [RFC2565] (except adding attribute +   syntaxes).  Examples of such changes are: + +     - grouping all extensions not included in a previous version into +       a new version +     - adding new attribute values +     - adding new object attributes +     - adding OPTIONAL (for an IPP object to support) operation +       attributes (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) +     - adding new attribute syntaxes +     - adding OPTIONAL operations +     - changing Job Description attributes or Printer Description +       attributes from OPTIONAL to REQUIRED or vice versa. + +   The encoding of the "operation-id", the "version-number", the +   "status-code", and the "request-id" MUST NOT change over any version +   number (either major or minor).  This rule guarantees that all future +   versions will be backwards compatible with all previous versions (at +   least for checking the "operation-id", the "version-number", and the +   "request-id").  In addition, any protocol elements (attributes, error + + + +deBry, et al.                 Experimental                     [Page 31] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   codes, tags, etc.) that are not carried forward from one version to +   the next are deprecated so that they can never be reused with new +   semantics. + +   Implementations that support a certain major version NEED NOT support +   ALL previous versions.  As each new major version is defined (through +   the release of a new specification), that major version will specify +   which previous major versions MUST be supported in compliant +   implementations. + +3.1.8 Job Creation Operations + +   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 three operation requests: + +     - The Print-Job Request: A client that wants to submit a print job +       with only a single document uses the Print-Job operation.  The +       operation allows for the client to "push" the document data to +       the Printer object by including the document data in the request +       itself. + +     - The Print-URI Request: A client that wants to submit a print job +       with only a single document (where the Printer object "pulls" the +       document data instead of the client "pushing" the data to the +       Printer object) uses the Print-URI operation.   In this case, the +       client includes in the request only a URI reference to the +       document data (not the document data itself). + +     - The Create-Job Request: A client that wants to submit a print job +       with multiple documents uses the Create-Job operation.  This +       operation is followed by an arbitrary number of Send-Document +       and/or Send-URI operations (each creating another document for +       the newly create Job object).  The Send-Document operation +       includes the document data in the request (the client "pushes" +       the document data to the printer), and the Send-URI operation +       includes only a URI reference to the document data in the request +       (the Printer "pulls" the document data from the referenced +       location).  The last Send-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 to refer to any of these three operation requests. + +   A Create-Job operation followed by only one Send-Document operation +   is semantically equivalent to a Print-Job operation, however, for +   performance reasons, the client SHOULD use the Print-Job operation + + + +deBry, et al.                 Experimental                     [Page 32] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   for all single document jobs.  Also, Print-Job is a REQUIRED +   operation (all implementations MUST support it) whereas Create-Job is +   an OPTIONAL operation, hence some implementations might not support +   it. + +   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 'pending-held' state.  Later, the Printer object begins +   processing the print job.  At this point in time, the Job object's +   state moves to 'processing'.  This is known as job processing time. +   There are validation checks that must be done at job submission time +   and others that must be performed at job processing time. + +   At job submission time and at the time a Validate-Job operation is +   received, the Printer MUST do the following: + +     1. Process the client supplied attributes and either accept or +        reject the request +     2. Validate the syntax of and support for the scheme of any client +        supplied URI + +   At job submission time the Printer object MUST validate whether or +   not the supplied attributes, attribute syntaxes, and values are +   supported by matching them with the Printer object's corresponding +   "xxx-supported" attributes.  See section 3.2.1.2 for details.  [ipp- +   iig] presents 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 object NEED NOT perform the +   validation checks reserved for job processing time such as: + +     1. Validating the document data +     2. Validating the actual contents of any client supplied URI +        (resolve the reference and follow the link to the document data) + +   At job submission time, these additional job processing time +   validation checks are essentially useless, since they require +   actually parsing and interpreting the document data, are not +   guaranteed to be 100% accurate, and MUST be done, yet again, at job +   processing time.  Also, in the case of a URI, checking for +   availability at job submission time does not guarantee availability +   at job processing time.   In addition, at job processing time, the +   Printer object might discover any of the following conditions that +   were not detectable at job submission time: + +     - runtime errors in the document data, +     - nested document data that is in an unsupported format, + + + +deBry, et al.                 Experimental                     [Page 33] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     - the URI reference is no longer valid (i.e., the server hosting +       the document might be down), or +     - any other job processing error + +   At job processing time, since the Printer object has already +   responded with a successful status code in the response to the create +   request, if 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 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 status. + +   Note: Asynchronous notification of events is outside the scope of +   IPP/1.0. + +3.2 Printer Operations + +   All Printer operations are directed at Printer objects.  A client +   MUST always supply the "printer-uri" operation attribute in order to +   identify the correct target of the operation. + +3.2.1 Print-Job Operation + +   This REQUIRED operation allows a client to submit a print job with +   only one document and supply the document data (rather than just a +   reference to the data).  See Section 15 for the suggested steps for +   processing create operations and their Operation and Job Template +   attributes. + +3.2.1.1 Print-Job Request + +   The following groups of attributes are supplied as part of the +   Print-Job Request: + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.1.  The Printer object +        MUST copy these values to the corresponding Job Description +        attributes described in sections 4.3.23 and 4.3.24. + +     Target: +        The "printer-uri" (uri) operation attribute which is the target +        for this operation as described in section 3.1.5. + + + + + +deBry, et al.                 Experimental                     [Page 34] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     Requesting User Name: +        The "requesting-user-name" (name(MAX)) attribute SHOULD be +        supplied by the client as described in section 8.3. + +     "job-name" (name(MAX)): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  It contains the client +        supplied Job name.  If this attribute is supplied by the client, +        its value is used for the "job-name" attribute of the newly +        created Job object.  The client MAY automatically include any +        information that will help the end-user distinguish amongst +        his/her jobs, such as the name of the application program along +        with information from the document, such as the document name, +        document subject, or source file name.  If this attribute is not +        supplied by the client, the Printer generates a name to use in +        the "job-name" attribute of the newly created Job object (see +        Section 4.3.5). + +     "ipp-attribute-fidelity" (boolean): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  The value 'true' indicates +        that total fidelity to client supplied Job Template attributes +        and values is required, else the Printer object MUST reject the +        Print-Job request.  The value 'false' indicates that a +        reasonable attempt to print the Job object is acceptable and the +        Printer object MUST accept the Print-job request. If not +        supplied, the Printer object assumes the value is 'false'.  All +        Printer objects MUST support both types of job processing.  See +        section 15 for a full description of "ipp-attribute-fidelity" +        and its relationship to other attributes, especially the Printer +        object's "pdl-override-supported" attribute. + +     "document-name" (name(MAX)): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.   It contains the client +        supplied document name.  The document name MAY be different than +        the Job name.  Typically, the client software automatically +        supplies the document name on behalf of the end user by using a +        file name or an application generated name.  If this attribute +        is supplied, its value can be used in a manner defined by each +        implementation.  Examples include: printed along with the Job +        (job start sheet, page adornments, etc.), used by accounting or +        resource tracking management tools, or even stored along with +        the document as a document level attribute.  IPP/1.0 does not +        support the concept of document level attributes. + + + + + + +deBry, et al.                 Experimental                     [Page 35] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     "document-format" (mimeMediaType) : +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  The value of this attribute +        identifies the format of the supplied document data.  If the +        client does not supply this attribute, the Printer object +        assumes that the 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. + +     "document-natural-language" (naturalLanguage): +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute. This attribute +        specifies the natural language of the document for those +        document-formats that require a specification of the natural +        language in order to image the document unambiguously. There are +        no particular values required for the Printer object to support. + +     "compression" (type3 keyword) +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute and the "compression- +        supported" attribute (see section 4.4.29).  The client supplied +        "compression" operation attribute identifies the compression +        algorithm used on the document data.  If the client omits this +        attribute, the Printer object MUST assume that the data is not +        compressed.  If the client supplies the attribute and the +        Printer object supports the attribute, the Printer object uses +        the corresponding decompression algorithm on the document data. +        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 "compression-supported" +        attribute, the Printer object MUST copy the attribute and its +        value to the Unsupported Attributes response group, reject the +        request, and return the 'client-error-attributes-or-values-not- +        supported' status code. + +     "job-k-octets" (integer(0:MAX)) +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute and the "job-k- +        octets-supported" attribute (see section 4.4.30).  The client +        supplied "job-k-octets" operation attribute identifies the total +        size of the document(s) in K octets being submitted (see section +        4.3.17 for the complete semantics).  If the client supplies the + + + + + +deBry, et al.                 Experimental                     [Page 36] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        attribute and the Printer object supports the attribute, the +        value of the attribute is used to populate the Job object's +        "job-k-octets" Job Description attribute. + +        Note: For this attribute and the following two attributes +        ("job-impressions", and "job-media-sheets"), if the client +        supplies the attribute, but the Printer object does not support +        the attribute, the Printer object ignores the client-supplied +        value.  If the client supplies the attribute and the Printer +        supports the attribute, and the value is within the range of the +        corresponding Printer object's "xxx-supported" attribute, the +        Printer object MUST use the value to populate the Job object's +        "xxx" attribute.  If the client supplies the attribute and the +        Printer supports the attribute, but the value is outside the +        range of the corresponding Printer object's "xxx-supported" +        attribute, the Printer object MUST copy the attribute and its +        value to the Unsupported Attributes response group, reject the +        request, and return the 'client-error-attributes-or-values-not- +        supported' status code.  If the client does not supply the +        attribute, the Printer object MAY choose to populate the +        corresponding Job object attribute depending on whether the +        Printer object supports the attribute and is able to calculate +        or discern the correct value. + +     "job-impressions" (integer(0:MAX)) +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute and the "job- +        impressions-supported" attribute (see section 4.4.31).  The +        client supplied "job-impressions" operation attribute identifies +        the total size in number of impressions of the document(s) being +        submitted (see section 4.3.18 for the complete semantics). + +        See note under "job-k-octets". + +     "job-media-sheets" (integer(0:MAX)) +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute and the "job-media- +        sheets-supported" attribute (see section 4.4.32).  The client +        supplied "job-media-sheets" operation attribute identifies the +        total number of media sheets to be produced for this job (see +        section 4.3.19 for the complete semantics). + +        See note under "job-k-octets". + + + + + + + + +deBry, et al.                 Experimental                     [Page 37] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Group 2: Job Template Attributes + +        The client OPTIONALLY supplies a set of Job Template attributes +        as 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 + +        The client MUST supply the document data to be processed. + +   Note: In addition to the MANDATORY parameters required for every +   operation request, the simplest Print-Job Request consists of just +   the "attributes-charset" and "attributes-natural-language" operation +   attributes; the "printer-uri" target operation attribute; the +   Document Content and nothing else.  In this simple case, the Printer +   object: + +     - creates a new Job object (the Job object contains a single +       document), +     - stores a generated Job name in the "job-name" attribute in the +       natural language and charset requested (see Section 3.1.4.1) (if +       those are supported, otherwise using the Printer object's default +       natural language and charset), and +     - at job processing time, uses its corresponding default value +       attributes for the supported Job Template attributes that were +       not supplied by the client as IPP attribute or embedded +       instructions in the document data. + +3.2.1.2 Print-Job Response + +       The Printer object MUST return to the client the following sets +       of attributes as part of the Print-Job Response: + +       Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in sections 14 and +        3.1.6.  If the client supplies unsupported or conflicting Job +        Template attributes or values, the Printer object MUST reject or +        accept the Print-Job request depending on the whether the client +        supplied a 'true' or 'false' value for the "ipp-attribute- +        fidelity" operation attribute.  See the Implementer's Guide +        [ipp-iig] for a complete description of the suggested steps for +        processing a create request. + + + +deBry, et al.                 Experimental                     [Page 38] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2. + +   Group 2: Unsupported Attributes + +        This is a set of Operation and Job Template attributes supplied +        by the client (in the request) that are not supported by the +        Printer object or that conflict with one another (see 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. + +        Unsupported attributes fall into three categories: + +        1. The Printer object does not support the supplied attribute +           (no matter what the attribute syntax or value). +        2. The Printer object does support the attribute, but does not +           support some or all of the particular attribute syntaxes or +           values supplied by the client (i.e., the Printer object does +           not have those attribute syntaxes or values in its +           corresponding "xxx-supported" attribute). +        3. The Printer object does support the attributes and values +           supplied, but the particular values are in conflict with one +           another, because they violate a constraint, such as not being +           able to staple transparencies. + +        In the case of an unsupported attribute name, the Printer object +        returns the client-supplied attribute with a substituted "out- +        of-band" value of 'unsupported' indicating no support for the +        attribute itself (see the beginning of section 4.1). + +        In the case of a supported attribute with one or more +        unsupported attribute syntaxes or values, the Printer object +        simply returns the client-supplied attribute with the +        unsupported attribute syntaxes 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 + + + +deBry, et al.                 Experimental                     [Page 39] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        within the same job), the Printer object MUST return all the +        values that 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 resolve the conflict is implementation +        dependent.  See The Implementer's Guide [ipp-iig] for an +        example. + +        In these three cases, the value of the "ipp-attribute-fidelity" +        supplied by the client does not affect what the Printer object +        returns.  The value of "ipp-attribute-fidelity" only affects +        whether the Print-Job operation is accepted or rejected.  If the +        job is accepted, the client may query the job using the Get- +        Job-Attributes operation requesting the unsupported attributes +        that were returned in the create response to see which +        attributes were ignored (not stored on the Job object) and which +        attributes were stored with other (substituted) values. + +   Group 3: Job Object Attributes + +     "job-uri" (uri): +        The Printer object MUST return the Job object's URI by returning +        the contents of the REQUIRED "job-uri" Job object attribute. +        The client uses the Job object's URI when directing operations +        at the Job object.  The Printer object always uses its +        configured security policy when creating the new URI.  However, +        if the Printer object supports more than one URI, the Printer +        object also uses information about which URI was used in the +        Print-Job Request to generated the new URI so that the new URI +        references the correct access channel.  In other words, if the +        Print-Job Request comes in over a secure channel, the Printer +        object MUST generate a Job URI that uses the secure channel as +        well. + +     "job-id" (integer(1:MAX)): +        The Printer object MUST return the Job object's Job ID by +        returning the REQUIRED "job-id" Job object attribute.  The +        client uses this "job-id" attribute in conjunction with the +        "printer-uri" attribute used in the Print-Job Request when +        directing Job operations at the Printer object. + +     "job-state": +        The Printer object MUST return the Job object's REQUIRED "job- +        state" attribute. The value of this attribute (along with the +        value of the next attribute "job-state-reasons") is taken from a +        "snapshot" of the new Job object at some meaningful point in +        time (implementation defined) between when the Printer object +        receives the Print-Job Request and when the Printer object +        returns the response. + + + +deBry, et al.                 Experimental                     [Page 40] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     "job-state-reasons": +        The Printer object OPTIONALLY returns the Job object's OPTIONAL +        "job-state-reasons" attribute.  If the Printer object supports +        this attribute then it MUST be returned in the response.  If +        this attribute is not returned in the response, the client can +        assume that the "job-state-reasons" attribute is not supported +        and will not be returned in a subsequent Job object query. + +     "job-state-message": +        The Printer object OPTIONALLY returns the Job object's OPTIONAL +        "job-state-message" attribute.  If the Printer object supports +        this attribute then it MUST be returned in the response.  If +        this attribute is not returned in the response, the client can +        assume that the "job-state-message" attribute is not supported +        and will not be returned in a subsequent Job object query. + +     "number-of-intervening-jobs": +        The Printer object OPTIONALLY returns the Job object's OPTIONAL +        "number-of-intervening-jobs" attribute.  If the Printer object +        supports this attribute then it MUST be returned in the +        response.  If this attribute is not returned in the response, +        the client can assume that the "number-of-intervening-jobs" +        attribute is not supported and will not be returned in a +        subsequent Job object query. + +        Note: Since any printer state information which affects a job's +        state is reflected in the "job-state" and "job-state-reasons" +        attributes, it is sufficient to return only these attributes and +        no specific printer status attributes. + +   Note: In addition to the MANDATORY parameters required for every +   operation response, the simplest response consists of the just the +   "attributes-charset" and "attributes-natural-language" operation +   attributes and the "job-uri", "job-id", and "job-state" Job Object +   Attributes.  In this simplest case, the status code is "successful- +   ok" and there is no "status-message" operation attribute. + +3.2.2 Print-URI Operation + +   This OPTIONAL operation is identical to the Print-Job operation +   (section 3.2.1) except that a client supplies a URI reference to the +   document data using the "document-uri" (uri) operation attribute (in +   Group 1) rather than including the document data itself.  Before +   returning the response, the Printer MUST validate that the Printer +   supports the retrieval method (e.g., http, ftp, etc.) implied by the +   URI, and MUST check for valid URI syntax.  If the client-supplied URI +   scheme is not supported, i.e. the value is not in the Printer +   object's "referenced-uri-scheme-supported" attribute, the Printer + + + +deBry, et al.                 Experimental                     [Page 41] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   object MUST reject the request and return the 'client-error-uri- +   scheme-not-supported' status code.  See The Implementer's Guide +   [ipp-iig] for suggested additional checks.  The Printer NEED NOT +   follow the reference and validate the contents of the reference. + +   If the Printer object supports this operation, it MUST support the +   "reference-uri-schemes-supported" Printer attribute (see section +   4.4.24). + +   It is up to the IPP object to interpret the URI and subsequently +   "pull" the document from the source referenced by the URI string. + +3.2.3 Validate-Job Operation + +   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 allocates no resources (i.e., it does not create a new +   Job object).  This operation is used only to verify capabilities of a +   printer object against whatever attributes are supplied by the client +   in the Validate-Job request.  By using the Validate-Job operation a +   client can validate that an identical Print-Job operation (with the +   document data) would be accepted. The Validate-Job operation also +   performs the same security negotiation as the Print-Job operation +   (see section 8), so that a client can check that the client and +   Printer object security requirements can be met before performing a +   Print-Job operation. + +   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 +   operation will be accepted, since the client doesn't send the data +   with the Print-URI operation.  The client SHOULD just issue the +   Print-URI request. + +   The Printer object returns the same status codes, Operation +   Attributes (Group 1) and Unsupported Attributes (Group 2) as the +   Print-Job operation.  However, no Job Object Attributes (Group 3) are +   returned, since no Job object is created. + +3.2.4 Create-Job Operation + +   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 document data or any reference to document data.  Also, +   the client does not supply any of the "document-name", "document- +   format", "compression", or "document-natural-language" operation +   attributes.  This operation is followed by one or more Send-Document +   or Send-URI operations.  In each of those operation requests, the + + + + +deBry, et al.                 Experimental                     [Page 42] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   client OPTIONALLY supplies the "document-name", "document-format", +   and "document-natural-language" attributes for each document in the +   multi-document Job object. + +   If a Printer object supports the Create-Job operation, it MUST also +   support the Send-Document operation and also MAY support the Send-URI +   operation. + +   If the Printer object supports this operation, it MUST support the +   "multiple-operation-time-out" Printer attribute (see section 4.4.28). + + +3.2.5 Get-Printer-Attributes Operation + +   This REQUIRED operation allows a client to request the values of the +   attributes of a Printer object.   In the request, the client supplies +   the set of Printer attribute names and/or attribute group names in +   which the requester is interested.  In the response, the Printer +   object returns a corresponding attribute set with the appropriate +   attribute values filled in. + +   For Printer objects, the possible names of attribute groups are: + +     - 'job-template': all of the Job Template attributes that apply to +       a Printer object (the last two columns of the table in Section +       4.2). +     - 'printer-description': the attributes specified in Section 4.4. +     - 'all': the special group 'all' that includes all supported +       attributes. + +   Since a client MAY request specific attributes or named groups, there +   is a potential that there is some overlap.  For example, if a client +   requests, 'printer-name' and 'all', the client is actually requesting +   the "printer-name" attribute twice: once by naming it explicitly, and +   once by inclusion in the 'all' group.  In such cases, the Printer +   object NEED NOT return each attribute only once in the response even +   if it is requested multiple times.  The client SHOULD NOT request the +   same attribute in multiple ways. + +   It is NOT REQUIRED that a Printer object support all attributes +   belonging to a group (since some attributes are OPTIONAL).  However, +   it is REQUIRED that each Printer object support all group names. + + + + + + + + + +deBry, et al.                 Experimental                     [Page 43] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +3.2.5.1 Get-Printer-Attributes Request + +   The following sets of attributes are part of the Get-Printer- +   Attributes Request: + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        attributes-charset" and "attributes-natural-language" butes as +        described in section 3.1.4.1. + +     Target: +        The "printer-uri" (uri) operation attribute which is the target +        for this operation as described in section 3.1.5. + +     Requesting User Name: +        The "requesting-user-name" (name(MAX)) attribute SHOULD be +        supplied by the client as described in section 8.3. + +     "requested-attributes" (1setOf keyword) : +        The client OPTIONALLY supplies a set of attribute names and/or +        attribute group names in whose values the requester is +        interested.  The Printer object MUST support this attribute.  If +        the client omits this attribute, the Printer MUST respond as if +        this attribute had been supplied with a value of 'all'. + +     "document-format" (mimeMediaType) : +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  This attribute is useful +        for a Printer object to determine the set of supported attribute +        values that relate to the requested document format.  The +        Printer object MUST return the attributes and values that it +        uses to validate a job on a create or Validate-Job operation in +        which this document format is supplied. The Printer object +        SHOULD return only (1) those attributes that are supported for +        the specified format and (2) the attribute values that are +        supported for the specified document format.  By specifying the +        document format, the client can get the Printer object to +        eliminate the attributes and values that are not supported for a +        specific document format.  For example, a Printer object might +        have multiple interpreters to support both ' +        application/postscript' (for PostScript) and 'text/plain' (for +        text) documents.  However, for only one of those interpreters +        might the Printer object be able to support "number-up" with +        values of '1', '2', and '4'.  For the other interpreter it might +        be able to only support "number-up" with a value of '1'. Thus a + + + + + +deBry, et al.                 Experimental                     [Page 44] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        client can use the Get-Printer-Attributes operation to obtain +        the attributes and values that will be used to accept/reject a +        create job operation. + +        If the Printer object does not distinguish between different +        sets of supported values for each different document format when +        validating jobs in the create and Validate-Job operations, it +        MUST NOT distinguish between different document formats in the +        Get-Printer-Attributes operation. If the Printer object does +        distinguish between different sets of supported values for each +        different document format specified by the client, this +        specialization applies only to the following Printer object +        attributes: + +       - Printer attributes that are Job Template attributes ("xxx- +          default" "xxx-supported", and "xxx-ready" in the Table in +          Section 4.2), +       - "pdl-override-supported", +       - "compression-supported", +       - "job-k-octets-supported", +       - "job-impressions-supported, +       - "job-media-sheets-supported" +       - "printer-driver-installer", +       - "color-supported", and +       - "reference-uri-schemes-supported" + +        The values of all other Printer object attributes (including +        "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). + +        If the client omits this "document-format" operation attribute, +        the Printer object MUST respond as if the attribute had been +        supplied with the value of the Printer object's "document- +        format-default" attribute.  It is recommended that the client +        always supply a value for "document-format", since the Printer +        object's "document-format-default" may be 'application/octet- +        stream', in 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" +        Operation attribute that is not supported by the Printer, i.e., +        is not among the values of the Printer object's "document- +        format-supported" attribute, the Printer object MUST reject the +        operation and return the 'client-error-document-format-not- +        supported' status code. + + + +deBry, et al.                 Experimental                     [Page 45] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +3.2.5.2 Get-Printer-Attributes Response + +   The Printer object returns the following sets of attributes as part +   of the Get-Printer-Attributes Response: + +   Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in section 3.1.6. + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2. + +   Group 2: Unsupported Attributes + +        This is a set of Operation attributes supplied by the client (in +        the request) that are not supported by the Printer object or +        that 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 + +        This is the set of requested attributes and their current +        values.  The Printer object ignores (does not respond with) any +        requested attribute which is not supported.  The Printer object +        MAY respond with a subset of the supported attributes and +        values, depending on the security policy in force.  However, the +        Printer object MUST respond with the 'unknown' value for any +        supported attribute (including all REQUIRED attributes) for +        which the Printer object does not know the value.  Also the +        Printer object MUST respond with the 'no-value' for any +        supported attribute (including all REQUIRED attributes) for +        which the system administrator has not configured a value.  See +        the description of the "out-of-band" values in the beginning of +        Section 4.1. + + + + + + + +deBry, et al.                 Experimental                     [Page 46] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +3.2.6 Get-Jobs Operation + +   This REQUIRED operation allows a client to retrieve the list of Job +   objects belonging to the target Printer object.  The client may also +   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 +   that is returned. + +   This operation is similar to the Get-Job-Attributes operation, except +   that this Get-Jobs operation returns attributes from possibly more +   than one object (see the description of Job attribute group names in +   section 3.3.4). + +3.2.6.1 Get-Jobs Request + +   The client submits the Get-Jobs request to a Printer object. + +   The following groups of attributes are part of the Get-Jobs Request: + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.1. + +     Target: +        The "printer-uri" (uri) operation attribute which is the target +        for this operation as described in section 3.1.5. + +     Requesting User Name: +        The "requesting-user-name" (name(MAX)) attribute SHOULD be +        supplied by the client as described in section 8.3. + +     "limit" (integer(1:MAX)): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute. It is an integer value that +        indicates a limit to the number of Job objects returned.  The +        limit is a "stateless limit" in that if the value supplied by +        the client is 'N', then only the first 'N' jobs are returned in +        the Get-Jobs Response.  There is no mechanism to allow for the +        next 'M' 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): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  It is a set of Job +        attribute names and/or attribute groups names in whose values + + + +deBry, et al.                 Experimental                     [Page 47] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        the requester is interested.  This set of attributes is returned +        for each Job object that is returned.  The allowed attribute +        group names are the same as those defined in the Get-Job- +        Attributes operation in section 3.3.4.  If the client does not +        supply this attribute, the Printer MUST respond as if the client +        had supplied this attribute with two values:  'job-uri' and ' +        job-id'. + +     "which-jobs" (type2 keyword): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  It indicates which Job +        objects MUST be returned by the Printer object. The values for +        this attribute are: + +          'completed': This includes any Job object whose state is +             'completed', 'canceled', or 'aborted'. +          'not-completed': This includes any Job object whose state is ' +             pending', 'processing', 'processing-stopped', or 'pending- +             held'. + +        A Printer object MUST support both values.  However, if the +        mentation does not keep jobs in the 'completed', 'canceled', ' +        aborted' states, then it returns no jobs when the 'completed' +        value is supplied. + +        If a client supplies some other value, the Printer object MUST +        copy the attribute and the unsupported value to the Unsupported +        Attributes response group, reject the request, and return the ' +        client-error-attributes-or-values-not-supported' status code. + +        If the client does not supply this attribute, the Printer object +        MUST respond as if the client had supplied the attribute with a +        value of 'not-completed'. + +     "my-jobs" (boolean): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  It indicates whether all +        jobs or just the jobs submitted by the requesting user of this +        request  MUST be returned by 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 value of ' +        false', i.e., all jobs.  The means for authenticating the +        requesting user and matching the jobs is described in section 8. + + + + + + + + +deBry, et al.                 Experimental                     [Page 48] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +3.2.6.2 Get-Jobs Response + +   The Printer object returns all of the Job objects that match the +   criteria as defined by the attribute values supplied by the client in +   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 +   no 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 +   Object Attributes returned for each Job object. + +   Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in sections 14 and +        3.1.6. + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2. + +   Group 2: Unsupported Attributes + +        This is a set of Operation attributes supplied by the client (in +        the request) that are not supported by the Printer object or +        that 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 + +        The Printer object responds with one set of Job Object +        Attributes for each returned Job object.  The Printer object +        ignores (does not respond with) any requested attribute or value +        which is not supported or which is restricted by the security +        policy in force, including whether the requesting user is the +        user that submitted the job (job originating user) or not (see +        section 8).  However, the Printer object MUST respond with the ' +        unknown' value for any supported attribute (including all +        REQUIRED attributes) for which the Printer object does not know + + + + + +deBry, et al.                 Experimental                     [Page 49] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        the value, unless it would violate the security policy.  See the +        description of the "out-of-band" values in the beginning of +        Section 4.1. + +        Jobs are returned in the following order: + +          - If the client requests all 'completed' Jobs (Jobs in the ' +            completed', 'aborted', or 'canceled' states), then the Jobs +            are returned newest to oldest (with respect to actual +            completion time) +          - If the client requests all 'not-completed' Jobs (Jobs in the +            'pending', 'processing', 'pending-held', and 'processing- +            stopped' states), then Jobs are returned in relative +            chronological order of expected time to complete (based on +            whatever scheduling algorithm is configured for the Printer +            object). + +3.3 Job Operations + +   All Job operations are directed at Job objects.  A client MUST always +   supply some means of identifying the Job object in order to identify +   the correct target of the operation.  That job identification MAY +   either be a single Job URI or a combination of a Printer URI with a +   Job ID.  The IPP object implementation MUST support both forms of +   identification for every job. + +3.3.1 Send-Document Operation + +   This OPTIONAL operation allows a client to create a multi-document +   Job object that is initially "empty" (contains no documents).  In the +   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 +   "job-id" attribute).  For each new document that the client desires +   to add, the client uses a Send-Document operation.  Each Send- +   Document Request contains the entire stream of document data for one +   document. + +   Since the Create-Job and the send operations (Send-Document or Send- +   URI operations) that follow could occur over an arbitrarily long +   period of time for a particular job, a client MUST send another send +   operation within an IPP Printer defined minimum time interval after +   the receipt of the previous request for the job.  If a Printer object +   supports multiple document jobs, the Printer object MUST support the +   "multiple-operation-time-out" attribute (see section 4.4.28).  This +   attribute indicates the minimum number of seconds the Printer object +   will wait for the next send operation before taking some recovery +   action. + + + + +deBry, et al.                 Experimental                     [Page 50] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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 +        changing the job state to 'aborted', add the 'aborted-by-system' +        value to the job's "job-state-reasons" attribute (see section +        4.3.8), if supported, and clean up all resources associated with +        the Job.  In this case, if another send operation is finally +        received, the Printer responds with an "client-error-not- +        possible" or "client-error-not-found" depending on whether or +        not the Job object is still around when the send operation +        finally arrives. +     2. Assume that the last send operation received was in fact the +        last document (as if the "last-document" flag had been set to ' +        true'), close the Job object, and proceed to process it (i.e., +        move the Job's state to 'pending'). +     3. Assume that the last send operation received was in fact the +        last document, close the Job, but move it to the 'pending-held' +        and add the 'submission-interrupted' value to the job's "job- +        state-reasons" 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 +   depending on local policy, whether any documents have been added, +   whether the implementation spools jobs or not, and/or any other piece +   of information available to it.  If the choice is to abort the Job +   object, it is possible that the Job object may already have been +   processed to the point that some media sheet pages have been printed. + +3.3.1.1 Send-Document Request + +   The following attribute sets are part of the Send-Document Request: + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.1. + + + + + + + + +deBry, et al.                 Experimental                     [Page 51] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     Target: +        Either (1) the "printer-uri" (uri) plus "job-id" +        (integer(1:MAX))or (2) the "job-uri" (uri) operation +        attribute(s) which define the target for this operation as +        described in section 3.1.5. + +     Requesting User Name: +        "requesting-user-name" (name(MAX)) attribute SHOULD be supplied +        by the client as described in section 8.3. + +     "document-name" (name(MAX)): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  It contains the client +        supplied document name.  The document name MAY be different than +        the Job name.  It might be helpful, but NEED NOT be unique +        across multiple documents in the same Job.  Typically, the +        client software automatically supplies the document name on +        behalf of the end user by using a file name or an application +        generated name.  See the description of the "document-name" +        operation attribute in the Print-Job Request (section 3.2.1.1) +        for more information about this attribute + +   "document-format" (mimeMediaType): +        The client OPTIONALLY supplies this attribute.  The Printer +        object MUST support this attribute.  The value of this attribute +        identifies the format of the supplied document data.  If the +        client does not supply this attribute, the Printer object +        assumes that the 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. + +     "document-natural-language" (naturalLanguage): +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute.  This attribute +        specifies the natural language of the document for those +        document-formats that require a specification of the natural +        language in order to image the document unambiguously.  There +        are no particular values required for the Printer object to +        support. + +     "compression" (type3 keyword) +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute and the "compression- +        supported" attribute (see section 4.4.29).  The client supplied + + + +deBry, et al.                 Experimental                     [Page 52] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        "compression" operation attribute identifies the compression +        algorithm used on the document data.  If the client omits this +        attribute, the Printer object MUST assume that the data is not +        compressed.  If the client supplies the attribute and the +        Printer object supports the attribute, the Printer object MUST +        use the corresponding decompression algorithm on the document +        data. 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 "compression-supported" +        attribute, the Printer object MUST copy the attribute and its +        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): +        The client MUST supply this attribute.  The Printer object MUST +        support this attribute. It is a boolean flag that is set to ' +        true' if this is the last document for the Job, 'false' +        otherwise. + +   Group 2: Document Content + +        The client MUST supply the document data if the "last-document" +        flag is set to 'false'.  However, since a client might not know +        that the previous document sent with a Send-Document (or Send- +        URI) operation was the last document (i.e., the "last-document" +        attribute was set to 'false'), it is legal to send a Send- +        Document request with no document data where the "last-document" +        flag is set to 'true'.  Such a request MUST NOT increment the +        value of the Job object's "number-of-documents" attribute, since +        no real document was added to the job. + +3.3.1.2 Send-Document Response + +   The following sets of attributes are part of the Send-Document +   Response: + +   Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in sections 14 and +        3.1.6. + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2. + + + +deBry, et al.                 Experimental                     [Page 53] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Group 2: Unsupported Attributes + +        This is a set of Operation attributes supplied by the client (in +        the request) that are not supported by the Printer object or +        that 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 + +        This is the same set of attributes as described in the Print-Job +        response (see section 3.2.1.2). + +3.3.2 Send-URI Operation + +   This OPTIONAL operation is identical to the Send-Document operation +   (see section 3.3.1) except that a client MUST supply a URI reference +   ("document-uri" operation attribute) rather than the document data +   itself.  If a Printer object supports this operation, clients can use +   both Send-URI or Send-Document operations to add new documents to an +   existing multi-document Job object.  However, if a client needs to +   indicate that the previous Send-URI or Send-Document was the last +   document,  the client MUST use the Send-Document operation with no +   document data and the "last-document" flag set to 'true' (rather than +   using a Send-URI operation with no "document-uri" operation +   attribute). + +   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 +   supplied URI before returning a response, just as in the Print-URI +   operation. + +3.3.3 Cancel-Job Operation + +   This REQUIRED operation allows a client to cancel a Print Job from +   the time the job is created up to the time it is completed, canceled, +   or aborted.  Since a Job might already be printing by the time a +   Cancel-Job is received, some media sheet pages might be printed +   before the job is actually terminated. + +3.3.3.1 Cancel-Job Request + +   The following groups of attributes are part of the Cancel-Job +   Request: + + + +deBry, et al.                 Experimental                     [Page 54] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.1. + +     Target: +        Either (1) the "printer-uri" (uri) plus "job-id" +        (integer(1:MAX))or (2) the "job-uri" (uri) operation +        attribute(s) which define the target for this operation as +        described in section 3.1.5. + +     Requesting User Name: +        The "requesting-user-name" (name(MAX)) attribute SHOULD be +        supplied by the client as described in section 8.3. + +     "message" (text(127)): +        The client OPTIONALLY supplies this attribute.  The Printer +        object OPTIONALLY supports this attribute. It is a message to +        the operator.  This "message" attribute is not the same as the +        "job-message-from-operator" attribute.  That attribute is used +        to report a message from the operator to the end user that +        queries that attribute.  This "message" operation attribute is +        used to send a message from the client to the operator along +        with the operation request.  It is an implementation decision of +        how or where to display this message to the operator (if at +        all). + +3.3.3.2 Cancel-Job Response + +   The following sets of attributes are part of the Cancel-Job Response: + +   Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in sections 14 and +        3.1.6. + +        If the job is already in the 'completed', 'aborted', or ' +        canceled' state, or the 'process-to-stop-point' value is set in +        the Job's "job-state-reasons" attribute, the Printer object MUST +        reject the request and return the 'client-error-not-possible' +        error status code. + + + + + + +deBry, et al.                 Experimental                     [Page 55] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2. + +   Group 2: Unsupported Attributes + +        This is a set of Operation attributes supplied by the client (in +        the request) that are not supported by the Printer object or +        that conflict with one another (see section 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. + +   Once a successful response has been sent, the implementation +   guarantees that the Job will eventually end up in the 'canceled' +   state. Between the time of the Cancel-Job operation is accepted and +   when the job enters the 'canceled' job-state (see section 4.3.7), the +   "job-state-reasons" attribute SHOULD contain the 'processing-to- +   stop-point' value which indicates to later queries that although the +   Job might still be 'processing', it will eventually end up in the ' +   canceled' state, not the 'completed' state. + +3.3.4 Get-Job-Attributes Operation + +   This REQUIRED operation allows a client to request the values of +   attributes of a Job object and it is almost identical to the Get- +   Printer-Attributes operation (see section 3.2.5).  The only +   differences are that the operation is directed at a Job object rather +   than a Printer object, there is no "document-format" operation +   attribute used when querying a Job object, and the returned attribute +   group is a set of Job object attributes rather than a set of Printer +   object attributes. + +   For Jobs, the possible names of attribute groups are: + +     - 'job-template': all of the Job Template attributes that apply to a +       Job object (the first column of the table in Section 4.2). +     - 'job-description': all of the Job Description attributes specified +       in Section 4.3. +     - 'all': the special group 'all' that includes all supported +       attributes. + +   Since a client MAY request specific attributes or named groups, there +   is a potential that there is some overlap.  For example, if a client +   requests, 'job-name' and 'job-description', the client is actually +   requesting the "job-name" attribute once by naming it explicitly, and +   once by inclusion in the 'job-description' group.  In such cases, the + + + +deBry, et al.                 Experimental                     [Page 56] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Printer object NEED NOT return the attribute only once in the +   response even if it is requested multiple times.  The client SHOULD +   NOT request the same attribute in multiple ways. + +   It is NOT REQUIRED that a Job object support all attributes belonging +   to a group (since some attributes are OPTIONAL).  However it is +   REQUIRED that each Job object support all group names. + +3.3.4.1 Get-Job-Attributes Request + +   The following groups of attributes are part of the Get-Job-Attributes +   Request when the request is directed at a Job object: + +   Group 1: Operation Attributes + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.1. + +     Target: +        Either (1) the "printer-uri" (uri) plus "job-id" +        (integer(1:MAX)) or (2) the "job-uri" (uri) operation +        attribute(s) which define the target for this operation as +        described in section 3.1.5. + +     Requesting User Name: +        The "requesting-user-name" (name(MAX)) attribute SHOULD be +        supplied by the client as described in section 8.3. + +     "requested-attributes" (1setOf keyword) : +        The client OPTIONALLY supplies this attribute.  The IPP object +        MUST support this attribute.   It is a set of attribute names +        and/or attribute group names in whose values the requester is +        interested.  If the client omits this attribute, the IPP object +        MUST respond as if this attribute had been supplied with a value +        of 'all'. + +3.3.4.2 Get-Job-Attributes Response + +   The Printer object returns the following sets of attributes as part +   of the Get-Job-Attributes Response: + + + + + + + + + + +deBry, et al.                 Experimental                     [Page 57] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Group 1: Operation Attributes + +     Status Message: +        In addition to the REQUIRED status code returned in every +        response, the response OPTIONALLY includes a "status-message" +        (text) operation attribute as described in sections 14 and +        3.1.6. + +     Natural Language and Character Set: +        The "attributes-charset" and "attributes-natural-language" +        attributes as described in section 3.1.4.2.  The "attributes- +        natural-language" MAY be the natural language of the Job object, +        rather than the one requested. + +   Group 2: Unsupported Attributes + +        This is a set of Operation attributes supplied by the client (in +        the request) that are not supported by the Printer object or +        that 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. + +   Group 3: Job Object Attributes + +        This is the set of requested attributes and their current +        values.  The IPP object ignores (does not respond with) any +        requested attribute or value which is not supported or which is +        restricted by the security policy in force, including whether +        the requesting user is the user that submitted the job (job +        originating user) or not (see section 8).  However, the IPP +        object MUST respond with the 'unknown' value for any supported +        attribute (including all RED butes) for which the IPP object +        does not know the value, s it would violate the security policy. +        See the description e "out-of-band" values in the beginning of +        Section 4.1. + +4. Object Attributes + +   This section describes the attributes with their corresponding +   attribute syntaxes and values that are part of the IPP model.  The +   sections below show the objects and their associated attributes which +   are included within the scope of this protocol.  Many of these +   attributes are derived from other relevant specifications: + + + +deBry, et al.                 Experimental                     [Page 58] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     - Document Printing Application (DPA) [ISO10175] +     - RFC 1759 Printer MIB [RFC1759] + +   Each attribute is uniquely identified in this document using a +   "keyword" (see section 12.2.1) which is the name of the attribute. +   The keyword is included in the section header describing that +   attribute. + +   Note: Not only are keywords used to identify attributes, but one of +   the attribute syntaxes described below is "keyword" so that some +   attributes have keyword values.  Therefore, these attributes are +   defined as having an attribute syntax that is a set of keywords. + +4.1 Attribute Syntaxes + +   This section defines the basic attribute syntax types that all clients +   and IPP objects MUST be able to accept in responses and accept in +   requests, respectively.  Each attribute description in sections 3 and +   4 includes the name of attribute syntax(es) in the heading (in +   parentheses).  A conforming implementation of an attribute MUST +   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, +   where the sub-section heading is the keyword name of the attribute +   syntax inside the single quotes.  In operation requests and responses +   each attribute value MUST be represented as one of the attribute +   syntaxes specified in the sub-section heading for the attribute.  In +   addition, the value of an attribute in a response (but not in a +   request) MAY be one of the "out-of-band" values.  Standard +   "out-of-band" values are: + +     'unknown': The attribute is supported by the IPP object, but the +        value is unknown to the IPP object for some reason. +     'unsupported': The attribute is unsupported by the IPP object.  This +        value MUST be returned only as the value of an attribute in the +        Unsupported Attributes Group. +     'no-value': The attribute is supported by the Printer object, but +        the system administrator has not yet configured a value. + +   The Encoding and Transport specification [RFC2565] defines mechanisms +   for passing "out-of-band" values.  All attributes in a request MUST +   have one or more values as defined in Sections 4.2 to 4.4.  Thus +   clients MUST 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 4.4 or a single "out-of-band" value. + + + + +deBry, et al.                 Experimental                     [Page 59] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Most attributes are defined to have a single attribute syntax. +   However, a few attributes (e.g., "job-sheet", "media", "job-hold- +   until") are defined to have several attribute syntaxes, depending on +   the value.  These multiple attribute syntaxes are separated by the +   "|" character in the sub-section heading to indicate the choice. +   Since each value MUST be tagged as to its attribute syntax in the + +   protocol, a single-valued attribute instance may have any one of its +   attribute syntaxes and a multi-valued attribute instance may have a +   mixture of its defined attribute syntaxes. + +4.1.1 'text' + +   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 +   the maximum length for each value of any text attribute.  However, if +   an attribute will always contain values whose maximum length is much +   less than MAX, the definition of that attribute will include a +   qualifier that defines the maximum length for values of that +   attribute.  For example: the "printer-location" attribute is +   specified as "printer-location (text(127))".  In this case, text +   values for "printer-location" MUST NOT exceed 127 octets; if supplied +   with a 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 ' +   text' syntax.  However, 'text' is used only for brevity; the formal +   interpretation of 'text' is: 'textWithoutLanguage | +   textWithLanguage'.  That is, for any attribute defined in this +   specification using the 'text' attribute syntax, all IPP objects and +   clients MUST support both the 'textWithoutLanguage' and ' +   textWithLanguage' attribute syntaxes.  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 +   support 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 + + + +deBry, et al.                 Experimental                     [Page 60] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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' + +   The 'textWithoutLanguage' syntax indicates a value that is sequence +   of zero or more characters.  Text strings are encoded using the rules +   of some charset.  The Printer object MUST support the UTF-8 charset +   [RFC2279] and MAY support additional charsets to represent 'text' +   values, provided that the charsets are registered with IANA [IANA- +   CS].  See Section 4.1.7 for the specification of the 'charset' +   attribute syntax, including restricted semantics and examples of +   charsets. + +4.1.1.2 'textWithLanguage' + +   The 'textWithLanguage' attribute syntax is a compound attribute +   syntax consisting of two parts: a 'textWithoutLanguage' part plus an +   additional 'naturalLanguage' (see section 4.1.8) part that overrides +   the natural language in force.  The 'naturalLanguage' part explicitly +   identifies the natural language that applies to the text part of that +   value and that value alone.  For any give text attribute, the ' +   textWithoutLanguage' part is limited to the maximum length defined +   for that attribute, but the 'naturalLanguage' part is always limited +   to 63 octets. Using the 'textWithLanguage' attribute syntax rather +   than the normal 'textWithoutLanguage' syntax is the so-called Natural +   Language Override mechanism and MUST be supported by all IPP objects +   and clients. + +   If the attribute is multi-valued (1setOf text), then the ' +   textWithLanguage' attribute syntax MUST be used to explicitly specify +   each attribute value whose natural language needs to be overridden. +   Other values in a multi-valued 'text' attribute in a request or a +   response revert to the natural language of the operation attribute. + +   In a create request, the Printer object MUST accept and store with +   the Job object any natural language in the "attributes-natural- +   language" operation attribute, whether the Printer object supports +   that natural language or not.  Furthermore, the Printer object MUST +   accept and store any 'textWithLanguage' attribute value, whether the + + + + + +deBry, et al.                 Experimental                     [Page 61] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Printer object supports that natural language or not.  These +   requirements are independent of the value of the "ipp-attribute- +   fidelity" operation attribute that the client MAY supply. + +   Example: If the client supplies the "attributes-natural-language" +   operation attribute with the value: 'en' indicating English, but the +   value of the "job-name" attribute is in French, the client MUST use +   the 'textWithLanguage' attribute syntax with the following two +   values: + +     'fr': Natural Language Override indicating French +     'Rapport Mensuel': the job name in French + +   See the Encoding and Transport document [RFC2565] for a detailed +   example of the 'textWithLanguage' attribute syntax. + +4.1.2 'name' + +   This syntax type is used for user-friendly strings, such as a Printer +   name, that, for humans, are more meaningful than identifiers.  Names +   are never translated from one natural language to another.  The ' +   name' attribute syntax is essentially the same as 'text', including +   the REQUIRED support of UTF-8 except that the sequence of characters +   is limited so that its encoded form MUST NOT exceed 255 (MAX) octets. + +   Also like 'text', 'name' is really an abbreviated notation for either +   'nameWithoutLanguage' or 'nameWithLanguage'.  That is, all IPP +   objects and clients MUST support both the 'nameWithoutLanguage' and ' +   nameWithLanguage' attribute syntaxes.  However, in actual usage and +   protocol execution, objects and clients accept and return only one of +   the two syntax per attribute.  The syntax 'name' never appears "on- +   the-wire". + +   Note: Only the 'text' and 'name' attribute syntaxes permit the +   Natural Language Override mechanism. + +   Some attributes are defined as 'type3 keyword | name'.  These +   attributes support values that are either type3 keywords or names. +   This dual-syntax mechanism enables a site administrator to extend +   these attributes to legally include values that are locally defined +   by the site administrator.  Such names are not registered with IANA. + +4.1.2.1 'nameWithoutLanguage' + +   The 'nameWithoutLanguage' syntax indicates a value that is sequence +   of zero or more characters so that its encoded form does not exceed +   MAX octets. + + + + +deBry, et al.                 Experimental                     [Page 62] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.1.2.2 'nameWithLanguage' + +   The 'nameWithLanguage' attribute syntax is a compound attribute +   syntax consisting of two parts: a 'nameWithoutLanguage' part plus an +   additional 'naturalLanguage' (see section 4.1.8) part that overrides +   the natural language in force.  The 'naturalLanguage' part explicitly +   identifies the natural language that applies to that name value and +   that name value alone. + +   The 'nameWithLanguage' attribute syntax behaves the same as the ' +   textWithLanguage' syntax.  If a name is in a language that is +   different than the rest of the object or operation, then this ' +   nameWithLanguage' syntax is used rather than the generic ' +   nameWithoutLanguage' syntax. + +   Example: If the client supplies the "attributes-natural-language" +   operation attribute with the value: 'en' indicating English, but the +   "printer-name" attribute is in German, the client MUST use the ' +   nameWithLanguage' attribute syntax as follows: + +     'de':  Natural Language Override indicating 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 + + + +deBry, et al.                 Experimental                     [Page 63] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +             matches neither 'fr' nor 'e'. + +4.1.3 'keyword' + +   The 'keyword' attribute syntax is a sequence of characters, length: 1 +   to 255, containing only the US-ASCII [ASCII] encoded values for +   lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot +   ("."), and 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 +   entities in the abstract protocol, i.e., entities identified in this +   document.  Keywords are used as attribute names or values of +   attributes.  Unlike 'text' and 'name' attribute values, 'keyword' +   values MUST NOT use the Natural Language Override mechanism, since +   they MUST always be US-ASCII and U.S. English. + +   Keywords are for use in the protocol.  A user interface will likely +   provide a mapping between protocol keywords and displayable user- +   friendly words and phrases which are localized to the natural +   language 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 mapped to other U.S. English words for U.S. English +   users, since the user interface is outside the scope of this +   document. + +   In the definition for each attribute of this syntax type, the full +   set of defined keyword values for that attribute are listed. + +   When a keyword is used to represent an attribute (its name), it MUST +   be unique within the full scope of all IPP objects and attributes. +   When a keyword is used to represent a value of an attribute, it MUST +   be unique just within the scope of that attribute.  That is, the same +   keyword MUST NOT be used for two different values within the same +   attribute to mean two different semantic ideas.  However, the same +   keyword MAY be used across two or more attributes, representing +   different semantic ideas for each attribute.  Section 6.1 describes +   how the protocol can be extended with new keyword values.  Examples +   of attribute name keywords: + +     "job-name" +     "attributes-charset" + +   Note:  This document uses "type1", "type2", and "type3" prefixes to +   the "keyword" basic syntax to indicate different levels of review for +   extensions (see section 6.1). + + + + + +deBry, et al.                 Experimental                     [Page 64] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.1.4 'enum' + +   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 ' +   keyword' name.  In the definition for each attribute of this syntax +   type, the full set of possible values for that attribute are listed. +   This syntax type is used for attributes for which there are enum +   values assigned by other standards, such as SNMP MIBs.  A number of +   attribute enum values in this specification are also used for +   corresponding attributes in other standards [RFC1759].  This syntax +   type is not used for attributes to which the system administrator may +   assign values.  Section 6.1 describes how the protocol can be +   extended with new enum values. + +   Enum values are for use in the protocol.  A user interface will +   provide a mapping between protocol enum values and displayable user- +   friendly 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 mapped to other U.S. English words for U.S. +   English users, since the user interface is outside the scope of this +   document. + +   Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP +   "out-of-band" value 'unknown'.  See the description of the "out-of- +   band" values at the beginning of Section 4.1.  Therefore, attributes +   of type 'enum' start at '3'. + +   Note:  This document uses "type1", "type2", and "type3" prefixes to +   the "enum" basic syntax to indicate different levels of review for +   extensions (see section 6.1). + +4.1.5 'uri' + +   The 'uri' attribute syntax is any valid Uniform Resource Identifier +   or URI [RFC2396].  Most often, URIs are simply Uniform Resource +   Locators or URLs.  The maximum length of URIs used as values of IPP +   attributes is 1023 octets.  Although most other IPP attribute syntax +   types allow for only lower-cased values, this attribute syntax type +   conforms to the case-sensitive and case-insensitive rules specified +   in [RFC2396]. + +4.1.6 'uriScheme' + +   The 'uriScheme' attribute syntax is a sequence of characters +   representing a URI scheme according to RFC 2396 [RFC2396].  Though +   RFC 2396 requires that the values be case-insensitive, IPP requires + + + + +deBry, et al.                 Experimental                     [Page 65] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   all lower case values in IPP attributes to simplify comparing by IPP +   clients and Printer objects.  Standard values for this syntax type +   are the following keywords: + +     'http':  for HTTP schemed URIs (e.g., "http:...") +     'https':  for use with HTTPS schemed URIs (e.g., "https:...") +        (not on IETF standards track) +     'ftp': for FTP schemed URIs (e.g., "ftp:...") +     'mailto': for SMTP schemed URIs (e.g., "mailto:...") +     'file': for file schemed URIs (e.g., "file:...") + +   A Printer object MAY support any URI 'scheme' that has been +   registered with IANA [IANA-MT]. The maximum length of URI 'scheme' +   values used to represent IPP attribute values is 63 octets. + +4.1.7 'charset' + +   The 'charset' attribute syntax is a standard identifier for a +   charset.  A charset is a coded character set and encoding scheme. +   Charsets are used for labeling certain document contents and 'text' +   and 'name' attribute values.  The syntax and semantics of this +   attribute syntax 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 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: + +     'utf-8':  ISO 10646 Universal Multiple-Octet Coded Character Set +        (UCS) represented as the UTF-8 [RFC2279] transfer encoding +        scheme in which US-ASCII is a subset charset. +     'us-ascii':  7-bit American Standard Code for Information +        Interchange (ASCII), ANSI X3.4-1986 [ASCII].  That standard +        defines US-ASCII, but RFC 2045 [RFC2045] eliminates most of the +        control characters from conformant usage in MIME and IPP. +     'iso-8859-1':  8-bit One-Byte Coded Character Set, Latin Alphabet +        Nr 1 [ISO8859-1].  That standard defines a coded character set +        that is used by Latin languages in the Western Hemisphere and +        Western Europe.  US-ASCII is a subset charset. + + + + + +deBry, et al.                 Experimental                     [Page 66] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'iso-10646-ucs-2':  ISO 10646 Universal Multiple-Octet Coded +        Character Set (UCS) represented as two octets (UCS-2), with the +        high order octet of each pair coming first (so-called Big Endian +        integer). + +   Some attribute descriptions MAY place additional requirements on +   charset values that may be used, such as REQUIRED values that MUST be +   supported or additional restrictions, such as requiring that the +   charset have US-ASCII as a subset charset. + +4.1.8 'naturalLanguage' + +   The 'naturalLanguage' attribute syntax is a standard identifier for a +   natural language and optionally a country.  The values for this +   syntax type are defined by RFC 1766 [RFC1766].  Though RFC 1766 +   requires that the values be case-insensitive US-ASCII, IPP requires +   all lower case to simplify comparing by IPP clients and Printer +   objects.  Examples include: + +     'en':  for English +     'en-us': for US English +     'fr': for French +     'de':  for German + +   The maximum length of 'naturalLanguage' values used to represent IPP +   attribute values is 63 octets. + +4.1.9 'mimeMediaType' + +   The 'mimeMediaType' attribute syntax is the Internet Media Type +   (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and +   registered according to the procedures of RFC 2048 [RFC2048] for +   identifying a document format.  The value MAY include a charset +   parameter, depending on the specification of the Media Type in the +   IANA Registry [IANA-MT].  Although most other IPP syntax types allow +   for only lower-cased values, this syntax type allows for mixed-case +   values which are case-insensitive. + +   Examples are: + +     'text/html': An HTML document +     'text/plain': A plain text document in US-ASCII (RFC 2046 indicates +        that in the absence of the charset parameter MUST mean US-ASCII +        rather than simply unspecified) [RFC2046]. +     'text/plain; charset=US-ASCII':  A plain text document in US-ASCII +        [52, 56]. +     'text/plain; charset=ISO-8859-1':  A plain text document in ISO +        8859-1 (Latin 1) [ISO8859-1]. + + + +deBry, et al.                 Experimental                     [Page 67] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'text/plain; charset=utf-8':  A plain text document in ISO 10646 +        represented as UTF-8 [RFC2279] +     'text/plain, charset=iso-10646-ucs-2':  A plain text document in +        ISO 10646 represented in two octets (UCS-2) [ISO10646-1] +     'application/postscript':  A PostScript document [RFC2046] +     'application/vnd.hp-PCL':  A PCL document [IANA-MT] (charset escape +        sequence embedded in the document data) +     'application/octet-stream':  Auto-sense - see below + +   One special type is 'application/octet-stream'.  If the Printer +   object supports this value, the Printer object MUST be capable of +   auto-sensing the format of the document data.  If the Printer +   object's default value attribute "document-format-default" is set to +   'application/octet-stream', the Printer object not only supports +   auto-sensing of the document format, but will depend on the result of +   applying its auto-sensing when the client does not supply the +   "document-format" attribute.  If the client supplies a document +   format value, the Printer MUST rely on the supplied attribute, rather +   than trust its auto-sensing algorithm.  To summarize: + +     1. If the client does not supply a document format value, the +        Printer MUST rely on its default value setting (which may be ' +        application/octet-stream' indicating an auto-sensing mechanism). +     2. If the client supplies a value other than 'application/octet- +        stream', the client is supplying valid information about the +        format of the document data and the Printer object MUST trust +        the client supplied value more than the outcome of applying an +        automatic format detection mechanism.  For example, the client +        may be requesting the printing of a PostScript file as a ' +        text/plain' document.  The Printer object MUST print a text +        representation of the PostScript commands rather than interpret +        the stream of 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 +   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. + + + + +deBry, et al.                 Experimental                     [Page 68] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.1.10 'octetString' + +   The 'octetString' attribute syntax is a sequence of octets encoded in +   a maximum of 1023 octets which is indicated in sub-section headers +   using the notation: octetString(MAX).  This syntax type is used for +   opaque data. + +4.1.11 'boolean' + +   The 'boolean' attribute syntax has only two values:  'true' and ' +   false'. + +4.1.12 'integer' + +   The 'integer' attribute syntax is an integer value that is in the +   range from -2**31 (MIN) to 2**31 - 1 (MAX).  Each individual +   attribute may specify the range constraint explicitly in sub-section +   headers if the range is different from the full range of possible +   integer values.  For example:  job-priority (integer(1:100)) for the +   "job-priority" attribute.  However, the enforcement of that +   additional constraint is up to the IPP objects, not the protocol. + +4.1.13 'rangeOfInteger' + +   The 'rangeOfInteger' attribute syntax is an ordered pair of integers +   that defines an inclusive range of integer values.  The first integer +   specifies the lower bound and the second specifies the upper bound. +   If a range constraint is specified in the header description for an +   attribute in this document whose attribute syntax is 'rangeOfInteger' +   (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum +   value), then the constraint applies to both integers. + +4.1.14 'dateTime' + +   The 'dateTime' attribute syntax is a standard, fixed length, 11 octet +   representation of the "DateAndTime" syntax as defined in RFC 2579 +   [RFC2579].  RFC 2579 also identifies an 8 octet representation of a +   "DateAndTime" value, but IPP objects MUST use the 11 octet +   representation.  A user interface will provide a mapping between +   protocol dateTime values and displayable user-friendly words or +   presentation values and phrases  which are localized to the natural +   language and date format of the user. + +4.1.15 'resolution' + +   The 'resolution' attribute syntax specifies a two-dimensional +   resolution in the indicated units.  It consists of 3 values: a cross +   feed direction resolution (positive integer value), a feed direction + + + +deBry, et al.                 Experimental                     [Page 69] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   resolution (positive integer value), and a units value.  The +   semantics of these three components are taken from the Printer MIB +   [RFC1759] suggested values.  That is, the cross feed direction +   component resolution component is the same as the +   prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed +   direction component resolution component is the same as the +   prtMarkerAddressabilityFeedDir in the Printer MIB, and the units +   component is the same as the prtMarkerAddressabilityUnit object in +   the Printer MIB (namely, '3' indicates dots per inch and '4' +   indicates dots per centimeter).  All three values MUST be present +   even if the first two values are the same.  Example:  '300', '600', ' +   3' indicates a 300 dpi cross-feed direction resolution, a 600 dpi +   feed direction resolution, since a '3' indicates dots per inch (dpi). + +4.1.16 '1setOf  X' + +   The '1setOf  X' attribute syntax is 1 or more values of attribute +   syntax type X.  This syntax type is used for multi-valued attributes. +   The syntax type is called '1setOf' rather than just 'setOf' as a +   reminder that the set of values MUST NOT be empty (i.e., a set of +   size 0).  Sets are normally unordered.  However each attribute +   description of this type may specify that the values MUST be in a +   certain order for that attribute. + +4.2 Job Template Attributes + +   Job Template attributes describe job processing behavior.  Support +   for Job Template attributes by a Printer object is OPTIONAL (see +   section 13.2.3 for a description of support for OPTIONAL attributes). +   Also, clients OPTIONALLY supply Job Template attributes in create +   requests. + +   Job Template attributes conform to the following rules.  For each Job +   Template attribute called "xxx": + +     1. If the Printer object supports "xxx" then it MUST support both a +        "xxx-default" attribute (unless there is a "No" in the table +        below) and a "xxx-supported" attribute.  If the Printer object +        doesn't support "xxx", then it MUST support neither an "xxx- +        default" attribute nor an "xxx-supported" attribute, and it MUST +        treat an attribute "xxx" supplied by a client as unsupported. +        An attribute "xxx" may be supported for some document formats +        and not supported for other document formats.  For example, it +        is expected that a 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'). + + + + +deBry, et al.                 Experimental                     [Page 70] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     2. "xxx" is OPTIONALLY supplied by the client in a create request. +        If "xxx" is supplied, the client is indicating a desired job +        processing behavior for this Job.  When "xxx" is not supplied, +        the client is indicating that the Printer object apply its +        default job processing behavior at job processing time if the +        document content does not contain an embedded instruction +        indicating an xxx-related behavior. + +        Note: Since an administrator MAY change the default value +        attribute after a Job object has been submitted but before it +        has been processed, the default value used by the Printer object +        at job processing time may be different that the default value +        in effect at job submission time. + +     3. The "xxx-supported" attribute is a Printer object attribute that +        describes which job processing behaviors are supported by that +        Printer object.  A client can query the Printer object to find +        out what xxx-related behaviors are supported by inspecting the +        returned values of the "xxx-supported" attribute. + +        Note: The "xxx" in each "xxx-supported" attribute name is +        singular, even though an "xxx-supported" attribute usually has +        more than one value, such as "job-sheet-supported", unless the +        "xxx" Job Template attribute is plural, such as "finishings" or +        "sides".  In such cases the "xxx-supported" attribute names are: +        "finishings-supported" and "sides-supported". + +     4. The "xxx-default" default value attribute describes what will be +        done at job processing time when no other job processing +        information is supplied by the client (either explicitly as an +        IPP attribute in the create request or implicitly as an embedded +        instruction within the document data). + +   If an application wishes to present an end user with a list of +   supported values from which to choose, the application SHOULD query +   the Printer object for its supported value attributes.  The +   application SHOULD also query the default value attributes.  If the +   application then limits selectable values to only those value that +   are supported, the application can guarantee that the values supplied +   by the client in the create request all fall within the set of +   supported values at the Printer.  When querying the Printer, the +   client MAY enumerate each attribute by name in the Get-Printer- +   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). + + + + + + +deBry, et al.                 Experimental                     [Page 71] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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 ' +   cover'.  A client can query the Printer object for the "finishings- +   supported" attribute and the "finishings-default" attribute.  The +   supported attribute contains a set of supported values.  The default +   value attribute contains the finishing value(s) that will be used for +   a new Job if the client does not supply a "finishings" attribute in +   the create request and the document data does not contain any +   corresponding finishing instructions.  If the client does supply the +   "finishings" attribute in the create request, the IPP object +   validates the value or values to make sure that they are a subset of +   the supported values identified in the Printer object's "finishings- +   supported" attribute.  See section 3.2.1.2. + +   The table below summarizes the names and relationships for all Job +   Template attributes. The first column of the table (labeled "Job +   Attribute") shows the name and syntax for each Job Template attribute +   in the Job object. These are the attributes that can optionally be +   supplied by the client in a create request.   The last two columns +   (labeled "Printer: Default Value Attribute" and "Printer: Supported +   Values Attribute") shows the name and syntax for each Job Template +   attribute in the Printer object (the default value attribute and the +   supported values attribute).  A "No" in the table means the Printer +   MUST NOT support the attribute (that is, the attribute is simply not +   applicable).  For brevity in the table, the 'text' and 'name' entries +   do not show the maximum length for each attribute. + +     +===================+======================+======================+ +     | Job Attribute     |Printer: Default Value|  Printer: Supported  | +     |                   |   Attribute          |   Values Attribute   | +     +===================+======================+======================+ +     | job-priority      | job-priority-default |job-priority-supported| +     | (integer 1:100)   | (integer 1:100)      |(integer 1:100)       | +     +-------------------+----------------------+----------------------+ +     | job-hold-until    | job-hold-until-      |job-hold-until-       | +     | (type3 keyword |  |  default             | supported            | +     |    name)          |  (type3 keyword |    |(1setOf               | +     |                   |    name)             | type3 keyword | name)| +     +-------------------+----------------------+----------------------+ +     | job-sheets        | job-sheets-default   |job-sheets-supported  | +     | (type3 keyword |  | (type3 keyword |     |(1setOf               | +     |    name)          |    name)             | type3 keyword | name)| +     +-------------------+----------------------+----------------------+ +     |multiple-document- |multiple-document-    |multiple-document-    | +     | handling          | handling-default     |handling-supported    | +     | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)| +     +-------------------+----------------------+----------------------+ + + + + +deBry, et al.                 Experimental                     [Page 72] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     +===================+======================+======================+ +     | Job Attribute     |Printer: Default Value|  Printer: Supported  | +     |                   |   Attribute          |   Values Attribute   | +     +===================+======================+======================+ +     | copies            | copies-default       | copies-supported     | +     | (integer (1:MAX)) | (integer (1:MAX))    | (rangeOfInteger      | +     |                   |                      |       (1:MAX))       | +     +-------------------+----------------------+----------------------+ +     | finishings        | finishings-default   | finishings-supported | +     |(1setOf type2 enum)|(1setOf type2 enum)   |(1setOf type2 enum)   | +     +-------------------+----------------------+----------------------+ +     | page-ranges       | No                   | page-ranges-         | +     | (1setOf           |                      | supported (boolean)  | +     |   rangeOfInteger  |                      |                      | +     |        (1:MAX))   |                      |                      | +     +-------------------+----------------------+----------------------+ +     | sides             | sides-default        | sides-supported      | +     | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)| +     +-------------------+----------------------+----------------------+ +     | number-up         | number-up-default    | number-up-supported  | +     | (integer (1:MAX)) | (integer (1:MAX))    |(1setOf integer       | +     |                   |                      | (1:MAX) |            | +     |                   |                      |  rangeOfInteger      | +     |                   |                      |   (1:MAX))           | +     +-------------------+----------------------+----------------------+ +     | orientation-      |orientation-requested-|orientation-requested-| +     |  requested        |  default             |  supported           | +     |   (type2 enum)    |  (type2 enum)        |  (1setOf type2 enum) | +     +-------------------+----------------------+----------------------+ +     | media             | media-default        | media-supported      | +     | (type3 keyword |  | (type3 keyword |     |(1setOf               | +     |    name)          |    name)             | type3 keyword | name)| +     |                   |                      |                      | +     |                   |                      | media-ready          | +     |                   |                      |(1setOf               | +     |                   |                      | type3 keyword | name)| +     +-------------------+----------------------+----------------------+ +     | printer-resolution| printer-resolution-  | printer-resolution-  | +     | (resolution)      |  default             | supported            | +     |                   | (resolution)         |(1setOf resolution)   | +     +-------------------+----------------------+----------------------+ +     | print-quality     | print-quality-default| print-quality-       | +     | (type2 enum)      | (type2 enum)         | supported            | +     |                   |                      |(1setOf type2 enum)   | +     +-------------------+----------------------+----------------------+ + + + + + + +deBry, et al.                 Experimental                     [Page 73] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.2.1 job-priority (integer(1:100)) + +   This attribute specifies a priority for scheduling the Job. A higher +   value specifies a higher priority. The value 1 indicates the lowest +   possible priority. The value 100 indicates the highest possible +   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 priority value of n-1 for all n. + +   If the Printer object supports this attribute, it MUST always support +   the full range from 1 to 100.  No administrative restrictions are +   permitted.  This way an end-user can always make full use of the +   entire range with any Printer object.  If privileged jobs are +   implemented outside IPP/1.0, they MUST have priorities higher than +   100, rather than restricting the range available to end-users. + +   If the client does not supply this attribute and this attribute is +   supported by the Printer object, the Printer object MUST use the +   value of the Printer object's "job-priority-default" at job +   submission time (unlike most Job Template attributes that are used if +   necessary at job processing time). + +   The syntax for the "job-priority-supported" is also integer(1:100). +   This single integer value indicates the number of priority levels +   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 +   values that are evenly distributed over the range from 1 to 100 using +   the formula: + +        roundToNearestInt((100x+50)/n) + +   where n is the value of "job-priority-supported" and x ranges from 0 +   through n-1. + +   For example, if n=1 the sequence of values is 50;  if n=2, the +   sequence of values is:  25 and 75;  if n = 3, the sequence of values +   is:  17, 50 and 83;  if n = 10, the sequence of values is: 5, 15, 25, +   35, 45, 55, 65, 75, 85, and 95;  if n = 100, the sequence of values +   is:  1, 2, 3, .  100. + +   If the value of the Printer object's "job-priority-supported" is 10 +   and the client supplies values in the range 1 to 10, the Printer +   object maps them to 5, in the range 11 to 20, the Printer object maps +   them to 15, etc. + + + + + + + +deBry, et al.                 Experimental                     [Page 74] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.2.2 job-hold-until (type3 keyword | name (MAX)) + +   This attribute specifies the named time period during which the Job +   MUST become a candidate for printing. + +   Standard keyword values for named time periods are: + +     'no-hold': immediately, if there are not other reasons to hold the +        job +     'day-time': during the day +     'evening': evening +     'night': night +     'weekend': weekend +     'second-shift': second-shift (after close of business) +     'third-shift': third-shift (after midnight) + +   An administrator MUST associate allowable print times with a named +   time period (by means outside IPP/1.0).  An administrator is +   encouraged to pick names that suggest the type of time period. An +   administrator MAY define additional values using the 'name' or ' +   keyword' attribute syntax, depending on implementation. + +   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 +   the job's "job-state-reasons" attribute, move the job to the ' +   pending-held' state, and MUST NOT schedule the job for printing until +   the specified time-period arrives.  When the specified time period +   arrives, the Printer MUST remove the 'job-hold-until-specified' value +   from the job's "job-state-reason" attribute and, if there are no +   other job state reasons that keep the job in the 'pending-held' +   state, the Printer MUST consider the job as a candidate for +   processing by moving the job to the 'pending' state. + +   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 for processing immediately. + +   If the client does not supply this attribute and this attribute is +   supported by the Printer object, the Printer object MUST use the +   value of the Printer object's "job-hold-until-default" at job +   submission time (unlike most Job Template attributes that are used if +   necessary at job processing time). + +4.2.3 job-sheets (type3 keyword | name(MAX)) + +   This attribute determines which job start/end sheet(s), if any, MUST +   be printed with a job. + + + + +deBry, et al.                 Experimental                     [Page 75] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Standard keyword values are: + +     'none': no job sheet is printed +     '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 + +   An administrator MAY define additional values using the 'name' or ' +   keyword' attribute syntax, depending on implementation. + +   Note: The effect of this attribute on jobs with multiple documents +   MAY be affected by the "multiple-document-handling" job attribute +   (section 4.2.4), depending on the job sheet semantics. + +4.2.4 multiple-document-handling (type2 keyword) + +   This attribute is relevant only if a job consists of two or more +   documents. The attribute controls finishing operations and the +   placement of one or more print-stream pages into impressions and onto +   media sheets.  When the value of the "copies" attribute exceeds 1, it +   also controls the order in which the copies that result from +   processing the documents are produced. For the purposes of this +   explanations, if "a" represents an instance of document data, then +   the result of processing the data in document "a" is a sequence of +   media sheets represented by "a(*)". + +   Standard keyword values are: + +     'single-document': If a Job object has multiple documents, say, the +        document data is called a and b, then the result of processing +        all the document data (a and then b) MUST be treated as a single +        sequence of media sheets for finishing operations; that is, +        finishing would be performed on the concatenation of the +        sequences a(*),b(*).  The Printer object MUST NOT force the data +        in each document instance to be formatted onto a new print- +        stream page, nor to start a new impression on a new media sheet. +        If more than one copy is made, the ordering of the sets of media +        sheets resulting from processing the document data MUST be a(*), +        b(*), a(*), b(*), ..., and the Printer object MUST force each +        copy (a(*),b(*)) to start on a new media sheet. +     'separate-documents-uncollated-copies': If a Job object has +        multiple documents, say, the document data is called a and b, +        then the result of processing the data in each document instance +        MUST be treated as a single sequence of media sheets for +        finishing operations; that is, the sets a(*) and b(*) would each +        be finished separately. The Printer object MUST force each copy +        of the result of processing the data in a single document to +        start on a new media sheet. If more than one copy is made, the + + + +deBry, et al.                 Experimental                     [Page 76] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        ordering of the sets of media sheets resulting from processing +        the document data MUST be a(*), a(*), ..., b(*), b(*) ... . +     'separate-documents-collated-copies': If a Job object has multiple +        documents, say, the document data is called a and b, then the +        result of processing the data in each document instance MUST be +        treated as a single sequence of media sheets for finishing +        operations; that is, the sets a(*) and b(*) would each be +        finished separately. The Printer object MUST force each copy of +        the result of processing the data in a single document to start +        on a new media sheet.  If more than one copy is made, the +        ordering of the sets of media sheets resulting from processing +        the document data MUST be 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- +   collated-copies' with respect to ordering of print-stream pages, but +   not media sheet generation, since 'single-document' will put the +   first page of the next document on the back side of a sheet if an odd +   number of pages have been produced so far for the job, while ' +   separate-documents-collated-copies' always forces the next document +   or document copy on to a new sheet.  In addition, if the "finishings" +   attribute specifies 'staple', then with 'single-document', documents +   a and b are stapled together as a single document with no regard to +   new sheets, with 'single-document-new-sheet', documents a and b are +   stapled together as a single document, but 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 +   within a document, i.e., where multiple copies of sheet n are +   produced before sheet n+1 of the same document. + +   The relationship of this attribute and the other attributes that +   control document processing is described in section 15.3. + +4.2.5 copies (integer(1:MAX)) + +   This attribute specifies the number of copies to be printed. + +   On many devices the supported number of collated copies will be +   limited by the number of physical output bins on the device, and may +   be different from the number of uncollated copies which can be + + + +deBry, et al.                 Experimental                     [Page 77] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   supported. + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +4.2.6 finishings (1setOf type2 enum) + +   This attribute identifies the finishing operations that the Printer +   uses for each copy of each printed document in the Job. For Jobs with +   multiple documents, the "multiple-document-handling" attribute +   determines what constitutes a "copy" for purposes of finishing. + +   Standard enum values are: + +     Value  Symbolic Name and Description + +     '3'    'none':  Perform no finishing +     '4'    'staple':  Bind the document(s) with one or more staples. +                  The exact number and placement of the staples is +                  site-defined. +     '5'    'punch':  This value indicates that holes are required in +                  the finished document. The exact number and placement +                  of the holes is site-defined  The punch specification +                  MAY be satisfied (in a site- and implementation- +                  specific manner) either by drilling/punching, or by +                  substituting pre-drilled media. +     '6'    'cover':  This value is specified when it is desired to +                  select a non-printed (or pre-printed) cover for the +                  document.  This does not supplant the specification of +                  a printed cover (on cover stock medium) by the +                  document itself. +     '7'    'bind':  This value indicates that a binding is to be +                  applied to the document; the type and placement of the +                  binding is site-defined." + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +   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 had been supplied (that is the 'none' value has +   no effect). + + + +deBry, et al.                 Experimental                     [Page 78] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) + +   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 +   printed.  Nothing is printed for any pages identified that do not +   exist in the document(s).  Ranges MUST be in ascending order, for +   example: 1-3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling +   Printer object can process the job in a single pass.  If the ranges +   are not ascending or are overlapping, the IPP object MUST reject the +   request and return the 'client-error-bad-request' status code.  The +   attribute is associated with print-stream pages not application- +   numbered pages (for example, the page numbers found in the headers +   and or footers for certain word processing applications). + +   For Jobs with multiple documents, the "multiple-document-handling" +   attribute determines what constitutes a "copy" for purposes of the +   specified page range(s).  When "multiple-document-handling" is ' +   single-document', the Printer object MUST apply each supplied page +   range once to the concatenation of the print-stream pages.  For +   example, if there are 8 documents of 10 pages each, the page-range ' +   41:60' prints the pages in the 5th and 6th documents as a single +   document and none of the pages of the other documents are printed. +   When "multiple-document-handling" is 'separate-documents-uncollated- +   copies' or 'separate-documents-collated-copies', the Printer object +   MUST apply each supplied page range repeatedly to each document copy. +   For the same job, the 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 +   device driver and this attribute would not be required.  However, +   when printing an archived document which has already been formatted, +   the end user may elect to print just a subset of the pages contained +   in the document.  In this case, if page-range = n.m is specified, the +   first page to be printed will be page n. All subsequent pages of the +   document 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. +   This capability may differ from one PDL to another. There is no +   "page-ranges-default" attribute.  If the "page-ranges" attribute is +   not supplied by the client, all pages of the document will be +   printed. + + + + + + + + +deBry, et al.                 Experimental                     [Page 79] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +4.2.8 sides (type2 keyword) + +   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 standard keyword values are: + +     'one-sided': imposes each consecutive print-stream page upon the +        same side of consecutive media sheets. +     'two-sided-long-edge': imposes each consecutive pair of print- +        stream pages upon front and back sides of consecutive media +        sheets, such that the orientation of each pair of print-stream +        pages on the medium would be correct for the reader as if for +        binding on the long edge.  This imposition is sometimes called ' +        duplex' or 'head-to-head'. +     'two-sided-short-edge': imposes each consecutive pair of print- +        stream pages upon front and back sides of consecutive media +        sheets, such that the orientation of each pair of print-stream +        pages on the medium would be correct for the reader as if for +        binding on the short edge.  This imposition is sometimes called +        'tumble' or 'head-to-toe'. + +   'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' +   all work the same for portrait or landscape.  However 'head-to-toe' +   is 'tumble' in portrait but 'duplex' in landscape.  'head-to-head' +   also switches between 'duplex' and 'tumble' when using portrait and +   landscape modes. + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +4.2.9 number-up (integer(1:MAX)) + +   This attribute specifies the number of print-stream pages to impose +   upon a single side of an instance of a selected medium.  For example, +   if the value is: + + + + + +deBry, et al.                 Experimental                     [Page 80] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     Value  Description + +     '1'    the Printer MUST place one print-stream page on a single +                  side of an instance of the selected medium (MAY add +                  some sort of translation, scaling, or rotation). +     '2'    the Printer MUST place two print-stream pages on a single +                  side of an instance of the selected medium (MAY add +                  some sort of translation, scaling, or rotation). +     '4'    the Printer MUST place four print-stream pages on a single +                  side of an instance of the selected medium (MAY add +                  some sort of translation, scaling, or rotation). + +   This attribute primarily controls the translation, scaling and +   rotation of print-stream pages. + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +4.2.10 orientation-requested (type2 enum) + +   This attribute indicates the desired orientation for printed print- +   stream pages; it does not describe the orientation of the client- +   supplied print-stream pages. + +   For some document formats (such as 'application/postscript'), the +   desired orientation of the print-stream pages is specified within the +   document data.  This information is generated by a device driver +   prior to the submission of the print job.  Other document formats +   (such as 'text/plain') do not include the notion of desired +   orientation within 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 has been submitted.  It is expected that a +   Printer object would only support "orientations-requested" for some +   document formats (e.g., 'text/plain' or 'text/html') but not others +   (e.g., 'application/postscript').  This is no different than any +   other Job Template attribute since section 4.2, item 1, points out +   that a Printer object may support or not support any Job Template +   attribute based on the document format supplied by the client. +   However, a special mention is made here since it is very likely that +   a Printer object will support "orientation-requested" for only a +   subset of the supported document formats. + + + + + + + +deBry, et al.                 Experimental                     [Page 81] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Standard enum values are: + +     Value  Symbolic Name and Description + +     '3'    'portrait':  The content will be imaged across the short +                  edge of the medium. +     '4'    'landscape':  The content will be imaged across the long +                  edge of the medium.  Landscape is defined to be a +                  rotation of the print-stream page to be imaged by +90 +                  degrees with respect to the medium (i.e. anti- +                  clockwise) from the portrait orientation.  Note:  The +                  +90 direction was chosen because simple finishing on +                  the long edge is the same edge whether portrait or +                  landscape +     '5'    'reverse-landscape':  The content will be imaged across the +                  long edge of the medium.  Reverse-landscape is defined +                  to be a rotation of the print-stream page to be imaged +                  by - 90 degrees with respect to the medium (i.e. +                  clockwise) from the portrait orientation.  Note: The ' +                  reverse-landscape' value was added because some +                  applications rotate landscape -90 degrees from +                  portrait, rather than +90 degrees. +     '6'    'reverse-portrait':  The content will be imaged across the +                  short edge of the medium.  Reverse-portrait is defined +                  to be a rotation of the print-stream page to be imaged +                  by 180 degrees with respect to the medium from the +                  portrait orientation.  Note: The 'reverse-portrait' +                  value was added for use with the "finishings" +                  attribute in cases where the opposite edge is desired +                  for finishing a portrait document on simple finishing +                  devices that have only one finishing position.  Thus a +                  'text'/plain' portrait document can be stapled "on the +                  right" by a simple finishing device as is common use +                  with some middle eastern languages such as Hebrew. + +   Note: The effect of this attribute on jobs with multiple documents is +   controlled by the "multiple-document-handling" job attribute (section +   4.2.4) and the relationship of this attribute and the other +   attributes that control document processing is described in section +   15.3. + +4.2.11 media (type3 keyword | name(MAX)) + +   This attribute identifies the medium that the Printer uses for all +   impressions of the Job. + +   The values for "media" include medium-names, medium-sizes, input- +   trays and electronic forms so that one attribute specifies the media. + + + +deBry, et al.                 Experimental                     [Page 82] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   If a Printer object supports a medium name as a value of this +   attribute, such a medium name implicitly selects an input-tray that +   contains the specified medium.  If a Printer object supports a medium +   size as a value of this attribute, such a medium size implicitly +   selects a 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 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 14. An administrator MAY define additional +   values using the 'name' or 'keyword' attribute syntax, depending on +   implementation. + +   There is also an additional Printer attribute named "media-ready" +   which differs from "media-supported" in that legal values only +   include the subset of "media-supported" values that are physically +   loaded and ready for printing with no operator intervention required. +   If an IPP object supports "media-supported", it NEED NOT support +   "media-ready". + +   The relationship of this attribute and the other attributes that +   control document processing is described in section 15.3. + +4.2.12 printer-resolution (resolution) + +   This attribute identifies the resolution that Printer uses for the +   Job. + +4.2.13 print-quality (type2 enum) + +   This attribute specifies the print quality that the Printer uses for +   the Job. + +   The standard enum values are: + +     Value  Symbolic Name and Description + +     '3'    'draft': lowest quality available on the printer +     '4'    'normal': normal or intermediate quality on the printer +     '5'    'high': highest quality available on the printer + + + +deBry, et al.                 Experimental                     [Page 83] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.3 Job Description Attributes + +   The attributes in this section form the attribute group called "job- +   description".  The following table summarizes these attributes.  The +   third column indicates whether the attribute is a REQUIRED attribute +   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' +   and 'name' attributes is indicated in parenthesizes. + +   +----------------------------+----------------------+----------------+ +   |      Attribute             |     Syntax           |   REQUIRED?    | +   +----------------------------+----------------------+----------------+ +   | job-uri                    | uri                  |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-id                     | integer(1:MAX)       |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-printer-uri            | uri                  |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-more-info              | uri                  |                | +   +----------------------------+----------------------+----------------+ +   | job-name                   | name (MAX)           |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-originating-user-name  | name (MAX)           |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-state                  | type1 enum           |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | job-state-reasons          | 1setOf type2 keyword |                | +   +----------------------------+----------------------+----------------+ +   | job-state-message          | text (MAX)           |                | +   +----------------------------+----------------------+----------------+ +   | number-of-documents        | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | output-device-assigned     | name (127)           |                | +   +----------------------------+----------------------+----------------+ +   | time-at-creation           | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | time-at-processing         | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | time-at-completed          | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | number-of-intervening-jobs | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | job-message-from-operator  | text (127)           |                | +   +----------------------------+----------------------+----------------+ +   | job-k-octets               | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | job-impressions            | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ + + + +deBry, et al.                 Experimental                     [Page 84] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   +----------------------------+----------------------+----------------+ +   |      Attribute             |     Syntax           |   REQUIRED?    | +   +----------------------------+----------------------+----------------+ +   | job-media-sheets           | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | job-k-octets-processed     | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | job-impressions-completed  | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | job-media-sheets-completed | integer (0:MAX)      |                | +   +----------------------------+----------------------+----------------+ +   | attributes-charset         | charset              |  REQUIRED      | +   +----------------------------+----------------------+----------------+ +   | attributes-natural-language| naturalLanguage      |  REQUIRED      | +   +----------------------------+----------------------+----------------+ + + +4.3.1 job-uri (uri) + +   This REQUIRED attribute contains the URI for the job.  The Printer +   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" +   attribute as part of the response to a create request.  The precise +   format of a Job URI is implementation dependent.  If the Printer +   object supports more than one URI and there is some relationship +   between the newly formed Job URI and the Printer object's URI, the +   Printer object uses the Printer URI supplied by the client in the +   create request.  For example, if the create request comes in over a +   secure channel, the new Job URI MUST use the same secure channel. +   This can be guaranteed because the Printer object is responsible for +   generating the Job URI and the Printer object is aware of its +   security configuration and policy as well as the Printer URI used in +   the create request. + +   For a description of this attribute and its relationship to "job-id" +   and "job-printer-uri" attribute, see the discussion in section 2.4 on +   "Object Identity". + +4.3.2 job-id (integer(1:MAX)) + +   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 +   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 included to allow for compatibility with SNMP index values +   which also cannot be 0. + + + + + +deBry, et al.                 Experimental                     [Page 85] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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 +   "Object Identity". + +4.3.3 job-printer-uri (uri) + +   This REQUIRED attribute identifies the Printer object that created +   this Job object.  When a Printer object creates a Job object, it +   populates this attribute with the Printer object URI that was used in +   the create 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 to the client.  The client queries the +   creating 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" +   and "job-id" attribute, see the discussion in section 2.4 on "Object +   Identity". + +4.3.4 job-more-info (uri) + +   Similar to "printer-more-info", this attribute contains the URI +   referencing some resource with more information about this Job +   object, perhaps an HTML page containing information about the Job. + +4.3.5 job-name (name(MAX)) + +   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 +   need to be unique between Jobs.  The Job's "job-name" attribute is +   set to the value supplied by the client in the "job-name" operation +   attribute in the create request (see Section 3.2.1.1).   If, however, +   the "job-name" operation attribute is not supplied by the client in +   the create request, the Printer object, on creation of the Job, MUST +   generate a name.  The printer SHOULD generate the value of the Job's +   "job-name" attribute from the first of the following sources that +   produces a value: 1) the "document-name" operation attribute of the +   first (or only) document, 2) the "document-URI" attribute of the +   first (or only) document, or 3) any other piece of Job specific +   and/or Document Content information. + +4.3.6 job-originating-user-name (name(MAX)) + +   This REQUIRED attribute contains the name of the end user that +   submitted the print job.  The Printer object sets this attribute to +   the most authenticated printable name that it can obtain from the +   authentication service over which the IPP operation was received. + + + + +deBry, et al.                 Experimental                     [Page 86] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Only if such is not available, does the Printer object use the value +   supplied by the client in the "requesting-user-name" operation +   attribute of the create 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 Description attribute.  This originating user id is used for +   authorization checks (if any) on all subsequent operation. + +4.3.7 job-state (type1 enum) + +   This REQUIRED attribute identifies the current state of the job. +   Even though the IPP protocol defines eight values for job states, +   implementations only need to support those states which are +   appropriate for the particular implementation.  In other words, a +   Printer supports only those job states implemented by the output +   device and available to the Printer object implementation. + +   Standard enum values are: + +     Values Symbolic Name and Description + +     '3'    'pending':  The job is a candidate to start processing, but +                  is not yet processing. + +     '4'    'pending-held':  The job is not a candidate for processing +                  for any number of reasons but will return to the ' +                  pending' state as soon as the reasons are no longer +                  present.  The job's "job-state-reason" attribute MUST +                  indicate why the job is no longer a candidate for +                  processing. + +     '5'    'processing':  One or more of: + +                  1.  the job is using, or is attempting to use, one or +                  more purely software processes that are analyzing, +                  creating, or interpreting a PDL, etc., +                  2.  the job is using, or is attempting to use, one or +                  more hardware devices that are interpreting a PDL, +                  making marks on a medium, and/or performing finishing, +                  such as stapling, etc., +                  3. the Printer object has made the job ready for +                  printing, but the output device is not yet printing +                  it, either because the job hasn't reached the output + + + + + +deBry, et al.                 Experimental                     [Page 87] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +                  device or because the job is queued in the output +                  device or some other spooler, awaiting the output +                  device to print it. + +                  When the job is in the 'processing' state, the entire +                  job state includes the detailed status represented in +                  the printer's "printer-state", "printer-state- +                  reasons", and "printer-state-message" attributes. + +                  Implementations MAY, though they NEED NOT,  include +                  additional values in the job's "job-state-reasons" +                  attribute to indicate the progress of the job, such as +                  adding the 'job-printing' value to indicate when the +                  output device is actually making marks on paper and/or +                  the 'processing-to-stop-point' value to indicate that +                  the IPP object is in the process of canceling or +                  aborting the job.  Most implementations won't bother +                  with this nuance. + +     '6'    'processing-stopped':  The job has stopped while processing +                  for any number of reasons and will return to the ' +                  processing' state as soon as the reasons are no longer +                  present. + +                  The job's "job-state-reason" attribute MAY indicate +                  why the job has stopped processing.  For example, if +                  the output device is stopped, the 'printer-stopped' +                  value MAY be included in the job's "job-state-reasons" +                  attribute. + +                  Note:  When an output device is stopped, the device +                  usually indicates its condition in human readable form +                  locally at the device.  A client can obtain more +                  complete device status remotely by querying the +                  Printer object's "printer-state", "printer-state- +                  reasons" and "printer-state-message" attributes. + +     '7'    'canceled':  The job has been canceled by a Cancel-Job +                  operation and the Printer object has completed +                  canceling the job and all job status attributes have +                  reached their final values for the job.  While the +                  Printer object is canceling the job, the job remains +                  in 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. + + + + + +deBry, et al.                 Experimental                     [Page 88] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +                  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 +                  while the job was in the 'processing' or 'processing- +                  stopped' state and the Printer has completed aborting +                  the job and all job status attributes have reached +                  their final values for the job.  While the Printer +                  object is 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 +                  warnings or errors after processing and all of the job +                  media sheets have been successfully stacked in the +                  appropriate output bin(s) and all job status +                  attributes have reached their final values for the +                  job.  The job's "job-state-reasons" attribute SHOULD +                  contain one of:  'completed-successfully', ' +                  completed-with-warnings', or 'completed-with-errors' +                  values. + +   The final value for this attribute MUST be one of: 'completed', ' +   canceled', or 'aborted' before the Printer removes the job +   altogether.  The length of time that jobs remain in the 'canceled', ' +   aborted', and 'completed' states depends on implementation. + +   The following figure shows the normal job state transitions. + +                                                      +----> canceled +                                                     / +       +----> pending --------> processing ---------+------> completed +       |         ^                   ^               \ +   --->+         |                   |                +----> aborted +       |         v                   v               / +       +----> pending-held    processing-stopped ---+ + +   Normally a job progresses from left to right.  Other state +   transitions are unlikely, but are not forbidden.  Not shown are the +   transitions to the 'canceled' state from the 'pending', 'pending- +   held', and 'processing-stopped' states. + + + +deBry, et al.                 Experimental                     [Page 89] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Jobs reach one of the three terminal states: 'completed', 'canceled', +   or 'aborted', after the jobs have completed all activity, including +   stacking output media, after the jobs have completed all activity, +   and all job status attributes have reached their final values for the +   job. + +   Note: As with all other IPP attributes, if the implementation can not +   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 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 implementation is just a gateway into some printing system +   that does not provide detailed status about the print job, the IPP +   Job object's state might literally be 'unknown'. + +4.3.8 job-state-reasons (1setOf  type2 keyword) + +   This attribute provides additional information about the job's +   current state, i.e., information that augments the value of the job's +   "job-state" attribute. + +   Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT +   implement them, even if (1) the output device supports the +   functionality represented by the reason and (2) is available to the +   Printer object implementation.  These values MAY be used with any job +   state or states for which the reason makes sense.  Furthermore, when +   implemented, the Printer MUST return these values when the reason +   applies and MUST NOT return them when the reason no longer applies +   whether the value of the Job's "job-state" attribute changed or not. +   When the Job does not have any reasons for being in its current +   state, the value of the Job's "job-state-reasons" attribute MUST be ' +   none'. + +   Note: While values cannot be added to the 'job-state' attribute +   without impacting deployed clients that take actions upon receiving +   "job-state" values, it is the intent that additional "job-state- +   reasons" values can be defined and registered without impacting such +   deployed clients.  In other words, the "job-state-reasons" attribute +   is intended to be extensible. + +   The following standard keyword values are defined.  For ease of +   understanding, the values are presented in the order in which the +   reasons are likely to occur (if implemented), starting with the ' +   job-incoming' value: + +     'none':  There are no reasons for the job's current state. +     'job-incoming':  The Create-Job operation has been accepted by the +        Printer, but the Printer is expecting additional Send-Document + + + +deBry, et al.                 Experimental                     [Page 90] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        and/or Send-URI operations and/or is accessing/accepting +        document data. +     'submission-interrupted':  The job was not completely submitted for +        some unforeseen reason, such as: (1) the Printer has crashed +        before the job was closed by the client, (2) the Printer or the +        document transfer method has crashed in some non-recoverable way +        before the document data was entirely transferred to the +        Printer, (3) the client crashed or failed to close the job +        before the time-out period.  See section 4.4.28. +     'job-outgoing':  The Printer is transmitting the job to the output +        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. +     'resources-are-not-ready':  At least one of the resources needed by +        the job, such as media, fonts, resource objects, etc., is not +        ready on any of the physical printer's for which the job is a +        candidate.  This condition MAY be detected when the job is +        accepted, or subsequently while the job is pending or +        processing, depending on implementation.  The job may remain in +        its current state or be moved to the 'pending-held' state, +        depending on implementation and/or job scheduling policy. +     'printer-stopped-partly':  The value of the Printer's "printer- +        state-reasons" attribute contains the value 'stopped-partly'. +     'printer-stopped':  The value of the Printer's "printer-state" +        attribute is 'stopped'. +     'job-interpreting': Job is in the 'processing' state, but more +        specifically, the Printer is interpreting the document data. +     'job-queued': Job is in the 'processing' state, but more +        specifically, the Printer has queued the document data. +     'job-transforming': Job is in the 'processing' state, but more +        specifically, the Printer is interpreting document data and +        producing another electronic representation. +     'job-printing':  The output device is marking media. This value is +        useful for Printers which spend a great deal of time processing +        (1) when no marking is happening and then want to show that +        marking is now happening or (2) when the job is in the process +        of being canceled or aborted while the job remains in the ' +        processing' state, but the marking has not yet stopped so that +        impression or sheet counts are still increasing for the job. +     'job-canceled-by-user':  The job was canceled by the owner of the +        job using the Cancel-Job request, i.e., by a user whose +        authenticated identity is the same as the value of the +        originating user that created the Job object, or by some other +        authorized end-user, such as a member of the job owner's +        security group. + + + +deBry, et al.                 Experimental                     [Page 91] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'job-canceled-by-operator':  The job was canceled by the operator +        using the Cancel-Job request, i.e., by a user who has been +        authenticated as having operator privileges (whether local or +        remote).  If the security policy is to allow anyone to cancel +        anyone's job, then this value may be used when the job is +        canceled by other than the owner of the job.  For such a +        security policy, in effect, everyone is an operator as far as +        canceling jobs with IPP is concerned. +     'job-canceled-at-device':  The job was canceled by an unidentified +        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, (2) has been aborted by the system and placed in the ' +        aborted' state, or (3) has been aborted by the system and placed +        in the 'pending-held' state, so that a user or operator can +        manually try the job again. +     'processing-to-stop-point':  The requester has issued a Cancel-Job +        operation or the Printer object has aborted the job, but is +        still performing some actions on the job until a specified stop +        point occurs or job termination/cleanup is completed. + +        This reason is recommended to be used in conjunction with the ' +        processing' job state to indicate that the Printer object is +        still performing some actions on the job while the job remains +        in the 'processing' state.  After all the job's job description +        attributes have stopped incrementing, the Printer object moves +        the job from the 'processing' state to the 'canceled' or ' +        aborted' job states. + +     'service-off-line':  The Printer is off-line and accepting no jobs. +        All 'pending' jobs are put into the 'pending-held' state.  This +        situation could be true if the service's or document transform's +        input is impaired or broken. +     'job-completed-successfully':  The job completed successfully. +     'job-completed-with-warnings':  The job completed with warnings. +     'job-completed-with-errors':  The job completed with errors (and +        possibly warnings too). + +4.3.9 job-state-message (text(MAX)) + +   This attribute specifies information about the "job-state" and "job- +   state-reasons" attributes in human readable text.  If the Printer +   object supports this attribute, the Printer object MUST be able to +   generate this message in any of the natural languages identified by +   the Printer's "generated-natural-language-supported" attribute (see +   the "attributes-natural-language" operation attribute specified in +   Section 3.1.4.1). + + + + + +deBry, et al.                 Experimental                     [Page 92] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Note:  the value SHOULD NOT contain additional information not +   contained in the values of the "job-state" and "job-states-reasons" +   attributes, such as interpreter error information.  Otherwise, +   application programs might attempt to parse the (localized text). +   For such additional information such as interpreter errors for +   application program consumption, a new attribute with keyword values, +   needs to be developed and registered. + +4.3.10 number-of-documents (integer(0:MAX)) + +   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 that the Printer has accepted for this job, regardless of +   whether the document data has reached the Printer object or not. + +   Implementations supporting the OPTIONAL Create-Job/Send- +   Document/Send-URI operations SHOULD support this attribute so that +   clients can query the number of documents in each job. + +4.3.11 output-device-assigned (name(127)) + +   This attribute identifies the output device to which the Printer +   object has assigned this job.  If an output device implements an +   embedded Printer object, the Printer object NEED NOT set this +   attribute.  If a print server implements a Printer object, the value +   MAY be empty (zero-length string) or not returned until the Printer +   object assigns an 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)) + +   This attribute indicates the point in time at which the Job object +   was created.  In order to populate this attribute, the Printer object +   uses the value in its "printer-up-time" attribute at the time the Job +   object is created. + +4.3.13 time-at-processing (integer(0:MAX)) + +   This attribute indicates the point in time at which the Job object +   began processing.  In order to populate this attribute, the Printer +   object uses the value in its "printer-up-time" attribute at the time +   the Job object is moved into the 'processing' state for the first +   time. + + + + + + + +deBry, et al.                 Experimental                     [Page 93] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.3.14 time-at-completed (integer(0:MAX)) + +   This attribute indicates the point in time at which the Job object +   completed (or was cancelled or aborted).  In order to populate this +   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 +   'canceled' or 'aborted' state. + +4.3.15 number-of-intervening-jobs (integer(0:MAX)) + +   This attribute indicates the number of jobs that are "ahead" of this +   job in the relative chronological order of expected time to complete +   (i.e., the current scheduled order). For efficiency, it is only +   necessary to calculate this value when an operation is performed that +   requests this attribute. + +4.3.16 job-message-from-operator (text(127)) + +   This attribute provides a message from an operator, system +   administrator or "intelligent" process to indicate to the end user +   the reasons for modification or other management action taken on a +   job. + +4.3.17 job-k-octets (integer(0:MAX)) + +   This attribute specifies the total size of the document(s) in K +   octets, i.e., in units of 1024 octets requested to be processed in +   the job.  The value MUST be rounded up, so that a job between 1 and +   1024 octets MUST be indicated as being 1, 1025 to 2048 MUST be 2, +   etc. + +   This value MUST NOT include the multiplicative factors contributed by +   the number of copies specified by the "copies" attribute, independent +   of whether the device can process multiple copies without making +   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 +   copies instruction embedded in the document data.  If the document +   data actually includes replications of the document data, this value +   will include such replication.  In other words, this value is always +   the size of the source document data, rather than a measure of the +   hardcopy output to be produced. + + + + + + +deBry, et al.                 Experimental                     [Page 94] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Note: This attribute and the following two attributes ("job- +   impressions" and "job-media-sheets") are not intended to be counters; +   they are 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)) + +   This attribute specifies the total size in number of impressions of +   the document(s) being submitted (see the definition of impression in +   section 13.2.5). + +   As with "job-k-octets", this value MUST NOT include the +   multiplicative factors contributed by the number of copies specified +   by the "copies" attribute, independent of whether the device can +   process multiple copies without making 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 +   reflects the size of the document(s) measured in impressions +   independent of the number of copies. + +   As with "job-k-octets", this value MUST also not include the +   multiplicative factor due to a copies instruction embedded in the +   document data.  If the document data actually includes replications +   of the document data, this value will include such replication.  In +   other words, this value is always the number of impressions in the +   source document data, rather than a measure of the number of +   impressions to be produced by the job. + +   See the Note in the "job-k-octets" attribute that also applies to +   this attribute. + +4.3.19 job-media-sheets (integer(0:MAX)) + +   This attribute specifies the total number of media sheets to be +   produced for this job. + +   Unlike the "job-k-octets" and the "job-impressions" attributes, this +   value MUST include the multiplicative factors contributed by the +   number of copies specified by the "copies" attribute and a 'number of +   copies' instruction embedded in the document data, if any.  This +   difference allows the system administrator to control the lower and + + + +deBry, et al.                 Experimental                     [Page 95] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   upper bounds of both (1) the size of the document(s) with "job-k- +   octets-supported" and "job-impressions-supported" and (2) the size of +   the job with "job-media-sheets-supported". + +   See the Note in the "job-k-octets" attribute that also applies to +   this attribute. + +4.3.20 job-k-octets-processed (integer(0:MAX)) + +   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 +   rounded up, so that a job between 1 and 1024 octets inclusive MUST be +   indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc. + +   For implementations where multiple copies are produced by the +   interpreter with only a single pass over the data, the final value +   MUST be equal to the value of the "job-k-octets" attribute.  For +   implementations where multiple copies are produced by the interpreter +   by processing the data for each copy, the final value MUST be a +   multiple of the value of the "job-k-octets" attribute. + +   Note: This attribute and the following two attributes ("job- +   impressions-completed" and "job-sheets-completed") are intended to be +   counters. That is, the value for a job that has not started +   processing MUST be 0.  When the job's "job-state" is 'processing' or +   'processing-stopped', this value is intended to contain the amount of +   the job that has been processed to the time at which the attributes +   are requested. + +4.3.21 job-impressions-completed (integer(0:MAX)) + +   This job attribute specifies the number of impressions completed for +   the job so far.  For printing devices, the impressions completed +   includes interpreting, marking, and stacking the output. + +   See the note in "job-k-octets-processed" which also applies to this +   attribute. + +4.3.22 job-media-sheets-completed (integer(0:MAX)) + +   This job attribute specifies the media-sheets completed marking and +   stacking for the entire job so far whether those sheets have been +   processed on one side or on both. + +   See the note in "job-k-octets-processed" which also applies to this +   attribute. + + + + + +deBry, et al.                 Experimental                     [Page 96] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.3.23 attributes-charset (charset) + +   This REQUIRED attribute is populated using the value in the client +   supplied "attributes-charset" attribute in the create request.  It +   identifies the charset (coded character set and encoding method) used +   by 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 complete description of the "attributes-charset" operation +   attribute. + +   This attribute does not indicate the charset in which the 'text' and +   'name' values are stored internally in the Job object.  The internal +   charset is implementation-defined.  The IPP object MUST convert from +   whatever the internal charset is to that being requested in an +   operation as specified in Section 3.1.4. + +4.3.24 attributes-natural-language (naturalLanguage) + +   This REQUIRED attribute is populated using the value in the client +   supplied "attributes-natural-language" attribute in the create +   request.  It identifies the natural language used for 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 +   complete description of the "attributes-natural-language" operation +   attribute.  See Sections 4.1.1.2 and 4.1.2.2 for how a Natural +   Language Override 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 + +   These attributes form the attribute group called "printer- +   description".  The following table summarizes these attributes, their +   syntax, and whether or not they are REQUIRED for a Printer object to +   support.  If they are not indicated as REQUIRED, they are OPTIONAL. +   The maximum size in octets for 'text' and 'name' attributes is +   indicated in parenthesizes. + +   Note: How these attributes are set by an Administrator is outside the +   scope of this specification. + + + + + + + + + + + +deBry, et al.                 Experimental                     [Page 97] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +  +----------------------------+----------------------+----------------+ +  |      Attribute             |     Syntax           |   REQUIRED?    | +  +----------------------------+----------------------+----------------+ +  | printer-uri-supported      | 1setOf uri           |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | uri-security-supported     | 1setOf type2 keyword |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | printer-name               | name (127)           |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | printer-location           | text (127)           |                | +  +----------------------------+----------------------+----------------+ +  | printer-info               | text (127)           |                | +  +----------------------------+----------------------+----------------+ +  | printer-more-info          | uri                  |                | +  +----------------------------+----------------------+----------------+ +  | printer-driver-installer   | uri                  |                | +  +----------------------------+----------------------+----------------+ +  | printer-make-and-model     | text (127)           |                | +  +----------------------------+----------------------+----------------+ +  | printer-more-info-         | uri                  |                | +  | manufacturer               |                      |                | +  +----------------------------+----------------------+----------------+ +  | printer-state              | type1 enum           |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | printer-state-reasons      | 1setOf type2 keyword |                | +  +----------------------------+----------------------+----------------+ +  | printer-state-message      | text (MAX)           |                | +  +----------------------------+----------------------+----------------+ +  | operations-supported       | 1setOf type2 enum    |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | charset-configured         | charset              |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | charset-supported          | 1setOf charset       |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | natural-language-configured| naturalLanguage      |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | generated-natural-language-| 1setOf               |  REQUIRED      | +  | supported                  |   naturalLanguage    |                | +  +----------------------------+----------------------+----------------+ +  | document-format-default    | mimeMediaType        |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | document-format-           | 1setOf               |  REQUIRED      | +  |   supported                |   mimeMediaType      |                | +  +----------------------------+----------------------+----------------+ +  | printer-is-accepting-jobs  | boolean              |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | queued-job-count           | integer (0:MAX)      |  RECOMMENDED   | +  +----------------------------+----------------------+----------------+ + + + +deBry, et al.                 Experimental                     [Page 98] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +  +----------------------------+----------------------+----------------+ +  |      Attribute             |     Syntax           |   REQUIRED?    | +  +----------------------------+----------------------+----------------+ +  | printer-message-from-      | text (127)           |                | +  | operator                   |                      |                | +  +----------------------------+----------------------+----------------+ +  | color-supported            | boolean              |                | +  +----------------------------+----------------------+----------------+ +  | reference-uri-schemes-     | 1setOf uriScheme     |                | +  |   supported                |                      |                | +  +----------------------------+----------------------+----------------+ +  | pdl-override-supported     | type2 keyword        |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | printer-up-time            | integer (1:MAX)      |  REQUIRED      | +  +----------------------------+----------------------+----------------+ +  | printer-current-time       | dateTime             |                | +  +----------------------------+----------------------+----------------+ +  | multiple-operation-time-out| integer (1:MAX)      |                | +  +----------------------------+----------------------+----------------+ +  | compression-supported      | 1setOf type3 keyword |                | +  +----------------------------+----------------------+----------------+ +  | job-k-octets-supported     | rangeOfInteger       |                | +  |                            |    (0:MAX)           |                | +  +----------------------------+----------------------+----------------+ +  | job-impressions-supported  | rangeOfInteger       |                | +  |                            |    (0:MAX)           |                | +  +----------------------------+----------------------+----------------+ +  | job-media-sheets-supported | rangeOfInteger       |                | +  |                            |    (0:MAX)           |                | +  +----------------------------+----------------------+----------------+ + +4.4.1 printer-uri-supported (1setOf uri) + +   This REQUIRED Printer attribute contains at least one URI for the +   Printer object.  It OPTIONALLY contains more than one URI for the +   Printer object.    An administrator determines a Printer object's +   URI(s) and configures this attribute to contain those URIs by some +   means outside the scope of IPP/1.0.  The precise format of this URI +   is implementation dependent and depends on the protocol.  See the +   next section for a description "uri-security-supported" which is the +   REQUIRED companion attribute to this "printer-uri-supported" +   attribute.  See section 2.4 on Printer object identity and section +   8.2 on security and URIs for more information. + + + + + + + + +deBry, et al.                 Experimental                     [Page 99] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.4.2 uri-security-supported (1setOf type2 keyword) + +   This REQUIRED Printer attribute MUST have the same cardinality +   (contain the same number of values) as the "printer-uri-supported" +   attribute.  This attribute identifies the security mechanisms used +   for each URI listed in the "printer-uri-supported" attribute.  The "i +   th" value in "uri-security-supported" corresponds to the "i th" value +   in "printer-uri-supported" and it describes the security mechanisms +   used for accessing the Printer object via that URI. The following +   standard values are defined: + +     'none': There are no secure communication channel protocols 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 +   administrator configures the "printer-uri-supported" and "uri- +   security-supported" attributes as follows: + +     "printer-uri-supported": 'http://acme.com/open-use-printer', ' +        http://acme.com/restricted-use-printer', ' +        http://acme.com/private-printer' +     "uri-security-supported": 'none', 'none', 'ssl3' + +   In this case, one Printer object has three URIs. + +     - For the first URI, 'http://acme.com/open-use-printer', the value +        'none' in "uri-security-supported" indicates that there is no +        secure channel protocol configured to run under HTTP.  The name +        implies that there is no Basic or Digest authentication being +        used, but it is up to the client to determine that while using +        HTTP underneath the IPP application protocol. +     - For the second URI, 'http://acme.com/restricted-use-printer', the +        value 'none' in "uri-security-supported" indicates that there is +        no secure channel protocol configured to run under HTTP.  In +        this case, although the name does imply that there is some sort +        of Basic or Digest authentication being used within HTTP, it is +        up to the client to determine that while using HTTP and by +        processing any '401 Unauthorized' HTTP error messages. +     - For the third URI, 'http://acme.com/private-printer', the value ' +        ssl3' in "uri-security-supported" indicates that SSL3 is being +        used to secure the channel.  The client SHOULD be prepared to +        use SSL3 framing to negotiate an acceptable ciphersuite to use +        while communicating with the Printer object.  In this case, the +        name implies the use of a secure communications channel, but the +        fact is made explicit by the presence of the 'ssl3' value in + + + +deBry, et al.                 Experimental                    [Page 100] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        "uri-security-supported".  The client does not need to resort to +        understanding which security it must use by following naming +        conventions or by parsing the URI to determine which security +        mechanisms are implied. + +   It is expected that many IPP Printer objects will be configured to +   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-supported" attribute.  No matter the configuration of +   the Printer object (whether it has only one URI or more than one +   URI), a client MUST supply only one URI in the target "printer-uri" +   operation attribute. + +4.4.3 printer-name (name(127)) + +   This REQUIRED Printer attribute contains the name of the Printer +   object.  It is a name that is more end-user friendly than a URI. An +   administrator determines a printer's name and sets this attribute to +   that name. This name may be the last part of the printer's URI or it +   may be unrelated.  In non-US-English locales, a name may contain +   characters that are not allowed in a URI. + +4.4.4 printer-location (text(127)) + +   This Printer attribute identifies the location of the device. This +   could include things like: "in Room 123A, second floor of building +   XYZ". + +4.4.5 printer-info (text(127)) + +   This Printer attribute identifies the descriptive information about +   this Printer object.  This could include things like: "This printer +   can be used for printing color transparencies for HR presentations", +   or "Out of courtesy for others, please print only small (1-5 page) +   jobs at this printer", or even "This printer is going away on July 1, +   1997, please find a new printer". + +4.4.6 printer-more-info (uri) + +   This Printer attribute contains a URI used to obtain more information +   about this specific Printer object.  For example, this could be an +   HTTP type URI referencing an HTML page accessible to a Web Browser. +   The information obtained from this URI is intended for end user +   consumption.  Features outside the scope of IPP can be accessed from +   this URI.  The information is intended to be specific to this printer +   instance and site specific services (e.g. job pricing, services +   offered, end user assistance). The device manufacturer may initially +   populate this attribute. + + + +deBry, et al.                 Experimental                    [Page 101] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +4.4.7 printer-driver-installer (uri) + +   This Printer attribute contains a URI to use to locate the driver +   installer for this Printer object.   This attribute is intended for +   consumption by automata.  The mechanics of print driver installation +   is outside the scope of IPP.  The device manufacturer may initially +   populate this attribute. + +4.4.8 printer-make-and-model (text(127)) + +   This Printer attribute identifies the make and model of the device. +   The device manufacturer may initially populate this attribute. + +4.4.9 printer-more-info-manufacturer (uri) + +   This Printer attribute contains a URI used to obtain more information +   about this type of device.  The information obtained from this URI is +   intended for end user consumption.  Features outside the scope of IPP +   can be accessed from this URI (e.g., latest firmware, upgrades, print +   drivers, optional features available, details on color support).  The +   information is intended to be germane to this printer without regard +   to site specific modifications or services. The device manufacturer +   may initially populate this attribute. + +4.4.10 printer-state (type1 enum) + +   This REQUIRED Printer attribute identifies the current state of the +   device.  The "printer-state reasons" attribute augments the +   "printer-state" attribute to give more detailed information about the +   Printer in 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 enum values are defined: + +     Value  Symbolic Name and Description + +     '3'    'idle':  If a Printer receives a job (whose required +                  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 +                  reasons, they MUST be reasons that would not prevent a +                  job from transiting into the 'processing' state +                  immediately, e.g., 'toner-low'. Note: if a Printer + + + +deBry, et al.                 Experimental                    [Page 102] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +                  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 +                  resources are ready) while in this state, such a job +                  MUST transit into the 'pending' state immediately. +                  Such a job MUST transit into the 'processing' state +                  only after jobs ahead of it complete.  If the +                  "printer-state-reasons" attribute contains any +                  reasons, they MUST be reasons that do not prevent the +                  current job from printing, e.g.  'toner-low'.  Note: +                  if a Printer controls more than one output device, the +                  above definition implies that a Printer is ' +                  processing' if at least one output device is +                  processing, and none is idle. + +     '5'    'stopped':  If a Printer receives a job (whose required +                  resources are ready) while in this state, such a job +                  MUST transit into the 'pending' state immediately. +                  Such a job MUST transit into the 'processing' state +                  only after some human fixes the problem that stopped +                  the printer and after jobs ahead of it complete +                  processing.  If supported, the "printer-state-reasons" +                  attribute MUST contain at least one reason, e.g. ' +                  media-jam', which prevents it from either processing +                  the current job or transitioning a 'pending' job to +                  the 'processing' state. + +                  Note: if a Printer controls more than one output +                  device, the above definition implies that a Printer is +                  'stopped' only if all output devices are stopped. +                  Also, it is tempting to define 'stopped' as when a +                  sufficient number of output devices are stopped and +                  leave it to an implementation to define the sufficient +                  number.  But such a rule complicates the definition of +                  'stopped' and 'processing'. For example, with this +                  alternate definition 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) + +   This Printer attribute supplies additional detail about the device's +   state. + + + + + + +deBry, et al.                 Experimental                    [Page 103] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Each keyword value MAY have a suffix to indicate its level of +   severity.  The three levels are: report (least severe), warning, and +   error (most severe). + +     - '-report':  This suffix indicates that the reason is a "report". +        An implementation may choose to omit some or all reports. Some +        reports specify finer granularity about the printer state; +        others serve as a precursor to a warning. A report MUST contain +        nothing that could affect the printed output. +     - '-warning': This suffix indicates that the reason is a "warning". +        An implementation may choose to omit some or all warnings. +        Warnings serve as a precursor to an error. A warning MUST +        contain nothing that prevents a job from completing, though in +        some cases the output may be of lower quality. +     - '-error': This suffix indicates that the reason is an "error". +        An implementation MUST include all errors. If this attribute +        contains one or more errors, printer MUST be in the stopped +        state. + +   If the implementation does not add any one of the three suffixes, all +   parties MUST assume that the reason is an "error". + +   If a Printer object controls more than one output device, each value +   of this attribute MAY apply to one or more of the output devices.  An +   error on one output device that does not stop the Printer object as a +   whole 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 +   'stopped', then there MUST be an error reason among the values in the +   "printer-state-reasons" attribute. + +   The following standard keyword values are defined: + +     'other': The device has detected an error other than one listed in +        this document. +     'none': There are not reasons. This state reason is semantically +        equivalent to "printer-state-reasons" without any value. +     'media-needed': A tray has run out of media. +     'media-jam': The device has a media jam. +     'paused': Someone has paused the Printer object.  In this state, a +        Printer MUST NOT produce printed output, but it MUST perform +        other operations requested by a client.  If a Printer had been +        printing a 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 +        the device may be powered down or physically removed.  In this +        state, a Printer object MUST NOT produce printed output, and +        unless the Printer object is realized by a print server that is + + + +deBry, et al.                 Experimental                    [Page 104] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        still active, the Printer object MUST perform no other +        operations requested by a client, including returning this +        value. If a Printer object had been printing a job when it was +        shutdown, the Printer NEED NOT resume printing that job when the +        Printer is no longer shutdown. If the Printer resumes printing +        such a job, it may leave evidence in the printed output of such +        a shutdown, e.g. the part printed before the shutdown may be +        printed a second time after the shutdown. +     '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 printing the job for an arbitrarily long time depending on +        the usage of the output device by other servers on the network). +     'timed-out': The server was able to connect to the output device +        (or is always connected), but was unable to get a response from +        the output device. +     'stopping': The Printer object is in the process of stopping the +        device and will be stopped in a while. When the device is +        stopped, the Printer object will change the Printer object's +        state to 'stopped'.  The 'stopping-warning' reason is never an +        error, even for a Printer with a single output device.  When an +        output-device ceases accepting jobs, the Printer will have this +        reason while the output device completes printing. +     'stopped-partly': When a Printer object controls more than one +        output device, this reason indicates that one or more output +        devices are stopped.  If the reason is a report, fewer than half +        of the output devices are stopped.  If the reason is a warning, +        fewer than all of the output devices are stopped. +     'toner-low': The device is low on toner. +     'toner-empty': The device is out of toner. +     'spool-area-full': The limit of persistent storage allocated for +        spooling has been reached. +     'cover-open': One or more covers on the device are open. +     'interlock-open': One or more interlock devices on the printer are +        unlocked. +     'door-open': One or more doors on the device are open. +     'input-tray-missing': One or more input trays are not in the +        device. +     'media-low': At least one input tray is low on media. +     'media-empty': At least one input tray is empty. +     'output-tray-missing': One or more output trays are not in the +        device +     'output-area-almost-full': One or more output area is almost full +        (e.g. tray, stacker, collator). +     'output-area-full': One or more output area is full. (e.g. tray, +        stacker, collator) +     'marker-supply-low': The device is low on at least one marker +        supply.  (e.g. toner, ink, ribbon) + + + +deBry, et al.                 Experimental                    [Page 105] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'marker-supply-empty: The device is out of at least one marker +        supply. (e.g. toner, ink, ribbon) +     'marker-waste-almost-full': The device marker supply waste +        receptacle is almost full. +     'marker-waste-full': The device marker supply waste receptacle is +        full. +     'fuser-over-temp': The fuser temperature is above normal. +     'fuser-under-temp': The fuser temperature is below normal. +     'opc-near-eol': The optical photo conductor is near end of life. +     'opc-life-over': The optical photo conductor is no longer +        functioning. +     'developer-low': The device is low on developer. +     'developer-empty: The device is out of developer. +     'interpreter-resource-unavailable': An interpreter resource is +        unavailable (i.e. font, form) + +4.4.12 printer-state-message (text(MAX)) + +   This Printer attribute specifies the additional information about the +   printer state and printer state reasons in human readable text.  If +   the Printer object supports this attribute, the Printer object MUST +   be able to generate this message in any of the natural languages +   identified by the Printer's "generated-natural-language-supported" +   attribute (see the "attributes-natural-language" operation attribute +   specified in Section 3.1.4.1). + +4.4.13 operations-supported (1setOf type2 enum) + +   This REQUIRED Printer attribute specifies the set of supported +   operations for this Printer object and contained Job objects.  All +   32-bit enum values for this attribute MUST NOT exceed 0x8FFF, since +   these values are passed in two octets in each Protocol request +   [RFC2565]. + +   The following standard enum and "operation-id" (see section 3.1.2) +   values are defined: + +     Value               Operation Name +     -----------------   ------------------------------------- + +     0x0000              reserved, not used +     0x0001              reserved, not used +     0x0002              Print-Job +     0x0003              Print-URI +     0x0004              Validate-Job +     0x0005              Create-Job +     0x0006              Send-Document +     0x0007              Send-URI + + + +deBry, et al.                 Experimental                    [Page 106] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     0x0008              Cancel-Job +     0x0009              Get-Job-Attributes +     0x000A              Get-Jobs +     0x000B              Get-Printer-Attributes +     0x000C-0x3FFF       reserved for future operations +     0x4000-0x8FFF       reserved for private extensions + +   This allows for certain vendors to implement private extensions that +   are guaranteed to not conflict with future registered extensions. +   However, there is no guarantee that two or more private extensions +   will not conflict. + +4.4.14 charset-configured (charset) + +   This REQUIRED Printer attribute identifies the charset that the +   Printer object has been configured to represent 'text' and 'name' +   Printer attributes that are set by the operator, system +   administrator, or manufacturer, i.e., for "printer-name" (name), +   "printer-location" (text), "printer-info" (text), and "printer-make- +   and-model" (text).  Therefore, the value of the Printer object's +   "charset-configured" attribute MUST also be among the values of the +   Printer object's "charset-supported" attribute. + +4.4.15 charset-supported (1setOf charset) + +   This REQUIRED Printer attribute identifies the set of charsets that +   the Printer and contained Job objects support in attributes with +   attribute syntax 'text' and 'name'. At least the value 'utf-8' MUST +   be present, since IPP objects MUST support the UTF-8 [RFC2279] +   charset.  If a Printer object supports a charset, it means that for +   all attributes of syntax 'text' and 'name' the IPP object MUST (1) +   accept the charset in requests and return the charset in responses as +   needed. + +   If more charsets than UTF-8 are supported, the IPP object MUST +   perform charset conversion between the charsets as described in +   Section 3.2.1.2. + +4.4.16 natural-language-configured (naturalLanguage) + +   This REQUIRED Printer attribute identifies the natural language that +   the Printer object has been configured to represent 'text' and 'name' +   Printer attributes that are set by the operator, system +   administrator, or manufacturer, i.e., for "printer-name" (name), +   "printer-location" (text), "printer-info" (text), and "printer-make- +   and-model" (text).  When returning these Printer attributes, the +   Printer object MAY return them in the configured natural language +   specified by this attribute, instead of the natural language + + + +deBry, et al.                 Experimental                    [Page 107] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   requested by the client in the "attributes-natural-language" +   operation attribute.  See Section 3.1.4.1 for the specification of +   the OPTIONAL multiple natural language support.  Therefore, the value +   of the Printer object's "natural-language-configured" attribute MUST +   also be among the values of the Printer object's "generated-natural- +   language-supported" attribute. + +4.4.17 generated-natural-language-supported (1setOf naturalLanguage) + +   This REQUIRED Printer attribute identifies the natural language(s) +   that the Printer object and contained Job objects support in +   attributes with attribute syntax 'text' and 'name'.  The natural +   language(s) supported depends on implementation and/or configuration. +   Unlike charsets, IPP 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 of the attributes for which the Printer or Job object generates +   messages, i.e., for the "job-state-message" and "printer-state- +   message" attributes and Operation Messages (see Section 3.1.5) in +   operation responses, the Printer and Job objects MUST be able to +   generate messages in any of the Printer's supported natural +   languages.  See section 3.1.4 for the specification of 'text' and ' +   name' attributes in operation requests and responses. + +   Note: A Printer object that supports multiple natural languages, +   often has separate catalogs of messages, one for each natural +   language supported. + +4.4.18 document-format-default (mimeMediaType) + +   This REQUIRED Printer attribute identifies the document format that +   the Printer object has been configured to assume if the client does +   not supply a "document-format" operation attribute in any of the +   operation requests that supply document data.  The standard values +   for this attribute are Internet Media types (sometimes called MIME +   types).  For further details see the description of the ' +   mimeMediaType' attribute syntax in Section 4.1.9. + +4.4.19 document-format-supported (1setOf mimeMediaType) + +   This REQUIRED Printer attribute identifies the set of document +   formats that the Printer object and contained Job objects can +   support. For further details see the description of the ' +   mimeMediaType' attribute syntax in Section 4.1.9. + +4.4.20 printer-is-accepting-jobs (boolean) + + + +deBry, et al.                 Experimental                    [Page 108] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   This REQUIRED Printer attribute indicates whether the printer is +   currently able to accept jobs, i.e., is accepting Print-Job, Print- +   URI, and Create-Job requests.  If the value is 'true', the printer is +   accepting jobs.  If the value is 'false', the Printer object is +   currently rejecting any jobs submitted to it.  In this case, the +   Printer object returns the 'server-error-not-accepting-jobs' status +   code. + +   Note: This value is independent of the "printer-state" and "printer- +   state-reasons" attributes because its value does not affect the +   current job; rather it affects future jobs.  This attribute may cause +   the Printer to reject jobs when the "printer-state" is 'idle' or it +   may cause the Printer object to accepts jobs when the "printer-state" +   is 'stopped'. + +4.4.21 queued-job-count (integer(0:MAX)) + +   This RECOMMENDED Printer attribute contains a count of the number of +   jobs that are either 'pending', 'processing', 'pending-held', or ' +   processing-stopped' and is set by the Printer object. + +4.4.22 printer-message-from-operator (text(127)) + +   This Printer attribute provides a message from an operator, system +   administrator or "intelligent" process to indicate to the end user +   information or status of the printer, such as why it is unavailable +   or when it is expected to be available. + +4.4.23 color-supported (boolean) + +   This Printer attribute identifies whether the device is capable of +   any type of color printing at all, including highlight color.  All +   document instructions having to do with color are embedded within the +   document PDL (none are external IPP attributes in IPP/1.0). + +   Note:  end-users are able to determine the nature and details of the +   color support by querying the "printer-more-info-manufacturer" +   Printer attribute. + +4.4.24 reference-uri-schemes-supported (1setOf uriScheme) + +   This Printer attribute specifies which URI schemes are supported for +   use in the "document-uri" operation attribute of the Print-URI or +   Send-URI operation.  If a Printer object supports these optional +   operations, it MUST support the "reference-uri-schemes-supported" +   Printer attribute with at least the following schemed URI value: + +     'ftp':  The Printer object will use an FTP 'get' operation as + + + +deBry, et al.                 Experimental                    [Page 109] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        defined in RFC 2228 [RFC2228] using FTP URLs as defined by +        [RFC2396] and[RFC2316]. + +   The Printer object MAY OPTIONALLY support other URI schemes (see +   section 4.1.6). + +4.4.25 pdl-override-supported (type2 keyword) + +   This REQUIRED Printer attribute expresses the ability for a +   particular Printer implementation to either attempt to override +   document data instructions with IPP attributes or not. + +   This attribute takes on the following values: + +     - 'attempted': This value indicates that the Printer object +       attempts to make the IPP attribute values take precedence over +       embedded instructions in the document data, however there is no +       guarantee. + +     - '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 15 contains a full description of how this attribute +   interacts with and affects other IPP attributes, especially the +   "ipp-attribute-fidelity" attribute. + +4.4.26 printer-up-time (integer(1:MAX)) + +   This REQUIRED Printer attribute indicates the amount of time (in +   seconds) that this instance of this Printer implementation has been +   up and running.  This value is used to populate the Job attributes +   "time-at-creation", "time-at-processing", and "time-at-completed". +   These time values are all measured in seconds and all have meaning +   only relative to this attribute, "printer-up-time".  The value is a +   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, +   the implementation MAY: + +     1. Know how long it has been down, and resume at some value greater +        than 'n', or +     2. Restart from 1. + +   In the first case, the Printer SHOULD not tweak any existing related +   Job attributes ("time-at-creation", "time-at-processing", and "time- +   at-completed").  In the second case, the Printer object SHOULD reset + + + +deBry, et al.                 Experimental                    [Page 110] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   those attributes to 0.  If a client queries a time-related Job +   attribute and finds the value to be 0, the client MUST assume that +   the Job was submitted in some life other than the Printer's current +   life. + +4.4.27 printer-current-time (dateTime) + +   This Printer attribute indicates the current absolute wall-clock +   time.  If an implementation supports this attribute, then a client +   could calculate the absolute wall-clock time each Job's "time-at- +   creation", "time-at-processing", and "time-at-completed" attributes +   by using both "printer-up-time" and this attribute, "printer- +   current-time".  If an implementation does not support this attribute, +   a client can only calculate the relative time of certain events based +   on the REQUIRED "printer-up-time" attribute. + +4.4.28 multiple-operation-time-out (integer(1:MAX)) + +   This Printer attributes identifies the minimum time (in seconds) that +   the Printer object waits for additional Send-Document or Send-URI +   operations to follow a still-open multi-document Job object before +   taking  any recovery actions, such as the ones indicated in section +   3.3.1. + +   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) + +   This Printer attribute identifies the set of supported compression +   algorithms for document data.  Compression only applies to the +   document data; compression does not apply to the encoding of the IPP +   operation itself.  The supported values are used to validate the +   client supplied "compression" operation attributes in Print-Job, +   Send-Document, and Send-URI requests. + +   Standard values are : + +     'none': no compression is used. +     'deflate':  ZIP public domain inflate/deflate) compression +        technology +     'gzip' GNU zip compression technology described in RFC 1952 +        [RFC1952]. +     'compress': UNIX compression technology + +4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) + + + +deBry, et al.                 Experimental                    [Page 111] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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 +   supported values are used to validate the client supplied "job-k- +   octets" operation attributes in create requests.  The corresponding +   job description attribute "job-k-octets" is defined in section +   4.3.17. + +   4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) + +   This Printer attribute specifies the upper and lower bounds for the +   number of impressions per job. The supported values are used to +   validate the client supplied "job-impressions" operation attributes +   in create requests.  The corresponding job description attribute +   "job-impressions" is defined in section 4.3.18. + +4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) + +   This Printer attribute specifies the upper and lower bounds for the +   number of media sheets per job. The supported values are used to +   validate the client supplied "job-media-sheets" operation attributes +   in create requests.  The corresponding Job attribute "job-media- +   sheets" is defined in section 4.3.19. + +5. Conformance + +   This section describes conformance issues and requirements. This +   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. + +5.1 Client Conformance Requirements + +   A conforming client MUST support all REQUIRED operations as defined +   in this document.  For each attribute included in an operation +   request, a conforming client MUST supply a value whose type and value +   syntax conforms to the requirements of the Model document as +   specified in Sections 3 and 4.  A conforming client MAY supply any +   registered extensions and/or private extensions in an operation +   request, as long as they meet the requirements in Section 6. + +   Otherwise, there are no conformance requirements placed on the user +   interfaces provided by IPP clients or their applications.  For +   example, one application might not allow an end user to submit +   multiple documents per job, while another does.  One application +   might first query a Printer object in order to supply a graphical +   user interface (GUI) dialogue box with supported and default values +   whereas a different implementation might not. + + + +deBry, et al.                 Experimental                    [Page 112] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   When sending a request, an IPP client NEED NOT supply any attributes +   that are indicated as OPTIONALLY supplied by the client. + +   A client MUST be able to accept any of the attribute syntaxes defined +   in Section 4.1, including their full range, that may be returned to +   it in a response from a Printer object.  In particular for each +   attribute that the client supports whose attribute syntax is 'text', +   the client MUST accept and process both the 'textWithoutLanguage' and +   'textWithLanguage' 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 +   that the client does not expect.  Therefore, a client implementation +   MUST gracefully handle such responses and not refuse to inter-operate +   with a conforming Printer that is returning extended registered or +   private attributes and/or attribute values that conform to Section 6. +   Clients may choose to ignore any parameters, attributes, or values +   that they do not understand. + +5.2 IPP Object Conformance Requirements + +   This section specifies the conformance requirements for conforming +   implementations with respect to objects, operations, and attributes. + +5.2.1 Objects + +   Conforming implementations MUST implement all of the model objects as +   defined in this specification in the indicated sections: + +     Section 2.1 - Printer Object +     Section 2.2 - Job Object + +5.2.2 Operations + +   Conforming IPP object implementations MUST implement all of the +   REQUIRED model operations, including REQUIRED responses, as defined +   in this specification in the indicated sections: + +     For a Printer object: +        Print-Job (section 3.2.1)          REQUIRED +        Print-URI (section 3.2.2)          OPTIONAL +        Validate-Job (section 3.2.3)       REQUIRED +        Create-Job (section 3.2.4)         OPTIONAL + + + +deBry, et al.                 Experimental                    [Page 113] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        Get-Printer-Attributes (section 3.2.5)  REQUIRED +        Get-Jobs (section 3.2.6)           REQUIRED + +     For a Job object: +        Send-Document (section 3.3.1)      OPTIONAL +        Send-URI (section 3.3.2)           OPTIONAL +        Cancel-Job (section 3.3.3)         REQUIRED +        Get-Job-Attributes (section 3.3.4) REQUIRED + +   Conforming IPP objects MUST support all REQUIRED operation attributes +   and all values of such attributes if so indicated in the description. +   Conforming IPP objects MUST ignore all unsupported or unknown +   operation attributes or operation attribute groups received in a +   request, but MUST reject a request that contains a supported +   operation attribute that contains an unsupported value. + +   The following section on object attributes specifies the support +   required for object attributes. + +5.2.3 IPP Object Attributes + +   Conforming IPP objects MUST support all of the REQUIRED object +   attributes, as defined in this specification in the indicated +   sections. + +   If an object supports an attribute, it MUST support only those values +   specified in this document or through the extension mechanism +   described in section 5.2.4. It MAY support any non-empty subset of +   these values.  That is, it MUST support at least one of the specified +   values and at most all of them. + +5.2.4 Extensions + +   A conforming IPP object MAY support registered extensions and private +   extensions, as long as they meet the requirements specified in +   Section 6. + +   For each attribute included in an operation response, a conforming +   IPP 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. + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 114] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +5.2.5 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 +   in which a client may supply attributes or the system administrator +   may configure attributes (by means outside the scope of IPP/1.0).  In +   particular for each attribute that the IPP object supports whose +   attribute syntax is 'text', the IPP object MUST accept and process +   both 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 + +   All clients and IPP objects MUST support the 'utf-8' charset as +   defined in section 4.1.7. + +   IPP objects MUST be able to accept any client request which correctly +   uses the "attributes-natural-language" operation attribute or the +   Natural Language Override mechanism on any individual attribute +   whether or not the natural language is supported by the IPP object. +   If an IPP object supports a natural language, then it MUST be able to +   translate (perhaps by table lookup) all generated 'text' or 'name' +   attribute values into one of the supported languages (see section +   3.1.4).  That is, the IPP object that supports a natural language +   NEED NOT be a general purpose translator of any arbitrary 'text' or ' +   name' value supplied by the client into that natural language. +   However, the object MUST be able to translate (automatically +   generate) any of its own attribute values and messages into that +   natural language. + +5.4 Security Conformance Requirements + +   Conforming IPP Printer objects MAY support Secure Socket Layer +   Version 3 (SSL3) [SSL] access, support access without SSL3 or support +   both means of access. + +   Conforming IPP clients SHOULD support SSL3 access and non-SSL3 +   access.  Note: This client requirement to support both means that +   conforming IPP clients will be able to inter-operate with any IPP +   Printer object. + + + + + + +deBry, et al.                 Experimental                    [Page 115] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   For a detailed discussion of security considerations and the IPP +   application security profile required for SSL3 support, see section +   8. + +6. IANA Considerations (registered and private extensions) + +   This section describes how IPP can be extended to allow the following +   registered and private extensions to IPP: + +     1. keyword attribute values +     2. enum attribute values +     3. attributes +     4. attribute syntaxes +     5. operations +     6. attribute groups +     7. status codes + +   Extensions registered for use with IPP/1.0 are OPTIONAL for client +   and IPP object conformance to the IPP/1.0 Model specification. + +   These extension procedures are aligned with the guidelines as set +   forth by the IESG [RFC2434].  Section 11 describes how to propose new +   registrations for consideration.  IANA will reject registration +   proposals that leave out required information or do not follow the +   appropriate format described in Section 11.  IPP/1.0 may also be +   extended by an appropriate RFC that specifies any of the above +   extensions. + +6.1 Typed 'keyword' and 'enum' Extensions + +   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 attribute syntax type in order to communicate extra information +   to the reader through its name. This extra information is not +   represented in the protocol because it is unimportant to a client or +   Printer object.  The list below describes the prefixes and their +   meaning. + +     "type1":  The IPP specification must be revised to add a new +        keyword or a new enum.  No private keywords or enums are +        allowed. + +     "type2":  Implementers can, at any time, add new keyword or enum +        values by proposing the complete specification to IANA: + +        iana@iana.org + + + + + +deBry, et al.                 Experimental                    [Page 116] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        IANA will forward the registration proposal to the IPP +        Designated Expert who will review the proposal with a mailing +        list that the Designated Expert keeps for this purpose. +        Initially, that list will be the mailing list used by the IPP +        WG: + +             ipp@pwg.org + +        even after the IPP WG is disbanded as permitted by [RFC2434]. +        The IPP Designated Expert is appointed by the IESG Area Director +        responsible for IPP, according to [RFC2434]. + +        When a type2 keyword or enum is approved, the IPP Designated +        Expert becomes the point of contact for any future maintenance +        that might be required for that registration. + +     "type3":  Implementers can, at any time, add new keyword and enum +        values by submitting the complete specification to IANA as for +        type2 who will forward the proposal to the IPP Designated +        Expert.  While no additional technical review is required, the +        IPP Designated Expert may, at his/her discretion, forward the +        proposal to the same mailing list as for type2 registrations for +        advice and comment. + +        When a type3 keyword or enum is approved by the IPP Designated +        Expert, the original proposer becomes the point of contact for +        any future maintenance that might be required for that +        registration. + +   For type2 and type3 keywords, the proposer includes the name of the +   keyword in the registration proposal and the name is part of the +   technical review. + +   After type2 and type3 enums specifications are approved, the IPP +   Designated Expert in consultation with IANA assigns the next +   available enum number for each enum value. + +   IANA will publish approved type2 and type3 keyword and enum +   attributes value registration specifications in: + +        ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt + +   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 +   keywords approved at the same time.  For example, if several +   additional enums for stapling are approved for use with the + + + + + +deBry, et al.                 Experimental                    [Page 117] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   "finishings" attribute (and "finishings-default" and "finishings- +   supported" attributes), IANA will publish the additional values in +   the file: + +        ftp.isi.edu/iana/assignments/ipp/attribute- +        values/finishings/stapling.txt + +   Note: Some attributes are defined to be: 'type3 keywords' | 'name' +   which allows for attribute values to be extended by a site +   administrator with administrator defined names.  Such names are not +   registered with IANA. + +   By definition, each of the three types above assert some sort of +   registry or review process in order for extensions to be considered +   valid.  Each higher numbered level (1, 2, 3) tends to be decreasingly +   less stringent than the previous level.   Therefore, any typeN value +   MAY be registered using a process for some typeM where M is less than +   N, however such registration is NOT REQUIRED.  For example, a type3 +   value MAY be registered in a type 1 manner (by being included in a +   future version of an IPP specification), however, it is NOT REQUIRED. + +   This specification defines keyword and enum values for all of the +   above types, including type3 keywords. + +   For private (unregistered) keyword extensions, implementers SHOULD +   use keywords with a suitable distinguishing prefix, such as "xxx-" +   where xxx is the (lowercase) fully qualified company name registered +   with IANA for use in domain names [RFC1035].  For example, if the +   company XYZ Corp.  had obtained the domain name "XYZ.com", then a +   private keyword 'abc' would be: 'xyz.com-abc'. + +   Note: RFC 1035 [RFC1035] indicates that while upper and lower case +   letters are allowed in domain names, no significance is attached to +   the case.  That is, two names with the same spelling but different +   case are to be treated as if identical.  Also, the labels in a domain +   name must follow the rules for ARPANET host names:  They must start +   with a letter, end with a letter or digit, and have as interior +   characters only letters, digits, and hyphen.  Labels must be 63 +   characters or less.  Labels are separated by the "." character. + +   For private (unregistered) enum extension, implementers MUST use +   values in the reserved integer range which is 2**30 to 2**31-1. + + + + + + + + + +deBry, et al.                 Experimental                    [Page 118] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +6.2 Attribute Extensibility + +   Attribute names are type2 keywords.  Therefore, new attributes may be +   registered and have the same status as attributes in this document by +   following the type2 extension rules.  For private (unregistered) +   attribute extensions, implementers SHOULD use keywords with a +   suitable distinguishing prefix as described in Section 6.1. + +   IANA will publish approved attribute registration specifications as +   separate files: + +        ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt + +   where "xxx-yyy" is the new attribute name. + +   If a new Printer object attribute is defined and its values can be +   affected by a specific document format, its specification needs to +   contain the following sentence: + +     "The value of this attribute returned in a Get-Printer-Attributes +     response MAY depend on the "document-format" attribute supplied +     (see Section 3.2.5.1)." + +   If the specification does not, then its value in the Get-Printer- +   Attributes response MUST NOT depend on the "document-format" supplied +   in the request.  When a new Job Template attribute is registered, the +   value of the Printer attributes MAY vary with "document-format" +   supplied in the request without the specification having to indicate +   so. + +6.3 Attribute Syntax Extensibility + +   Attribute syntaxes are like type2 enums.  Therefore, new attribute +   syntaxes may be registered and have the same status as attribute +   syntaxes in this document by following the type2 extension rules +   described in Section 6.1.  The value codes that identify each of the +   attribute syntaxes are assigned in the Encoding and Transport +   specification [RFC2565], including a designated range for private, +   experimental use. + +   For attribute syntaxes, the IPP Designated Expert in consultation +   with IANA assigns the next attribute syntax code in the appropriate +   range as specified in [RFC2565].  IANA will publish approved +   attribute syntax registration specifications as separate files: + +        ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt + +   where 'xxx-yyy' is the new attribute syntax name. + + + +deBry, et al.                 Experimental                    [Page 119] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +6.4 Operation Extensibility + +   Operations may also be registered following the type2 procedures +   described in Section 6.1, though major new operations will usually be +   done by a new standards track RFC that augments this document.  For +   private (unregistered) operation extensions, implementers MUST use +   the range for the "operation-id" in requests specified in Section +   4.4.13 "operations-supported" Printer attribute. + +   For operations, the IPP Designated Expert in consultation with IANA +   assigns the next operation-id code as specified in Section 4.4.13. +   IANA will publish approved operation registration specifications as +   separate files: + +        ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt + +   where "Xxx-Yyy" is the new operation name. + +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 [RFC2565]. + +   For attribute groups, the IPP Designated Expert in consultation with +   IANA assigns the next attribute group tag code in the appropriate +   range as specified in [RFC2565].  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 +   procedures described in Section 6.1.  The values for status codes are +   allocated in ranges as specified in Section 13 for each status code +   class: + +     "informational" - Request received, continuing process +     "successful" - The action was successfully received, understood, +        and accepted +     "redirection" - Further action must be taken in order to complete +        the request +     "client-error" - The request contains bad syntax or cannot be +        fulfilled + + + +deBry, et al.                 Experimental                    [Page 120] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     "server-error" - The IPP object  failed to fulfill an apparently +        valid request + +   For private (unregistered) operation status code extensions, +   implementers MUST use the top of each range as specified in Section +   13. + +   For operation status codes, the IPP Designated Expert in consultation +   with IANA assigns the next status code in the appropriate class range +   as specified in Section 13.  IANA will publish approved status code +   registration specifications as separate files: + +        ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt + +   where "xxx-yyy" is the new operation status code keyword. + +6.7 Registration of MIME types/sub-types for document-formats + +   The "document-format" attribute's syntax is 'mimeMediaType'.  This +   means that valid values are Internet Media Types (see Section 4.1.9). +   RFC 2045 [RFC2045] defines the syntax for valid Internet media types. +   IANA is the registry for all Internet media types. + +6.8 Registration of charsets for use in 'charset' attribute values + +   The "attributes-charset" attribute's syntax is 'charset'.  This means +   that valid values are charsets names.  When a charset in the IANA +   registry has more than one name (alias), the name labeled as +   "(preferred MIME name)", if present, MUST be used (see Section +   4.1.7).  IANA is the registry for charsets following the procedures +   of [RFC2278]. + +7. Internationalization Considerations + +   Some of the attributes have values that are text strings and names +   which are intended for human understanding rather than machine +   understanding (see the 'text' and 'name' attribute syntaxes in +   Sections 4.1.1 and 4.1.2). + +   In each operation request, the client + +     - identifies the charset and natural language of the request which +       affects each supplied 'text' and 'name' attribute value, and +     - requests the charset and natural language for attributes returned +       by the IPP object in operation responses (as described in Section +       3.1.4.1). + + + + + +deBry, et al.                 Experimental                    [Page 121] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   In addition, the client MAY separately and individually identify the +   Natural Language Override of a supplied 'text' or 'name' attribute +   using the 'textWithLanguage' and 'nameWithLanguage' technique +   described section 4.1.1.2 and 4.1.2.2 respectively. + +   All IPP objects MUST support the UTF-8 [RFC2279] charset in all ' +   text' and 'name' attributes supported.  If an IPP object supports +   more than the UTF-8 charset, the object MUST convert between them in +   order to return the requested charset to the client according to +   Section 3.1.4.2.  If an IPP object supports more than one natural +   language, the object SHOULD return 'text' and 'name' values in the +   natural language requested where those values are generated by the +   Printer (see Section 3.1.4.1). + +   For Printers that support multiple charsets and/or multiple natural +   languages in 'text' and 'name' attributes, different jobs may have +   been submitted in differing charsets and/or natural languages.  All +   responses MUST be returned in the charset requested by the client. +   However, the Get-Jobs operation uses the 'textWithLanguage' and ' +   nameWithLanguage' mechanism to identify the differing natural +   languages with each job attribute returned. + +   The Printer object also has configured charset and natural language +   attributes.   The client can query the Printer object to determine +   the list of charsets and natural languages supported by the Printer +   object and what the Printer object's configured values are.  See the +   "charset-configured", "charset-supported", "natural-language- +   configured", and "generated-natural-language-supported" Printer +   description attributes for more details. + +   The "charset-supported" attributed identifies the supported charsets. +   If a charset is supported, the IPP object MUST be capable of +   converting to and from that charset into any other supported charset. +   In many cases, an IPP object will support only one charset and it +   MUST be the UTF-8 charset. + +   The "charset-configured" attribute identifies the one supported +   charset which is the native charset given the current configuration +   of the IPP object (administrator defined). + +   The "generated-natural-language-supported" attribute identifies the +   set of supported natural languages for generated messages; it is not +   related to the set of natural languages that must be accepted for +   client supplied 'text' and 'name' attributes.  For client supplied ' +   text' and 'name' attributes, an IPP object MUST accept ALL supplied +   natural languages.  Just because a Printer object is currently + + + + + +deBry, et al.                 Experimental                    [Page 122] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   configured to support 'en-us' natural language does not mean that the +   Printer object should reject a job if the client supplies a job name +   that is in 'fr-ca'. + +   The "natural-language-configured" attribute identifies the one +   supported natural language for generated messages which is the native +   natural language given the current configuration of the IPP object +   (administrator defined). + +   Attributes of type 'text' and 'name' are populated from different +   sources.  These attributes can be categorized into following groups +   (depending on the source of the attribute): + +     1. Some attributes are supplied by the client (e.g., the client +        supplied "job-name", "document-name", and "requesting-user-name" +        operation attributes along with the corresponding Job object's +        "job-name" and "job-originating-user-name" attributes).  The IPP +        object MUST accept these attributes in any natural language no +        matter what the set of supported languages for generated +        messages +     2. Some attributes are supplied by the system administrator (e.g., +        the Printer object's "printer-name" and "printer-location" +        attributes).  These too can be in any natural language.  If the +        natural language for these attributes is different than what a +        client requests, then they must be reported using the Natural +        Language Override mechanism. +     3. Some attributes are supplied by the device manufacturer (e.g., +        the Printer object's "printer-make-and-model" attribute).  These +        too can be in any natural language.  If the natural language for +        these attributes is different than what a client requests, then +        they must be reported using the Natural Language Override +        mechanism. +     4. Some attributes are supplied by the operator (e.g., the Job +        object's "job-message-from-operator" attribute). These too can +        be in any natural language.  If the natural language for these +        attributes is different than what a client requests, then they +        must be reported using the Natural Language Override mechanism. +     5. Some attributes are generated by the IPP object (e.g., the Job +        object's "job-state-message" attribute, the Printer object's +        "printer-state-message" attribute, and the "status-message" +        operation attribute).  These attributes can only be in one of +        the "generated-natural-language-supported" natural languages. +        If a client requests some natural language for these attributes +        other than one of the supported values, the IPP object SHOULD +        respond using the value of the "natural-language-configured" +        attribute (using the Natural Language Override mechanism if +        needed). + + + + +deBry, et al.                 Experimental                    [Page 123] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   The 'text' and 'name' attributes specified in this version of this +   document (additional ones will be registered according to the +   procedures in Section 6) are: + +     Attributes                      Source +     --------------------------      ---------- +     Operation Attributes +        job-name (name)               client +        document-name (name)          client +        requesting-user-name (name)   client +        status-message                Job or Printer object + +     Job Template Attributes: +        job-hold-until)          client matches administrator-configured +            (keyword | name +        job-hold-until-default   client matches administrator-configured +            (keyword | name) +        job-hold-until-supported client matches administrator-configured +            (keyword | name) +        job-sheets               client matches administrator-configured +            (keyword | name) +        job-sheets-default       client matches administrator-configured +            (keyword | name) +        job-sheets-supported     client matches administrator-configured +            (keyword | name) +        media                    client matches administrator-configured +            (keyword | name) +        media-default            client matches administrator-configured +            (keyword | name) +        media-supported          client matches administrator-configured +            (keyword | name) +        media-ready              client matches administrator-configured +            (keyword | name) + +     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 Description Attributes: +        printer-name (name(127))      administrator +        printer-location (text(127))  administrator +        printer-info (text(127))      administrator +        printer-make-and-model (text(127)) administrator or manufacturer +        printer-state-message (text)  Printer object +        printer-message-from-operator (text(127))    operator + + + +deBry, et al.                 Experimental                    [Page 124] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +8. Security Considerations + +   Some IPP objects MAY be deployed over protocol stacks that support +   Secure Socket Layer Version 3 (SSL3) [SSL].  Note:  SSL3 is not an +   IETF standards track specification.  Other IPP objects MAY be +   deployed over protocol stacks that do not support SSL3.  Some IPP +   objects MAY be deployed over both types of protocol stacks.  Those +   IPP objects that support SSL3, are capable of supporting mutual +   authentication as well as 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, in a mapping of IPP over HTTP/1.1 [RFC2565], if the IPP +   object does not 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 +   any given IPP environment. For example, if IPP is used within a given +   corporation over a private network, the risks of exposing document +   data may be low enough that the corporation will choose not to use +   encryption on that data.  However, if the connection between the +   client and the IPP object is over a public network, the client may +   wish to protect the content of the information during transmission +   through the network with encryption. + +   Furthermore, the value of the information being printed may vary from +   one IPP environment to the next. Printing payroll checks, for +   example, would have a different value than printing public +   information from a file.  There is also the possibly of denial-of- +   service attacks, but denial-of-service attacks against printing +   resources are not well understood and there is no published +   precedents regarding this scenario. + +   Once the authenticated identity of the requester has been supplied to +   the IPP object, the object uses that identity to enforce any +   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. +   The details and mechanisms to set up a particular access control +   policy are not part of IPP/1.0, and must be established via some +   other type of administrative or access control framework.  However, +   there are operation status codes that allow an IPP server to return +   information back to a client about any potential access control +   violations for an IPP object. + + + + +deBry, et al.                 Experimental                    [Page 125] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   During a create operation, the client's identity is recorded in the +   Job object in an implementation-defined attribute.  This information +   can be used to verify a client's identity for subsequent operations +   on that Job object in order to enforce any access control policy that +   might be in effect.  See section 8.3 below for more details. + +   Since the security levels or the specific threats that any given IPP +   system administrator may be concerned with cannot be anticipated, IPP +   MUST be capable of operating with different security mechanisms and +   security policies as required by the individual installation. +   Security policies might vary from very strong, to very weak, to none +   at all, and corresponding security mechanisms will be required. SSL3 +   supports the type of negotiated levels of security required by most, +   if not all, potential IPP environments. IPP environments that require +   no security can elect to deploy IPP objects that do not utilize the +   optional SSL3 security mechanisms. + +8.1 Security Scenarios + +   The following sections describe specific security attacks for IPP +   environments.  Where examples are provided they should be considered +   illustrative of the environment and not an exhaustive set. Not all of +   these environments will necessarily be addressed in initial +   implementations of IPP. + +8.1.1 Client and Server in the Same Security Domain + +   This environment is typical of internal networks where traditional +   office workers print the output of personal productivity applications +   on shared work-group printers, or where batch applications print +   their output on large production printers. Although the identity of +   the user may be trusted in this environment, a user might want to +   protect the content of a document against such attacks as +   eavesdropping, replaying or tampering. + +8.1.2 Client and Server in Different Security Domains + +   Examples of this environment include printing a document created by +   the client on a publicly available printer, such as at a commercial +   print shop; or printing a document remotely on a business associate's +   printer.  This latter operation is functionally equivalent to sending +   the document to the business associate as a facsimile. Printing +   sensitive information on a Printer in a different security domain +   requires strong security measures. In this environment authentication +   of the printer is required as well as protection against unauthorized +   use of print resources. Since the document crosses security domains, + + + + + +deBry, et al.                 Experimental                    [Page 126] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   protection against eavesdropping and document tampering are also +   required. It will also be important in this environment to protect +   Printers against "spamming" and malicious document content. + +8.1.3 Print by Reference + +   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 +   pointer, to the document instead of the actual document itself. +   Standard methods currently do not exist for remote entities to +   "assume" the credentials of a client for forwarding requests to a 3rd +   party. It is anticipated that Print-By-Reference will be used to +   access "public" documents and that sophisticated methods for +   authenticating "proxies" will not be specified for version 1 of IPP. + +8.2 URIs for SSL3 and non-SSL3 Access + +   As described earlier, an IPP object can support SSL3 access, non-SSL3 +   access, or both.  The "printer-uri-supported" attribute contains the +   Printer object's URI(s).  Its companion attribute, "uri-security- +   supported", identifies the security mechanism used for each URI +   listed in the "printer-uri-supported" attribute.  For each Printer +   operation request, a client MUST supply only one URI in the +   "printer-uri" operation attribute.  In other words, even though the +   Printer supports 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, since the Printer objects is the factory for Job +   objects, and the Printer object will generate the correct URI for new +   Job objects depending on the Printer object's security configuration. + +8.3 The "requesting-user-name" (name(MAX)) Operation Attribute + +   Each operation MUST specify the user who is performing the operation +   in both of the following two ways: + +     1) via the REQUIRED "requesting-user-name" operation attribute that +        a client SHOULD supply in all operations. The client MUST obtain +        the value for this attribute from an environmental or network +        login name for the user, rather than allowing the user to supply +        any value. If the client does not supply a value for +        "requesting-user-name", the printer MUST assume that the client +        is supplying some anonymous name, such as "anonymous". +     2) via an authentication mechanism of the underlying transport +        which may be configured to give no authentication information. + + + + + + + +deBry, et al.                 Experimental                    [Page 127] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   There are six cases to consider: + +     a) the authentication mechanism gives no information, and the +        client doesn't specify  "requesting-user-name". +     b) the authentication mechanism gives no information, but the +        client specifies "requesting-user-name". +     c) the authentication mechanism specifies a user which has no human +        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". +     e) the authentication mechanism specifies a user which has a human +        readable representation. The Printer object ignores the +        "requesting-user-name". +     f) the authentication mechanism specifies a user who is trusted and +        whose name means that the value of the "requesting-user-name", +        which MUST be present, is treated as the authenticated name. + +   Note:  Case "f" is intended for a tightly coupled gateway and server +   to work together so that the "user" name is able to be that of the +   gateway client and not that of the gateway.  Because most, if not +   all, system vendors will initially implement IPP via a gateway into +   their existing print system, this mechanism is necessary unless the +   authentication mechanism allows a gateway (client) to act on behalf +   of some other client. + +   The user-name has two forms: + +     - one that is human readable: it is held in the REQUIRED "job- +       originating-user-name" Job Description attribute which is set +       during the job creation operations. It is used for presentation +       only, such as returning in queries or printing on start sheets +     - one for authorization: it is held in an undefined (by IPP) Job +       object attribute which is set by the job creation operation.  It +       is used to authorize other operations, such as Send-Document, +       Send-URI, Cancel-Job, to determine the user when the "my-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: + +     - is the value of the "requesting-user-name" for cases b, d and f. +     - comes from the authentication mechanism for case e +     - is some anonymous name, such as "anonymous" for cases a and c. + +   The user name used for authorization: + + + +deBry, et al.                 Experimental                    [Page 128] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     - is the value of the "requesting-user-name" for cases b  and f. +     - comes from the authentication mechanism for cases c, d and  e +     - is some anonymous name, such as "anonymous" for case a. + +   The essence of these rules for resolving conflicting sources of +   user-names is that a printer implementation is free to pick either +   source as long as it achieves consistent results.  That is, if a user +   uses the same path for a series of requests, the requests MUST appear +   to come from the same user from the standpoint of both the human- +   readable user name and the user name for authorization.  This rule +   MUST continue to apply even if a request could be authenticated by +   two or more mechanisms.  It doesn't matter which of  several +   authentication mechanisms a Printer uses as long as it achieves +   consistent results.  If a client uses more than one authentication +   mechanism, it is recommended that an administrator make all +   credentials resolve to the same user and user-name as much as +   possible. + +8.4 Restricted Queries + +   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 +   configured not to return all attributes (or all values) that a client +   requests.  The job attributes returned MAY depend on whether the +   requesting user is the same as the user that submitted the job. The +   IPP object MAY even return none of the requested attributes. In such +   cases, the status returned is the same as if the object had returned +   all requested attributes.  The client cannot tell by such a response +   whether the requested attribute was present or absent on the object. + +8.5 Queries on jobs submitted using non-IPP protocols + +   If the device that an IPP Printer is representing is able to accept +   jobs 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. + +   It is further RECOMMENDED, that the IPP Printer generate "job-id" and +   "job-uri" values for such "foreign jobs", if possible, so that they +   may 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 + + + +deBry, et al.                 Experimental                    [Page 129] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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. + +8.6 IPP Security Application Profile for SSL3 + +   The IPP application profile for SSL3 follows the "Secure Socket +   Layer" requirement as documented in the SSL3 specification [SSL]. +   For 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 non-compliant versions of this extension could be deployed. +   Implementations wishing to inter-operate with such non-compliant +   versions MAY offer the SSL_RSA_EXPORT_WITH_RC4_40_MD5 and +   SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 mechanisms.  However, since 40 bit +   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. + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 130] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +9. References + +   [ASCII]      Coded Character Set - 7-bit American Standard Code for +                Information Interchange (ASCII), ANSI X3.4-1986. This +                standard is the specification of the US-ASCII charset. + +   [HTPP]       J. Barnett, K. Carter, R. DeBry,  "Initial Draft - +                Hypertext Printing Protocol - HTPP/1.0", October 1996. +                ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ +                overview.ps.gz + +   [IANA-CS]    IANA Registry of Coded Character Sets: +                ftp://ftp.isi.edu/in-notes/iana/assignments/character- +                sets + +   [IANA-MT]    IANA Registry of Media Types:  ftp://ftp.isi.edu/in- +                notes/iana/assignments/media-types/ + +   [ipp-iig]    Hastings, T. and C. Manros, "Internet Printing +                Protocol/1.0:  Implementer's Guide", Work in Progress. + +   [ISO10646-1] ISO/IEC 10646-1:1993, "Information technology -- +                Universal Multiple-Octet Coded Character Set (UCS) - +                Part 1: Architecture and Basic Multilingual Plane, +                JTC1/SC2." + +   [ISO8859-1]  ISO/IEC 8859-1:1987, "Information technology -- 8-bit +                One-Byte Coded Character Set - Part 1: Latin Alphabet Nr +                1", 1987, JTC1/SC2. + +   [ISO10175]   ISO/IEC 10175 Document Printing Application (DPA), June +                1996. + +   [LDPA] T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. Taylor, P. +                Zehler, "LDPA - Lightweight Document Printing +                Application", October 1996, +                ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz + +   [P1387.4]    Kirk, M. (Editor), POSIX System Administration - Part 4: +                Printing Interfaces, POSIX 1387.4 D8, 1994. + +   [PSIS]       Herriot, R. (editor), X/Open A Printing System +                Interoperability Specification (PSIS), August 1995. + +   [PWG]        Printer Working Group, http://www.pwg.org. + +   [RFC1035]    Mockapetris, P., "DOMAIN NAMES - IMPLEMENTATION AND +                SPECIFICATION", STD 13, RFC 1035, November 1987. + + + +deBry, et al.                 Experimental                    [Page 131] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   [RFC1759]    Smith, R., Wright, F., Hastings, T., Zilles, S. and J. +                Gyllenskog, "Printer MIB", RFC 1759, March 1995. + +   [RFC1766]    Alvestrand, H., "Tags for the Identification of +                Languages", RFC 1766, March 1995. + +   [RFC1179]    McLaughlin, L. (Editor), "Line Printer Daemon Protocol", +                RFC 1179, August 1990. + +   [RFC1952]    Deutsch, P., "GZIP file format specification version +                4.3", RFC 1952, May 1996. + +   [RFC2045]    Freed, N. and N. Borenstein, " Multipurpose Internet +                Mail Extensions (MIME) Part One: Format of Internet +                Message Bodies", RFC 2045, November 1996. + +   [RFC2046]    Freed, N. and N. Borenstein, "Multipurpose Internet Mail +                Extensions (MIME) Part Two: Media Types", RFC 2046, +                November 1996. + +   [RFC2048]    Freed, N., Klensin, J. and J. Postel, "Multipurpose +                Internet Mail Extension (MIME) Part Four: Registration +                Procedures", RFC 2048, November 1996. + +   [RFC2068]    Fielding, R., Gettys, J., Mogul, J., Frystyk, H. AND T. +                Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", +                RFC 2068, January 1997. + +   [RFC2069]    Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P., +                Luotonen, A., Sink, E. and L. Stewart, "An Extension to +                HTTP: Digest Access Authentication", RFC 2069, January +                1997. + +   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate +                Requirement Levels", BCP 14, RFC 2119, March 1997. + +   [RFC2228]    Horowitz, M. and S. Lunt, "FTP Security Extensions", RFC +                2228, October 1997. + +   [RFC2277]    Alvestrand, H., "IETF Policy on Character Sets and +                Languages" RFC 2277, January 1998. + +   [RFC2278]    Freed, N. and J. Postel:  "IANA Charset Registration +                Procedures", BCP 19, RFC 2278, January 1998. + +   [RFC2279]    Yergeau, F., "UTF-8, a transformation format of ISO +                10646", RFC 2279, January 1998. + + + + +deBry, et al.                 Experimental                    [Page 132] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   [RFC2316]    Bellovin, S., "Report of the IAB Security Architecture +                Workshop", RFC 2316, April 1998. + +   [RFC2396]    Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform +                Resource Identifiers (URI): Generic Syntax", RFC 2396, +                August 1998. + +   [RFC2434]    Narten, T. and H. Alvestrand, "Guidelines for Writing an +                IANA Considerations Section in RFCs", BCP 26, RFC 2434, +                October 1998. + +   [RFC2565]    Herriot, R., Butler, S., Moore, P. and R. Tuner +                "Internet Printing Protocol/1.0: Encoding and +                Transport", RFC 2565, April 1999. + +   [RFC2567]    Wright, D.,  "Design Goals for an Internet Printing +                Protocol", RFC 2567, April 1999. + +   [RFC2568]    Zilles, S., "Rationale for the Structure and Model and +                Protocol for the Internet Printing Protocol", RFC 2568, +                April 1999. + +   [RFC2569]    Herriot, R., Hastings, T., Jacobs, N. and J. Martin, +                "Mapping between LPD and IPP Protocols", RFC 2569, April +                1999. + +   [RFC2579]    McCloghrie, K., Perkins, D. and J. Schoenwaelder, +                "Textual Conventions for SMIv2", STD 58, RFC 2579, April +                1999. + +   [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 + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 133] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +10. Authors' Addresses + +   Scott A. Isaacson (Editor) +   Novell, Inc. +   122 E 1700 S +   Provo, UT   84606 + +   Phone: 801-861-7366 +   Fax:   801-861-2517 +   EMail: sisaacson@novell.com + + +   Tom Hastings +   Xerox Corporation +   737 Hawaii St. +   El Segundo, CA   90245 + +   Phone: 310-333-6413 +   Fax:   310-333-5514 +   EMail: hastings@cp10.es.xerox.com + + +   Robert Herriot +   Xerox Corporation +   3400 Hillview Ave., Bldg #1 +   Palo Alto, CA 94304 + +   Phone: 650-813-7696 +   Fax:  650-813-6860 +   EMail: robert.herriot@pahv.xerox.com + + +   Roger deBry +   Utah Valley State College +   Orem, UT 84058 + +   Phone: (801) 222-8000 +   EMail: debryro@uvsc.edu + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 134] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Patrick Powell +   Astart Technologies +   9475 Chesapeake Dr., Suite D +   San Diego, CA  95123 + +   Phone: (619) 874-6543 +   Fax: (619) 279-8424 +   EMail: papowell@astart.com + +   IPP Mailing List:  ipp@pwg.org +   IPP Mailing List Subscription: ipp-request@pwg.org +   IPP Web Page:  http://www.pwg.org/ipp/ + +   Implementers of this specification are encouraged to join IPP Mailing +   List in order to participate in any discussions of clarification +   issues and review of registration proposals for additional attributes +   and values. + +   Other Participants: + +      Chuck Adams - Tektronix +      Jeff Barnett - IBM +      Ron Bergman - Dataproducts Corp. +      Sylvan Butler - HP +      Keith Carter - IBM Corporation +      Jeff Copeland - QMS +      Andy Davidson - Tektronix +      Mabry Dozier - QMS +      Lee Farrell - Canon Information Systems +      Steve Gebert - IBM +      Babek Jahromi - Microsoft +      David Kellerman - Northlake Software +      Rick Landau - Digital +      Greg LeClair - Epson +      Harry Lewis - IBM +      Pete Loya - HP +      Ray Lutz - Cognisys +      Mike MacKay - Novell, Inc. +      Daniel Manchala - Xerox +      Carl-Uno Manros - Xerox +      Jay Martin - Underscore +      Larry Masinter - Xerox +      Stan McConnell - Xerox +      Ira McDonald - High North Inc. +      Paul Moore - Microsoft +      Tetsuya Morita - Ricoh +      Yuichi Niwa - Ricoh +      Pat Nogay - IBM + + + +deBry, et al.                 Experimental                    [Page 135] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +      Ron Norton - Printronics +      Bob Pentecost - HP +      Rob Rhoads - Intel +      Xavier Riley - Xerox +      David Roach - Unisys +      Stuart Rowley - Kyocera +      Hiroyuki Sato - Canon +      Bob Setterbo - Adobe +      Devon Taylor - Novell, Inc. +      Mike Timperman - Lexmark +      Randy Turner - Sharp +      Atsushi Yuki - Kyocera +      Rick Yardumian - Xerox +      Lloyd Young - Lexmark +      Bill Wagner - DPI +      Jim Walker - DAZEL +      Chris Wellens - Interworking Labs +      Rob Whittle - Novell, Inc. +      Don Wright - Lexmark +      Peter Zehler - Xerox +      Steve Zilles - Adobe + +11. Formats for IPP Registration Proposals + +   In order to propose an IPP extension for registration, the proposer +   must submit an application to IANA by email to "iana@iana.org" or by +   filling out the appropriate form on the IANA web pages +   (http://www.iana.org).  This section specifies the required +   information and the formats for proposing registrations of extensions +   to IPP as provided in Section 6 for: + +     1. type2 'keyword' attribute values +     2. type3 'keyword' attribute values +     3. type2 'enum' attribute values +     4. type3 'enum' attribute values +     5. attributes +     6. attribute syntaxes +     7. operations +     8. status codes + +11.1 Type2 keyword attribute values registration + +   Type of registration:  type2 keyword attribute value +   Name of attribute to which this keyword specification is to be added: +   Proposed keyword name of this keyword value: +   Specification of this keyword value (follow the style of IPP Model +   Section 4.1.2.3): +   Name of proposer: + + + +deBry, et al.                 Experimental                    [Page 136] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Address of proposer: +   Email address of proposer: + +   Note:  For type2 keywords, the Designated Expert will be the point of +   contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + +11.2 Type3 keyword attribute values registration + +   Type of registration:  type3 keyword attribute value +   Name of attribute to which this keyword specification is to be added: +   Proposed keyword name of this keyword value: +   Specification of this keyword value (follow the style of IPP Model +   Section 4.1.2.3): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For type3 keywords, the proposer will be the point of contact +   for the approved registration specification, if any maintenance of +   the registration specification is needed. + +11.3 Type2 enum attribute values registration + +   Type of registration:  type2 enum attribute value +   Name of attribute to which this enum specification is to be added: +   Keyword symbolic name of this enum value: +   Numeric value (to be assigned by the IPP Designated Expert in +   consultation with IANA): +   Specification of this enum value (follow the style of IPP Model +   Section 4.1.4): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For type2 enums, the Designated Expert will be the point of +   contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + +11.4 Type3 enum attribute values registration + +   Type of registration:  type3 enum attribute value +   Name of attribute to which this enum specification is to be added: +   Keyword symbolic name of this enum value: +   Numeric value (to be assigned by the IPP Designated Expert in +   consultation with IANA): +   Specification of this enum value (follow the style of IPP Model +   Section 4.1.4): + + + +deBry, et al.                 Experimental                    [Page 137] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For type3 enums, the proposer will be the point of contact for +   the approved registration specification, if any maintenance of the +   registration specification is needed. + +11.5 Attribute registration + +   Type of registration:  attribute +   Proposed keyword name of this attribute: +   Types of attribute (Operation, Job Template, Job Description, +   Printer Description): +   Operations to be used with if the attribute is an operation +   attribute: +   Object (Job, Printer, etc. if bound to an object): +   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 this is a Printer attribute, MAY the value returned depend on +   "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 4.2): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For attributes, the IPP Designated Expert will be the point of +   contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + +11.6 Attribute Syntax registration + +   Type of registration:  attribute syntax +   Proposed name of this attribute syntax: +   Type of attribute syntax (integer, octetString, character-string, +   see [RFC2565]): +   Numeric value (to be assigned by the IPP Designated Expert in +   consultation with IANA): +   Specification of this attribute (follow the style of IPP Model +   Section 4.1): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + + + + + +deBry, et al.                 Experimental                    [Page 138] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Note:  For attribute syntaxes, the IPP Designated Expert will be the +   point of contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + +11.7 Operation registration + +   Type of registration:  operation +   Proposed name of this operation: +   Numeric operation-id value (to be assigned by the IPP Designated +   Expert in consultation with IANA): +   Object Target (Job, Printer, etc. that operation is upon): +   Specification of this attribute (follow the style of IPP Model +   Section 3): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For operations, the IPP Designated Expert will be the point of +   contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + +11.8 Attribute Group registration + +   Type of registration:  attribute group +   Proposed name of this attribute group: +   Numeric tag according to [RFC2565] (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. + +11.9 Status code registration + +   Type of registration:  status code +   Keyword symbolic name of this status code value: +   Numeric value (to be assigned by the IPP Designated Expert in +   consultation with IANA): +   Operations that this status code may be used with: + + + +deBry, et al.                 Experimental                    [Page 139] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   Specification of this status code (follow the style of IPP Model +   Section 14 APPENDIX B:  Status Codes and Suggested Status Code +   Messages): +   Name of proposer: +   Address of proposer: +   Email address of proposer: + +   Note:  For status codes, the Designated Expert will be the point of +   contact for the approved registration specification, if any +   maintenance of the registration specification is needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 140] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +12. APPENDIX A: Terminology + +   This specification uses the terminology defined in this section. + +12.1 Conformance Terminology + +   The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", +   "RECOMMENDED", "MAY", and  "OPTIONAL" in this document are to be +   interpreted as described in RFC 2119 [RFC2119]. + +12.1.1 NEED NOT + +   This term is not included in RFC 2119.  The verb "NEED NOT" indicates +   an action that the subject of the sentence does not have to implement +   in order to claim conformance to the standard.  The verb "NEED NOT" +   is used instead of "MAY NOT" since "MAY NOT" sounds like a +   prohibition. + +12.2 Model Terminology + +12.2.1 Keyword + +   Keywords are used within this document as identifiers of semantic +   entities within the abstract model (see section 4.1.2.3).  Attribute +   names, some attribute values, attribute syntaxes, and attribute group +   names are represented as keywords. + +12.2.2 Attributes + +   An attribute is an item of information that is associated with an +   instance of an IPP object.  An attribute consists of an attribute +   name and one or more attribute values.  Each attribute has a specific +   attribute syntax.  All object attributes are defined in section 4 and +   all operation attributes are defined in section 3. + +   Job Template Attributes are described in section 4.2. The client +   optionally supplies Job Template attributes in a create request +   (operation requests that create Job objects).  The Printer object has +   associated attributes which define supported and default values for +   the Printer. + +12.2.2.1 Attribute Name + +   Each attribute is uniquely identified in this document by its +   attribute name.  An attribute name is a keyword.  The keyword +   attribute name is given in the section header describing that + + + + + +deBry, et al.                 Experimental                    [Page 141] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   attribute.  In running text in this document, attribute names are +   indicated inside double quotation marks (") where the quotation marks +   are not part of the keyword itself. + +12.2.2.2 Attribute Group Name + +   Related attributes are grouped into named groups.  The name of the +   group is a keyword.  The group name may be used in place of naming +   all the attributes in the group explicitly.  Attribute groups are +   defined in section 3. + +12.2.2.3 Attribute Value + +   Each attribute has one or more values.  Attribute values are +   represented in the syntax type specified for that attribute. In +   running text in this document, attribute values are indicated inside +   single quotation marks ('), whether their attribute syntax is +   keyword, integer, text, etc.  where the quotation marks are not part +   of the value itself. + +12.2.2.4 Attribute Syntax + +   Each attribute is defined using an explicit syntax type.  In this +   document, each syntax type is defined as a keyword with specific +   meaning.  The Encoding and Transport document [RFC2565] indicates the +   actual "on-the-wire" encoding rules for each syntax type.  Attribute +   syntax types are defined in section 4.1. + +12.2.3 Supports + +   By definition, a Printer object supports an attribute only if that +   Printer object responds with the corresponding attribute populated +   with some value(s) in a response to a query for that attribute.  A +   Printer object supports an attribute value if the value is one of the +   Printer object's "supported values" attributes.  The device behind a +   Printer object may exhibit a behavior that corresponds to some IPP +   attribute, but if the Printer object, when queried for that +   attribute, doesn't respond with the attribute, then as far as IPP is +   concerned, that implementation does not support that feature. If the +   Printer object's "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. +   However, even for REQUIRED attributes, conformance to IPP does not +   mandate that all implementations support all possible values +   representing all possible job processing behaviors and features.  For + + + +deBry, et al.                 Experimental                    [Page 142] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   example, if a given instance of a Printer supports only certain +   document formats, then that Printer responds with the "document- +   format-supported" attribute populated with a set of values, possibly +   only one, taken from the entire set of possible values defined for +   that attribute. This limited set of values represents the Printer's +   set of supported document formats.  Supporting an attribute and some +   set of values for that attribute enables IPP end users to be aware of +   and make use of those features associated with that attribute and +   those values.  If an implementation chooses to not support an +   attribute or some specific value, then IPP end users would have no +   ability to make use of that feature within the context of IPP itself. +   However, due to existing practice and legacy systems which are not +   IPP aware, there might be some other mechanism outside the scope of +   IPP to control or request the "unsupported" feature (such as embedded +   instructions within the document data itself). + +   For example, consider the "finishings-supported" attribute. + +     1) If a Printer object is not physically capable of stapling, the +        "finishings-supported" attribute MUST NOT be populated with the +        value of 'staple'. +     2) A Printer object is physically capable of stapling, however an +        implementation chooses not to support stapling in the IPP +        "finishings" attribute.  In this case, 'staple' MUST NOT be a +        value in the "finishings-supported" Printer object attribute. +        Without support for the value 'staple', an IPP end user would +        have no means within the protocol itself to request that a Job +        be stapled.  However, an existing document data formatter might +        be able to request that the document be stapled directly with an +        embedded instruction within the document data.  In this case, +        the IPP implementation does not "support" stapling, however the +        end 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 +        implementation chooses to support stapling in the IPP +        "finishings" attribute. In this case, 'staple' MUST be a value +        in the "finishings-supported" Printer object attribute. Doing +        so, would enable end users to be aware of and make use of the +        stapling feature using IPP attributes. + +   Even though support for Job Template attributes by a Printer object +   is OPTIONAL, it is RECOMMENDED that if the device behind a Printer +   object is capable of realizing any feature or function that +   corresponds to an IPP attribute and some associated value, then that +   implementation SHOULD support that IPP attribute and value. + + + + + + +deBry, et al.                 Experimental                    [Page 143] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   The set of values in any of the supported value attributes is set +   (populated) by some administrative process or automatic sensing +   mechanism that is outside the scope of IPP.  For administrative +   policy 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 output device behind the IPP Printer abstraction may be +   capable of a certain feature, however an administrator is specifying +   that access to 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 just a physical device) the actual process +   for supporting a value is undefined and left up to the +   implementation.  However, if a Printer object supports a value, some +   manual human action may be needed to realize the semantic action +   associated with the value, but no end user action is required. + +   For example, if one of the values in the "finishings-supported" +   attribute is 'staple', the actual process might be an automatic +   staple action by a physical device controlled by some command sent to +   the device.  Or, the actual process of stapling might be a manual +   action by an operator at an operator attended Printer object. + +   For another example of how supported attributes function, consider a +   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 +   sheets, the system administrator sets the only supported value for +   the "job-sheets-supported" attribute to 'none'.  In this case, if a +   client requests anything except 'none', the create request is +   rejected or the "job-sheets" value is ignored (depending on the value +   of "ipp-attribute-fidelity").  To force the use of job start/end +   sheets on all jobs, the administrator does not include the value ' +   none' in the "job-sheets-supported" attribute.  In this case, if a +   client requests 'none', the create request is rejected or the "job- +   sheets" value is ignored (again depending on the value of "ipp- +   attribute-fidelity"). + +12.2.4 print-stream page + +   A "print-stream page" is a page according to the definition of pages +   in the language used to express the document data. + +12.2.5 impression + +   An "impression" is the image (possibly many print-stream pages in +   different configurations) imposed onto a single media page. + + + + + + + +deBry, et al.                 Experimental                    [Page 144] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +13. APPENDIX B:  Status Codes and Suggested Status Code Messages + +   This section defines status code enum keywords and values that are +   used to provide semantic information on the results of an operation +   request.  Each operation response MUST include a status code.  The +   response MAY also contain a status message that provides a short +   textual description of the status.  The status code is intended for +   use by automata, and the status message is intended for the human end +   user.  Since the status message is an OPTIONAL component of the +   operation response, an IPP 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 +   follows: + +     "informational" - Request received, continuing process +     "successful" - The action was successfully received, understood, +        and accepted +     "redirection" - Further action must be taken in order to complete +        the request +     "client-error" - The request contains bad syntax or cannot be +        fulfilled +     "server-error" - The IPP object  failed to fulfill an apparently +        valid request + +   As with type2 enums, IPP status codes are extensible.  IPP clients +   are NOT REQUIRED to understand the meaning of all registered status +   codes, though such understanding is obviously desirable.  However, +   IPP clients MUST understand the class of any status code, as +   indicated by the prefix, and treat any unrecognized response as being +   equivalent to the first status code of that class, with the exception +   that an unrecognized response MUST NOT be cached.  For example, if an +   unrecognized status code of "client-error-xxx-yyy" is received by the +   client, it can safely assume that there was something wrong with its +   request and treat the response as if it had received a "client- +   error-bad-request" status code.  In such cases, IPP applications +   SHOULD present the OPTIONAL message (if present) to the end user +   since the message is likely to contain human readable information +   which will help to explain the unusual status.  The name of the enum +   is the suggested status message for US English. + +   The status code values range from 0x0000 to 0x7FFF.  The value ranges +   for each status code class are as follows: + +     "successful" - 0x0000 to 0x00FF +     "informational" - 0x0100 to 0x01FF +     "redirection" - 0x0200 to 0x02FF + + + +deBry, et al.                 Experimental                    [Page 145] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     "client-error" - 0x0400 to 0x04FF +     "server-error" - 0x0500 to 0x05FF + +   The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 +   to 5) is reserved for private use within each status code class. +   Values 0x0600 to 0x7FFF are reserved for future assignment and MUST +   NOT be used. + +13.1 Status Codes + +   Each status code is described below. Section 13.1.5.9 contains a +   table that indicates which status codes apply to which operations. +   The Implementer's Guide [ipp-iig] describe the suggested steps for +   processing IPP attributes for all operations, including returning +   status codes. + +13.1.1 Informational + +   This class of status code indicates a provisional response and is to +   be used for informational purposes only. + +   There are no status codes defined in IPP/1.0 for this class of status +   code. + +13.1.2 Successful Status Codes + +   This class of status code indicates that the client's request was +   successfully received, understood, and accepted. + +13.1.2.1 successful-ok (0x0000) + +   The request has succeeded and no request attributes were substituted +   or ignored.  In the case of a response to a create request, the ' +   successful-ok' status code indicates that the request was +   successfully received and validated, and that the Job object has been +   created; it does not indicate that the job has been processed.  The +   transition of the Job object into the 'completed' state is the only +   indicator that the job has been printed. + +13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) + +   The request has succeeded, but some supplied (1) attributes were +   ignored or (2) unsupported values were substituted with supported +   values or were 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 + + + +deBry, et al.                 Experimental                    [Page 146] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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. + +13.1.2.3 successful-ok-conflicting-attributes (0x0002) + +   The request has succeeded, but some supplied attribute values +   conflicted with the values of other supplied attributes.  These +   conflicting values were either (1) substituted with (supported) +   values or (2) the 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. + +13.1.3 Redirection Status Codes + +   This class of status code indicates that further action needs to be +   taken to fulfill the request. + +   There are no status codes defined in IPP/1.0 for this class of status +   code. + +13.1.4 Client Error Status Codes + +   This class of status code is intended for cases in which the client +   seems to have erred.  The IPP object SHOULD return a message +   containing an explanation of the error situation and whether it is a +   temporary or permanent condition. + +13.1.4.1 client-error-bad-request (0x0400) + +   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 does not match the prescribed length for that attribute - see +   the Implementer's Guide [ipp-iig] ).  The IPP application SHOULD NOT +   repeat the request without modifications. + +13.1.4.2 client-error-forbidden (0x0401) + +   The IPP object understood the request, but is refusing to fulfill it. +   Additional authentication information or authorization credentials +   will not help and the request SHOULD NOT be repeated.  This status + + + + + +deBry, et al.                 Experimental                    [Page 147] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   code is commonly used when the IPP object does not wish to reveal +   exactly why the request has been refused or when no other response is +   applicable. + +13.1.4.3 client-error-not-authenticated (0x0402) + +   The request requires user authentication.  The IPP client may repeat +   the request with suitable authentication information. If the request +   already included authentication information, then this status code +   indicates that authorization has been refused for those credentials. +   If this response contains the same challenge as the prior response, +   and the user agent has already attempted authentication at least +   once, then the response message may contain relevant diagnostic +   information.  This status codes reveals more information than +   "client-error-forbidden". + +13.1.4.4 client-error-not-authorized (0x0403) + +   The requester is not authorized to perform the request.  Additional +   authentication information or authorization credentials will not help +   and the request SHOULD NOT be repeated.  This status code is used +   when the IPP object wishes to reveal that the authentication +   information is understandable, however, the requester is explicitly +   not authorized to perform the request.  This status codes reveals +   more information than "client-error-forbidden" and "client-error- +   not-authenticated". + +13.1.4.5 client-error-not-possible (0x0404) + +   This status code is used when the request is for something that can +   not 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 NOT repeat the request. + +13.1.4.6 client-error-timeout (0x0405) + +   The client did not produce a request within the time that the IPP +   object was prepared to wait.  For example, a client issued a Create- +   Job operation and then, after a long period of time, issued a Send- +   Document operation and this error status code was returned in +   response to the Send-Document request  (see section 3.3.1).  The IPP +   object might have been forced to clean up resources that had been +   held for the waiting additional Documents.  The IPP object was forced +   to close the Job since the client took too long.  The client SHOULD +   NOT repeat the request without modifications. + + + + + + +deBry, et al.                 Experimental                    [Page 148] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +13.1.4.7 client-error-not-found (0x0406) + +   The IPP object has not found anything matching the request URI.  No +   indication is given of whether the condition is temporary or +   permanent.  For example, a client with an old reference to a Job (a +   URI) tries to cancel the Job, however in the mean time the Job might +   have been completed and all record of it at the Printer has been +   deleted.  This status code, 'client-error-not-found' is returned +   indicating that the referenced Job can not be found.  This error +   status code is also used when a client supplies a URI as a reference +   to the document data in either a Print-URI or Send-URI operation, but +   the document can not be found. + +   In practice, an IPP application should avoid a not found situation by +   first querying and presenting a list of valid Printer URIs and Job +   URIs to the end-user. + +13.1.4.8 client-error-gone (0x0407) + +   The requested object is no longer available and no forwarding address +   is known.  This condition should be considered permanent.  Clients +   with link editing capabilities should delete references to the +   request URI after user approval.  If the IPP object does not know or +   has no facility to determine, whether or not the condition is +   permanent, the status code "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 +   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. + +13.1.4.9 client-error-request-entity-too-large (0x0408) + +   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. +   An IPP Printer returns this status code when it limits the size of +   print jobs and it receives a print job that exceeds that limit or +   when the attributes are so many that their encoding causes the +   request entity to exceed IPP object capacity. + + + + + + + + +deBry, et al.                 Experimental                    [Page 149] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +13.1.4.10 client-error-request-value-too-long (0x0409) + +   The IPP object is refusing to service the request because one or more +   of the client-supplied attributes has a variable length value that is +   longer than the maximum length specified for that attribute.  The IPP +   object might not have sufficient resources (memory, buffers, etc.) to +   process (even temporarily), interpret, and/or ignore a value larger +   than the maximum length.  Another use of this error code is when the +   IPP object supports the processing of a large value that is less than +   the maximum length, but during the processing of the request as a +   whole, the object may pass the value onto some other system component +   which is not able to accept the large value.  For more details, see +   the Implementer's Guide [ipp-iig] . + +   Note:  For attribute values that are URIs, this rare condition is +   only 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 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 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 fixed-length buffers for reading or manipulating the +   Request-URI. + +13.1.4.11 client-error-document-format-not-supported (0x040A) + +   The IPP object is refusing to service the request because the +   document data is in a format, as specified in the "document-format" +   operation attribute, that is not supported by the Printer object. +   This error is returned independent of the client-supplied "ipp- +   attribute-fidelity".  The Printer object MUST return this status +   code, even if there are other attributes that are not supported as +   well, since this error is a bigger problem than with Job Template +   attributes. + +13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) + +   In a create request, if the Printer object does not support one or +   more attributes, attribute syntaxes, or attribute values supplied in +   the request and the client supplied the "ipp-attributes-fidelity" +   operation attribute with the 'true' value, the Printer object MUST +   return this status code.  For example, if the request indicates ' +   iso-a4' media, but that media type is not supported by the Printer +   object.  Or, if the client supplies an optional attribute and the +   attribute itself is not even supported by the Printer.  If the "ipp- +   attribute-fidelity" attribute is 'false', the Printer MUST ignore or +   substitute values for unsupported attributes and values rather than +   reject the request and return this status code. + + + +deBry, et al.                 Experimental                    [Page 150] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   For any operation where a client requests attributes (such as a Get- +   Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if +   the IPP object does not support one or more of the requested +   attributes, the IPP object simply ignores the unsupported requested +   attributes and processes the request as if they had not been +   supplied, rather than 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 13.1.2.2). + +13.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 +   operation is not supported. + +13.1.4.14 client-error-charset-not-supported (0x040D) + +   For any operation, if the IPP Printer does not support the charset +   supplied by the client in the "attributes-charset" operation +   attribute, the Printer MUST reject the operation and return this +   status and any 'text' or 'name' attributes using the 'utf-8' charset +   (see Section 3.1.4.1). + +13.1.4.15 client-error-conflicting-attributes (0x040E) + +   The request is rejected because some attribute values conflicted with +   the values of other attributes which this specification does not +   permit to be substituted or ignored. + +13.1.5 Server Error Status Codes + +   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. +   The IPP object SHOULD include a message containing an explanation of +   the error situation, and whether it is a temporary or permanent +   condition. + +13.1.5.1 server-error-internal-error (0x0500) + +   The IPP object encountered an unexpected condition that prevented it +   from fulfilling the request.  This error status code differs from +   "server-error-temporary-error" in that it implies a more permanent +   type of internal error.  It also differs from "server-error-device- +   error" in that it implies an unexpected condition (unlike a paper-jam +   or out-of-toner problem which is undesirable but expected).  This +   error status code indicates that probably some knowledgeable human +   intervention is required. + + + +deBry, et al.                 Experimental                    [Page 151] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +13.1.5.2 server-error-operation-not-supported (0x0501) + +   The IPP object does not support the functionality required to fulfill +   the request. This is the appropriate response when the IPP object +   does not recognize an operation or is not capable of supporting it. + +13.1.5.3 server-error-service-unavailable (0x0502) + +   The IPP object is currently unable to handle the request due to a +   temporary overloading or maintenance of the IPP object.  The +   implication is that this is a temporary condition which will be +   alleviated after some delay. If known, the length of the delay may be +   indicated in the message.  If no delay is given, the IPP application +   should handle the response as it would for a "server-error- +   temporary-error" response.  If the condition is more permanent, the +   error status codes "client-error-gone" or "client-error-not-found" +   could be used. + +13.1.5.4 server-error-version-not-supported (0x0503) + +   The IPP object does not support, or refuses to support, the IPP +   protocol version that was used in the request message.  The IPP +   object is indicating that it is unable or unwilling to complete the +   request using the same version as supplied in the request other than +   with this error message. The response should contain a Message +   describing why that version is not supported and what other versions +   are supported by that IPP object. + +   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 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 in the "version-number" operation attribute the closest +   version number that the IPP object does support. + +13.1.5.5 server-error-device-error (0x0504) + +   A printer error, such as a paper jam, occurs while the IPP object +   processes a Print or Send operation.  The response contains the true +   Job Status (the values of the "job-state" and "job-state-reasons" +   attributes).  Additional information can be returned in the optional +   "job-state-message" attribute value or in the OPTIONAL status message +   that describes the error in more detail.  This error status code is +   only returned in situations where the Printer is unable to accept the +   create request because of such a device error.  For example, if the +   Printer is unable to spool, and can only accept one job at a time, +   the reason it might reject a create request is that the printer +   currently has a paper jam.  In many cases however, where the Printer + + + +deBry, et al.                 Experimental                    [Page 152] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   object can accept the request even though the Printer has some error +   condition, 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 the Printer to determine its state and state reasons. + +13.1.5.6 server-error-temporary-error (0x0505) + +   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 full condition, occurs while the IPP Printer processes an +   operation.  The client MAY try the unmodified request again at some +   later point in time with an expectation that the temporary internal +   error condition may have been cleared.  Alternatively, as an +   implementation option, a Printer object MAY delay the response until +   the temporary condition is cleared so that no error is returned. + +13.1.5.7 server-error-not-accepting-jobs (0x0506) + +   A temporary error indicating that the Printer is not currently +   accepting jobs, because the administrator has set the value of the +   Printer's "printer-is-not-accepting-jobs" attribute to 'false' (by +   means outside of IPP/1.0). + +13.1.5.8 server-error-busy (0x0507) + +   A temporary error indicating that the Printer is too busy processing +   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. + +13.1.5.9 server-error-job-canceled (0x0508) + +   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. + +13.2 Status Codes for IPP Operations + +   PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document +   SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and +   Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job + + + + + + + + +deBry, et al.                 Experimental                    [Page 153] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +                                                  IPP Operations +   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-ignored-or-substituted-    x  x  x  x  x  x x  x  x +        attributes +   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-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-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-timeout                           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-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-document-format-not-        x  x     x  x  x x +        supported +   client-error-attributes-or-values-not-   x  x  x  x  x  x x  x  x +        supported +   client-error-uri-scheme-not-supported       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 +   server-error-internal-error              x  x  x  x  x  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-version-not-supported       x  x  x  x  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-not-accepting-jobs          x  x  x        x +   server-error-busy                        x  x  x  x  x  x x  x  x +   server-error-job-canceled                x        x + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 154] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +14. APPENDIX C:  "media" keyword values + +   Standard keyword values are taken from several sources. + +   Standard values are defined (taken from DPA[ISO10175] and the Printer +   MIB[RFC1759]): + +     'default': The default medium for the output device +     'iso-a4-white': Specifies the ISO A4 white medium +     'iso-a4-colored': Specifies the ISO A4 colored medium +     'iso-a4-transparent' Specifies the ISO A4 transparent medium +     'iso-a3-white': Specifies the ISO A3 white medium +     'iso-a3-colored': Specifies the ISO A3 colored medium +     'iso-a5-white': Specifies the ISO A5 white medium +     'iso-a5-colored': Specifies the ISO A5 colored medium +     'iso-b4-white': Specifies the ISO B4 white medium +     'iso-b4-colored': Specifies the ISO B4 colored medium +     'iso-b5-white': Specifies the ISO B5 white medium +     'iso-b5-colored': Specifies the ISO B5 colored medium +     'jis-b4-white': Specifies the JIS B4 white medium +     'jis-b4-colored': Specifies the JIS B4 colored medium +     'jis-b5-white': Specifies the JIS B5 white medium +     'jis-b5-colored': Specifies the JIS B5 colored medium + +   The following standard values are defined for North American media: + +     'na-letter-white': Specifies the North American letter white medium +     'na-letter-colored': Specifies the North American letter colored +        medium +     'na-letter-transparent': Specifies the North American letter +        transparent medium +     'na-legal-white': Specifies the North American legal white medium +     'na-legal-colored': Specifies the North American legal colored +        medium + +   The following standard values are defined for envelopes: + +     'iso-b4-envelope': Specifies the ISO B4 envelope medium +     'iso-b5-envelope': Specifies the ISO B5 envelope medium +     'iso-c3-envelope': Specifies the ISO C3 envelope medium +     'iso-c4-envelope': Specifies the ISO C4 envelope medium +     'iso-c5-envelope': Specifies the ISO C5 envelope medium +     'iso-c6-envelope': Specifies the ISO C6 envelope medium +     'iso-designated-long-envelope': Specifies the ISO Designated Long +        envelope medium +     'na-10x13-envelope': Specifies the North American 10x13 envelope +        medium + + + + +deBry, et al.                 Experimental                    [Page 155] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'na-9x12-envelope': Specifies the North American 9x12 envelope +        medium +     'monarch-envelope': Specifies the Monarch envelope +     'na-number-10-envelope': Specifies the North American number 10 +        business envelope medium +     'na-7x9-envelope': Specifies the North American 7x9 inch envelope +     'na-9x11-envelope': Specifies the North American 9x11 inch envelope +     'na-10x14-envelope': Specifies the North American 10x14 inch +        envelope +     'na-number-9-envelope': Specifies the North American number 9 +        business envelope +     'na-6x9-envelope': Specifies the North American 6x9 inch envelope +     'na-10x15-envelope': Specifies the North American 10x15 inch +        envelope + +   The following standard values are defined for the less commonly used +   media (white-only): + +     'executive-white': Specifies the white executive medium +     'folio-white': Specifies the folio white medium +     'invoice-white': Specifies the white invoice medium +     'ledger-white': Specifies the white ledger medium +     'quarto-white': Specified the white quarto medium +     'iso-a0-white': Specifies the ISO A0 white medium +     'iso-a1-white': Specifies the ISO A1 white medium +     'iso-a2-white': Specifies the ISO A2 white medium +     'iso-a6-white': Specifies the ISO A6 white medium +     'iso-a7-white': Specifies the ISO A7 white medium +     'iso-a8-white': Specifies the ISO A8 white medium +     'iso-a9-white': Specifies the ISO A9 white medium +     'iso-10-white': Specifies the ISO A10 white medium +     'iso-b0-white': Specifies the ISO B0 white medium +     'iso-b1-white': Specifies the ISO B1 white medium +     'iso-b2-white': Specifies the ISO B2 white medium +     'iso-b3-white': Specifies the ISO B3 white medium +     'iso-b6-white': Specifies the ISO B6 white medium +     'iso-b7-white': Specifies the ISO B7 white medium +     'iso-b8-white': Specifies the ISO B8 white medium +     'iso-b9-white': Specifies the ISO B9 white medium +     'iso-b10-white': Specifies the ISO B10 white medium +     'jis-b0-white': Specifies the JIS B0 white medium +     'jis-b1-white': Specifies the JIS B1 white medium +     'jis-b2-white': Specifies the JIS B2 white medium +     'jis-b3-white': Specifies the JIS B3 white medium +     'jis-b6-white': Specifies the JIS B6 white medium +     'jis-b7-white': Specifies the JIS B7 white medium + + + + + +deBry, et al.                 Experimental                    [Page 156] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'jis-b8-white': Specifies the JIS B8 white medium +     'jis-b9-white': Specifies the JIS B9 white medium +     'jis-b10-white': Specifies the JIS B10 white medium + + +   The following standard values are defined for engineering media: + +     'a': Specifies the engineering A size medium +     'b': Specifies the engineering B size medium +     'c': Specifies the engineering C size medium +     'd': Specifies the engineering D size medium +     'e': Specifies the engineering E size medium + + +   The following standard values are defined for input-trays (from ISO +   DPA and the Printer MIB): + +     'top': The top input tray in the printer. +     'middle': The middle input tray in the printer. +     'bottom': The bottom input tray in the printer. +     'envelope': The envelope input tray in the printer. +     'manual': The manual feed input tray in the printer. +     'large-capacity': The large capacity input tray in the printer. +     'main': The main input tray +     'side': The side input tray + + +   The following standard values are defined for media sizes (from ISO +   DPA): + +     '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 216 +     'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in +        ISO 216 +     'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in +        ISO 216 +     'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in +        ISO 216 +     'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in +        ISO 216 +     'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in +        ISO 216 +     'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in +        ISO 216 +     'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in +        ISO 216 + + + +deBry, et al.                 Experimental                    [Page 157] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in +        ISO 216 +     'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in +        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 216 +     'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in +        ISO 216 +     'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in +        ISO 216 +     'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in +        ISO 216 +     'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in +        ISO 216 +     'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in +        ISO 216 +     'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in +        ISO 216 +     'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in +        ISO 216 +     'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in +        ISO 216 +     'na-letter': Specifies the North American letter size: 8.5 inches by +        11 inches +     'na-legal': Specifies the North American legal size: 8.5 inches by +        14 inches +     'executive': Specifies the executive size (7.25 X 10.5 in) +     'folio': Specifies the folio size (8.5 X 13 in) +     'invoice': Specifies the invoice size (5.5 X 8.5 in) +     'ledger': Specifies the ledger size (11 X 17 in) +     'quarto': Specifies the quarto size (8.5 X 10.83 in) +     'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in +        ISO 269 +     'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in +        ISO 269 +     'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in +        ISO 269 +     'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in +        ISO 269 +     'iso-designated-long': Specifies the ISO Designated Long size: 110 +        mm by 220 mm as defined in ISO 269 +     'na-10x13-envelope': Specifies the North American 10x13 size: 10 +        inches by 13 inches + + + + +deBry, et al.                 Experimental                    [Page 158] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     'na-9x12-envelope': Specifies the North American 9x12 size: 9 +        inches by 12 inches +     'na-number-10-envelope': Specifies the North American number 10 +        business envelope size: 4.125 inches by 9.5 inches +     'na-7x9-envelope': Specifies the North American 7x9 inch envelope +        size +     'na-9x11-envelope': Specifies the North American 9x11 inch envelope +        size +     'na-10x14-envelope': Specifies the North American 10x14 inch +        envelope size +     'na-number-9-envelope': Specifies the North American number 9 +        business envelope size +     'na-6x9-envelope': Specifies the North American 6x9 envelope size +     'na-10x15-envelope': Specifies the North American 10x15 envelope +        size +     'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 +        in) +     'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm +     'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm +     'jis-b2': Specifies the JIS B2 size: 515mm x 728mm +     'jis-b3': Specifies the JIS B3 size: 364mm x 515mm +     'jis-b4': Specifies the JIS B4 size: 257mm x 364mm +     'jis-b5': Specifies the JIS B5 size: 182mm x 257mm +     'jis-b6': Specifies the JIS B6 size: 128mm x 182mm +     'jis-b7': Specifies the JIS B7 size: 91mm x 128mm +     'jis-b8': Specifies the JIS B8 size: 64mm x 91mm +     'jis-b9': Specifies the JIS B9 size: 45mm x 64mm +     'jis-b10': Specifies the JIS B10 size: 32mm x 45mm + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 159] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +15. APPENDIX D: Processing IPP Attributes + +   When submitting a print job to a Printer object, the IPP model allows +   a client to supply operation and Job Template attributes along with +   the document data.  These Job Template attributes in the create +   request affect the rendering, production and finishing of the +   documents in the job.  Similar types of instructions may also be +   contained in the document to be printed, that is, embedded within the +   print data itself.  In addition, the Printer has a set of attributes +   that describe what rendering and finishing options which are +   supported by that Printer.  This model, which allows for flexibility +   and power, also introduces the potential that at job submission time, +   these client-supplied attributes may conflict with either: + +     - what the implementation is capable of realizing (i.e., what the +       Printer supports), as well as +     - the instructions embedded within the print data itself. + +   The following sections describe how these two types of conflicts are +   handled in the IPP model. + +15.1 Fidelity + +   If there is a conflict between what the client requests and what a +   Printer object supports, the client may request one of two possible +   conflict handling mechanisms: + +     1) either reject the job since the job can not be processed exactly +        as specified, or +     2) allow the Printer to make any changes necessary to proceed with +        processing the Job the best it can. + +   In the first case the client is indicating to the Printer object: +   "Print the job exactly as specified with no exceptions, and if that +   can't be done, don't even bother printing the job at all." In the +   second case, the client is indicating to the Printer object: "It is +   more important to make sure the job is printed rather than be +   processed exactly as specified; just make sure the job is printed +   even if client supplied attributes need to be changed or ignored." + +   The IPP model accounts for this situation by introducing an "ipp- +   attribute-fidelity" attribute. + +   In a create request, "ipp-attribute-fidelity" is a boolean operation +   attribute that is OPTIONALLY supplied by the client.  The value ' +   true' indicates that total fidelity to client supplied Job Template +   attributes and values is required.  The client is requesting that the +   Job be printed exactly as specified, and if that is not possible then + + + +deBry, et al.                 Experimental                    [Page 160] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   the job MUST be rejected rather than processed incorrectly.  The +   value 'false' indicates that a reasonable attempt to print the Job is +   acceptable.  If a Printer does not support some of the client +   supplied Job Template attributes or values, the Printer MUST ignore +   them or substitute any supported value for unsupported values, +   respectively.  The Printer may choose to substitute the default value +   associated with that attribute, or use some other supported value +   that is similar to the unsupported requested value.  For example, if +   a client supplies a "media" value of 'na-letter', the Printer may +   choose to substitute 'iso-a4' rather than a default value of ' +   envelope'. If the client does not supply the "ipp-attribute-fidelity" +   attribute, the Printer assumes a value of 'false'. + +   Each Printer implementation MUST support both types of "fidelity" +   printing (that is whether the client supplies a value of 'true' or ' +   false'): + +     - If the client supplies 'false' or does not supply the attribute, +       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 +       supported values. +     - If the client supplies 'true', the Printer object MUST reject the +       request if the client supplies unsupported Job Template +       attributes. + +   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 +   useful when: + +     1) The End-User uses a command line interface to request attributes +        that might not be supported. +     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 all. +     3) The End User just wants something reasonable in lieu of nothing +        at all. + +15.2 Page Description Language (PDL) Override + +   If there is a conflict between the value of an IPP Job Template +   attribute and a corresponding instruction in the document data, the +   value of the IPP attribute SHOULD take precedence over the document +   instruction.  Consider the case where a previously formatted file of +   document data is sent to an IPP Printer.  In this case, if the client +   supplies any attributes at job submission time, the client desires +   that those attributes override the embedded instructions.  Consider +   the case were a previously formatted document has embedded in it + + + +deBry, et al.                 Experimental                    [Page 161] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   commands to load 'iso-a4' media.  However, the document is passed to +   an end user that only has access to a printer with 'na-letter' media +   loaded.  That end user most likely wants to submit that document to +   an IPP Printer with the "media" Job Template attribute set to 'na- +   letter'.  The job submission attribute should take precedence over +   the embedded PDL instruction.  However, until companies that supply +   document data interpreters allow a way for external IPP attributes to +   take precedence over embedded job production instructions, a Printer +   might not be able to support the semantics that IPP attributes +   override the embedded instructions. + +   The IPP model accounts for this situation by introducing a "pdl- +   override-supported" attribute that describes the Printer objects +   capabilities to override instructions embedded in the PDL data +   stream.  The value of the "pdl-override-supported" attribute is +   configured by means outside IPP/1.0. + +   This REQUIRED Printer attribute takes on the following values: + +     - 'attempted': This value indicates that the Printer object +       attempts to make the IPP attribute values take precedence over +       embedded instructions in the document data, however there is no +       guarantee. +     - '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. + +   At job processing time, an implementation that supports the value of +   'attempted' might do one of several different actions: + +     1) Generate an output device specific command sequence to realize +        the feature represented by the IPP attribute value. +     2) Parse the document data itself and replace the conflicting +        embedded instruction with a new embedded instruction that +        matches the intent of the IPP attribute value. +     3) Indicate to the Printer that external supplied attributes take +        precedence over embedded instructions and then pass the external +        IPP attribute values to the document data interpreter. +     4) Anything else that allows for the semantics that IPP attributes +        override embedded document data instructions. + +   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 +   ensure that IPP attributes take a higher precedence over instructions +   embedded in the document data, it would still be a conforming +   implementation. + + + + + +deBry, et al.                 Experimental                    [Page 162] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   At job processing time, an implementation that supports the value of +   'not-attempted' might do one of the following actions: + +     1) Simply pre-pend the document data with the PDL instruction that +        corresponds to the client-supplied PDL attribute, such that if +        the document data also has the same PDL instruction, it will +        override what the Printer object pre-pended.  In other words, +        this implementation is using the same implementation semantics +        for the client-supplied IPP attributes as for the Printer object +        defaults. +     2) Parse the document data and replace the conflicting embedded +        instruction with a new embedded instruction that approximates, +        but does not match, the semantic intent of the IPP attribute +        value. + +   Note:  The "ipp-attribute-fidelity" attribute applies to the +   Printer's ability to either accept or reject other unsupported Job +   Template attributes.  In other words, if "ipp-attribute-fidelity" is +   set to 'true', a Job is accepted if and only if the client supplied +   Job Template attributes and values are supported by the Printer. +   Whether these attributes actually affect the processing of the Job +   when the document data contains embedded instructions depends on the +   ability of the Printer to override the instructions embedded in the +   document data with the semantics of the IPP attributes.  If the +   document data attributes can be overridden ("pdl-override-supported" +   set to 'attempted'), the Printer makes an attempt to use the IPP +   attributes when processing the Job. If the document data attributes +   can not be overridden ("pdl-override-supported" set to 'not- +   attempted'), the Printer makes no attempt to override the embedded +   document data instructions with the IPP attributes when processing +   the Job, and hence, the IPP attributes may fail to affect the Job +   processing and output when the corresponding instruction is embedded +   in the document data. + +15.3 Using Job Template Attributes During Document Processing. + +   The Printer object uses some of the Job object's Job Template +   attributes during the processing of the document data associated with +   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 +        form of document format detection algorithm (if the value of +        "document- format" is not specific enough), determine whether or + + + +deBry, et al.                 Experimental                    [Page 163] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +        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 +        media type. The "page-ranges" attribute is used to select, as +        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 +        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. + +        The size(scaling), position(translation) and rotation of the +        print-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. + +     4. The collection of impressions is placed, in sequence, onto sides +        of the media sheets. This placement is controlled by the "sides" +        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. + + + +deBry, et al.                 Experimental                    [Page 164] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +     5. The "copies" and "multiple-document-handling" attributes are +        used to determine how many copies of each media instance are +        created and in what order. See sections 4.2.5 and 4.2.4 for the +        details. + +     6. When the correct number of copies are created, the media +        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. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 165] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +16. APPENDIX E: Generic Directory Schema + +   This section defines a generic schema for an entry in a directory +   service.  A directory service is a means by which service users can +   locate service providers.  In IPP environments, this means that IPP +   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 +   "aliasing".  That is, one directory entry object can appear as +   multiple directory entry object with different names for each object. +   In each case, each alias refers to the same directory entry object +   which refers to a single IPP Printer object. + +   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 the directory entry (if known or +   supported).  In addition, all directory entry attributes SHOULD +   reflect the current attribute values for the corresponding Printer +   object. + +   The names of attributes in directory schema and entries SHOULD be the +   same as the IPP Printer attribute names as shown. + +   In order to bridge between the directory service and the IPP Printer +   object, one of the RECOMMENDED directory entry attributes is the +   Printer object's "printer-uri-supported" attribute.  The IPP client +   queries the "printer-uri-supported" attribute in the directory entry + + + + + +deBry, et al.                 Experimental                    [Page 166] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   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 +   entries of type PRINTER: + +     printer-uri-supported           RECOMMENDED    Section 4.4.1 +     uri-security-supported          RECOMMENDED    Section 4.4.2 +     printer-name                    RECOMMENDED    Section 4.4.3 +     printer-location                RECOMMENDED    Section 4.4.4 +     printer-info                    OPTIONAL       Section 4.4.5 +     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 + + + + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 167] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +17. APPENDIX F:  Change History for the IPP Model and Semantics document + +   The following substantive changes and major clarifications have been +   made to this document from the June 30, 1998 version based on the +   interoperability testing that took place September 23-25 1998 and +   subsequent mailing list and meeting discussions.  They are listed in +   the order of occurrence in the document.  These changes are the ones +   that might affect implementations.  Clarifications that are unlikely +   to affect implementations are not listed.  The issue numbers refer to +   the IPP Issues List which is available in the following directory: + +        ftp://ftp.pwg.org/pub/pwg/ipp/approved-clarifications/ + +   Section   Description + +   global    Replaced TLS references with SSL3 references as agreed with +             our Area Director on 11/12/1998. + +   global    Removed the indications that some of these IPP documents +             are informational, since the intent is now to publish all +             IPP/1.0 documents as informational as agreed with our Area +             Director on 11/12/1998. + +   3.1.2,    Clarify that the IPP object SHOULD NOT validate the +   16.3.3    range of the request-id being 1 to 2**31-1, but accepts +   [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). + +   3.1.4.1,  Clarified that when a client submits a request in a +   13.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) + +   3.1.4.1   Clarified Section 3.1.4.1 Request Operation Attributes +             that a client MAY use the attribute level natural +             language override (text/nameWithLanguage) redundantly in +             a request.  (Issue 1.46) + +   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) + + + + + +deBry, et al.                 Experimental                    [Page 168] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   3.1.6     Clarified section 3.1.6:  If the Printer object supports +             the "status-message" operation attribute, it NEED NOT +             return a status message for the following error status +             codes:  'client-error-bad-request', 'client-error- +             charset-not-supported', 'server-error-internal-error', +             'server-error-operation-not-supported', and 'server- +             error-version-not-supported'. + +   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 [RFC2566] agree with [RFC2565].  (Issue 1.16) + +   3.2.1.2,  Clarified that if an IPP object is not returning any +   3.2.5.2,  Unsupported Attributes in a response, the IPP object +   3.2.6.2,  SHOULD omit Group 2 rather than sending an empty group. +   3.3.1.2,  However, a client MUST be able to accept an empty group. +   3.3.3.2,  This makes [RFC2566] agree with [RFC2565].  (Issue 1.17) +   3.3.4.2 + +   3.2.1.2,  Clarified that an IPP object MUST treat an unsupported +   13.1.2.2, attribute syntax supplied in a request in the same way +   13.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) + +   3.2.5.2,  Clarified for Get-Printer-Attributes, Get-Jobs, and Get- +   3.2.6.2,  Job-Attributes that an IPP object MUST return +   3.3.4.2,  'successful-ok-ignored-or-substituted-attributes' (0x1), + +   13.1.2.1, rather than 'successful-ok' (0x0), when a client +   13.1.2.2, supplies unsupported attributes as values of the +   13.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) + +   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) + + + + + + +deBry, et al.                 Experimental                    [Page 169] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   3.3.1     Clarified that an IPP Printer that supports the Create- +             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) + +   3.3.3     Clarified that the IPP object MUST reject a Cancel-Job +             request if the job is in 'completed', 'canceled', or +             'aborted' job states.  (Issue 1.12) + +   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) + +   4.1.5     Clarified regarding the case-insensitivity of URLs to +             refer only to the RFCs that define them.  (Issue 1.10) + +   4.1.11    Clarified that 'boolean' is not a full-sized integer. +             (Issue 1.38) + +   4.1.15    Clarified that 'resolution' is not three full-sized +             integers.  (Issue 1.20) + +   4.2.*     Clarified that standard values are keywords or enums, +             not names.  (Issue 1.49). + +   4.2.4     Added the 'single-document-new-sheet' value to Section +             4.2.4 multiple-document-handling.  (Issue 1.54) + +   4.4.18,   Clarified that the "document-format-default" and +   4.4.19    "document-format-supported" Printer Description +             attributes are REQUIRED to agree with the table.  (Issue +             1.4) + +   4.4.21    Changed "queued-job-count" from OPTIONAL to RECOMMENDED. +             (Issue 1.14) + + + + + + + +deBry, et al.                 Experimental                    [Page 170] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   4.4.28    Clarified that the implementation supplied value for the +             "multiple-operation-time-out" attribute SHOULD be +             between 30 and 240 seconds, though the implementation +             MAY allow the administrator to set values, and MAY allow +             values outside this range.  (Issue 1.28) + +   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) + +   6.5,      Added new section to allow Attribute Groups to be +   12.8      registered as extensions for being passed in operation +             requests and responses.  (Issue 1.25) + +   7.        Updated the table of text and name attributes to agree +             with Section 4.2. + +   8.5       Added a new section RECOMMENDING that the Get-Jobs +             SHOULD return non-IPP jobs whether or not assigning them +             a job-id and job-uri.  Also RECOMMENDED generating, if +             possible, job-id and job-uri and supporting other IPP +             operations on foreign jobs as an implementer option. +             (Issue 1.32) + +   9.        Updated document references. + +   13.1.4.14 Clarified 'client-error-charset-not-supported' that +             'utf-8' must be used for any 'text' or 'name' attributes +             returned in the error response (Issue 1.19). + +   13.1.5.9  Added a new error code 'server-error-job-canceled' +             (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) + +   15.3,     Moved these sections recommending operation processing +   15.4      steps to the new Implementer's Guide (informational). +             There indicated that all of the error checks are not +             required, so an IPP object MAY be forgiving and accept +             non-conforming requests.  However, a conforming client +             MUST supply requests that would pass all of the error +             checks indicated.  (Issue 1.21) + + + + + + + +deBry, et al.                 Experimental                    [Page 171] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +   16        Changed directory schema attributes from REQUIRED to +             RECOMMENDED.  Changed some of the OPTIONAL to +             RECOMMENDED to agree with the SLP template.  Changed the +             "charset-supported" and "natural-language-supported" +             from REQUIRED to OPTIONAL.  Recommended that the names +             be the same in a directory entry as the IPP attribute +             names. (Issue 1.53) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 172] + +RFC 2566              IPP/1.0: Model and Semantics            April 1999 + + +18.  Full Copyright Statement + +   Copyright (C) The Internet Society (1999).  All Rights Reserved. + +   This document and translations of it may be copied and furnished to +   others, and derivative works that comment on or otherwise explain it +   or assist in its implementation may be prepared, copied, published +   and distributed, in whole or in part, without restriction of any +   kind, provided that the above copyright notice and this paragraph are +   included on all such copies and derivative works.  However, this +   document itself may not be modified in any way, such as by removing +   the copyright notice or references to the Internet Society or other +   Internet organizations, except as needed for the purpose of +   developing Internet standards in which case the procedures for +   copyrights defined in the Internet Standards process must be +   followed, or as required to translate it into languages other than +   English. + +   The limited permissions granted above are perpetual and will not be +   revoked by the Internet Society or its successors or assigns. + +   This document and the information contained herein is provided on an +   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + + + + + + + + + + + + + + + + + + + + + + + + +deBry, et al.                 Experimental                    [Page 173] + |