Appendix A: Allowed Values for Set-Printer-Attributes and Set-Job-Attributes requests (Normative)
This appendix is a normative part of this document and contains a table of all IPP/1.1 attributes. Each row contains: - an attribute and - the values allowed in the Set-Printer-Attributes or Set-Job- Attributes request for the attribute. The entry in each cell is the name (first few words) of each item below 1, 2, 3, 4a-g, and 5. The allowed values include the following cases: 1. READ-ONLY: the Set-Printer-Attributes or Set-Job-Attributes operation MUST NOT change this attribute and MUST reject the entire operation (see section 7.1). 2. Any of "xxx-supported": the Set-Printer-Attributes or Set- Job-Attributes operation accepts values that are allowed according to the IPP/1.1 rules for validating the value(s) of an "xxx" Printer or Job attribute against the value(s) of the corresponding "xxx-supported" Printer attribute. Table 5 summarizes those validation rules depending on each attribute syntax and value of an "xxx" attribute supplied in the request and that of the corresponding "xxx-supported" Printer attribute. The "xxx-supported" attribute syntax type and value(s) are obtained from a Get-Printer-Supported-Values response (see the tables in this Appendix).
Table 5 - Validation rules for 'Any of "xxx-supported" ' Type of "xxx" Type of "xxx- Validates if: value to be supported" value set integer rangeOfInteger each value is in one of the "xxx-supported" ranges uri uriScheme each uri scheme matches one of the "xxx-supported" schemes any boolean if the boolean "xxx- supported" is 'true' any same type each value matches an "xxx- supported" value of the same type For additional non-normative explanatory information see section 3.1.2.3 of the "Internet Printing Protocol/1.1: Implementer's Guide" [RFC3196]. 3. From Get-Printer-Supported-Values: the Set-Printer-Attributes operation accepts values that are allowed according to the IPP/1.1 rules for validating the value(s) of an "xxx" Printer attribute against the value(s) of the corresponding "xxx- supported" Printer attribute. Table 6 summarizes those validation rules depending on each attribute syntax and value of an "xxx" attribute supplied in the request and that of the corresponding "xxx-supported" Printer attribute. The "xxx- supported" attribute syntax type and attribute value(s) are obtained from a Get-Printer-Supported-Values response (see Appendix B: Attributes returned from Get-Printer-Supported- Values below).
Table 6 - Validation rules for 'From Get-Printer-Supported-Values' Type of - "xxx" supported" value Validates if: value to be set Type of "xxx integer rangeOfInteger each 'integer' value is in one of the "xxx-supported" ranges uri uriScheme the uri scheme of each value matches one of the "xxx-supported" schemes any boolean if the boolean "xxx-supported" is 'true' name 'admin-define' any 'name' value matches out-of-band value any same type each value matches an "xxx- supported" value of the same type For additional non-normative explanatory information see section 3.1.2.3 of the "Internet Printing Protocol/1.1: Implementer's Guide" [RFC3196]. 4. Any value of the proper attribute syntax: the Set-Printer- Attributes or Set-Job-Attributes operation accepts any value of the specified attribute syntax. The attribute syntaxes supported are enumerated below. a. Any text(127) b. Any name(127) c. Any uri d. Any boolean e. Any positive integer f. Any dateTime g. 1setOf any uri 5. Combination of 'Any of "xxx-supported"' or 'Any name'. If a Printer implementation doesn't want to allow setting values indicated in this Appendix as "any xxx", it can make the value be not-settable.
Table 7 - Values allowed for Job Template Attributes in the Set-Job-Attributes Operation Job Template Attributes Values allowed for Set job-priority (integer(1:100)) Any of "xxx- supported" job-hold-until (type3 keyword | name (MAX)) Any of "xxx- supported" job-sheets (type3 keyword | name(MAX)) Any of "xxx- supported" multiple-document-handling (type2 keyword) Any of "xxx- supported" copies (integer(1:MAX)) Any of "xxx- supported" finishings (1setOf type2 enum) Any of "xxx- supported" page-ranges (1setOf rangeOfInteger (1:MAX)) Any of "xxx- supported" sides (type2 keyword) Any of "xxx- supported" number-up (integer(1:MAX)) Any of "xxx- supported" orientation-requested (type2 enum) Any of "xxx- supported" media (type3 keyword | name(MAX)) Any of "xxx- supported" printer-resolution (resolution) Any of "xxx- supported" print-quality (type2 enum) Any of "xxx- supported"
Table 8 - Values allowed for Job Description Attributes in the Set-Job-Attributes Operation Job Description Attributes Values allowed for Set job-uri (uri) READ-ONLY job-id (integer(1:MAX)) READ-ONLY job-printer-uri (uri) READ-ONLY job-more-info (uri) READ-ONLY job-name (name(MAX)) Any name(MAX) job-originating-user-name (name(MAX)) READ-ONLY job-state (type1 enum) READ-ONLY job-state-reasons (1setOf type2 keyword) READ-ONLY job-state-message (text(MAX)) READ-ONLY job-detailed-status-messages (1setOf READ-ONLY text(MAX)) job-document-access-errors (1setOf READ-ONLY text(MAX)) number-of-documents (integer(0:MAX)) READ-ONLY output-device-assigned (name(127)) READ-ONLY time-at-creation (integer(MIN:MAX)) READ-ONLY time-at-processing (integer(MIN:MAX)) READ-ONLY time-at-completed (integer(MIN:MAX)) READ-ONLY job-printer-up-time (integer(1:MAX)) READ-ONLY date-time-at-creation (dateTime) READ-ONLY
Job Description Attributes Values allowed for Set date-time-at-processing (dateTime) READ-ONLY date-time-at-completed (dateTime) READ-ONLY number-of-intervening-jobs (integer(0:MAX)) READ-ONLY job-message-from-operator (text(127)) Any text(127) job-k-octets (integer(0:MAX)) READ-ONLY job-impressions (integer(0:MAX)) READ-ONLY job-media-sheets (integer(0:MAX)) READ-ONLY job-k-octets-processed (integer(0:MAX)) READ-ONLY job-impressions-completed (integer(0:MAX)) READ-ONLY job-media-sheets-completed (integer(0:MAX)) READ-ONLY attributes-charset (charset) READ-ONLY attributes-natural-language READ-ONLY (naturalLanguage) Table 9 - Values allowed for Printer Job Template Attributes in the Set-Printer-Attributes Operation Printer Job Template Attributes Values allowed for Set job-priority-default (integer(1:100)) Any of "xxx- supported" job-hold-until-default (type3 keyword | name Any of "xxx- (MAX)) supported" job-sheets-default (type3 keyword | name(MAX)) Any of "xxx- supported" multiple-document-handling-default (type2 Any of "xxx- keyword) supported" copies-default (integer(1:MAX)) Any of "xxx- supported"
Printer Job Template Attributes Values allowed for Set finishings-default (1setOf type2 enum) Any of "xxx- supported" sides-default (type2 keyword) Any of "xxx- supported" number-up-default (integer(1:MAX)) Any of "xxx- supported" orientation-requested-default (type2 enum) Any of "xxx- supported" media-default (type3 keyword | name(MAX)) Any of "xxx- supported" printer-resolution-default (resolution) Any of "xxx- supported" print-quality-default (type2 enum) Any of "xxx- supported" job-priority-supported (integer(1:100)) From Get- Printer- Supported-Values job-hold-until-supported (1setOf(type3 keyword From Get- | name (MAX))) Printer- Supported-Values job-sheets-supported (1setOf(type3 keyword | From Get- name(MAX))) Printer- Supported-Values multiple-document-handling-supported (1setOf From Get- type2 keyword) Printer- Supported-Values copies-supported (rangeOfInteger(1:MAX)) From Get- Printer- Supported-Values finishings-supported (1setOf type2 enum) From Get- Printer- Supported-Values
Printer Job Template Attributes Values allowed for Set page-ranges-supported (boolean) From Get- Printer- Supported-Values sides-supported (1setOf type2 keyword) From Get- Printer- Supported-Values number-up-supported (1setOf (integer(1:MAX) | From Get- rangeOfInteger(1:MAX))) Printer- Supported-Values orientation-requested-supported (1setOf type2 From Get- enum) Printer- Supported-Values media-supported (1setOf (type3 keyword | From Get- name(MAX))) Printer- Supported-Values printer-resolution-supported (1setOf From Get- resolution) Printer- Supported-Values print-quality-supported (1setOf type2 enum) From Get- Printer- Supported-Values media-ready (type3 keyword | name(MAX)) From Get- Printer- Supported-Values
Table 10 - Values allowed for Printer Description Attributes in the Set-Printer-Attributes Operation Printer Description Attributes Values allowed for Set printer-uri-supported (1setOf uri) READ-ONLY uri-authentication-supported (1setOf type2 READ-ONLY keyword) uri-security-supported (1setOf type2 READ-ONLY keyword) printer-xri-supported (1setOf collection) member attributes: xri-uri (uri) any uriScheme of "xri-uri-scheme- supported" from Get-Printer- Attributes xri-authentication (type2 keyword) any keyword of "xri- authentication- supported" from Get-Printer- Attributes xri-security (type2 keyword) any keyword of "xri-security- supported" from Get-Printer- Attributes xri-uri-scheme-supported (1setOf uriScheme) READ-ONLY xri-authentication-supported (1setOf type2 READ-ONLY keyword) xri-security-supported (1setOf type2 READ-ONLY keyword)
Printer Description Attributes Values allowed for Set printer-name (name(127)) Any name(127) printer-location (text(127)) Any text(127) printer-info (text(127)) Any text(127) printer-more-info (uri) Any uri printer-driver-installer (uri) Any uri printer-make-and-model (text(127)) Any text(127) printer-more-info-manufacturer (uri) Any uri printer-state (type1 enum) READ-ONLY printer-state-reasons (1setOf type2 READ-ONLY keyword) printer-state-message (text(MAX)) READ-ONLY ipp-versions-supported (1setOf type2 From Get-Printer- keyword) Supported-Values operations-supported (1setOf type2 enum) From Get-Printer- Supported-Values multiple-document-jobs-supported (boolean) From Get-Printer- Supported-Values charset-configured (charset) Any of "xxx- supported", use "charset-supported" charset-supported (1setOf charset) From Get-Printer- Supported-Values
Printer Description Attributes Values allowed for Set natural-language-configured Any of "xxx- (naturalLanguage) supported", use "generated-natural- language-supported" generated-natural-language-supported From Get-Printer- (1setOf naturalLanguage) Supported-Values document-format-default (mimeMediaType) Any of "xxx- supported" document-format-supported (1setOf From Get-Printer- mimeMediaType) Supported-Values printer-is-accepting-jobs (boolean) READ-ONLY queued-job-count (integer(0:MAX)) READ-ONLY printer-message-from-operator (text(127)) Any text(127) color-supported (boolean) From Get-Printer- Supported-Values reference-uri-schemes-supported (1setOf From Get-Printer- uriScheme) Supported-Values pdl-override-supported (type2 keyword) From Get-Printer- Supported-Values printer-up-time (integer(1:MAX)) READ-ONLY printer-current-time (dateTime) Any dateTime ** multiple-operation-time-out any positive (integer(1:MAX)) integer compression-supported (1setOf type3 From Get-Printer- keyword) Supported-Values job-k-octets-supported From Get-Printer- (rangeOfInteger(0:MAX)) Supported-Values
Printer Description Attributes Values allowed for Set job-impressions-supported From-Get-Printer- (rangeOfInteger(0:MAX)) Supported-Values job-media-sheets-supported From Get-Printer- (rangeOfInteger(0:MAX)) Supported-Values pages-per-minute (integer(0:MAX)) READ-ONLY pages-per-minute-color (integer(0:MAX)) READ-ONLY printer-settable-attributes-supported From Get-Printer- (1setOf type2 keyword) Supported-Values job-settable-attributes-supported (1setOf From Get-Printer- type2 keyword) Supported-Values document-format-varying-attributes (1setOf READ-ONLY type2 keyword) printer-message-time (integer(MIN:MAX)) READ-ONLY printer-message-date-time(dateTime) READ-ONLY ** - The "printer-current-time" (dateTime) attribute is settable in order to allow an administrator to correct an incorrect dateTime or time zone.Appendix B: Attributes returned from Get-Printer-Supported-Values (Normative)
This Appendix is a normative part of this document and lists all the attributes that are possible for an implementation to return in a Get-Printer-Supported-Values response, i.e., all the "xxx-supported" attributes that can be supplied in a Set-Printer-Attributes request. READ-ONLY attributes MUST NOT be returned in a Get-Printer- Supported-Values response and are indicated in the tables as "READ- ONLY - MUST NOT be returned." For the following attributes, the value allowed by the Set-Printer- Attributes operation MUST be a single integer value in the range specified by the value returned by the Get-Printer-Supported-Values operation.
Table 11 - Printer Job Template Attributes returned from Get-Printer-Supported-Values Printer Job Template Attributes Values Returned job-priority-supported (integer(1:100)) rangeOfInteger(1:100) For the following attributes, the value allowed by the Set-Printer- Attributes operation MUST be a single rangeOfInteger value whose bounds do not exceed those of the range specified by the value returned by the Get-Printer-Supported-Values operation. Table 12 - Printer Job Template Attributes returned from Get-Printer-Supported-Values Printer Job Template Attributes Values Returned copies-supported (rangeOfInteger(1:MAX)) rangeOfInteger(1:MAX) The following table has the same criteria as the last, but is for Printer Description attributes. Table 13 - Printer Description Attributes returned from Get-Printer-Supported-Values Printer Description Attributes Values allowed for Set job-k-octets-supported rangeOfInteger(0:MAX) (rangeOfInteger(0:MAX)) job-impressions-supported (rangeOfInteger(0:MAX)) rangeOfInteger(0:MAX) job-media-sheets-supported rangeOfInteger(0:MAX) (rangeOfInteger(0:MAX)) For the following attributes, the value allowed by the Set-Printer- Attributes operation MUST be one or more integers and rangeOfInteger values, such that the integer values described by these integers and rangeOfInteger is the same as or a subset of the integers described by the integers and rangeOf Integer of values returned by the Get- Printer-Supported-Values operation.
Table 14 - Printer Job Template Attributes returned from Get-Printer-Supported-Values Printer Job Template Attributes Values Returned number-up-supported (1setOf (integer(1:MAX) 1setOf | rangeOfInteger(1:MAX))) (integer(1:MAX) | rangeOfInteger(1:MA X)) For the following attributes, the value allowed by the Set-Printer- Attributes operation MUST be one or more values, where each such value matches a value returned by the Get-Printer-Supported-Values operation. A keyword, enum, boolean, charset, naturalLanguage, uriScheme, mimeMediaType or resolution value matches if it is equal. For Job Template attributes, with the attribute syntax 'type3 keyword | name', any 'name' attribute syntax value matches the 'admin-define' out-of-band value, if the implementation allows the administrator to set any name values for the attribute. Table 15 - Printer Job Template Attributes returned from Get-Printer-Supported-Values Printer Job Template Attributes Values Returned job-hold-until-supported (1setOf(type3 1setOf (type3 keyword | name (MAX))) keyword | 'admin- define') job-sheets-supported (1setOf(type3 keyword 1setOf (type3 | name(MAX))) keyword | 'admin- define') multiple-document-handling-supported 1setOf type2 (1setOf type2 keyword) keyword finishings-supported (1setOf type2 enum) 1setOf type2 enum page-ranges-supported (boolean) 1setOf boolean ** sides-supported (1setOf type2 keyword) 1setOf type2 keyword orientation-requested-supported (1setOf 1setOf type2 enum type2 enum)
Printer Job Template Attributes Values Returned media-supported (1setOf (type3 keyword | 1setOf (type3 name(MAX))) keyword | 'admin- define') printer-resolution-supported (1setOf 1setOf resolution resolution) print-quality-supported (1setOf type2 enum) 1setOf type2 enum ** Note: the Get-Printer-Supported-Values returns a '1setOf boolean' so that all possible values are indicated, while ** Get-Printer- Attributes returns only a single 'boolean' value. The following table has the same criteria as the last, but is for Printer Description attributes. Table 16 - Printer Description Attributes returned from Get-Printer-Supported-Values Printer Description Attributes Values allowed for Set printer-uri-supported (1setOf uri) READ-ONLY - MUST NOT be returned uri-authentication-supported (1setOf type2 READ-ONLY - MUST keyword) NOT be returned uri-security-supported (1setOf type2 READ-ONLY - MUST keyword) NOT be returned printer-xri-supported (1setOf collection) MUST NOT be returned; see next three attributes returned with Get- Printer-Attributes: xri-uri-scheme-supported (1setOf uriScheme) READ-ONLY - MUST NOT be returned xri-authentication-supported (1setOf type2 READ-ONLY - MUST keyword) NOT be returned xri-security-supported (1setOf type2 READ-ONLY - MUST keyword) NOT be returned
Printer Description Attributes Values allowed for Set ipp-versions-supported (1setOf type2 1setOf type2 keyword) keyword operations-supported (1setOf type2 enum) 1setOf type2 keyword multiple-document-jobs-supported (boolean) 1setOf boolean ** charset-supported (1setOf charset) 1setOf charset generated-natural-language-supported 1setOf (1setOf naturalLanguage) naturalLanguage document-format-supported (1setOf 1setOf mimeMediaType) mimeMediaType color-supported (boolean) 1setOf boolean ** reference-uri-schemes-supported (1setOf 1setOf uriScheme uriScheme) pdl-override-supported (type2 keyword) 1setOf type2 keyword ** compression-supported (1setOf type3 1setOf type3 keyword) keyword printer-settable-attributes-supported 1setOf type2 (1setOf type2 keyword) keyword job-settable-attributes-supported (1setOf 1setOf type2 type2 keyword) keyword ** Note: the Get-Printer-Supported-Values returns a '1setOf X' so that all possible values are indicated, while Get-Printer-Attributes returns only a single 'X' value.
Appendix C: Description of the Base IPP Documents (Informative)
The base 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.1: Model and Semantics [RFC2911] Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] 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 [RFC2566, RFC2565]. A few OPTIONAL operator operations have been added to IPP/1.1 [RFC2911, RFC2910]. 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 specification documents, and gives background and rationale for the IETF IPP working group's major decisions. The "Internet Printing Protocol/1.1: Model and Semantics" document describes a simplified model with abstract objects, their attributes, and their operations. The model introduces a Printer and a Job. The Job supports multiple documents per Job. The model document also addresses how security, internationalization, and directory issues are addressed. The "Internet Printing Protocol/1.1: Encoding and Transport" document is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1 [RFC2616]. It also defines the encoding rules for a new Internet MIME media type called "application/ipp". This document also defines the rules for transporting over HTTP, a message body whose Content-Type is "application/ipp". This document defines the 'ipp' scheme for identifying IPP printers and jobs. The "Internet Printing Protocol/1.1: 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.1 and some of 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 are 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.Authors' Addresses
Carl Kugler IBM P.O. Box 1900 Boulder, CO 80301-9191 Phone: (303) 924-5060 EMail: kugler@us.ibm.com Tom Hastings Xerox Corporation 737 Hawaii St. ESAE 231 El Segundo, CA 90245 Phone: 310-333-6413 Fax: 310-333-5514 EMail: hastings@cp10.es.xerox.com Robert Herriot Consultant 706 Colorado Ave Palo Alto, CA 94303 Phone: 650-327-4466 Fax: 650-327-4466 EMail: bob@Herriot.com Harry Lewis IBM 6300 Diagonal Hwy. Boulder, CO 80301-9191 Phone: (303) 924-5337 EMail: harryl@us.ibm.com
IPP Web Page: http://www.pwg.org/ipp/ IPP Mailing List: ipp@pwg.org To subscribe to the ipp mailing list, send the following email: 1) send it to majordomo@pwg.org 2) leave the subject line blank 3) put the following two lines in the message body: subscribe ipp end Implementers of this specification document are encouraged to join the IPP Mailing List in order to participate in any discussions of clarification issues and review of registration proposals for additional attributes and values. In order to reduce spam the mailing list rejects mail from non-subscribers, so you must subscribe to the mailing list in order to send a question or comment to the mailing list.
Full Copyright Statement Copyright (C) The Internet Society (2002). 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. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.