draft-ietf-ipp-model-04.txt   draft-ietf-ipp-model-05.txt 
INTERNET-DRAFT R. deBry INTERNET-DRAFT
draft-ietf-ipp-model-04.txt IBM Corporation draft-ietf-ipp-model-05.txt
R. deBry
IBM Corporation
T. Hastings T. Hastings
Xerox Corporation Xerox Corporation
R. Herriot R. Herriot
Sun Microsystems Sun Microsystems
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
P. Powell P. Powell
San Diego State University San Diego State University
July 25, 1997 September 3, 1997
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
Status of this Memo Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts. working documents as Internet-Drafts.
skipping to change at page 2, line 5 skipping to change at page 1, line 50
all aspects of a new Internet Printing Protocol (IPP). IPP is an all aspects of a new Internet Printing Protocol (IPP). IPP is an
application level protocol that can be used for distributed printing application level protocol that can be used for distributed printing
using Internet tools and technology. The protocol is heavily using Internet tools and technology. The protocol is heavily
influenced by the printing model introduced in the Document Printing influenced by the printing model introduced in the Document Printing
Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both
end user and administrative features, IPP version 1.0 is focused only end user and administrative features, IPP version 1.0 is focused only
on end user functionality. on end user functionality.
The full set of IPP documents includes: The full set of IPP documents includes:
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires March3, 1998
Internet Printing Protocol: Requirements Internet Printing Protocol: Requirements
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
Internet Printing Protocol/1.0: Security Internet Printing Protocol/1.0: Security
Internet Printing Protocol/1.0: Protocol Specification Internet Printing Protocol/1.0: Protocol Specification
Internet Printing Protocol/1.0: Directory Schema Internet Printing Protocol/1.0: Directory Schema
The requirements document takes a broad look at distributed printing The requirements document takes a broad look at distributed printing
functionality, and it enumerates real-life scenarios that help to functionality, and it enumerates real-life scenarios that help to
clarify the features that need to be included in a printing protocol clarify the features that need to be included in a printing protocol
for the Internet. It identifies requirements for three types of for the Internet. It identifies requirements for three types of
skipping to change at page 3, line 5 skipping to change at page 2, line 34
document which incorporates the ideas in all the other documents into document which incorporates the ideas in all the other documents into
a concrete mapping using clearly defined data representations and a concrete mapping using clearly defined data representations and
transport protocol mappings that real implementers can use to develop transport protocol mappings that real implementers can use to develop
interoperable client and server side components. Finally, the interoperable client and server side components. Finally, the
directory schema document shows a generic schema for directory service directory schema document shows a generic schema for directory service
entries that represent instances of IPP Printers. entries that represent instances of IPP Printers.
This document is the "Internet Printing Protocol/1.0: Model and This document is the "Internet Printing Protocol/1.0: Model and
Semantics" document. Semantics" document.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Table of Contents Table of Contents
1. Simplified Printing Model......................................7 1. Simplified Printing Model .......................................7
2. IPP Objects....................................................9 2. IPP Objects .....................................................9
2.1 Printer Object .............................................10 2.1 Printer Object..................................................9
2.2 Job Object .................................................12 2.2 Job Object.....................................................12
2.3 Document Object ............................................12 2.3 Document Object................................................12
2.4 Object Relationships .......................................12 2.4 Object Relationships...........................................12
2.5 Object Identity ............................................13 2.5 Object Identity................................................13
3. IPP Operations................................................13 3. IPP Operations .................................................15
3.1 General Semantics ..........................................14 3.1 General Semantics..............................................16
3.1.1 Operation Status Codes and Messages......................14 3.1.1 Operation Targets........................................16
3.1.2 Security and Query Operations............................14 3.1.2 Operation Status Codes and Messages......................16
3.1.3 Job Creation Operations..................................15 3.1.3 Security Concerns for IPPOperations......................17
3.2 Printer Operations .........................................16 3.1.3.1 Authenticated Requester Identity .......................17
3.2.1 Get-Operations Operation.................................16 3.1.3.2 Restricted Queries .....................................17
3.2.1.1 Get-Operations Request ................................16 3.1.4 Versions.................................................18
3.2.1.2 Get-Operations Response ...............................16 3.1.5 Job Creation Operations..................................18
3.2.2 Print-Job Operation......................................17 3.2 Printer Operations.............................................20
3.2.2.1 Print-Job Request .....................................17 3.2.1 Print-Job Operation......................................20
3.2.2.2 Print-Job Response ....................................20 3.2.1.1 Print-Job Request ......................................20
3.2.3 Print-URI Operation......................................20 3.2.1.2 Print-Job Response .....................................22
3.2.4 Validate-Job Operation...................................21 3.2.2 Print-URI Operation......................................23
3.2.5 Create-Job Operation.....................................21 3.2.3 Validate-Job Operation...................................23
3.2.6 Get-Attributes Operation.................................21 3.2.4 Create-Job Operation.....................................23
3.2.6.1 Get-Attributes Request ................................22 3.2.5 Get-Attributes Operation.................................24
3.2.6.2 Get-Attributes Response ...............................23 3.2.5.1 Get-Attributes Request .................................24
3.2.7 Get-Jobs Operation.......................................23 3.2.5.2 Get-Attributes Response ................................25
3.2.7.1 Get-Jobs Request ......................................24 3.2.6 Get-Jobs Operation.......................................25
3.2.7.2 Get-Jobs Response .....................................24 3.2.6.1 Get-Jobs Request .......................................25
3.3 Job Operations .............................................25 3.2.6.2 Get-Jobs Response ......................................26
3.3.1 Send-Document Operation..................................25 3.3 Job Operations.................................................27
3.3.1.1 Send-Document Request .................................25 3.3.1 Send-Document Operation..................................27
3.3.1.2 Send-Document Response ................................25 3.3.1.1 Send-Document Request ..................................27
3.3.2 Send-URI Operation.......................................25 3.3.1.2 Send-Document Response .................................28
3.3.3 Cancel Job Operation.....................................26 3.3.2 Send-URI Operation.......................................29
3.3.3.1 Cancel-Job Request ....................................26 3.3.3 Cancel Job Operation.....................................29
3.3.3.2 Cancel-Job Response ...................................26 3.3.3.1 Cancel-Job Request .....................................29
3.3.4 Get-Attributes Operation.................................26 3.3.3.2 Cancel-Job Response ....................................29
3.3.4.1 Get-Attributes Request ................................26 3.3.4 Get-Attributes Operation.................................29
4. Object Attributes.............................................27 3.3.4.1 Get-Attributes Request .................................30
4.1 Attribute Syntaxes .........................................27 3.3.4.2 Get-Attributes Response ................................30
4.1.1 Attribute Extensibility..................................29 4. Object Attributes ..............................................31
4.2 Job Template Attributes ....................................31 4.1 Attribute Syntaxes.............................................31
4.2.1 job-sheets (type4 keyword)...............................34 4.2 Job Template Attributes........................................33
4.2.2 notify-events (1setOf type2 keyword).....................35 4.2.1 job-sheets (type4 keyword)...............................37
4.2.3 notify-addresses (1setOf uri)............................35 4.2.2 notify-events (1setOf type2 keyword).....................38
4.2.4 job-priority (integer(1:100))............................36 4.2.2.1 Event Notification Content .............................38
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
4.2.5 job-hold-until (type4 keyword)...........................36 Expires February xx, 1998
4.2.6 multiple-document-handling (type2 keyword)...............37 4.2.3 notify-addresses (1setOf uri)............................39
4.2.7 media (type4 keyword)....................................37 4.2.4 job-priority (integer(1:100))............................39
4.2.8 number-up (type3 keyword)................................38 4.2.5 job-hold-until (type4 keyword)...........................40
4.2.9 sides (type2 keyword)....................................38 4.2.6 multiple-document-handling (type2 keyword)...............40
4.2.10 printer-resolution (resoultion)..........................39 4.2.7 media (type4 keyword)....................................41
4.2.11 print-quality (type2 enum)...............................39 4.2.8 number-up (type3 keyword)................................42
4.2.12 finishings (1setOf type2 enum)...........................39 4.2.9 sides (type2 keyword)....................................42
4.2.13 copies (integer(1:2**31 - 1))............................40 4.2.10 printer-resolution (resoultion)..........................43
4.2.14 document-format (type2 enum).............................40 4.2.11 print-quality (type2 enum)...............................43
4.2.15 compression (type3 keyword)..............................41 4.2.12 finishings (1setOf type2 enum)...........................43
4.2.16 job-k-octets (integer(0:2**31 - 1))......................41 4.2.13 copies (integer(1:2**31 - 1))............................44
4.2.17 job-impressions (integer(0:2**31 - 1))...................41 4.2.14 page-range (rangeOf integer).............................44
4.2.18 job-media-sheets (integer(0:2**31 - 1))..................41 4.2.15 orientation (type2 enum).................................45
4.3 Job Description Attributes .................................42 4.2.16 document-format (mimeType)...............................45
4.3.1 job-uri (uri)............................................43 4.2.17 compression (type3 keyword)..............................45
4.3.2 job-uri-user (uri).......................................44 4.2.18 job-k-octets (integer(0:2**31 - 1))......................46
4.3.3 job-name (name)..........................................44 4.2.19 job-impressions (integer(0:2**31 - 1))...................46
4.3.4 job-originating-user (name)..............................44 4.2.20 job-media-sheets (integer(0:2**31 - 1))..................46
4.3.5 job-originating-host (name)..............................44 4.3 Job Description Attributes.....................................46
4.3.6 user-human-language (human-language).....................44 4.3.1 job-uri (uri)............................................47
4.3.7 user-content-char-set (char-set).........................45 4.3.2 job-id (32bit unsigned integer)..........................48
4.3.8 job-state (type1 enum)...................................45 4.3.3 job-uri-user (uri).......................................48
4.3.9 job-state-reasons (1setOf type2 keyword)................47 4.3.4 job-name (name)..........................................48
4.3.10 job-state-message (text).................................49 4.3.5 job-originating-user (name)..............................48
4.3.11 output-device-assigned (name)............................49 4.3.6 job-originating-host (name)..............................48
4.3.12 time-since-pending (integer).............................49 4.3.7 user-human-language (human-language).....................49
4.3.13 time-since-processing (integer)..........................49 4.3.8 job-state (type1 enum)...................................49
4.3.14 time-since-completed (integer)...........................49 4.3.9 job-state-reasons (1setOf type2 keyword)................51
4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))........49 4.3.10 job-state-message (text).................................53
4.3.16 job-message-from-operator (text).........................50 4.3.11 output-device-assigned (name)............................53
4.3.17 job-k-octets-processed (integer(0:2**31 - 1))............50 4.3.12 time-since-pending (integer).............................53
4.3.18 job-impressions-completed (integer(0:2**31 - 1))........50 4.3.13 time-since-processing (integer)..........................53
4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))........50 4.3.14 time-since-completed (integer)...........................53
4.4 Document Attributes ........................................50 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))........53
4.4.1 document-name (name).....................................51 4.3.16 job-message-from-operator (text).........................54
4.4.2 document-format (type2 enum).............................51 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))............54
4.4.3 document-uri (uri).......................................51 4.3.18 job-impressions-completed (integer(0:2**31 - 1))........54
4.5 Printer Description Attributes .............................51 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))........54
4.5.1 printer-uri (uri)........................................53 4.4 Document Attributes............................................54
4.5.2 printer-uri-user (uri)...................................53 4.4.1 document-name (name).....................................55
4.5.3 printer-name (name)......................................53 4.4.2 document-uri (uri).......................................55
4.5.4 printer-location (text)..................................53 4.5 Printer Description Attributes.................................56
4.5.5 printer-description (text)...............................53 4.5.1 printer-uri (uri)........................................58
4.5.6 printer-more-info-site (uri).............................53 4.5.2 printer-name (name)......................................58
4.5.7 printer-driver-installer (uri)...........................54 4.5.3 printer-location (text)..................................58
4.5.8 printer-make-and-model (text)............................54 4.5.4 printer-description (text)...............................58
4.5.9 printer-more-info-manufacturer (uri).....................54 4.5.5 printer-more-info (uri)..................................58
4.5.6 printer-driver-installer (uri)...........................59
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
4.5.10 printer-state (type1 enum)...............................54 Expires February xx, 1998
4.5.11 printer-state-reasons (1setOf type2 keyword).............55 4.5.7 printer-make-and-model (text)............................59
4.5.12 printer-state-message (text).............................57 4.5.8 printer-more-info-manufacturer (uri).....................59
4.5.13 printer-is-accepting-jobs (boolean)......................57 4.5.9 printer-state (type1 enum)...............................59
4.5.14 queued-job-count (integer(0:2**31 - 1))..................58 4.5.10 printer-state-reasons (1setOf type2 keyword).............60
4.5.15 printer-message-from-operator (text).....................58 4.5.11 printer-state-message (text).............................62
4.5.16 printer-human-language (human-language)..................58 4.5.12 operations-supported (1setOf type2 enum).................62
4.5.17 printer-human-language-supported (1setOf human-language).58 4.5.13 printer-is-accepting-jobs (boolean)......................63
4.5.18 printer-content-char-set (char-set)......................58 4.5.14 queued-job-count (integer(0:2**31 - 1))..................63
4.5.19 printer-content-char-set-supported (1setOf char-set).....58 4.5.15 printer-message-from-operator (text).....................63
4.5.20 color-supported (boolean)................................58 4.5.16 printer-human-language (human-language)..................63
4.5.21 pdl-override (type2 keyword).............................58 4.5.17 printer-human-language-supported (1setOf human-language).63
4.5.22 Security Related Attributes..............................59 4.5.18 color-supported (boolean)................................64
4.5.22.1 message-protection-supported (keyword) ................60 4.5.19 pdl-override (type2 keyword).............................64
4.5.22.2 authentication-authorization-supported (keyword) ......60 4.5.20 Security Related Attributes..............................64
4.5.23 best-effort (1setOf boolean).............................60 4.5.20.1 message-protection-supported (keyword) .................65
5. Conformance...................................................61 4.5.20.2 authentication-authorization-supported (keyword) .......65
5.1 Conditionally Mandatory ....................................61 4.5.21 printer-up-time (seconds)................................65
5.2 Client Conformance Requirements ............................62 4.5.22 printer-current-time (dateTime)..........................65
5.3 Printer Object Conformance Requirements ....................62 5. Conformance ....................................................66
5.3.1 Objects..................................................62 5.1 Client Conformance Requirements................................66
5.3.2 Operations...............................................63 5.2 Printer Object Conformance Requirements........................67
5.3.3 Attributes...............................................63 5.2.1 Objects..................................................67
5.3.4 Printer extensions.......................................64 5.2.2 Operations...............................................67
5.3.5 Attribute Syntaxes.......................................64 5.2.3 Attributes...............................................67
5.4 Security Conformance Requirements ..........................64 5.2.4 Printer extensions.......................................68
6. IANA Considerations (registered and private extensions).......65 5.2.5 Attribute Syntaxes.......................................68
6.1 Typed Extensions ...........................................65 5.3 Security Conformance Requirements..............................68
6.1.1 Type1....................................................65 6. IANA Considerations (registered and private extensions) ........68
6.1.2 Type2....................................................65 6.1 Typed Extensions...............................................68
6.1.3 Type3....................................................66 6.2 Registration of MIME types/sub-types for document-formats......70
6.1.4 Type4....................................................66 6.3 Attribute Extensibility........................................70
6.2 Registration of MIME types/sub-types for document-formats ..66 6.4 Attribute Syntax Extensibility.................................70
7. Security Considerations.......................................66 7. Internationalization Considerations ............................70
8. References....................................................67 8. Security Considerations ........................................71
9. Author's Address..............................................68 9. References .....................................................71
10. APPENDIX A: Terminology.......................................71 10.Author's Address ...............................................73
10.1 Conformance Terminology ....................................71 11.APPENDIX A: Terminology ........................................76
10.1.1 MUST.....................................................71 11.1 Conformance Terminology........................................76
10.1.2 MUST NOT.................................................71 11.1.1 MUST.....................................................76
10.1.3 SHOULD...................................................71 11.1.2 MUST NOT.................................................76
10.1.4 SHOULD NOT...............................................71 11.1.3 SHOULD...................................................76
10.1.5 MAY......................................................71 11.1.4 SHOULD NOT...............................................76
10.1.6 CONDITIONALLY MANDATORY..................................72 11.1.5 MAY......................................................76
10.1.7 NEED NOT.................................................73 11.1.6 NEED NOT.................................................77
10.2 Model Terminology ..........................................74 11.2 Model Terminology..............................................77
10.2.1 Keyword..................................................74 11.2.1 Keyword..................................................77
10.2.2 Parameters...............................................74 11.2.2 Attributes...............................................77
11.2.2.1 Attribute Name .........................................77
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
10.2.2.1 Parameter Name ........................................74 Expires February xx, 1998
10.2.2.2 Parameter Value .......................................74 11.2.2.2 Attribute Group Name ...................................78
10.2.2.3 Parameter Syntax ......................................74 11.2.2.3 Attribute Value ........................................78
10.2.3 Attributes...............................................75 11.2.2.4 Attribute Syntax .......................................78
10.2.3.1 Attribute Name ........................................75 11.2.3 Supports.................................................78
10.2.3.2 Attribute Group Name ..................................75 12.APPENDIX B: Status Codes ......................................80
10.2.3.3 Attribute Value .......................................75 12.1 Status Codes (type2 keyword)...................................80
10.2.3.4 Attribute Syntax ......................................76 12.1.1 Informational............................................81
10.2.4 Supports.................................................76 12.1.2 Successful Status Codes..................................81
11. APPENDIX B: Status Codes.....................................77 12.1.2.1 successful-ok (0x00) ...................................81
11.1 Status Codes (type2 keyword) ...............................78 12.1.2.2 successful-ok-ignored-or-substituted-attributes (0x01) .81
11.1.1 Informational............................................78 12.1.3 Redirection Status Codes.................................81
11.1.2 Successful Status Codes..................................78 12.1.4 Client Error Status Codes................................81
11.1.2.1 successful-ok .........................................78 12.1.4.1 client-error-bad-request (0x400) .......................81
11.1.2.2 successful-ok-ignored-or-substituted-attributes .......78 12.1.4.2 client-error-forbidden (0x401) .........................82
11.1.3 Redirection Status Codes.................................78 12.1.4.3 client-error-not-authenticated (0x402) .................82
11.1.4 Client Error Status Codes................................79 12.1.4.4 client-error-not-authorized (0x403) ....................82
11.1.4.1 client-error-bad-request ..............................79 12.1.4.5 client-error-not-possible (0x404) ......................82
11.1.4.2 client-error-forbidden ................................79 12.1.4.6 client-error-timeout (0x405) ...........................82
11.1.4.3 client-error-not-authenticated ........................79 12.1.4.7 client-error-not-found (0x406) .........................83
11.1.4.4 client-error-not-authorized ...........................79 12.1.4.8 client-error-gone (0x407) ..............................83
11.1.4.5 client-error-not-possible .............................80 12.1.4.9 client-error-request-entity-too-large (0x408) ..........83
11.1.4.6 client-error-timeout ..................................80 12.1.4.10 client-error-request-URI-too-long (0x409) ..............84
11.1.4.7 client-error-not-found ................................80 12.1.4.11 client-error-unsupported-document-format (0x40A) .......84
11.1.4.8 client-error-gone .....................................80 12.1.4.12 client-error-attribute-not-supported (0x40B) ...........84
11.1.4.9 client-error-request-entity-too-large .................81 12.1.5 Server Error Status Codes................................84
11.1.4.10 client-error-request-URI-too-long .....................81 12.1.5.1 server-error-internal- error (0x500) ...................85
11.1.4.11 client-error-unsupported-document-format ..............81 12.1.5.2 server-error-operation-not-supported (0x501) ...........85
11.1.4.12 client-error-attribute-not-supported ..................81 12.1.5.3 server-error-service-unavailable (0x502) ...............85
11.1.5 Server Error Status Codes................................82 12.1.5.4 server-error-version-not-supported (0x503) .............85
11.1.5.1 server-error-internal- error ..........................82 12.1.5.5 server-error-device-error (0x504) ......................85
11.1.5.2 server-error-operation-not-supported ..................82 12.1.5.6 server-error-temporary-error (0x505) ...................86
11.1.5.3 server-error-service-unavailable ......................82 12.2 Status Keywords for IPP Operations.............................87
11.1.5.4 server-error-version-not-supported ....................82 13.APPENDIX C: "document-format" values ...........................87
11.1.5.5 server-error-device-error .............................83 14.APPENDIX D: "media" keyword values ............................90
11.1.5.6 server-error-temporary-error ..........................83 15.APPENDIX E: Processing IPP Attributes ..........................95
11.2 Status Keywords for IPP Operations .........................84 15.1 Fidelity.......................................................95
12. APPENDIX C: "document-format" enum values.....................84 15.2 Page Description Language (PDL) Override.......................97
13. APPENDIX D: "media" keyword values...........................88 15.3 Suggested Attribute Processing Algorithm.......................98
16.APPENDIX F: Relationship to SNMP MIBs .........................101
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
1. Simplified Printing Model 1. Simplified Printing Model
In order to a achieve its goal of realizing a workable printing In order to a achieve its goal of realizing a workable printing
protocol for the Internet, the Internet Printing Protocol (IPP) is protocol for the Internet, the Internet Printing Protocol (IPP) is
based on a simplified printing model which abstracts the many based on a simplified printing model which abstracts the many
components of real world printing solutions. The Internet is a components of real world printing solutions. The Internet is a
distributed computing environment where requesters of print services distributed computing environment where requesters of print services
(clients, applications, PC drivers, etc.) cooperate and interact with (clients, applications, printer drivers, etc.) cooperate and interact
print service providers. This model and semantics document describes with print service providers. This model and semantics document
a simple, abstract model for IPP even though the underlying describes a simple, abstract model for IPP even though the underlying
configurations may be complex "n-tier" client/server systems. An configurations may be complex "n-tier" client/server systems. An
important simplifying step in the IPP model is to expose only the key important simplifying step in the IPP model is to expose only the key
objects and interfaces required for printing. The model does not objects and interfaces required for printing. The model does not
include features, interfaces, and relationships that are beyond the include features, interfaces, and relationships that are beyond the
scope of IPP [20]. scope of IPP [20].
The IPP model encapsulates the important components of distributed The IPP model encapsulates the important components of distributed
printing into three object types: printing into three object types:
- Printer (Section 0) - Printer (Section 2.1)
- Job (Section 2.2) - Job (Section 2.2)
- Document (Section 2.3) - Document (Section 2.3)
Each object type has an associated set of operations (see section 3) Each object type has an associated set of operations (see section 3)
and attributes (see section 4). The remainder of this document uses and attributes (see section 4).
specific model terminology (such as "attributes", "supports",
"keywords", and "parameters") and conformance terminology (such as The terminology used in the remainder of this document is defined in
"MANDATORY", "MUST", and "OPTIONAL"). Appendix A defines these terms Appendix A (section 11) . Terms such as "attributes", "keywords", and
as they relate to this document. "supports" have special meaning in this document and are defined in
the model terminology section. . Terms such as "MANDATORY", "MUST",
and "OPTIONAL" have special meaning relating to conformance. These
terms are defined in the section on conformance terminology, most of
which is taken from RFC 2119 [25].
It is important, however, to understand that in real system It is important, however, to understand that in real system
implementations (which lie underneath the abstracted IPP model), there implementations (which lie underneath the abstracted IPP model), there
are other components of a print service which are not explicitly are other components of a print service which are not explicitly
defined in the IPP model. The following figure illustrates where IPP defined in the IPP model. The following figure illustrates where IPP
fits with respect to these other components. fits with respect to these other components.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
+--------------+ +--------------+
| Application | | Application |
o +. . . . . . . | o +. . . . . . . |
\|/ | Spooler | \|/ | Spooler |
/ \ +. . . . . . . | +---------+ / \ +. . . . . . . | +---------+
End-User | Print Driver |---| File | End-User | Print Driver |---| File |
+-----------+ +-----+ +------+-------+ +----+----+ +-----------+ +-----+ +------+-------+ +----+----+
| Browser | | GUI | | | | Browser | | GUI | | |
+-----+-----+ +--+--+ | | +-----+-----+ +--+--+ | |
| | | | | | | |
skipping to change at page 8, line 51 skipping to change at page 8, line 50
filtered and context based searching mechanism. The directory is used filtered and context based searching mechanism. The directory is used
to store relatively static information about the Printer, allowing end to store relatively static information about the Printer, allowing end
users to search for and find Printers that match their search criteria users to search for and find Printers that match their search criteria
(name, context, printer capabilities, etc.). The more dynamic (name, context, printer capabilities, etc.). The more dynamic
information associated with a Printer includes state, currently loaded information associated with a Printer includes state, currently loaded
and ready media, number of jobs at the Printer, errors, warnings, and and ready media, number of jobs at the Printer, errors, warnings, and
so forth. so forth.
IPP clients implement the IPP protocol on the client side, and give IPP clients implement the IPP protocol on the client side, and give
end users (or programs) the ability to query an IPP Printer and submit end users (or programs) the ability to query an IPP Printer and submit
and manage their print jobs. An IPP server is just that part of the and manage print jobs. An IPP server is just that part of the IPP
IPP Printer that implements the server-side protocol. The rest of the Printer that implements the server-side protocol. The rest of the IPP
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
IPP Printer implements the application semantics of the print service Expires February xx, 1998
Printer implements the application semantics of the print service
itself. The IPP Printer may be embedded in an output device or may be itself. The IPP Printer may be embedded in an output device or may be
implemented on a host on the network that communicates with the output implemented on a host on the network that communicates with the output
device. device.
When a job is submitted to the Printer, the Printer creates a Job When a job is submitted to the Printer and the Printer validates the
object. The end user then interacts with this new Job to query its data in the submission request, the Printer creates a Job object. The
status and monitor the progress of the job. End users may also cancel end user then interacts with this new Job to query its status and
the Job. The end user is able to register to receive certain events monitor the progress of the job. End users may also cancel the Job.
that are then routed using the specified notification service(s). The end user is able to register to receive certain events that are
then routed using the specified notification service(s).
2. IPP Objects 2. IPP Objects
The IPP model introduces objects of type Printer, Job, and Document. The IPP model introduces objects of type Printer, Job, and Document.
Each object type is defined as a set of possible attributes that may Each object type is defined as a set of possible attributes that may
be supported by each instance of an object of that type. The be supported by each instance of an object of that type. For each
attributes (and values) supported by each object instance describe the object instance, the actual set of supported attributes and values
implementation (that is the realizable features, functions, and describe the specific implementation. The object's attributes and
characteristics either in software or hardware) for that object values describe its capabilities, realizable features, job processing
instance. For example, the object type "Printer" is defined as set of functions, and default behaviors and characteristics. For example, the
attributesthat each instance of a Printer object might potentially object type "Printer" is defined as a set of attributes that each
support. In the same manner, the object type "Job" is defined as a instance of a Printer object might potentially support. In the same
set of attributes that are potentially supported by each instance of a manner, the object type "Job" is defined as a set of attributes that
Job object. are potentially supported by each instance of a Job object.
Each attribute included in the set of attributes defining an object Each attribute included in the set of attributes defining an object
type is labeled as: type is labeled as:
- "MANDATORY": each object instance MUST support the attribute. - "MANDATORY": each object instance MUST support the attribute.
- "OPTIONAL": each object instance MAY support the attribute. - "OPTIONAL": each object instance MAY support the attribute.
- "CONDITIONALLY MANDATORY": whether or not the object instance
supports the attribute is determined by a semantic condition.
For example, a Printer object implementation MUST support the
"job-priority-supported" attribute if the implementation knows
about and is able to realize multiple levels of job priorities.
An administrator may set the values to be somewhat more
restrictive that what a given implementation might allow, however
the attribute MUST still be supported.
There is no such similar labeling of attribute values. However, if an There is no such similar labeling of attribute values. However, if an
implementation supports an attribute, it must support any non-empty implementation supports an attribute, it must support at least one
subset of the possible values for that attribute. (and possibly all) of the possible values for that attribute.
Expires January 25, 1998
2.1 Printer Object 2.1 Printer Object
A major component of the IPP model is the Printer object. An instance A major component of the IPP model is the Printer object. An instance
of a Printer object implements the IPP protocol. Using the protocol, of a Printer object implements the IPP protocol. Using the protocol,
end users may query the attributes of the Printer, submit Jobs to the end users may query the attributes of the Printer and submit Jobs to
Printer, determine subsequent states of submitted and queued Jobs, and the Printer (section 3 describes each of the Printer specific
cancel Jobs (section 3 describes each of the Printer specific
operations in detail). The actual implementation components behind operations in detail). The actual implementation components behind
the Printer abstraction may take on different forms and different the Printer abstraction may take on different forms and different
configurations. However, the model abstraction allows the details of configurations. However, the model abstraction allows the details of
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
the configuration of real components to remain transparent to the end the configuration of real components to remain transparent to the end
user. user.
The capabilities and state of an IPP Printer are described by its The capabilities and state of an IPP Printer are described by its
attributes. Printer attributes are grouped as follows: attributes. Printer attributes are grouped as follows:
"job-template" attributes (section 4.2) "job-template" attributes (section 4.2)
"printer-description" attributes (section 4.5) "printer-description" attributes (section 4.5)
Since a Printer object is an abstraction of a generic document output Since a Printer object is an abstraction of a generic document output
skipping to change at page 11, line 5 skipping to change at page 10, line 35
devices devices
3a) The associated output devices might or might not be capable 3a) The associated output devices might or might not be capable
of spooling jobs of spooling jobs
3b) The associated output devices might or might not support IPP 3b) The associated output devices might or might not support IPP
See the following figures for some examples on how to view IPP Printer See the following figures for some examples on how to view IPP Printer
objects implemented on top of various print system configurations. objects implemented on top of various print system configurations.
The embedded case below represents configurations 1 and 2. The hosted The embedded case below represents configurations 1 and 2. The hosted
and fan-out figures below represent configuration 3. and fan-out figures below represent configuration 3.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Legend: Legend:
##### indicates a Printer object which is ##### indicates a Printer object which is
either embedded in an output device or is either embedded in an output device or is
hosted in a server. The implementation hosted in a server. The implementation
might or might not be capable of queuing/spooling. might or might not be capable of queuing/spooling.
any indicates any network protocol or direct any indicates any network protocol or direct
connect, including IPP connect, including IPP
skipping to change at page 12, line 5 skipping to change at page 11, line 49
+-->| output device | +-->| output device |
| | | |
+---------------+ +---------------+
It is assumed that URIs for IPP Printers are available to end users or It is assumed that URIs for IPP Printers are available to end users or
programs that wish to interact with the Printer. Although NOT programs that wish to interact with the Printer. Although NOT
MANDATORY, it is RECOMMENDED that Printers be registered in a MANDATORY, it is RECOMMENDED that Printers be registered in a
directory service which end users and programs can interrogate. directory service which end users and programs can interrogate.
"Internet Printing Protocol: Directory Schema"[24] defines the "Internet Printing Protocol: Directory Schema"[24] defines the
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
attributes to be associated with a Printer entry in a directory attributes to be associated with a Printer entry in a directory
service. service.
2.2 Job Object 2.2 Job Object
A Job object is used to model a job. A Job can contain one or more A Job object is used to model a job. A Job can contain one or more
Documents. The information required to create a Job object is sent in Documents. The information required to create a Job object is sent in
a create request from the end user via an IPP client to an IPP a create request from the end user via an IPP client to an IPP
Printer. Section 3 describes each of the Job specific operations in Printer. Section 3 describes each of the Job specific operations in
detail. detail.
The characteristics and state of an IPP Job are described by its The characteristics and state of an IPP Job are described by its
attributes. Job attributes are grouped as follows: attributes. Job attributes are grouped as follows:
"job-template" attributes (optionally supplied by the client/end "job-template" attributes (optionally supplied by the client/end
user, section 4.2) user, section 4.2)
"job-description" attributes (set by the Printer, section 4.3) "job-description" attributes (set by the Printer, section 4.3)
2.3 Document Object 2.3 Document Object
A Document object consists of either printable data or a reference A Document object is used to model a document. A Document consists of
(URI) to printable data and a set of Document Attributes (see section either printable data or a URI reference to printable data An
4.4). These Document attributes only describe the data to be printed; instance of a Document object is a set of attributes which describe
they do not include any specialized document processing instructions. the document data. Document Attributes (see section 4.4). Document
All document processing instructions are included as Job level attributes only describe the data to be printed; they do not include
attributes (called Job Template attributes), and they apply equally any specialized document processing instructions. All processing
to all Documents within a Job. instructions are at the Job level and are called called Job Template
attributes and they apply equally to all Documents within a Job.
Currently there are no operations defined for Document objects.
2.4 Object Relationships 2.4 Object Relationships
Instances of objects within the system have relationships that MUST be Instances of objects within the system have relationships that MUST be
maintained persistently along with the persistent storage of the maintained persistently along with the persistent storage of the
object attributes. An instance of a Printer object usually represents object attributes. An instance of a Printer object usually represents
one or more output devices. A Printer object may represent a logical one or more output devices. A Printer object may represent a logical
device which "processes" jobs but never actually uses a physical device which "processes" jobs but never actually uses a physical
output device to put marks on paper (for example a Web page publisher output device to put marks on paper (for example a Web page publisher
or an interface into an online document archive or repository). A or an interface into an online document archive or repository). A
Printer can contain zero or more Job objects. An instance of a Job Printer can contain zero or more Job objects. An instance of a Job
object is contained in exactly one Printer object (the same document object is contained in exactly one Printer object, however the
data could be sent to a the same or a different Printer, but the identical Job data could be sent to either the same or a different
corresponding Job object would be an identical, but different Job Printer. In this case, the new Job would be an identical, but
different Jobsince it each would have a different Job identifier. A
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
object). A Job object contains one or more Documents. If the Expires February xx, 1998
Document is simply a reference to some print data stream, the Job object contains one or more Documents. If the Document is simply
referenced document may be used in multiple Documents in the same Job a reference to some print data stream, the referenced document may be
or even in different Jobs, though each Document contains its own copy used in multiple Documents in the same Job or even in different Jobs,
of the reference. If the Document is not just a reference, but an though each Document contains its own copy of the reference. If the
actual stream of print data, the stream is contained in only one Document is not just a reference, but an actual stream of print data,
Document, although there can be copies of the same document data in the stream is contained in only one Document, although there can be
other Documents in the same or different Jobs. copies of the same document data in other Documents in the same or
different Jobs.
2.5 Object Identity 2.5 Object Identity
All instances of Printer and Job objects have a URI so that they can All instances of Printer and Job objects have a URI so that they can
persistently and unambiguously referenced. The IPP model requires persistently and unambiguously referenced. The IPP model requires
that these values be URIs as defined by RFC 1738 [11] and RFC 1808
[34]. In addition to an identifier, instances of Printers, Jobs, and
Documents may have a name. An object name need not be unique across
all instances of all objects. The Printer name is chosen and set by an
administrator through some mechanism outside the scope of IPP itself.
If the client does not supply Job name or a Document name, the Printer
generates a name. In all cases, the name only has local meaning, and
it is not constrained to be unique.
To summarize:
- Each Printer will be uniquely identified with a URI. The
Printer's "printer-uri" attribute contains the URI.
- Each Job will be uniquely identified with a URI. The Job's "job-
uri" attribute contains the URI.
- Each Printer has name (which is not necessarily unique). The
administrator chooses and sets this name through some mechanism
outside the scope of IPP itself. The Printer's "printer-name"
attribute contains the name.
- Each Job has 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 generates a name
for the Job. The Job's "job-name" attribute contains the name.
- Each Document has name (which is not necessarily unique). The
client optionally supplies this name in the request which creates
the Document. If the client does not supply this name, the
Printer generates a name for the Document. The Document's
"document-name" attribute contains the name.
Note: If Documents are printed by reference, the corresponding
Document object contains a "document-uri" attribute. The value of
this attribute is a reference to the document data to be printed; it
is not a unique identifier of the Document object itself.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Proposal:
All instances of Printer objects have a URI so that they can
persistently and unambiguously referenced. The IPP model requires
that these values be URIs as defined by RFC 1738 [11] and RFC 1808. that these values be URIs as defined by RFC 1738 [11] and RFC 1808.
In addition to an identifier attribute, instances of Printer and Job All Printer operations are directed to the Printer's URI. All
objects may have a name. An object name need not be unique across all instances of Job objects have an opaque identifier that when used in
instances of all objects. The Printer name is chosen and set by an combination with its Printer URI, allow it to be persistently and
administrator. If not supplied by the client, the Printer creates the unambiguously referenced. Instances of Document objects have no
Job name. In all cases, the name only has local meaning, and it is identifier since they are always created and queried using Job
not constrained to be unique. operations; that is the model does not define semantics for querying
the attributes of just one Document within a multi-Document Job.
To summarize, each instance of Printer and Job objects will have two In addition to these identifier attributes, instances of Printer, Job,
identifying attributes: and Document objects may have a name. An object name need not be
unique across all instances of all objects. The Printer name is chosen
and set by an administrator. A client optionally supplies Job and
Document names in the operations that create Jobs and Documents. If a
client does not supply a name, the Printer generates a name. In all
cases, the name only has local meaning, and it is not in any way
constrained to be unique.
- "xxx-uri": The unique identifier for this object instance To summarize:
- "xxx-name": The non unique name for this object instance
Document objects sent to an IPP Printer only have names, no - Each Printer will be uniquely identified with a URI. The
identifiers. The "document-name" attribute is used to store the name Printer's "printer-uri" attribute contains this URI.
of the Document. This name is just of interest within the context of - Each Job will be uniquely identified with a Job ID and a Printer
a Job; it need not be unique. URI. The Job's "job-id" attribute contains the Job ID. The
Printer's "printer-uri" attribute contains the Printer's URI.
- Each Printer has name (which is not necessarily unique). The
administrator chooses and sets this name through some mechanism
outside the scope of IPP itself. The Printer's "printer-name"
attribute contains the name.
- Each Job has 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 generates a name
for the Job. The Job's "job-name" attribute contains the name.
- Each Document has name (which is not necessarily unique). The
client optionally supplies this name in the request that creates
the Document. If the client does not supply this name, the
Printer generates a name for the Document. The Document's
"document-name" attribute contains the name.
If Documents are printed by reference, the corresponding document Note: If Documents are printed by reference, the corresponding
object contains a "document-uri" attribute, but the value of this Document object contains a "document-uri" attribute. The value of
attribute is a reference to the document data to be printed; it is not
the unique identifier of the Document object itself. deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
this attribute is a reference to the document data to be printed; it
is not a unique identifier of the Document object itself.
3. IPP Operations 3. IPP Operations
Jobs and Printers each have a set of associated operations. Jobs and Printers each have a set of associated operations.
Operations consist of requests and responses. When a client Operations consist of requests and responses. When a client
communicates with an IPP object, it issues an operation request to the communicates with an IPP object, it issues an operation request to the
URI for that object. Each request carries along with it the input URI for that object. Each request carries along with it any operation
parameters and any data required to perform the operation. Each attributes and data required by the object to perform the operation.
request requires a response from the object indicating success or Each request requires a response from the object. Each response
failure of the operation including output parameters, status codes, indicates success or failure of the operation with a status code, and
may include operation attributes and an optional status message. The
Expires January 25, 1998 representation and encoding of IPP operations is described in
and/or status messages. The representation and encoding of IPP "Internet Printing Protocol: Protocol Specification" [23]. This
operations, parameters, and attributes is described in "Internet section describes the IPP operations in terms of their semantics and
Printing Protocol: Protocol Specification" [23]. This section of this contents, including both the request and the response for each
document describes the IPP operations in terms of their contents and
semantics including both the request and the response for each
operation. operation.
The Printer operations are fully defined in section ??: The Printer operations are fully defined in section 3.2:
Get-Operations (section 3.2.1) Print-Job (section 3.2.1)
Print-Job (section 3.2.2) Print-URI (section 3.2.2)
Print-URI (section 3.2.3) Validate-Job (section 3.2.3)
Validate-Job (section 3.2.4) Create-Job (section 3.2.4)
Create-Job (section 3.2.5) Get-Attributes (section 3.2.5)
Get-Jobs (section 3.3.3) Get-Jobs (section 3.2.6)
Get-Attributes (section 3.3.4)
The Job operations are fully defined in section ??: The Job operations are fully defined in section 3.3:
Send-Document (section 3.3.1) Send-Document (section 3.3.1)
Send-URI (section 3.3.2) Send-URI (section 3.3.2)
Cancel-Job (section 3.3.3) Cancel-Job (section 3.3.3)
Get-Attributes (section 3.3.4) Get-Attributes (section 3.3.4)
There are no Document operations. There are no explicit Document operations. However, there are Job
operations that are used to create and query Document objects
contained within a Job object. The Send-Document and Send-URI Job
operations are used to add a new Document to an existing multi-
Document Job. If requested, the Get-Attribute operation used for a
Job also returns any Document object attributes. If the Job is a
single Document Job, only a single set of Document attributes is
returned. If however, the Job contains multiple Documents, the Get-
Attribute Response contains multiple sets of Document attributes, one
set for each Document.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
3.1 General Semantics 3.1 General Semantics
3.1.1 Operation Status Codes and Messages 3.1.1 Operation Targets
All IPP operations are directed at an instance of an IPP object. For
Printer operations, the operation is directed at an IPP Printer using
its URI. That is, all Printer operations must somehow contain the
target attribute "printer-uri" indicating the target of the operation.
In the mapping of IPP over HTTP, the "printer-uri" attribute is
actually encoded as the "request-URI" component of the HTTP operation.
In other mappings, the target URI might be encoded using some other
transport specific mechanism.
For Job operations, the operation is directed at an IPP Job using its
URI. Like Printer operations, all Job operations must somehow contain
the target attribute "job-uri" indicating the target of the operation.
Also, like Printer operations, in the mapping of IPP over HTTP, the
"job-uri" attribute is actually encoded as the "request-URI" component
of the HTTP operation. In other mappings, the target URI might be
encoded using some other transport specific mechanism.
Propsal:
For Job operations, the the operation is directed at the Printer's URI
and it is accompanied by the Job ID . This allows the IPP Printer
implementation to find the correct Job object. That is, both the
"printer-uri" attribute and the "job-id" attribute must both be
supplied as the target of every Job operation. Like Printer
operations, in the mapping of IPP over HTTP, the "printer-uri"
attribute is encoded in the "request-URI" component of the HTTP
operation. However, the "job-id" attribute is supplied as an
operation attribute within the operation data itself. If a Printer
receives an IPP operation, it must check to see if the "job-id"
attribute is included among the operation attributes. If it is there,
the operation is being directed at the Job identified by the value of
"job-id". If it is not there, the operation is being directed at the
Printer itself.
3.1.2 Operation Status Codes and Messages
Every operation response returns a MANDATORY status code and an Every operation response returns a MANDATORY status code and an
OPTIONAL status message. A status code provides information on the OPTIONAL status message. A status code provides information on the
processing of a request. A message provides a short textual processing of a request. A status message provides a short textual
description of the status of the operation. The status code is description of the status of the operation. The status code is
intended for use by automata and a status message is intended for the intended for use by automata and the status message is intended for
human user. An IPP application (i.e. a browser, GUI, print driver or the human user. If a response does include a status message,an IPP
gateway) is not required to examine or display the message. Status application is not required to examine or display the status message.
codes and suggested corresponding status messages are described in Status codes and suggested corresponding status messages are described
section 11.. In most cases, if the status code indicates an error (the
code belongs to either the "client-error" or the "server-error"
group), there are additional output parameters (such as "unsupported-
attributes") returned that are not returned in the successful case.
3.1.2 Security and Query Operations deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
in section 12. In most cases, if the status code indicates an error,
there are additional attributes in the response that are not returned
in the successful case. One such example is the group of unsupported
attributes and values. This set of attributes is returned in response
to an operation request that includes attributes that are not
supported by the object.
3.1.3 Security Concerns for IPPOperations
3.1.3.1 Authenticated Requester Identity
IPP is layered on top of security services that supply the requester's
identity. It is assumed that identity supplied by the authentication
service is the most authenticated identity required by a given site's
configuration and current policy. It is also assumed that the
layering allows for a single IPP implementation to be run over a
consistent interface that supplies the authenticated identity. The
authentication interface should allow for various modular and
extensible authentication service implementations without requiring
changes to the IPP implementation.
Once the authenticated identity of the requester has been supplied to
the IPP implementation, the implementation uses that identity to
enforce any authorization policy(ies) that might be in place. When a
Job is created, the identity of the requester of the create operation
is persistently stored in the Job's "job-originating-user" attribute.
This attribute can be used to match the requester's identity of
subsequent operations on that Job in order to enforce the local
authorization policy(ies), if any. There are operation status codes
that allow an implementation to return information back to the
operation requester about what has been forbidden, not allowed, or not
authorized.
For example, a site security policy might be that only the job owner
is allowed to cancel a job using the Cancel-Job operation.
3.1.3.2 Restricted Queries
In many of these IPP operations, a client supplies a list of In many of these IPP operations, a client supplies a list of
attributes to be returned in the response. A Printer may be attributes to be returned in the response. A Printer may be
Expires January 25, 1998
configured, for security reasons, not to return all attributes that a configured, for security reasons, not to return all attributes that a
client requests. It may even return none of the requested attributes. client requests. It may even return none of the requested attributes.
In such cases, the status returned is the same as if the Printer had In such cases, the status returned is the same as if the Printer had
returned all requested attributes. The client cannot tell by such a returned all requested attributes. The client cannot tell by such a
response whether the requested attribute was present or absent on the response whether the requested attribute was present or absent on the
Printer. Printer.
3.1.3 Job Creation Operations deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
3.1.4 Versions
In order to create a new Job object, a client issues a create request. Each operation request carries with it a version number. Each version
A create request any one of following three operation requests: number is in the form X.Y where X is the major version number and Y is
the minor version number.
- The Print-Job operation: This operation is used by a client that By including a version number in the client request, it allows the
wants to create a Job with only a single Document. The operation client (the requester) to identify which version of IPP it is
allows for the client to "push" the document data to the Printer interested in using. If the Printer does not support that version,
by including the document data in the request itself. the Printer responds with a status code of 'server-error-version-not-
supported'. There is no version negotiation per se. However, if
after receiving a version not supported status code from the Printer,
there is nothing that prevents a client from trying again with a
different version number. For example, a client might be configured
to support IPP version 3.0, 2.5, 2.0 and 1.0 (hypothetically
speaking). A client might first try to speak version 3.0. If after
receiving a version not supported, it might successively try version
2.5, then 2.0, then 1.0. All implementations MUST support version
1.0.
- The Print-URI operation: This operation is used by a client that Items that might affect the changing of the major version number
wants to create a Job with only a single Document, however, the include any changes to the protocol specification itself such as:
client wants the Printer to "pull" the document data. In this
case, the client includes only a URI reference to the document
data (not the document data itself).
- The Create-Job operation: This operation is used by a client - reordering of ordered attributes or attribute sets
that wants to create a Job with multiple Documents. This - changes to the syntax of existing attributes
operation is followed by an arbitrary number of Send-Document or - changing OPTIONAL to MANDATORY and vice versa
Send-URI operations (each creating another Document for this
Job). The Send-Document operation includes the document data
with the operation request (client "pushes" the document data to
the printer), and the Send-URI operation includes only a URI
reference to the document data (the Printer "pulls" the document
data from the referenced location). The last Send-Document or
Send-URI request includes a parameter indicating that this is the
last Document for this Job.
A Create-Job operation followed by only one Send-Document operation is Items that might affect the changing of the minor version number
semantically equivalent to a Print-Job operation, however, for include any changes to the model objects and attributes but not the
performance reasons, the client SHOULD use the Print-Job operation for protocol specification itself, such as:
all single Document Jobs. Throughout this model specification, the
term "create request" is used to refer to any of these three operation
requests.
Also, as the Printer evaluates input parameters and Job Template - grouping all extensions not included in a previous version into a
attributes in a create request at the time the Job is first submitted, new version
it makes a decision whether or not to accept or reject the request and - formally adding in new attribute values
create the Job object. At job submission time, the Printer does not - changing any of the type1 attributes
need to validate the document data or the URI reference to document
Expires January 25, 1998 3.1.5 Job Creation Operations
data (in the case of a Print-URI). However, at job processing time,
the Printer might realize any of the following:
- there an error in the document data and it can not be parsed In order to create a new Job object, a client issues a create request.
- the document data is in an unsupported format A create request is any one of following three operation requests:
- the URI reference is incomplete or incorrect
- the URI reference is no longer valid (i.e., the server hosting
the data might be down)
- or any other job processing error
In this case, the Printer, depending on the error, can set the "job- - The Print-Job Request: A client that wants to create a Job with
state", "job-state-reasons", or "job-state-message" to some only a single Document uses the Print-Job operation. . The
appropriate value. operation allows for the client to "push" the document data to
the Printer by including the document data in the request itself.
3.2 Printer Operations deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
- The Print-URI Request: A client that wants to create a Job with
only a single Document where the Printer "pulls" the document
data uses the Print-URI operation. In this case, the client
includes only a URI reference to the document data (not the
document data itself).
3.2.1 Get-Operations Operation - The Create-Job Request: A client that wants to create a Job with
multiple Documents uses the Create-Job operation. . This
operation is followed by an arbitrary number of Send-Document or
Send-URI operations (each creating another Document for this
Job). 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 includes a "last-document"
attribute set to 'true' indicating that this is the last
Document for this Job.
The client uses this operation to query a specific implementation for Throughout this model specification, the term "create request" is used
a list of supported operations. All implementations MUST support this to refer to any of these three operation requests.
operation because some of the IPP operations defined in this
specification are OPTIONAL.
3.2.1.1 Get-Operations Request 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 for
all single Document Jobs. Also, Print-Job is a MANDATORY operation
(all implementations MUST support it) whereas Create-Job is an
OPTIONAL operation, hence some implemations might not support it.
The Get-Operations Request has no input parameters. Appendix E: Processing IPP Attributes (see Section 15) describes the
rules and issues surrounding either the acceptance or rejection of a
create request.
3.2.1.2 Get-Operations Response At job submission time, the Printer does not need to validate the
document data or the actual contents of the URI reference to document
data (in the case of a Print-URI). The Printer SHOULD check the
syntax of the URI to make sure that it appears to be a valid URI.
However, other checks are essentially useless,since they require
actually parsing and interpreting all of the print data, or in the
case of a URI, checking for availability at Job submission time does
not guarantee availability at Job processing time. In other words,
even if the checks were made a Job submission time, they MUST also be
done later at Job processing time, since at job processing time, the
Printer might discover any of the following conditions:
The Printer returns the following output parameters as part of the - additional runtime errors in the document data,
Get-Operations Response: - some nested document data is in an unsupported format,
Target Printer ("printer-uri"): deBry, Hastings, Herriot, Isaacson, Powell
The URI of the target printer. Expires February xx, 1998
- the URI reference is no longer valid (i.e., the server hosting
the data might be down), or
- any other run-time job processing error
Supported Operations ("supported-operations"): At this point, the Printer is unable to return an error status code in
A list of the operations that this implementation supports the create response, since it had already sent the create response
(including all MANDATORY operations). The values are taken from with a successful status code. In this case, the Printer, depending
the following set: 'Get-Operations', 'Print-Job', 'Print-URI', on the error, can set the "job-state", "job-state-reasons", or "job-
'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get-Attributes', state-message" attributes to the appropriate value(s) so that later
'Send-Document', 'Send-URI', and 'Cancel-Job'. queries can report the correct job status. Also, if the client has
requested notification for 'job-problems', the Printer could notify
the client via the address(es) in the "notify-addresses" attribute.
Note: Since this list contains all MANDATORY operations ('Get- 3.2 Printer Operations
Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get-
Attributes', and 'Cancel-Job'), this output parameter will never
be empty.
Expires January 25, 1998 3.2.1 Print-Job Operation
3.2.2 Print-Job Operation
When an end user desires to submit a print job with only one Document, When an end user desires to submit a print job with only one Document,
the client sends a Print-Job Request to a Printer and receives a the client uses a Print-Job operation. A Print-Job operation differs
Print-Job Response from that Printer. The information in a Print-Job from a Print-URI operation in that a Print-Job operation contains the
Request (along with any default information associated with the document data to be printed and a Print-URI operation only contains a
Printer) is sufficient for the Printer to create a Job object and then reference to the document data. A Validate-Job operation contains no
process that Job. A Print-Job operation differs from a Print-URI data, only a set of Job Template and Document attributes whose values
operation in that a Print-Job operation contains the document data to can be validated for consistency. A Create-Job operation is similar
be printed and a Print-URI operation only contains a reference to the as well, however the Create-Job Request is used to create a multi-
document data. Document Job.
3.2.2.1 Print-Job Request 3.2.1.1 Print-Job Request
The following input parameters are part of the Print-Job Request: The following sets of attributes are supplied as as part of the
Print-Job Request:
"printer-uri" (uri): Operation Attributes
The URI of the target printer.
"job-name" (name): "job-name" (name):
This optional parameter is supplied by the client. If it is not This OPTIONAL attribute identifies the client supplied Job name.
supplied by the client, the Printer generates a name (see Section If this attribute is supplied, its value it used for the "job-
4.3.3). name" attribute of the newly created Job object. 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.4).
"best-effort" (boolean): "ipp-attribute-fidelity" (boolean):
This parameter identifies the clients desire to accept best This is an OPTIONAL attribute. If not supplied, the Printer
effort printing or not. Best effor printing allows a job to be assumes the value is 'false'. The value 'true' indicates that
printed even though there might be a conflict between what a
client requests in a create request and what a Printer supports.
This is a MANDATORY parameter. The value 'true' indicates that a
"best effort 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 might have to ignore or
substitute attributes or values. The value 'false' indicates
that a best effort attempt to print the Job is not acceptable;
total fidelity to client supplied attributes and values is total fidelity to client supplied attributes and values is
required. In this case, the client is requesting that the Job be required. The value 'false' indicates that a reasonable attempt
printed exactly as specified, and if that is not possible the the
Job must be rejected rather than processed incorrectly. A client
may query the Printer's MANDATORY "best-effort-supported"
attribute to determine if either type of best effort printing (or
both) are supported. The request is rejected outright if either
the Printer's "best-effort-supported" attribute is set to only
'true' and the client supplies a value of 'false' or the
Printer's "best-effort-supported" attribute is set to only
'false' and the client supplies a value of 'true'.
Job Template Attributes: deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
to print the Job is acceptable. All implementations 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's "pdl-override" attribute.
Expires January 25, 1998 "document-name" (name):
An optional set of Job Template attributes as defined in section This OPTIONAL attribute identifies the client supplied Document
4.2. If the client supplies no Job Template attributes in the name. If this attribute is supplied, its value it used for the
Print-Job Request, the Printer uses its default value attributes "document-name" attribute of the newly created Document object.
when processing the job. If this attribute is not supplied by the client, the Printer
optionally generates a name to use in the "document-name"
attribute of the newly created Document object (see Section 4.4).
Document Attributes ISSUE: Since this is part of a Print-Job that creates only a
The client optionally supplies the "document-name" and "document- single Document, should we
format" attributes. If "document-name" is not supplied, the not allow this attribute?
Printer generates a name for the Document. If "document-format"
is not supplied, the Printer assumes that the document data is in
a format that this acceptable to the Printer.
ISSUE: Should "document-name" be a parameter and document-format Job Template Attributes
just be a Job Template attribute?
Document Content: An optional set of Job Template attributes as defined in section
The client supplies the document data to be processed. 4.2. If the client supplies no Job Template attributes in the
Print-Job Request, the Printer uses the values set in its default
value attributes at job processing time (not job submission
time).
The simplest Print-Job Request consists of just the Document Content Document Attributes:
and nothing else. In this case, the Printer creates a new Job object
with no associated Job Template attributes and the job contains a
single Document. The Printer also generates a name for the Document
and for the Job.
When a Printer receives a Print-Job Request, the Printer either An optional set of Document Attributes as defined in section 4.4.
accepts or rejects the request. The Printer accepts the Print-Job If "document-format" is not supplied, the Printer assumes that
Request and creates a Job object if it is able to accept all Job the document data is in a format that this acceptable to the
Template attributes in the request. The Printer rejects the request Printer. If the "document-format" is unknown for a certain
and does not create a Job object if the Printer rejects any Job document, the client SHALL NOT supply the attribute in the create
Template attribute in the request. There are six cases to consider request or the Send-Document Request.
when accepting or rejecting Job Template attributes:
1. The client supplies a Job Template attribute named "xxx" and the Document Content
value supplied by the client is among the values supported by the
Printer (i.e., is among the values of the Printer's "xxx-
supported" attribute): The "xxx" Job Template attribute is
accepted. The Printer creates the Job object and associates the
"xxx" attribute with the new Job object using the value supplied
by the client.
2. The client supplies a Job Template attribute but the attribute The client MUST supply the document data to be processed.
is syntactically bad: The Printer rejects the job and returns the
attribute in the "unsupported-attributes" output parameter.
3. The client supplies a Job Template attribute and the attribute Note: Since all Print-Job Request attributes are OPTIONAL, the
value is not among the values supported by the Printer or the simplest Print-Job Request consists of just the Document Content and
Printer does not support the attribute at all: This case depends nothing else. In this case, the Printer creates a new Job object and
on the value of the "best-effort' parameter. If the client stores a generated Job name in the "job-name" attribute. The Job
contains a single Document. The Printer optionally generates a name
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
supplies a value of 'false'the Printer SHALL reject the Job and Expires February xx, 1998
return the 'client-error-attribute-unsupported" error code and the Document and stores it in the "document-name" attribute. The
the unsupported attribute in the "unsupported-attributes " output Printer assumes that the document data is in a format supported by the
parameter. If the client supplies a "best-effort" value of Printer. When the Printer processes the Job, it uses all of its
'true' the Printer SHALL accept the Job either ignore unsupported default values for the missing Job Template attributes.
attributes or substitute supported values for all unsupported
values supplied by the client. In this case, if everything else
is ok, the Printer returns a "successful-ok-ignored-or-
substituted-attributes" status code. The client could later
query the Job object to find which of the Job attributes had been
ignored or substituted.
ISSUE: Does the above satisfy Jim W.'s issue about persistence of 3.2.1.2 Print-Job Response
the best effort value?
5. The client does not supply a Job Template attribute that is The Printer SHALL return to the client the following sets of
supported by the Printer:: If all other attributes are attributes as part of the Print-Job Response:
acceepted, the Printer accepts the request and creates the Job
object, the Printer does not associate the attribute with the new
Job object. When the Printer processes that Job, the Printer uses
the behavior implied by the default value Printer attribute as
set at the time of Job processing (not Job creation). In other
words, these rules allow a client to submit a Job with no Job
Template attribute and as the Printer processes the Job, the
Printer uses its the default value attribute in place of the
missing Job Template attribute. Suppose the Printer were to
associate the Printer's default value is with the Job at creation
time for an attribute which was not supplied by the client. A
later query of the Job object would reveal a set of Job object
attributes and neither the Printer nor the end user would be able
to tell the difference between a Job attribute that is an
"override PDL" attribute (supplied by the client) and another
which is a "default value" attribute (supplied by the printer).
6. Neither the client supplies an attribute nor the Printer Operation Attributes
supports the attribute: : The Printer accepts the Job, however,
as far as IPP is concerned, the result of processing that Job
(with respect to the missing attributes) is undefined.
In many cases though, this case represents a legacy environment, "job-uri" (uri):
and even without IPP attributes, the Job will be processed A URI which the client SHALL use for all other operations on this
successfully. For example, the document data might have been Job. This is the MANDATORY "job-uri" attribute.
generated by a device-specific printer driver that formats the
job and emits a data stream (a stream of PDL) that is finely
tuned for the intended output device and its internal
interpreter. But, neither the output device nor the printer
driver are aware of the IPP protocol. However, an intermediate
Expires January 25, 1998 ISSUE: Can this just be a "Job Status Attribute"?
process, which is IPP aware, is able to submit the job and make
sure that it is delivered to the output device, yet be unaware of
all the Job Template attributes that might possibly be supported.
3.2.2.2 Print-Job Response Job Status Attributes
The Printer SHALL return to the client the following output parameters "job-name":
as part of the Print-Job Response: This is the Job's "job-name" attribute.
"job-uri" (uri): "job-state":
A URI which the client SHALL use for all other operations on this This is the Job's "job-state" attribute. The value of this
Job attribute is taken from a "snapshot" of the new Job object
sometime after the time the Printer receives the print request
until just prior to returning the response to the client.
Job Status Attributes: "job-state-reasons":
This includes the following Job attributes: "job-name", "job- This is the Job's "job-state-reasons" attribute. The value of
state", and "job-state-reasons". The value of each attribute is this attribute is taken from a "snapshot" of the new Job object
taken from a "snapshot" of the new Job object sometime after the sometime after the time the Printer receives the print request
time the Printer receives the print request until just prior to until just prior to returning the response to the client.
returning the response to the client. Since the "job-state-
message" attribute is OPTIONAL, it MAY be included in the "job-state-message":
response, but it is NOT REQUIRED. This is the Job's "job-state-message" attribute. Since the "job-
state-message" attribute is OPTIONAL Job attribute, itis
OPTIONALLY included in the response.
Note: Since any printer state information which affects a job's Note: Since any printer state information which affects a job's
state is reflected in the "job-state" and "job-state-reasons" state is reflected in the "job-state" and "job-state-reasons"
attributes, it is sufficient to return only these attributes and attributes, it is sufficient to return only these attributes and
no specific printer status attributes. no specific printer status attributes.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Unsupported Attributes: Unsupported Attributes:
This is a set of attributes and attribute values that are This is a set of attributes and attribute values that are
unsupported. This output parameter is only returned in the unsupported. This output parameter is only returned in the
response if the status code indicates that there was such an response if the status code indicates that there was such an
error. error.
The simplest response consists of the just the job identifier ("job- Note: The simplest response consists of the just the job URI ("job-
uri") and Job Status attributes output parameters with a status code uri") and the Job Status attributes with a status code of "successful-
of "successful-ok". ok".
3.2.3 Print-URI Operation 3.2.2 Print-URI Operation
This operation is identical to the Print-Job operation (section 3.2.2) This operation is identical to the Print-Job operation (section 3.2.1)
except that a client supplies a URI reference to the document data except that a client supplies a URI reference to the document data
using the "document-uri" (uri) input parameter rather than including using the "document-uri" (uri) operation attribute rather than
the document data itself. It is up to the IPP server to interpret the including the document data itself. It is up to the IPP server to
URI and subsequently "pull" the document from the source referenced by interpret the URI and subsequently "pull" the document from the source
the URI string. referenced by the URI string.
Expires January 25, 1998 3.2.3 Validate-Job Operation
3.2.4 Validate-Job Operation
This operation is similar to the Print-Job operation (section 3.2.2) This operation is similar to the Print-Job operation (section 3.2.1)
except that a client supplies no document data and the Printer except that a client supplies no document data and the Printer
allocates no resources (i.e., it does not create a new Job object) to allocates no resources (i.e., it does not create a new Job object).
process the job. This operation is used only to verify capabilities This operation is used only to verify capabilities of a printer object
of a printer object against whatever input parameters are supplied in against whatever attributes are supplied by the client in the
the Validate-Job request. There is no "job-uri" output parameter Validate-Job request. There is no "job-uri" attribute returned in the
returned in the Validate-Job Response. If the client supplies a Validate-Job Response neither are there any Job Status attributes
"document-uri" input parameter, the Printer SHOULD only validate the returned in the response. The client MAY include a "document-uri"
syntax of the URI rather than follow the reference and validate the attribute in the request. In this case, the Printer SHOULD only
contents of the reference. The Printer may choose to validate the validate the syntax of the URI rather than follow the reference and
reference, however, later at job processing time, the reference will validate the contents of the reference. If all is well, the Printer
need to be validated yet again. If all is well, the Printer returns returns the status code "successful-ok". Otherwise, the Printer
the status code "successful-ok". returns a set of unsupported attributes and the appropriate error
status code.
3.2.5 Create-Job Operation 3.2.4 Create-Job Operation
This operation is similar to the Print-Job operation (section 3.2.2) This operation is similar to the Print-Job operation (section 3.2.1)
except that a client supplies no document data or any reference to except that a client supplies no document data or any reference to
document data in the Create-Job request. This operation is followed document data in the Create-Job request. This operation is followed
by one or more Send-Document or Send-URI operations. If a Printer by one or more Send-Document or Send-URI operations. If a Printer
object supports the Create-Job operation, it MUST also support either object supports the Create-Job operation, it MUST also support either
the Send-Document operation or the Send-URI operation or both. Since the Send-Document operation or the Send-URI operation or both. Since
a client can use the Get-Operations operation, a client SHOULD NOT a client can query the Printer's "operations-supported" attribute, a
attempt to use an unsupported operation. client SHOULD NOT attempt to use an unsupported optional operation.
3.2.6 Get-Attributes Operation deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
3.2.5 Get-Attributes Operation
The Get-Attributes operation allows a client to obtain information The Printer Get-Attributes operation allows a client to obtain
from a Printer object. The client supplies as an operation parameter information from a Printer object. In the operations attributes in a
the set of attribute names and/or attribute group names that the request, the client supplies the set of attribute names and/or
requester is interested in. The Printer returns a corresponding attribute group names in which the requester is interested. In the
attribute set in the response with the appropriate attribute values operation attribute in the response, the Printer returns a
filled in for each requested attribute (either explicitly named in the corresponding attribute set with the appropriate attribute values
request or implicitly included by naming an attribute group). filled in.
For Printers, the attribute groups include: For Printers, the attribute groups include:
- 'job-template': all of the Job Template attributes that apply to - 'job-template': all of the Job Template attributes that apply to
a Printer object (the last two columns of the table in Section a Printer object (the last two columns of the table in Section
4.2). 4.2).
- 'printer-description': the attributes specified in Section 4.5. - 'printer-description': the attributes specified in Section 4.5.
There are also special groups: There is also the special group 'all' which includes all supported
attributes.
Expires January 25, 1998
- 'none': no attributes of the specified object. 'none' is
primarily useful in Get-Jobs, but can be used as a "ping" with
the Get-Attributes operation.
- 'all': all supported attributes
It is NOT REQUIRED that a Printer support all attributes belonging to It is NOT REQUIRED that a Printer support all attributes belonging to
a group, however it is MANDATORY that each Printer implementation a group, however it is MANDATORY that each Printer implementation
understand all group names. understand all group names.
There is one group named 'document-attributes' which consists of the 3.2.5.1 Get-Attributes Request
Document Attributes described in section 4.4 ("document-name",
"document-format", and "document-uri"). These attributes may be
requested either individually or as a group. If any or all of these
attributes are requested, in the response, they are treated as multi-
valued attributes (one value for each Document in the Job). For
example, there are 5 Documents in the Job, then each returned Document
attribute MUST have 5 values: the set of first values from each
attribute correspond to the first Document, the set of second values
correspond to the second Document, and so on. In order to maintain
the same number of values in each returned attribute, if there is no
value for either the "document-format" or "document-uri" attributes, a
special "out of band" value of 'none' is returned in its place. This
out of band value requires an encoding described in the Protocol
Specification document [23].
For a complete example, consider a Job with 3 Documents and in the
Get-Attributes Request the group 'document-attributes' is requested.
The returned attributes (in the Get-Attributes Response) might look
like:
document-name = 'Document 1', 'Document 2', Document 3'
document-format = 'langPS', 'none', 'langPCL'
document-uri = ' ftp://some.domain.com/file1.ps', 'none', 'none'
3.2.6.1 Get-Attributes Request
The following input parameters are part of the Get-Attributes Request
when the request is directed to a Printer object:
"printer-uri" (uri): The following sets of attributes are part of the Get-Attributes
The URI of the target printer. Request when the request is directed to a Printer object:
"requested-attributes" (1setOf keyword) : Operation Attributes"requested-attributes" (1setOf keyword) :
An optional set of attribute names (without values) or attribute An optional set of attribute names (without values) or attribute
group names in whose values the requester is interested. If the group names in whose values the requester is interested. If the
client omits this input parameter, the Printer SHALL respond as client omits this input parameter, the Printer SHALL respond as
if this input parameter had been supplied with a value of 'all'. if this input parameter had been supplied with a value of 'all'.
Expires January 25, 1998 "document-format" (mimeType) :
"document-format" (enum) :
This input parameter is useful for determining the set of This input parameter is useful for determining the set of
supported attribute values which relate to the requested document supported attribute values which relate to the requested document
format. The Printer SHALL return only (1) those attributes that format. The Printer SHALL return only (1) those attributes that
are supported and (2) the attribute values that are supported for are supported and (2) the attribute values that are supported for
the specified document format. By specifying the document the specified document format. By specifying the document
format, the client can get the Printer to eliminate the format, the client can get the Printer to eliminate the
attributes and values that are not supported for a specific attributes and values that are not supported for a specific
document format. For example, a Printer might have multiple document format. For example, a Printer might have multiple
interpreters to support both 'langPS' (for PostScript) and interpreters to support both 'application/postscript' (for
'langPCL' (for PCL) documents. However, for only one of those PostScript) and 'text/plain' (for text) documents. However, for
interpreters might the Printer be able to support "number-up" only one of those interpreters might the Printer be able to
with values of 'one', 'two', and 'four'. For the other support "number-up" with values of 'one', 'two', and 'four'. For
interpreter it might be able to only support "number-up" with a
value of 'one'. deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
the other interpreter it might be able to only support "number-
up" with a value of 'one'.
If the client omits this input parameter, the Printer SHALL If the client omits this input parameter, the Printer SHALL
respond as if the input parameter had been set to the value of respond as if the input parameter had been set to the value of
the Printer's default value "document-format" attribute were the Printer's default value "document-format" attribute were
supplied. It is recommended that the client always supply a supplied. It is recommended that the client always supply a
value for document-format, since the Printer's default value for value for document-format, since the Printer's default value for
document-format may be 'langAutomatic', in which case the document-format may be 'langAutomatic', in which case the
returned attributes and values are for the union of the document returned attributes and values are for the union of the document
formats that the Printer can automatically sense. formats that the Printer can automatically sense.
3.2.6.2 Get-Attributes Response ISSUE: What about MIME types.
The Printer returns the following response parameters as part of the 3.2.5.2 Get-Attributes Response
The Printer returns the following sets of attributes as part of the
Get-Attributes Response: Get-Attributes Response:
Requested Attributes: Requested Attributes
This is a the set of requested attributes and their current
values. The Printer ignores (does not respond with) any
requested attribute which is not supported.
3.2.7 Get-Jobs Operation This is the set of requested attributes and their current values.
The Printer ignores (does not respond with) any requested
attribute which is not supported.
3.2.6 Get-Jobs Operation
The Get-Jobs operation allows a client to retrieve the list of Jobs The Get-Jobs operation allows a client to retrieve the list of Jobs
belonging to the target Printer object. The client may also supply a belonging to the target Printer object. The client may also supply a
list of Job attribute names or attribute group names. These Job list of Job attribute names or attribute group names. These Job
attributes will be returned for each Job that is returned. attributes will be returned for each Job that is returned.
This operation is like Get-Attributes, except that Get-Jobs operation This operation is like Get-Attributes, except that Get-Jobs operation
returns attributes from possibly more than one object (see the returns attributes from possibly more than one object (see the
description of attribute groups in section 3.2.6). description of attribute groups in section 3.3.4).
Expires January 25, 1998 3.2.6.1 Get-Jobs Request
3.2.7.1 Get-Jobs Request
The client submits the Get-Jobs request to a Printer URI. The client submits the Get-Jobs request to a Printer URI.
The following input parameters are part of the Get-Jobs Request: The following sets of attributes are part of the Get-Jobs Request:
"printer-uri" (uri): Operation Attributes
The URI of the target printer.
"limit" (integer): "limit" (integer):
This is an integer value that indicates a limit to the number of This is an integer value that indicates a limit to the number of
Jobs returned. The limit is a "stateless limit" in that if the Jobs returned. The limit is a "stateless limit" in that if the
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
limit is n then only the first n jobs are returned in the Get- limit is n then only the first n jobs are returned in the Get-
Jobs Response; there is no mechanism to allow for the "next" n Jobs Response; there is no mechanism to allow for the "next" n
jobs. The limit applies across all Job States requested. For jobs. The limit applies across all Job States requested. For
example, if the limit if 50, and there are 75 spooled jobs, only example, if the limit if 50, and there are 75 spooled jobs, only
the first 50 jobs are returned; the other 25 jobs are not the first 50 jobs are returned; the other 25 jobs are not
returned. returned.
"requested-attributes" (1setOf keyword): "requested-attributes" (1setOf keyword):
An optional set of Job attribute names or attribute groups names An optional set of Job attribute names or attribute groups names
in whose values the requester is interested. This set of in whose values the requester is interested. This set of
attributes is returned for each Job that is returned.. The attributes is returned for each Job that is returned.. The
attribute group names are the same as for the Get-Attributes attribute group names are the same as for the Get-Attributes
operation for the Job object. If the client omits this input operation for the Job object. If the client omits this input
parameter, the Printer SHALL respond as if this input parameter parameter, the Printer SHALL respond as if this input parameter
had been supplied with a value of " 'job-uri'. had been supplied with a value of " 'job-uri'.
3.2.7.2 Get-Jobs Response 3.2.6.2 Get-Jobs Response
The Printer SHALL return the following output parameters as part of The Printer returns zero or more Job objects each with zero or more
the Get-Jobs Response: attributes. There is a set of requested attributes for each Job.
After each Job, there is a set of requested attributes for each
Document in the Job. For example:
Requested Attributes: Job 1
The result includes zero or more Job objects each with zero or Document 1A
more attributes. Jobs are returned in the following order: First Job 2
all active Jobs (Jobs in the 'pending', 'processing', 'pending- Document 2A
held', and 'processing-stopped' states) are returned oldest to Document 2B
newest (with respect to expected completion time) followed by all Document 2C
completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled' Job 3
states) newest to oldest (with respect to actual completion Document 3A
time). Jobs that are in the 'pending-held' state SHALL appear in Job 4
their position as if they were 'pending' (otherwise, a user might Job 5
be confused by Jobs that move from 'pending-held' to 'pending' as Document 5A
seeming to jump ahead in the queue). Document 5B
Jobs are returned in the following order: First all active Jobs (Jobs
in the 'pending', 'processing', 'pending-held', and 'processing-
stopped' states) are returned oldest to newest (with respect to
expected completion time). Next, all completed Jobs (Jobs in the
'completed', 'aborted', or 'canceled' states) newest to oldest (with
respect to actual completion time). Jobs that are in the 'pending-
held' state SHALL appear in their position as if they were 'pending'
(otherwise, a user might be confused by Jobs that move from 'pending-
held' to 'pending' as seeming to jump ahead in the queue). Note: Jobs
are returned in the following order:
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
First, all active Jobs (Jobs in the 'pending', 'processing',
'pending-held', and 'processing-stopped' states) are returned
oldest to newest (with respect to expected completion time),
followed by
Second, all completed Jobs (Jobs in the 'completed', 'aborted', or
'canceled' states) newest to oldest (with respect to actual
completion time). Jobs that are in the 'pending-held' state
SHALL appear in their position as if they were 'pending'
(otherwise, a user might be confused by Jobs that move from
'pending-held' to 'pending' as seeming to jump ahead in the
queue).
Expires January 25, 1998
3.3 Job Operations 3.3 Job Operations
The target of Job operations are Job objects. Since Job objects are
identified with both the Printer's URI and the "job-id" attribute, the
following applies rules apply to all Job operations:
- The Printer's URI is encoded at the transport level the same as
all Printer operations
- The "job-id" attribute is included as an operation attribute for
all Job operations.
3.3.1 Send-Document Operation 3.3.1 Send-Document Operation
Once a Job object has been created using a Create-Job operation Once a Job object has been created using a Create-Job operation
(returning a "job-uri"), a client directs a Send-Document operation to (returning a "job-uri"), a client directs a Send-Document operation to
the newly create Job object. The operation adds a new Document to the the newly create Job object. The operation adds a new Document to the
Job object. An entire document MUST be sent in a single Send-Document Job object. An entire document MUST be sent in a single Send-Document
Request. Request.
3.3.1.1 Send-Document Request 3.3.1.1 Send-Document Request
The client submits the request to a Job URI. The client submits the request to a Job URI.
The following abstract data types are part of the Send-Document The following attribute sets are part of the Send-Document Request:
Request:
"job-uri" (uri): Operation Attributes:
The URI of the target Job.
Document Attributes: "document-name" (name):
An optional set of Document Description attributes (section 4.4). This OPTIONAL attribute identifies the client supplied Document
name. If this attribute is supplied, its value it used for the
"document-name" attribute of the newly created Document object.
If this attribute is not supplied by the client, the Printer
optionally generates a name to use in the "document-name"
attribute of the newly created Document object (see Section ??).
Last Document Flag ("last-document"): "last-document" (boolean):
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
This is a boolean flag that is set to 'true' if this is the last This is a boolean flag that is set to 'true' if this is the last
Document for the Job. Document for the Job.
Document Attributes:
Document Content: An optional set of Document Attributes as defined in section 4.4.
The client supplies the document data. If "document-format" is not supplied, the Printer assumes that
the document data is in a format that this acceptable to the
Printer. If the "document-format" is unknown for a certain
document, the client SHALL NOT supply the attribute in the create
request or the Send-Document Request.
Document Content
The client MUST supply the document data to be processed.
3.3.1.2 Send-Document Response 3.3.1.2 Send-Document Response
The following output parameters are part of the Send-Document The following sets of attributes are part of the Send-Document
Response: Response:
Job Status: Job Status Attributes
(see section 3.2.2.2)
"job-name":
This is the Job's "job-name" attribute.
"job-state":
This is the Job's "job-state" attribute. The value of this
attribute is taken from a "snapshot" of the new Job object
sometime after the time the Printer receives the print request
until just prior to returning the response to the client.
"job-state-reasons":
This is the Job's "job-state-reasons" attribute. The value of
this attribute is taken from a "snapshot" of the new Job object
sometime after the time the Printer receives the print request
until just prior to returning the response to the client.
"job-state-message":
This is the Job's "job-state-message" attribute. Since the "job-
state-message" attribute is OPTIONAL Job attribute, itis
OPTIONALLY included in the response.
Unsupported Attributes: Unsupported Attributes:
(see section 3.2.2.2)
This is a set of attributes and attribute values that are
unsupported. This output parameter is only returned in the
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
response if the status code indicates that there was such an
error.
3.3.2 Send-URI Operation 3.3.2 Send-URI Operation
This operation is identical to the Send-Document operation (see This operation is identical to the Send-Document operation (see
section 3.3.1) except that a client supplies a URI reference section 3.3.1) except that a client supplies a URI reference
("document-uri") rather than the document data itself. It is up to ("document-uri" operation attribute) rather than the document data
itself. It is up to the IPP server to interpret the URI and
Expires January 25, 1998 subsequently "pull" the document from the source referenced by the URI
the IPP server to interpret the URI and subsequently "pull" the string.
document from the source referenced by the URI string.
3.3.3 Cancel Job Operation 3.3.3 Cancel Job Operation
This operation allows a user to cancel one specific Print Job any time This operation allows a client to cancel a Print Job any time after
after the print job has been established on the Printer. Some pages the print job has been submitted to the Printer. Since a Job might
may be printed before a job is terminated if printing has already already be printing by the time a Cancel-Job is received, some pages
started when the Cancel Job operation is received. The Printer may be printed before the job is actually terminated.
determines via the security layer (authentication) and administrative
policy set outside the scope of IPP (authorization) whether or not to
allow the Cancel-Job operation.
3.3.3.1 Cancel-Job Request 3.3.3.1 Cancel-Job Request
The client submits the request to a Job URI. The client submits the request to a Job URI.
The following abstract data types are part of the Cancel Job Request: The following attribute sets are part of the Cancel Job Request:
"job-uri" (uri): Operation Attributes
The URI of the target Job.
"message" (text): "message" (text):
Optional message to the operator Optional message to the operator
3.3.3.2 Cancel-Job Response 3.3.3.2 Cancel-Job Response
There are no output parameters other Cancel Job Response other than There are no attributes in the Cancel Job Response other than the
the Status Code and optional Status Message. Status Code and optional Status Message. Once a successful response
has been sent, the implementation guarantees that the Job will
eventually end up in the 'cancelled' state. If the implementation is
forced to leave the job in the some other state, the "job-state-
reasons" SHOULD contain the 'processing-to-stop-point' value which
indicates to later queries that although the Job may still be
'processing', it will eventually end up in the 'cancelled' state, not
the 'completed' state.
3.3.4 Get-Attributes Operation 3.3.4 Get-Attributes Operation
The Get-Attributes operation allows a client to obtain information The Job Get-Attributes operation allows a client to obtain information
from a Job object and it is almost identical to the Get-Attributes from a Job object and it is almost identical to the Get-Attributes
operation for a Printer object (see section 3.2.6). The only
differences are that the operation is directed at a Printer URI rather deBry, Hastings, Herriot, Isaacson, Powell
than a Job URI and there is no Document Format input parameter used Expires February xx, 1998
for querying a Job object.. In an input parameter, the client supplies operation for a Printer object (see section 3.2.5). The only
the set of attribute names and/or attribute group names that the differences are that the operation is directed at a Job rather than a
requester is interested in. Printer and there is no "document-format" operation attribute used
when querying a Job object.
For Jobs, the attribute groups include:
- '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': the attributes specified in Section 4.3.
There is also the special group 'all' which includes all supported
attributes.
There is another special group named 'document-attributes' which
consists of the Document Attributes described in section 4.4. If any
Document Attributes are requested, the response contains a separate
set of Document attributes for each Document in the Job.
3.3.4.1 Get-Attributes Request 3.3.4.1 Get-Attributes Request
Expires January 25, 1998 The following attribute sets are part of the Get-Attributes Request
when the request is directed to a Job object:
Operation Attributes:
"requested-attributes" (1setOf keyword) :
An optional set of attribute names (without values) or attribute
group names in whose values the requester is interested. If the
client omits this attribute, the Printer SHALL respond as if this
input parameter had been supplied with a value of 'all'.
3.3.4.2 Get-Attributes Response
The implementation returns the following response attributes as part
of the Get-Attributes Response:
Job Attributes:
This is the set of requested attributes and their current values.
The implementation ignores (does not respond with) any requested
attribute which is not supported.
Document Attributes:
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
This is the set of requested attributes and their current values.
The implementation ignores (does not respond with) any requested
attribute which is not supported. One set is returned for each
Document in the Job.
4. Object Attributes 4. Object Attributes
This section describes the attributes with their corresponding This section describes the attributes with their corresponding
syntaxes and values that are part of the IPP model. The sections below syntaxes and values that are part of the IPP model. The sections below
show the objects and their associated attributes which are included show the objects and their associated attributes which are included
within the scope of this protocol. Many of these attributes are within the scope of this protocol. Many of these attributes are
derived from other relevant specifications: derived from other relevant specifications:
- ISO/IEC 10175 DPA (Final, June 1996) [5] - ISO/IEC 10175 DPA (Final, June 1996) [5]
- RFC 1759 Printer MIB (Proposed Standard, May 1995) [1] - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1]
- Internet-Draft: Printer MIB (Draft Standard in progress, July - Internet-Draft: Printer MIB (Draft Standard in progress, July
1997) [29] 1997) [29]
- Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997) - Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997)
[27] [27]
Each attribute is uniquely identified in this document using a Each attribute is uniquely identified in this document using a
"keyword" (see section 10.2.1). The keyword is included in the "keyword" (see section 11.2.1). The keyword is included in the
section header describing that attribute. Not only are attributes section header describing that attribute. Not only are attributes
uniquely identified with keywords, some attributes are defined to have uniquely identified with keywords, some attributes are defined to have
a syntax which is a set of keywords. a syntax which is a set of keywords.
4.1 Attribute Syntaxes 4.1 Attribute Syntaxes
The following table shows the basic syntax types that a client and This section defines the basic syntax types that a client and server
server SHALL be able to handle. SHALL be able to handle. These are considered to be a set of type2
enum values. The values are:
text: a sequence of characters, length: 0 to 4095, where each
character is a member of the UCS-2 coded character set.. This
syntax type is used for free form human readable text intended
for human consumption. The default encoding for attributes of
type "text" is the UTF8 encoding rules. However, if the
attribute "content-char-set" is set to a value of type "char-set"
then that value describes the encoding rules used for text
attributes.
name: this is the same a "text" except that the sequence of
characters is of length 1 to 255 This syntax type is used for
referencing some object or entity via a user-friendly string,
such as a Printer name, a document name, a user name, or a host
name.
keyword: a sequence of characters, length: 1 to 255, containing
only the characters ASCII lowercase letters ("a" - "z"), ASCII
digits ("0" - "9"), hyphen ("-"), dot ("."), and underscore
("_"). The first character MUST be an ASCII lowercase letter.
This syntax type is used for enumerating semantic identifiers of
Expires January 25, 1998
entities in the abstract protocol (specified in this document).
These entities can be attribute names or values of attributes.
When a keyword is used to represent an attribute (its name), it
MUST be unique within the full scope of 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 can not be used for two
different values within the same attribute to mean two different
semantic ideas. However, the same keyword can be used across two
or more attributes, representing different semantic ideas for
each attribute.
enum: an enumerated integer value that is in the range from -2**31
to 2**31 - 1. Each value has an associated keyword name. Each
attribute (whose syntax is enum) enumerates the values that are
defined for the attribute. The enum 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 the
IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are
not used for attributes to which the system administrator may
assign values. Values in the range 2**30 to 2**31 - 1 are
reserved for private or experimental use. Implementers are
warned that use of such values may conflict with other
implementations. Implementers are encouraged to request
registration of enum values following the procedures in Section
6.
uri: a sequence of characters as defined in rfc1738 and rfc1808.
This syntax type is used for carrying Universal Resource
Identifiers.
uriScheme: a sequence of characters representing the URI Scheme.
These include 'http' for HTTP schemed URIs (e.g., http://...),
and 'ftp' for FTP schemed URIs (e.g., ftp://...).
human-language: a standard identifier for human language and
optionally a country. The values for this syntax type are taken
from RFC 1766 [26]. RFC 1766 does not have provision for
expressing the coded character set component of a locale. The
"content-char-set" attribute contains a value which represents
the encoding rules used. If "content-char-set" is not supported,
the coded character set used in the IPP protocol MUST be UTF-8
[28].
char-set: a standard identifier the character set used in the
encoding of attributes of type "text". The values for this syntax
type are taken from RFC 2130 [31].
Expires January 25, 1998
octetString: a sequence of octets. This syntax type is used for
opaque data, such as the document-content.
boolean: two values of 'true' and 'false'. This syntax type is
like a keywordSet, but there are only two values. Note: An
application might use a checkbox for an attribute with this
syntax type.
integer: an integer value that is in the range from -2**31 to
2**31 - 1. Each attribute specifies the range constraint
explicitly if the range is different from the full range of
possible integer values (e.g., 0 - 100 for the "job-priority"
attribute).
dateTime: a standard, fixed length representation of date and time
as defined in RFC 1514 [32] and RFC 1903 [33].
resolution: a special syntax used only for "printer-resolution"
and "printer-resolution-supported" It consists of 3 parts: a
cross feed direction resolution (positive integer value), a feed
direction resolution (positive integer value) and a units value.
All these are taken from the Printer MIB [1] suggested values.
1setOf X: 1 or more values of type X. This syntax type is used
for multi-valued attributes, whose value is a set of values.
Note: The syntax type is called "1setOf" to indicate that set of
values SHALL NOT be empty (a set of size 0).
rangeOf X: a range of value of type X. This syntax type is used
for ordered values (numeric, lexical, etc.) such as integers.
4.1.1 Attribute Extensibility
This document uses prefixes to the "keyword" and "enum" basic
syntax type in order to communicate extra information to the reader
through its name. This extra information need not be represented in
an implementation because it is unimportant to a client or Printer.
The table below describes the prefixes and their meaning.
"type1": The IPP standard must be revised to add a new keyword or
a new enum. No private keywords or enums are allowed.
Expires January 25, 1998
"type2": Implementers can, at any time, add new keyword or enum
values by proposing them to the IPP working group for
registration (or an IANA-appointed registry advisor after the IPP
working group is no longer certified) where they are reviewed for
approval. IANA keeps the registry.
"type3": Implementers can, at any time, add new keyword and enum
values by submitting a registration request directly to IANA, no
IPP working group or IANA-appointed registry advisor review is
required.
"type4": Anyone (system administrators, system integrators, site
managers, etc.) can, at any time, add new installation-defined
values (keywords or new enum values) to a local system. Care
SHOULD be taken by the implementers to see that keywords do not
conflict with other keywords defined by the standard or as
defined by the implementing product. There is no registration or
approval procedure for type 4 keywords.
By definition, each of the four types above assert some sort of
registry or review process in order for extensions to be considered
valid. Each higher level (1, 2, 3, 4) 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 type4 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 '1' 'text': a sequence of characters, length: 0 to 4095, where
above types, including type4 keywords. each character is a member of the ISO 10646 [??] coded
character set using the UTF-8 character encoding scheme
[28].. This syntax type is used for free form human
readable text intended for human consumption.
'2' 'name': this is the same a "text" except that the sequence
of characters is of length 1 to 255 This syntax type
is used for referencing some object or entity via a
user-friendly string, such as a Printer name, a
document name, a user name, or a host name.
'3' 'keyword': a sequence of characters, length: 1 to 255,
containing only the characters ASCII lowercase letters
("a" - "z"), ASCII digits ("0" - "9"), hyphen ("-"),
dot ("."), and underscore ("_"). The first character
For private (unregistered) keyword extensions, implementers SHOULD use deBry, Hastings, Herriot, Isaacson, Powell
keywords with a suitable distinguishing prefix, such as "xxx-" where Expires February xx, 1998
xxx is the (lowercase) fully qualified company name registered with MUST be an ASCII lowercase letter. This syntax type is
IANA for use in domain names [30]. used for enumerating semantic identifiers of entities
in the abstract protocol (specified in this document).
These entities can be attribute names or values of
attributes. When a keyword is used to represent an
attribute (its name), it MUST be unique within the full
scope of 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 can not be used for two different
values within the same attribute to mean two different
semantic ideas. However, the same keyword can be used
across two or more attributes, representing different
semantic ideas for each attribute.
'4' 'enum': an enumerated integer value that is in the range
from -2**31 to 2**31 - 1. Each value has an
associated keyword name. Each attribute (whose syntax
is enum) enumerates the values that are defined for the
attribute. The enum 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 the IETF Printer MIB [1]
and the Job Monitoring MIB [27]. Enums are not used
for attributes to which the system administrator may
assign values. Values in the range 2**30 to 2**31 - 1
are reserved for private or experimental use.
Implementers are warned that use of such values may
conflict with other implementations. Implementers are
encouraged to request registration of enum values
following the procedures in Section 6.
'5' 'uri': a sequence of characters as defined in rfc1738 and
rfc1808. This syntax type is used for carrying
Universal Resource Identifiers.
'6' 'uriScheme': a sequence of characters representing the URI
Scheme. These include 'http' for HTTP schemed URIs
(e.g., http://...), and 'ftp' for FTP schemed URIs
(e.g., ftp://...).
'7' 'human-language': a standard identifier for human language
and optionally a country. The values for this syntax
type are taken from RFC 1766 [26]. Independent of the
human language, all text strings are strings of
characters where each character is a member of the ISO
10646 [??] coded character set. Text strings are
encoded using the UTF-8 character encoding scheme [28]
'8' 'octetString:' a sequence of octets. This syntax type is
used for opaque data, such as the document-content.
Note: RFC 1035 [30] indicates that while upper and lower case letters deBry, Hastings, Herriot, Isaacson, Powell
are allowed in domain names, no significance is attached to the case. Expires February xx, 1998
That is, two names with the same spelling but different case are to be '9' 'boolean': two values of 'true' and 'false'. This syntax
treated as if identical. Also, the labels in a domain name must type is like a keywordSet, but there are only two
follow the rules for ARPANET host names: They must start with a values. Note: An application might use a checkbox for
letter, end with a letter or digit, and have as interior characters an attribute with this syntax type.
only letters, digits, and hyphen. Labels must be 63 characters or '10' 'integer': an integer value that is in the range from -
less. Lables are separated by the "." character. 2**31 to 2**31 - 1. Each attribute specifies the range
constraint explicitly if the range is different from
the full range of possible integer values (e.g., 0 -
100 for the "job-priority" attribute).
'11' 'dateTime': a standard, fixed length representation of date
and time as defined in RFC 1514 [32] and RFC 1903 [33].
'12' 'resolution': a special syntax used only for "printer-
resolution" and "printer-resolution-supported" It
consists of 3 parts: a cross feed direction resolution
(positive integer value), a feed direction resolution
(positive integer value) and a units value. All these
are taken from the Printer MIB [1] suggested values.
'13' 'mimeType': MIME type values as defined by RFC 2045 [??].
'14' '1setOf X': 1 or more values of type X. This syntax type
is used for multi-valued attributes, whose value is a
set of values. Note: The syntax type is called
"1setOf" to indicate that set of values SHALL NOT be
empty (a set of size 0).
Expires January 25, 1998 '15' 'rangeOf X': a range of value of type X. This syntax type
For private (unregistered) enum extension, implementers SHOULD use is used for ordered values (numeric, lexical, etc.)
values in the reserved integer range (see "enum"). such as integers.
4.2 Job Template Attributes 4.2 Job Template Attributes
Job Template attributes describe job processing behavior. Take for Job Template attributes describe job processing behavior. Job
example, a generic Job Template attribute called "xxx": Template attributes are OPTIONAL (see section 11.2.3 for a description
of support for OPTIONAL attributes).
1. "xxx" is optionally supplied by the client in a create request. Job Template attributes conform to the following rules. For each Job
If "xxx" is supplied, the client is specifying that the Printer Template attribute called "foo":
SHALL apply a specific job processing behavior to this job while
processing the Job. When "xxx" is not supplied by the client,
the Printer applies the default job processing behavior.
2. "xxx-supported" is a Printer attribute that describes which 1. The Printer supports a "foo-supported" attribute that describes
behaviors are supported by a Printer. "xxx-supported" is a which job processing behaviors are supported by a Printer. A
CONDITIONALLY MANDATORY attribute, that is the "xxx-supported" client can query the Printer and find out what behaviors are
attribute is MANDATORY if the Printer is capable of realizing two supported by inspecting the values of the "foo-supported"
or more of the behaviors associated with the attribute and its attribute.
values. A client can query the Printer and find out what
behaviors are supported by inspecting the values of the "xxx-
supported" attribute.
3. The Printer also supports a default value attribute named "xxx". 2. The Printer also supports a default value attribute named "foo".
This default value attribute describes what will be done when no This default value attribute describes what will be done when no
other job processing information is supplied by the client other job processing information is supplied by the client
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
(either explicitly as an IPP attribute in the create request or (either explicitly as an IPP attribute in the create request or
implicitly as an embedded instruction within the job data). implicitly as an embedded instruction within the job data).
Along with the supported attribute, the default value attribute However, if the Printer supports either the "foo" default value
is also CONDITIONALLY MANDATORY. However, if the Printer attribute or the "foo-supported" attribute, the Printer MUST
supports either the "xxx" default value attribute or the "xxx- support both.
supported" attribute, the Printer MUST support both.
4. If a client application wishes to present an end user with a 3. "foo" is also optionally supplied by the client in a create
list of supported and default values from which to choose, the request. If "foo" is supplied, the client is specifying that the
client program SHOULD query the Printer for the supported and Printer SHALL apply thecorresponding job processing behavior to
default value attributes. The values that the client then this Job while processing the Job. When "foo" is not supplied,
supplies in the create request will all fall within the supported the client is specifying that the Printer apply the default job
values of the Printer. When querying the Printer, the client MAY processing behavior. Since an administrator could change the
enumerate each attribute by name in the Get-Attributes Request, default value after the Job has been submitted (while it is
or the client MAY just name the "job-template" group in order to waiting to be processed), the default value in affect a job
get the complete set of supported and default value attributes processing time is used for processing a Job with no client
which are supported. supplied attribute.
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 for the supported values. The application SHOULD also
query the default value attributes. If the application then limits
selectable values to only those value that are supported, application
guarantees 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-Attributes Request, or the client MAY just name the
"job-template" group in order to get the complete set supported
attributes (both supported value and default value attributes).
The "job-priority" attribute is an example of a Job Template The "job-priority" attribute is an example of a Job Template
attribute. It is an integer in the range from 1 to 100. A client can attribute. It is an integer in the range from 1 to 100. A client can
query the Printer for the "job-priority-supported" attribute and the query the Printer for the "job-priority-supported" attribute and the
Expires January 25, 1998
"job-priority" default value attribute. The supported attribute "job-priority" default value attribute. The supported attribute
contains a range of supported priority values which is equal to or contains a range of supported priority values which is equal to or
smaller than the maximum range of 1 to 100. The default value smaller than the maximum range of 1 to 100. The default value
attribute contains the job priority value that will be used for a new attribute contains the job priority value that will be used for a new
job if the client does not supply one in the create request. If the job if the client does not supply a value in the create request. If
client does supply the "job-priority" attribute, the Printer validates the client does supply the "job-priority" attribute, the Printer
the value to make sure that it falls within the range of supported validates the value to make sure that it falls within the range of
values. If the client-supplied value is supported, the Job object is supported values. If the client-supplied value is supported, the Job
created and the "job-priority" attribute is populated with that value. object is created and the "job-priority" attribute is populated with
The Job object, when queried, returns the value supplied by the that value. The Job object, when queried, returns the value supplied
client. If the client does not supply a "job-priority" value in the by the client. If the client does not supply a "job-priority" value
create request, the Job object is created, but no "job-priority" in the create request, the Job object is created, but no "job-
attribute is associated with the Job. The client queries the priority" attribute is associated with the Job. The client queries
Printer's default value "job-priority" value to find out at what the Printer's default value "job-priority" value to find out at what
priority the job will be processed. priority the job will be processed.
The table below summarizes the names, relationships, and conformance deBry, Hastings, Herriot, Isaacson, Powell
requirements for all Job Template attributes. The following general Expires February xx, 1998
rules apply to implementation requirements: The table below summarizes the names and relationships for all Job
Template attributes. The first column of the table (labled "Job")
1. In a create request, all Job Template attributes are optionally shows the name and syntax for each Job Template attribute in the Job
supplied by the client. object. These are the attributes that can optionally be supplied by
the client in a create request. The last two columns (labled
2. In a Printer Object, all supported attributes ("xxx-supported") "Printer: Default Value" and "Printer: Supported Values") shows the
are CONDITIONALLY MANDATORY. name and syntax for each Job Template attribute in the Printer object
(the default value attribute and the supported values attribute). A
3. All Printer default value attributes ("xxx") are CONDITIONALLY "No" in the table means the Printer SHALL NOT support the attribute
MANDATORY. (the attribute is simply not applicable). The second part of the
table lists Document level attributes. Document level attributes have
Note: If the Printer implements either the default value attribute the same semantics as Job Template
or the supported values attribute, the Printer MUST also
implement the other and vice versa.
The table only shows exceptions to the above rules. The first column
of the table (Job) shows the name and syntax for each Job Template
attribute in the Job object.. All of the attributes in the first
column make up the "job-template" group. The last two columns show
the name and syntax for each Job Template attribute in the Printer
object (the default value attribute and the supported attribute). A
"No" in the table means the Printer SHALL NOT support the attribute.
A "MAN" indicates that it is MANDATORY that the Printer support the
attribute.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
+-------------------+----------------------+----------------------+ Expires February xx, 1998
| Job |Printer: Default Value| Printer: Supported | +===================+======================+======================+
| Job Attribute |Printer: Default Value| Printer: Supported |
| | Attribute | Values Attribute |
+===================+======================+======================+ +===================+======================+======================+
| job-sheets | job-sheets |job-sheets-supported | | job-sheets | job-sheets |job-sheets-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| notify-events | notify-events | notify-events- | | notify-events | notify-events | notify-events- |
|(1setOf |(1setOf type2 keyword)| supported | |(1setOf |(1setOf type2 keyword)| supported |
| type2 keyword) | |(1setOf type2 keyword)| | type2 keyword) | |(1setOf type2 keyword)|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
|notify-addresses | No |notify-addresses | |notify-addresses | No |notify-addresses |
skipping to change at page 33, line 52 skipping to change at page 36, line 52
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| printer-resolution| printer-resolution | printer-resolution- | | printer-resolution| printer-resolution | printer-resolution- |
| (type2 enum) | (type2 enum) | supported | | (type2 enum) | (type2 enum) | supported |
| | |(1setOf type2 enum) | | | |(1setOf type2 enum) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| print-quality | print-quality | print-quality- | | print-quality | print-quality | print-quality- |
| (type2 enum) | (type2 enum) | supported | | (type2 enum) | (type2 enum) | supported |
| | |(1setOf type2 enum) | | | |(1setOf type2 enum) |
+-------------------+----------------------+----------------------+
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
+-------------------+----------------------+----------------------+
| finishings | finishings | finishings-supported | | finishings | finishings | finishings-supported |
|(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) |
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| copies | copies | copies-supported | | copies | copies | copies-supported |
| (integer: 1 - MAX)| (integer: 1 - MAX) | (rangeOf integer | | (integer: 1 - MAX)| (2setOf integer | (2rangeOf integer |
| | | 1- MAX) | | | 1 - MAX) | 1- MAX) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| page-range | No | page-range- |
| (rangeOf integer) | | supported (boolean) |
| | | |
+===================+======================+======================+
| |
| Note: The following attributes are Document attributes, they |
| have the same semantics a Job Template attributes, |
| however they apply to each Document object rather than |
| at the Job level as Job object attributes. |
| |
+===================+======================+======================+
| Document |Printer: Default Value| Printer: Supported |
| Attribute | Attribute | Values Attribute |
+===================+======================+======================+
| document-format | document-format | document-format- | | document-format | document-format | document-format- |
| (type2 enum) | (type2 enum) | supported | | (mimeType) | (mimeType) | supported |
| | |(1setOf type2 enum) | | | |(1setOf mimeType) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| compression | No | compression-supported| | compression | No | compression-supported|
| (type3 keyword) | |(1setOf type3 keyword)| | (type3 keyword) | |(1setOf type3 keyword)|
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-k-octets | No |job-k-octets-supported| | document-k-octets | No |job-k-octets-supported|
| (integer) | | (rangeOf integer) | | (integer) | | (rangeOf integer) |
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-impressions | No | job-impressions- | | document- | No | job-impressions- |
| (integer) | | supported | | impressions | | supported |
| | | (rangeOf integer) | | (integer) | | (rangeOf integer) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-media-sheets | No | job-media-sheets- | | document-media- | No | job-media-sheets- |
| (integer) | | supported | | sheets | | supported |
| | | (rangeOf integer) | | (integer) | | (rangeOf integer) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
4.2.1 job-sheets (type4 keyword) 4.2.1 job-sheets (type4 keyword)
This attribute determines which if any banner page(s) SHALL be printed This attribute determines which if any banner page(s) SHALL be printed
with a job. with a job.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Standard values are: Standard values are:
'none': no job sheet is printed 'none': no job sheet is printed
'standard': one or more site specific standard job sheets are 'standard': one or more site specific standard job sheets are
printed, e.g. a single start sheet or both start and end sheet is printed, e.g. a single start sheet or both start and end sheet is
printed printed
To force no job sheets, the system administrator SHALL set the To force no job sheets, the system administrator SHALL set the
supported value to only 'none'. To force the use of banner pages, the supported value to only 'none'. To force the use of banner pages, the
supported values SHALL not include 'none'. In this case, if a client supported values SHALL not include 'none'. In this case, if a client
requests 'none', the create request is rejected. requests 'none', the create request is rejected.
Expires January 25, 1998
Note: The effect of this attribute on jobs with multiple documents is Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section controlled by the "multiple-document-handling" job attribute (section
4.2.6). 4.2.6).
4.2.2 notify-events (1setOf type2 keyword) 4.2.2 notify-events (1setOf type2 keyword)
This attribute specifies the events for which the end user desires This attribute specifies the events for which the end user desires
some sort of notification. The "notify-addresses" attribute is used some sort of notification. The "notify-addresses" attribute is used
to describe the destination addresses for these events. to describe the destination addresses for these events.
Standard values are: Standard values are:
'none': the Printer SHALL not notify. 'none': the Printer SHALL not notify.
'all': the Printer SHALL notify when any of the events occur. 'all': the Printer SHALL notify when any of the events occur.
'job-completion': the Printer SHALL notify when the job containing 'job-completion': the Printer SHALL notify when the job containing
this value completes (i.e., enters the 'completed', 'canceled', this value completes (i.e., enters the 'completed', 'canceled',
or 'aborted' state) with or without errors. or 'aborted' state) with or without errors.
'job-problems': the Printer SHALL notify when this job has a 'job-problems': the Printer SHALL notify when this job has a
problem while this job is processing (i.e., when the Job moves problem (i.e., when the job leaves the 'processing' state and
from the 'processing' to the 'processing-stopped' state or from enters the 'processing-stopped' state).
'pending' to 'pending-held'). Problems also can include any of 'job-started-processing': the Printer SHALL notify when the
the "job-state-reasons" or "printer-state-reason" values. Printer starts processing the Job (i.e., when the job leaves the
'pending' state and enters the 'processing' state).
ISSUE: All or none or some "xxx-reasons"??
'printer-problems': the Printer SHALL notify when this job is 'printer-problems': the Printer SHALL notify when this job is
affected by a Printer problem. This happens when the printer affected by a Printer problem. This happens when the printer
enters the 'stopped' state while this job is in the 'pending', enters the 'stopped' state while this job is in the 'pending',
'pending-held', 'processing', or 'processing-stopped' state. If 'pending-held', 'processing', or 'processing-stopped' state.
the Printer enters the 'stopped' state, the reason is in the
"printer-state-reasons" attribute.
ISSUE: Do you really need this last sentence. That is, should this ISSUE: Need to add generic alerts from the Printer MIB.
document state what information an implementation should use to
compose the notification message. 4.2.2.1 Event Notification Content
The content of each event notification is:
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
*time: <US ASCII string representing the absolute time
of the event>CRLF
event: <keyword for the event>CRLF
printer-uri: <Printer's URI>CRLF
printer-state: <keyword for printer state>CRLF
*printer-state-reason: <set of comma separated keywords>CRLF
*job-id: <US ASCII string representing the Job Id>CRLF
*job-state: <keyword for job state>CRLF
*job-state-reason: <set of comma separated keywords>CRLF
*message: <US ASCII string>CRLF
The contents of the event notification are intended for machine
consumption more than human consumption, however the use of US ASCII
enables humans to retrieve some semantics from the event report
itself. Items above marked with and asterisk ('*') are optional. If
the implementation does not support any notion of time, then field is
not present in the notification body. If the event is Printer
related, only the Printer related fields are included. If the event
is Job related, all of the Job fields SHOULD be included.
4.2.3 notify-addresses (1setOf uri) 4.2.3 notify-addresses (1setOf uri)
This attribute describes both where (the address) and how (the This attribute describes both where (the address) and how (the
mechanism for delivery ) events are to be delivered. The Printer SHALL mechanism for delivery ) events are to be delivered. The Printer SHALL
use this attribute as the set of addresses and methods for sending use this attribute as the set of addresses and methods for sending
messages when an event occurs that the end user (job submitter) has messages when an event occurs that the end user (job submitter) has
registered an interest in. registered an interest in.
Standard uriScheme values are: Standard uriScheme values are:
Expires January 25, 1998
'mailto': the Printer sends a text message via email to the 'mailto': the Printer sends a text message via email to the
specified email address specified email address
'http': the Printer sends an HTML formatted message via an HTTP 'http': the Printer sends an HTML formatted message via an HTTP
POST method to the specified URI POST method to the specified URI
'ftp': the Printer sends a text message via an FTP `append' command 'ftp': the Printer sends a text message via an FTP `append' command
to the specified remote file. to the specified remote file.
4.2.4 job-priority (integer(1:100)) 4.2.4 job-priority (integer(1:100))
This attribute specifies a priority for scheduling the Job. A higher This attribute specifies a priority for scheduling the Job. A higher
value specifies a higher priority. The value 1 indicates the lowest value specifies a higher priority. The value 1 indicates the lowest
possible priority. The value 100 indicates the highest possible possible priority. The value 100 indicates the highest possible
priority. Among those jobs that are ready to print, a Printer SHALL priority. Among those jobs that are ready to print, a Printer SHALL
print all jobs with a priority value of n before printing those with a print all jobs with a priority value of n before printing those with a
priority value of n-1 for all n. The mapping of vendor-defined priority value of n-1 for all n. The mapping of vendor-defined
priority over this range is implementation-specific. priority over this range is implementation-specific.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
4.2.5 job-hold-until (type4 keyword) 4.2.5 job-hold-until (type4 keyword)
This job attribute specifies the named time period during which the This job attribute specifies the named time period during which the
Job print job SHALL become a candidate for printing. Job print job SHALL become a candidate for printing.
Standard values for named time periods are: Standard values for named time periods are:
'no-hold': immediately, if there are not other reasons to hold the 'no-hold': immediately, if there are not other reasons to hold the
job. job.
'day-time': during the day. 'day-time': during the day.
skipping to change at page 37, line 5 skipping to change at page 40, line 36
future, the Printer SHALL add the 'job-hold-until-specified' value to future, the Printer SHALL add the 'job-hold-until-specified' value to
the job's "job-state-reasons" attribute, move the job to the 'pending- the job's "job-state-reasons" attribute, move the job to the 'pending-
held' state, and SHALL NOT schedule the job for printing until the held' state, and SHALL NOT schedule the job for printing until the
specified time-period arrives. When the specified time period specified time-period arrives. When the specified time period
arrives, the Printer SHALL remove the 'job-hold-until-specified' value arrives, the Printer SHALL remove the 'job-hold-until-specified' value
from the job's "job-state-reason" attribute and, if no other job from the job's "job-state-reason" attribute and, if no other job
reasons that keep it in the 'pending-held' state remain, the Printer reasons that keep it in the 'pending-held' state remain, the Printer
SHALL consider the job as a candidate for processing by moving the job SHALL consider the job as a candidate for processing by moving the job
to the 'pending' state. to the 'pending' state.
Expires January 25, 1998
If this job attribute value is the named value 'no-hold', or specified If this job attribute value is the named value 'no-hold', or specified
time period is in effect has already started , the job SHALL be a time period is in effect has already started , the job SHALL be a
candidate for processing immediately. candidate for processing immediately.
4.2.6 multiple-document-handling (type2 keyword) 4.2.6 multiple-document-handling (type2 keyword)
This job attribute is relevant only if a job consists of two or more This job attribute is relevant only if a job consists of two or more
documents. It controls finishing operations, and job-sheet placement. documents. It controls finishing operations, and job-sheet placement.
When the copies attribute exceeds 1, it also controls the order of When the copies attribute exceeds 1, it also controls the order of
documents.. documents..
Standard values are: Standard values are:
'single-document': If the files for the job are a and b, then files 'single-document': If the files for the job are a and b, then files
a and b SHALL be treated as a single document for finishing a and b SHALL be treated as a single document for finishing
operations. Also, there SHALL be no slip sheets between files a operations. Also, there SHALL be no slip sheets between files a
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
and b and the Printer SHALL NOT force each document to start on a and b and the Printer SHALL NOT force each document to start on a
new page or new media sheet. If more than one copy is made, the new page or new media sheet. If more than one copy is made, the
ordering SHALL be a, b, a, b, ...., and the Printer SHALL force ordering SHALL be a, b, a, b, ...., and the Printer SHALL force
each copy to start on a new sheet. each copy to start on a new sheet.
'separate-documents-uncollated-copies': If the files for the job 'separate-documents-uncollated-copies': If the files for the job
are a and b, then each file SHALL be treated as a single document are a and b, then each file SHALL be treated as a single document
for finishing operations. Also, a client may specify that a slip for finishing operations. Also, a client may specify that a slip
sheet be placed between files a and b and the Printer shall force sheet be placed between files a and b and the Printer shall force
each document copy to start on a new sheet. If more than one each document copy to start on a new sheet. If more than one
copy is made, the ordering SHALL be a, a, b, b, .... copy is made, the ordering SHALL be a, a, b, b, ....
skipping to change at page 37, line 50 skipping to change at page 41, line 33
This job attribute identifies the medium that the Printer uses for all This job attribute identifies the medium that the Printer uses for all
pages of the Job. pages of the Job.
The values for "media" include medium-names, medium-sizes, input-trays The values for "media" include medium-names, medium-sizes, input-trays
and electronic forms so that one attribute specifies the media. If a and electronic forms so that one attribute specifies the media. If a
printer allows a client to specify a medium name as the value of this printer allows a client to specify a medium name as the value of this
attribute, such a medium name implicitly selects an input-tray that attribute, such a medium name implicitly selects an input-tray that
contains the specified medium. If a printer allows a client to contains the specified medium. If a printer allows a client to
specify a medium size as the value of this attribute, such a medium specify a medium size as the value of this attribute, such a medium
size implicitly selects a medium name which in turn implicitly selects size implicitly selects a medium name that in turn implicitly selects
an input-tray that contains the medium with the specified size. If a an input-tray that contains the medium with the specified size. If a
printer allows a client to specify an input-tray as the value of this printer allows a client to specify an input-tray as the value of this
Expires January 25, 1998
attribute, such an input-tray implicitly selects the medium that is in 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- that input-tray at the time the job prints. This case includes manual-
feed input-trays. If a printer allows a client to specify an feed input-trays. If a printer allows a client to specify an
electronic form as the value of this attribute, such an electronic electronic form as the value of this attribute, such an electronic
form implicitly selects a medium-name which in turn implicitly selects form implicitly selects a medium-name that in turn implicitly selects
an input-tray that contains the medium specified by the electronic an input-tray that contains the medium specified by the electronic
form. The electronic form also implicitly selects an image that the form. The electronic form also implicitly selects an image that the
Printer SHALL merge with the data from the document as its prints each Printer SHALL merge with the data from the document as its prints each
page. page.
ISSUE: What should we do about "media-ready"?
Standard values are (taken from ISO DPA and the Printer MIB) and are Standard values are (taken from ISO DPA and the Printer MIB) and are
listed in section 13. listed in section 14.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
4.2.8 number-up (type3 keyword) 4.2.8 number-up (type3 keyword)
This job attribute specifies the number of source page-images to This job attribute specifies the number of source page-images to
impose upon a single side of an instance of a selected medium. impose upon a single side of an instance of a selected medium.
Standard values are: Standard values are:
'none': The Printer SHALL not include any embellishments and SHALL 'none': The Printer SHALL not include any embellishments and SHALL
place one logical page on a single side of an instance of the place one logical page on a single side of an instance of the
selected medium without any translation, scaling, or rotation. selected medium without any translation, scaling, or rotation.
skipping to change at page 39, line 4 skipping to change at page 42, line 40
This attribute specifies how source page-images are to be imposed upon This attribute specifies how source page-images are to be imposed upon
the sides of an instance of a selected medium. the sides of an instance of a selected medium.
The standard values are: The standard values are:
'one-sided': imposes each consecutive source page-image upon the 'one-sided': imposes each consecutive source page-image upon the
same side of consecutive media sheets. same side of consecutive media sheets.
'two-sided-long-edge': imposes each consecutive pair of source 'two-sided-long-edge': imposes each consecutive pair of source
page-image upon front and back sides of consecutive media sheets, page-image upon front and back sides of consecutive media sheets,
Expires January 25, 1998
such that the orientation of each pair of source-pages on the such that the orientation of each pair of source-pages on the
medium would be correct for the reader as if for binding on the medium would be correct for the reader as if for binding on the
long edge. This imposition is sometimes called 'duplex'. long edge. This imposition is sometimes called 'duplex'.
'two-sided-short-edge': imposes each consecutive pair of source 'two-sided-short-edge': imposes each consecutive pair of source
page-image upon front and back sides of consecutive media sheets, page-image upon front and back sides of consecutive media sheets,
such that the orientation of each pair of source-pages on the such that the orientation of each pair of source-pages on the
medium would be correct for the reader as if for binding on the medium would be correct for the reader as if for binding on the
short edge. This imposition is sometimes called 'tumble' or short edge. This imposition is sometimes called 'tumble' or
'head-to-toe'. 'head-to-toe'.
'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
all work the same for portrait or landscape. However 'head-to-toe' is all work the same for portrait or landscape. However 'head-to-toe' is
'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
switches between 'duplex' and 'tumble' when using portrait and switches between 'duplex' and 'tumble' when using portrait and
landscape modes. landscape modes.
4.2.10 printer-resolution (resoultion) 4.2.10 printer-resolution (resoultion)
This attribute identifies the resolution that Printer uses for a This attribute identifies the resolution that Printer uses for a
certain Job. certain Job.
The value is a special type consisting of a pair of integers and a The value is a special type consisting of a pair of integers and a
value which specifies the units for the two integers. The three value which specifies the units for the two integers. The three
skipping to change at page 39, line 42 skipping to change at page 43, line 28
prtMarkerAddressabilityXFeedDir (the resolution in the cross feed prtMarkerAddressabilityXFeedDir (the resolution in the cross feed
direction), and prtMarkerAddressabilityUnit (the units of the direction), and prtMarkerAddressabilityUnit (the units of the
first two values, namely dots per inch and dots per centimeter). first two values, namely dots per inch and dots per centimeter).
4.2.11 print-quality (type2 enum) 4.2.11 print-quality (type2 enum)
This attribute specifies the print quality that the Printeruses for a This attribute specifies the print quality that the Printeruses for a
certain Job. certain Job.
The standard values are: The standard values are:
'draft' (3): lowest quality available on the printer '3' 'draft': lowest quality available on the printer
'normal' (4): normal or intermediate quality on the printer '4' 'normal': normal or intermediate quality on the printer
'high' (5): highest quality available on the printer '5' 'high': highest quality available on the printer
4.2.12 finishings (1setOf type2 enum) 4.2.12 finishings (1setOf type2 enum)
This attribute identifies the finishing operations that the Printer This attribute identifies the finishing operations that the Printer
uses for each copy of each printed document in a particular Job. For uses for each copy of each printed document in a particular Job. For
Jobs with multiple documents, the "multiple-document-handling" Jobs with multiple documents, the "multiple-document-handling"
attribute determines what constitutes a _copy_ for purposes of attribute determines what constitutes a _copy_ for purposes of
finishing. finishing.
Expires January 25, 1998
Standard values are: Standard values are:
'none'(3): Perform no finishing '3' 'none': Perform no finishing
'staple'(4): Bind the document(s) with one or more staples. The '4' 'staple': Bind the document(s) with one or more staples.
exact number and placement of the staples is site-defined. The exact number and placement of the staples is site-
'staple-top-left'(5): Place one or more staples on the top left defined.
corner of the document(s). '5' 'staple-top-left': Place one or more staples on the top
'staple-bottom-left'(6): Place one or more staples on the bottom
left corner of the document(s). left corner of the document(s).
'staple-top-right'(7): Place one or more staples on the top right '6' 'staple-bottom-left': Place one or more staples on the
corner of the document(s). bottom left corner of the document(s).
'staple-bottom-right'(8): Place one or more staples on the bottom '7' 'staple-top-right': Place one or more staples on the top
right corner of the document(s). right corner of the document(s).
'saddle-stitch'(9): Bind the document(s) with one or more staples
(wire stitches) along the middle fold. The exact number and deBry, Hastings, Herriot, Isaacson, Powell
placement of the stitches is site-defined. Expires February xx, 1998
'edge-stitch'(10): Bind the document(s) with one or more staples '8' 'staple-bottom-right': Place one or more staples on the
(wire stitches) along one edge. The exact number and placement bottom right corner of the document(s).
of the staples is site-defined. '9' 'saddle-stitch': Bind the document(s) with one or more
'punch'(11): This value indicates that holes are required in the staples (wire stitches) along the middle fold. The
finished document. The exact number and placement of the holes is exact number and placement of the stitches is site-
site-defined The punch specification MAY be satisfied (in a defined.
site- and implementation-specific manner) either by '10' 'edge-stitch': Bind the document(s) with one or more
drilling/punching, or by substituting pre-drilled media. staples (wire stitches) along one edge. The exact
'cover'(12): This value is specified when it is desired to select number and placement of the staples is site-defined.
a non-printed (or pre-printed) cover for the document. This does '11' 'punch': This value indicates that holes are required in
not supplant the specification of a printed cover (on cover stock the finished document. The exact number and placement
medium) by the document itself. of the holes is site-defined The punch specification
'bind'(13): This value indicates that a binding is to be applied MAY be satisfied (in a site- and implementation-
to the document; the type and placement of the binding is site- specific manner) either by drilling/punching, or by
defined." substituting pre-drilled media.
'12' '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.
'13' 'bind': This value indicates that a binding is to be
applied to the document; the type and placement of the
binding is site-defined."
4.2.13 copies (integer(1:2**31 - 1)) 4.2.13 copies (integer(1:2**31 - 1))
This attribute specifies the number of copies of the job to be This attribute specifies the number of copies to be printed. On many
printed. 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 supported. Therefore
the copies-supported attribute specifies a set of ranges; the first
defines the supported range of values for uncollated copies, and the
second the supported range of values for collated printing. The set
of default values for copies specify the default number of uncollated
copies followed by the default number of collated copies.
Note: The effect of this attribute on job with multiple documents is The effect of this attribute is controlled by the "multiple-documents-
controlled by the "multiple-document-handling" job attribute (section handling" attribute (section 4.2.6).This attribute specifies the
4.2.6). number of copies of the job to be printed.
4.2.14 document-format (type2 enum) 4.2.14 page-range (rangeOf integer)
This attribute defines the document format for each Document in a Job. This attribute specifies the pages of a document which are to be
The standard values for this attribute are enums. Since the complete printed. In most cases, the exact pages to be printed will be
list is rather long, the full enumeration of standard values is found generated by a device driver and this attribute would not be required.
in section 12 APPENDIX C: "document-format" enum values. 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
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-range 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. The page-range default
value is always zero (0) and indicates that all pages of the document
will be printed if a page-range is not specified.
4.2.15 orientation (type2 enum)
This attribute specifies the orientation of the content on the output
pages to be printed. In most cases, the orientation of the content is
specified within the document format generated by the device driver at
print time. However, some document formats (such as "text") do not
support the notion of page orientation, and it is possible to bind the
orientation after the document content has been generated. This
attribute provides an end user with the means to specify orientation
for such documents.
Standard values are:
'1' 'portrait': The content will be printed across the short
edge of the media.
'2' 'landscape': The content will be printed across the long
edge of the media.
4.2.16 document-format (mimeType)
This attribute defines the document format of the data to be printed.
The standard values for this attribute are MIME types. Since the
complete list is rather long, the full enumeration of standard values
is found in section 13 APPENDIX C: "document-format" values.
Expires January 25, 1998
If the "document-format" is unknown for a certain document, the client If the "document-format" is unknown for a certain document, the client
SHALL NOT supply the attribute in the create request or the Send- does not supply the attribute in the create request or the Send-
Document Request. Document Request.
4.2.15 compression (type3 keyword) 4.2.17 compression (type3 keyword)
This attribute identifies compression algorithms used for compressed This attribute identifies compression algorithms used for compressed
document data. document data (not the operation data).
ISSUE: Is this in the HTTP header and an attribute is compression Standard values are :
applied at both levels?
'none': no compression is used. 'none': no compression is used.
'zip':ZIP compression technology 'zip':ZIP (inflate/deflate) compression technology
`gzip' GNU zip compression technology described in RFC 1952. `gzip' GNU zip compression technology described in RFC 1952.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
'compress': UNIX compression technology 'compress': UNIX compression technology
4.2.16 job-k-octets (integer(0:2**31 - 1)) ISSUE: Look what HTTP defines.
4.2.18 job-k-octets (integer(0:2**31 - 1))
This attribute specifies the total size of the job in K octets, i.e., This attribute specifies the total size of the job in K octets, i.e.,
in units of 1024 octets. The value SHALL be rounded up, so that a job in units of 1024 octets. The value SHALL be rounded up, so that a job
between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048 between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048
SHALL be 2, etc. SHALL be 2, etc.
Note: This attribute and the following two attributes ("job- Note: This attribute and the following two attributes ("job-
impressions" and "job-media-sheets") are not intended to be counters; impressions" and "job-media-sheets") are not intended to be counters;
they are intended to be useful routing and scheduling information if they are intended to be useful routing and scheduling information if
known. The Printer may try to compute the value if it is not supplied known. For these three attributes, the Printer may try to compute the
in the create request. The Printer, however, might not be able to value if it is not supplied in the create request. Even if the client
compute this value at the time the Job is created. If not, the does supply a value for this attribute in the create request, the
Printer may support this attribute at any later time as it is able to Printer may choose to change the value if the Printer is able to
compute value. compute a value which is more accurate than the client supplied value.
The Printer may be able to determine the correct value for this
ISSUE: What does this last sentence mean. Do we need to make the attribute either right at job submission time or at any later point in
distinction as to whether the printer computes this attribute time. If the value of this attribute is unknown, the Printer may
immediately as it is creates versus somewhat later? choose to respond with a value of '-2' (which signifies "unknown")
rather than choose to not support the attribute at all.
4.2.17 job-impressions (integer(0:2**31 - 1)) 4.2.19 job-impressions (integer(0:2**31 - 1))
This attribute specifies the total size of the job in impressions. This attribute specifies the total number of impressions for this job.
4.2.18 job-media-sheets (integer(0:2**31 - 1)) 4.2.20 job-media-sheets (integer(0:2**31 - 1))
This attribute specifies the total size of the job in media-sheets. This attribute specifies the total number of media sheets used by this
job.
Expires January 25, 1998
4.3 Job Description Attributes 4.3 Job Description Attributes
The attributes in this section form the attribute group called "job- The attributes in this section form the attribute group called "job-
description". The following table summarizes these attributes. The description". The following table summarizes these attributes. The
third column indicates whether the attribute is a MANDATORY attribute. third column indicates whether the attribute is a MANDATORY attribute.
If it is not MANDATORY, then it is OPTIONAL. If it is not MANDATORY, then it is OPTIONAL.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri | uri | MANDATORY | | job-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri-user | uri | | | job-id | 32bit unsigned | MANDATORY |
| (this or job-uri) | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-name | name | | | job-more-info | uri | |
+----------------------------+----------------------+----------------+
| job-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-user | name | MANDATORY | | job-originating-user | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-host | name | | | job-originating-host | name | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| user-human-language | human-language | | | user-human-language | human-language | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| user-content-char-set | char-set | |
+----------------------------+----------------------+----------------+
| job-state | type1 enum | MANDATORY | | job-state | type1 enum | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-reasons | 1setOf type2 keyword | | | job-state-reasons | 1setOf type2 keyword | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-message | text | | | job-state-message | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| output-device-assigned | name | | | output-device-assigned | name | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-pending | milliseconds | MANDATORY | | time-at-pending | seconds | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-processing | milliseconds | MANDATORY | | time-at-processing | seconds | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-completed | milliseconds | MANDATORY | | time-at-completed | seconds | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| number-of-intervening-jobs | integer | MANDATORY | | number-of-intervening-jobs | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-message-from-operator | text | | | job-message-from-operator | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-k-octets-processed | integer | | | job-k-octets-processed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-impressions-completed | integer | | | job-impressions-completed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-media-sheets-completed | integer | | | job-media-sheets-completed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
ISSUE: Should time-since-xxx and number-of jobs be MANDATORY?
4.3.1 job-uri (uri) 4.3.1 job-uri (uri)
This attribute contains the URI for the job. The Printer, on receipt This attribute contains the URI for the job. The Printer, on receipt
of a new job, generates a URI which identifies the new Job on that of a new job, generates a URI which identifies the new Job on that
Expires January 25, 1998
Printer. The Printer returns the value of the "job-uri" attribute as Printer. The Printer returns the value of the "job-uri" attribute as
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
part of the response to a create request. The precise format of a part of the response to a create request. The precise format of a
job URI is implementation dependent. job URI is implementation dependent.
4.3.2 job-uri-user (uri) 4.3.2 job-id (32bit unsigned integer)
This 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.
ISSUE: job-uri or job-id?
4.3.3 job-uri-user (uri)
Similar to "job-uri", this attribute contains the URI referencing an Similar to "job-uri", this attribute contains the URI referencing an
HTML page containing information about the Job. HTML page containing information about the Job.
4.3.3 job-name (name) 4.3.4 job-name (name)
This attribute is the name of the job. It is a name that is more user This 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 friendly than the "job-uri" attribute value. It does not need to be
unique. This is set to the value of the "job-name" input parameter in unique. The Job's "job-name" attribute is set to the value supplied
the create request. However, if it is not supplied in the create by the client in the "job-name" operation attribute in the create
request, the Printer, on creation of the Job, SHALL generate a name. request. If, however, if it is not supplied by the client in the
The Printer can be generate the name using the name of the first create request, the Printer, on creation of the Job, SHALL generate a
Document (the "document-name" attribute) if supplied or some other name. The Printer can generate the name using any method convenient
piece of Job specific information. to the application. The Printer MAY choose to use the value of the
"document-name" attribute of the first (or only) Document (or any
other piece of Job specific information) as a basis for generating a
Job name.
4.3.4 job-originating-user (name) ISSUE: There has been some suggestion to add a "job-user-label". The
idea for this attribute was to allow a client to supply some
meaningful label to be applied to the Job independent of the Job URI
or the Job ID. However, after reviewing the semantics of "job-name",
the two sound identical.
4.3.5 job-originating-user (name)
This attribute specifies the user name of the person submitting the This attribute specifies the user name of the person submitting the
print job. The Printer sets this attribute to the most authenticated print job. The Printer sets this attribute to the most authenticated
name that it can obtain from the protocol over which the operation was name that it can obtain from the protocol over which the operation was
received from the client. received from the client.
4.3.5 job-originating-host (name) 4.3.6 job-originating-host (name)
This attribute identifies the originating host of the job. The Printer This attribute identifies the originating host of the job. The Printer
sets this attribute to the most authenticated host name it can obtain sets this attribute to the most authenticated host name it can obtain
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
from the protocol over which the operation was received from the from the protocol over which the operation was received from the
client. client.
4.3.6 user-human-language (human-language) 4.3.7 user-human-language (human-language)
This attribute identifies the human language and optionally the This attribute identifies the human language and optionally the
country of the end user. The Printer sets this attribute to the most country of the end user. The Printer sets this attribute to the most
reliable value it can obtain from the protocol over which the Print reliable value it can obtain from the protocol over which the Print
operation was received from the client. operation was received from the client.
The Printer uses this attribute to determine the locale it SHOULD use The Printer uses this attribute to determine the human language it
for localizing any text strings that it sends back to the end user. SHOULD use for translating ALL text strings that it sends back to the
These include status messages, text attributes, and notification end user. The Printer has a "human-languages-supported" supported
messages. values attribute and a "human-language" default value attribute.
ISSUE: should we a statement about which attributes should be
localized. I would expect the text attributes set by the manufacturer
Expires January 25, 1998
would be localized. They are: job-state-message , printer-more-info-
manufacturer, printer-state-message, and printer-make-and-model. I
would expect text attribute set by a site would not be localized. They
are job-message-from-operator, printer-location, printer-description,
printer-message-from-the-operator. Should there be a separate text
type called localized-text for the 4 attributes mentioned in the
previous issue that can be localized. Should all "text" be localized
text? Unless we do something, the localization issue is left very
vague.
4.3.7 user-content-char-set (char-set)
This attribute identifies encoding character set for any text ISSUE: This should be a Job Template attribute.
attributes the client sends or desires to receive in IPP operations.
The Printer sets this attribute to the most reliable value it can
obtain from the protocol over which the Print operation was received
from the client. If this attribute is not supported, the value UTF-8
MUST be assumed. All clients and all servers MUST support UTF-8.
4.3.8 job-state (type1 enum) 4.3.8 job-state (type1 enum)
This attribute identifies the current state of the job. Even though This attribute identifies the current state of the job. Even though
the IPP protocol defines eight values for job states, implementations the IPP protocol defines eight values for job states, implementations
only need to support those states which are appropriate for the only need to support those states which are appropriate for the
particular implementation. In other words, a Printer supports only particular implementation. In other words, a Printer supports only
those job states implemented by the output device and available to the those job states implemented by the output device and available to the
Printer object implementation. Printer object implementation.
skipping to change at page 46, line 4 skipping to change at page 49, line 51
candidate for processing. candidate for processing.
'processing'(5): Either: 'processing'(5): Either:
1. the job is using, or is attempting to use, one or more 1. the job is using, or is attempting to use, one or more
document transforms which include (1) purely software document transforms which include (1) purely software
processes that are interpreting a PDL, and (2) hardware processes that are interpreting a PDL, and (2) hardware
devices that are interpreting a PDL, making marks on a medium, devices that are interpreting a PDL, making marks on a medium,
and/or performing finishing, such as stapling OR and/or performing finishing, such as stapling OR
2. the server has made the job ready for printing, but the 2. the server has made the job ready for printing, but the
output device is not yet printing it, either because the job output device is not yet printing it, either because the job
hasn't reached the output device or because the job is queued hasn't reached the output device or because the job is queued
Expires January 25, 1998
in the output device or some other spooler, awaiting the in the output device or some other spooler, awaiting the
output device to print it. 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 deBry, Hastings, Herriot, Isaacson, Powell
"printer-state", "printer-state-reasons", and "printer-state- Expires February xx, 1998
message" attributes. ISSUE: Suggested change to (but this must be synchronized with JMP)
Implementations MAY 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. Most
implementations won't bother with this nuance.
ISSUE: Change to (but this must be synchronized with JMP)
'processing'(5): One of: 'processing'(5): One of:
1. the job is using, or is attempting to use hardware devices 1. the job is using, or is attempting to use hardware devices
that are making marks on a medium, and/or performing that are making marks on a medium, and/or performing
finishing, such as stapling OR finishing, such as stapling OR
2. the job is using, or is attempting to use software processes 2. the job is using, or is attempting to use software processes
that are analyzing or interpreting a PDL without making marks that are analyzing or interpreting a PDL without making marks
on a medium. on a medium.
3. the server has made the job ready for printing, but the output 3. the server has made the job ready for printing, but the output
device is not yet printing it, either because the job hasn't device is not yet printing it, either because the job hasn't
reached the output device or because the job is queued in the reached the output device or because the job is queued in the
output device or some other spooler, awaiting the output output device or some other spooler, awaiting the output
device to print it. 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 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. Most
implementations won't bother with this nuance.
'processing-stopped'(6): The job has stopped while processing for 'processing-stopped'(6): The job has stopped while processing for
any number of reasons and will return to the 'processing' state any number of reasons and will return to the 'processing' state
as soon as the reasons are no longer present. as soon as the reasons are no longer present.
The job's "job-state-reason" attribute MAY indicate why the job The job's "job-state-reason" attribute MAY indicate why the job
has stopped processing. For example, if the output device is has stopped processing. For example, if the output device is
stopped, the 'printer-stopped' value MAY be included in the job's stopped, the 'printer-stopped' value MAY be included in the job's
"job-state-reasons" attribute. "job-state-reasons" attribute.
NOTE - When an output device is stopped, the device usually NOTE - When an output device is stopped, the device usually
indicates its condition in human readable form locally at the indicates its condition in human readable form locally at the
device. A client can obtain more complete device status remotely device. A client can obtain more complete device status remotely
by querying the printer's "printer-state", "printer-state- by querying the printer's "printer-state", "printer-state-
reasons" and "printer-state-message" attributes. reasons" and "printer-state-message" attributes.
'canceled'(7): The job has been canceled by a Cancel-Job operation 'canceled'(7): The job has been canceled by a Cancel-Job operation
and is either (1) in the process of terminating or (2) has and is either (1) in the process of terminating or (2) has
completed terminating. The job's "job-state-reasons" attribute completed terminating. The job's "job-state-reasons" attribute
SHOULD contain either the 'canceled-by-user' or 'canceled-by- SHOULD contain either the 'canceled-by-user' or 'canceled-by-
operator' value. operator' value.
'aborted'(8): The job has been aborted by the system, usually 'aborted'(8): The job has been aborted by the system, usually
while the job was in the 'processing' or 'processing-stopped' while the job was in the 'processing' or 'processing-stopped'
state. state.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
'completed'(9): The job has completed successfully or with 'completed'(9): The job has completed successfully or with
warnings or errors after processing and all of the job media warnings or errors after processing and all of the job media
sheets have been successfully stacked in the appropriate output sheets have been successfully stacked in the appropriate output
Expires January 25, 1998
bin(s). The job's "job-state-reasons" attribute SHOULD contain bin(s). The job's "job-state-reasons" attribute SHOULD contain
one of: 'completed-successfully', 'completed-with-warnings', or one of: 'completed-successfully', 'completed-with-warnings', or
'completed-with-errors' values. 'completed-with-errors' values.
The final value for this attribute SHALL be one of: 'completed', The final value for this attribute SHALL be one of: 'completed',
'canceled', or 'aborted' before the Printer removes the job 'canceled', or 'aborted' before the Printer removes the job
altogether. The length of time that jobs remain in the 'canceled', altogether. The length of time that jobs remain in the 'canceled',
'aborted', and 'completed' states depends on implementation. 'aborted', and 'completed' states depends on implementation.
The following figure shows the normal job state transitions. The following figure shows the normal job state transitions.
skipping to change at page 47, line 50 skipping to change at page 51, line 52
state or states for which the reason makes sense. Furthermore, when state or states for which the reason makes sense. Furthermore, when
implemented, the Printer SHALL return these values when the reason implemented, the Printer SHALL return these values when the reason
applies and SHALL NOT return them when the reason no longer applies applies and SHALL NOT return them when the reason no longer applies
whether the value of the job's "job-state" attribute changed or not. 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, When the job does not have any reasons for being in its current state,
the Printer shall set the value of the job's "job-state-reasons" the Printer shall set the value of the job's "job-state-reasons"
attribute to 'none'. attribute to 'none'.
NOTE - While values cannot be added to the 'job-state' attribute NOTE - While values cannot be added to the 'job-state' attribute
without impacting deployed clients that take actions upon receiving without impacting deployed clients that take actions upon receiving
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
"job-state"values, it is the intent that additional "job-state- "job-state"values, it is the intent that additional "job-state-
reasons" values can be defined and registered without impacting such reasons" values can be defined and registered without impacting such
Expires January 25, 1998
deployed clients. In other words, the "job-state-reasons" attribute deployed clients. In other words, the "job-state-reasons" attribute
is intended to be extensible. is intended to be extensible.
The following standard values are defined: The following standard values are defined:
NOTE - For easy of understanding the order of the reasons is presented
in the order in which the reason is most likely to occur:
'none': There are no reasons for the job's current state. 'none': There are no reasons for the job's current state.
'job-incoming': The CreateJob operation has been accepted by the 'job-incoming': The CreateJob operation has been accepted by the
Printer, but the Printer is expecting additional SendDocument Printer, but the Printer is expecting additional SendDocument
operations and/or is accessing/accepting document data. operations and/or is accessing/accepting document data.
'job-outgoing': The Printer is transmitting the job to the output 'job-outgoing': The Printer is transmitting the job to the output
device. device.
'job-hold-until-specified': The value of the job's "job-hold- 'job-hold-until-specified-time': The value of the job's "job-hold-
until" attribute specifies a time period that is still in the until" attribute specifies a time period that is still in the
future. The job SHALL NOT be a candidate for processing until future. The job SHALL NOT be a candidate for processing until
this reason is removed and there are no other reasons to hold the this reason is removed and there are no other reasons to hold the
job. job.
'resources-are-not-ready': At least one of the resources needed by 'job-hold-until-resources-are -ready': At least one of the
the job, such as media, fonts, resource objects, etc., is not resources needed by the job, such as media, fonts, resource
ready on any of the physical printer's for which the job is a objects, etc., is not ready on any of the physical printer's for
candidate. This condition MAY be detected when the job is which the job is a candidate. This condition MAY be detected
accepted, or subsequently while the job is pending or processing, when the job is accepted, or subsequently while the job is
depending on implementation. pending or processing, depending on implementation.
ISSUE: Change to job-hold-until-specified-time and job-hold-until-
resources-ready to make it clear that the job-state is pending-
held?.
'printer-stopped-partly': The value of the Printer's "printer- 'printer-stopped-partly': The value of the Printer's "printer-
state-reasons" attribute contains the value 'stopped-partly'. state-reasons" attribute contains the value 'stopped-partly'.
'printer-stopped': The value of the Printer's "printer-state" 'printer-stopped': The value of the Printer's "printer-state"
attribute is 'stopped'. attribute is 'stopped'.
'job-printing': The output device is marking media. This value is 'job-printing': The output device is marking media. This value is
useful for Printers which spend a great deal of time processing useful for Printers which spend a great deal of time processing
when no marking is happening and then want to show that marking when no marking is happening and then want to show that marking
is now happening. is now happening.
'job-cancelled-by-user': The job was cancelled by the user using 'job-cancelled-by-user': The job was cancelled by the user using
the CancelJob request, i.e., by a user whose name is the same as the CancelJob request, i.e., by a user whose name is the same as
the value of the job's "job-originating-user" attribute. the value of the job's "job-originating-user" attribute.
'job-cancelled-by-operator': The job was cancelled by the operator 'job-cancelled-by-operator': The job was cancelled by the operator
using the CancelJob request, i.e., by a user whose name is using the CancelJob request, i.e., by a user whose name is
different than the value of the job's "job-originating-user" different than the value of the job's "job-originating-user"
attribute. attribute.
'job-completed-successfully': The job completed successfully. 'job-completed-successfully': The job completed successfully.
'job-completed-with-warnings': The job completed with warnings. 'job-completed-with-warnings': The job completed with warnings.
'job-completed-with-errors': The job completed with errors (and 'job-completed-with-errors': The job completed with errors (and
possibly warnings too). possibly warnings too).
'job-interpreting': Job is in the 'processing' state, but more
specifically, the Printer is interpreting the data.
'job-printing': Job is in the 'processing' state, but more
specifically, the Printer is actually printing (making marks on
the media).
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
'logfile-pending ': The job's logfile is pending file transfer. Expires February xx, 1998
'logfile-transferring': The job's logfile is being transferred. 'job-queued': Job is in the 'processing' state, but more
ISSUE: How does this protocol get a logfile transfer to occur? I specifically, the Printer is queuing the data.
suggest we delete them. 'job-transforming': Job is in the 'processing' state, but more
specifically, the Printer is transforming the data.
ISSUE: Show a partitioning of which "job-state-reasons" are valid or
expected for each "job-state" value.
4.3.10 job-state-message (text) 4.3.10 job-state-message (text)
This attributes specifies supplemental information about the Job State This attributes specifies supplemental information about the Job State
in human readable text. in human readable text.
4.3.11 output-device-assigned (name) 4.3.11 output-device-assigned (name)
This attribute identifies the Output Device to which the Printer has This attribute identifies the Output Device to which the Printer has
assigned this job. If an output device implements an embedded IPP assigned this job. If an output device implements an embedded IPP
skipping to change at page 49, line 49 skipping to change at page 53, line 51
4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1)) 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))
This attribute indicates the number of jobs that are "ahead" of this This attribute indicates the number of jobs that are "ahead" of this
job in the current scheduled order. For efficiency, it is only job in the current scheduled order. For efficiency, it is only
necessary to calculate this value when an operation is performed that necessary to calculate this value when an operation is performed that
requests this attribute. requests this attribute.
Note: This attribute is necessary since an end user may request just Note: This attribute is necessary since an end user may request just
their own jobs and they need some relative position indicator if there their own jobs and they need some relative position indicator if there
are other jobs interspersed in the waiting list which are not returned are other jobs interspersed in the waiting list which are not returned
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
in the response or cannot be because of site security policy in the response or cannot be because of site security policy
restrictions. restrictions.
Expires January 25, 1998
ISSUE: No longer possible to request an owners job, so may this
attribute isn't important now.
4.3.16 job-message-from-operator (text) 4.3.16 job-message-from-operator (text)
This attribute provides a message from an operator, system This attribute provides a message from an operator, system
administrator or "intelligent" process to indicate to the end user the administrator or "intelligent" process to indicate to the end user the
reasons for modification or other management action taken on a job. reasons for modification or other management action taken on a job.
4.3.17 job-k-octets-processed (integer(0:2**31 - 1)) 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))
This attribute specifies the number of octets completed in K octets, This attribute specifies the number of octets completed in K octets,
i.e., in units of 1024 octets. The value SHALL be rounded up, so that i.e., in units of 1024 octets. The value SHALL be rounded up, so that
a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to
2048 SHALL be 2, etc. 2048 SHALL be 2, etc.
Note: This attribute and the following two attributes ("job- Note: This attribute and the following two attributes ("job-
impressions-completed" and "job-sheets-completed") are intended to be impressions-completed" and "job-sheets-completed") are intended to be
counters as in the Job Monitoring MIB [27]. That is, if the "job- counters (as described in the Job Monitoring MIB [27]). That is, if
state" is 'processing' or 'processing-stopped', this value is intended the "job-state" is 'processing' or 'processing-stopped', this value is
to contain amount of the job that has been processed to the time at intended to contain the amount of the job that has been processed to
which the attributes are requested. the time at which the attributes are requested. For any of these
three attributes, the Printer may choose to return the value '-2'
(which represents "unknown") rather than choose to not support the
attribute at all.
4.3.18 job-impressions-completed (integer(0:2**31 - 1)) 4.3.18 job-impressions-completed (integer(0:2**31 - 1))
This job attribute specifies the number of impressions completed. This This job attribute specifies the number of impressions completed. This
attribute is intended to be a counter as in the Job Monitoring MIB. attribute is intended to be a counter as in the Job Monitoring MIB.
4.3.19 job-media-sheets-completed (integer(0:2**31 - 1)) 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))
This job attribute specifies the media-sheets completed. This This job attribute specifies the media-sheets completed. This
attribute is intended to be a counter as in the Job Monitoring MIB. attribute is intended to be a counter as in the Job Monitoring MIB.
4.4 Document Attributes 4.4 Document Attributes
This group of attributes describes the document data for the job. For This group of attributes applies to Document objects. If there are
single-Document Jobs, they are supplied in the Print-Job or Print-URI multiple Documents in a Job, then there is a different set of Document
requests. For multi-Document Jobs, they are supplied in each Send- attributes associated with Document in the Job.
Document or Send-URI request.
Expires January 25, 1998 When using the Get-Attributes or Get-Jobs operations, the group named
+----------------------------+----------------------+----------------+ "document-attributes" includes all of the attributes in this section,
| Attribute | Syntax | MANDATORY? | including the Document level Job Template attributes (attributes that
+----------------------------+----------------------+----------------+ have the same characteristics as Job Template attribute, yet apply to
| document-name | name | MANDATORY |
+----------------------------+----------------------+----------------+
| document-format | type 2 enum | |
+----------------------------+----------------------+----------------+
| document-uri | uri | |
+----------------------------+----------------------+----------------+
4.4.1 document-name (name) deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
Documents, not Jobs). These are identified in the second part of the
table in section 4.2. Specifically they are:
This attribute contains the name of the document used by the client to "document-format"
initially identify the document. When a client prints by reference, "compression"
i.e. includes the document-URI attribute and no document content, this "document-k-octets"
attribute SHALL be absent. "document-impressions"
"document-media-sheets"
4.4.2 document-format (type2 enum) Other Document attributes include:
See section 4.2.13 that describes the "document-format" Job Template +-----------------+-------------+----------------+
attribute. This attribute is a job-template attribute. It may be | Document | Syntax | MANDATORY? |
specified with the job or separately for each document. In a Print-Job | Attribute | | |
or Print-URI operation, there is no distinction between job and +-----------------+-------------+----------------+
document attributes because there is only one job. If document-format | document-name | name | NO |
is included with a Create-Job operation, it specifies the format for +-----------------+-------------+----------------+
all documents. If document-format is included with a Send-Document or | document-uri | uri | NO |
Send-URI operation, it overrides whatever format was specified with +-----------------+-------------+----------------+
Create-Job.
4.4.3 document-uri (uri) 4.4.1 document-name (name)
This attribute contains the URI of the document when the document This attribute contains the name of the document. The name is
content is not included in the Send Document operation. Note: For optionally supplied by the client in the "document-name" operation
Print-URI and Send-URI "document-uri" is an explicit parameter which attribute in the create request. If it is not supplied by the client
sets the "document-uri" attribute in the Document object. in the create request, the Printer MAY generate a Document name. The
"document-name" attribute contains the name whether supplied or
generated.
4.4.2 document-uri (uri)
If a "pull" operations is used to create the Document object (such as
the Print-URI or Send-URI operations which include only a URI
reference to the document data, not the document data itself), then
this "document-uri" attribute contains the URI reference. This
attribute is populated from the "document-uri" operation attribute
supplied by the client in the Print-URI or Send-URI operation.
If a "push" operation is used to create the Document object (such as
the Print-Job or Send-Document operations which include the document
data rather than just a reference to the data) then this "document-
uri" attribute is not associated with the Document object.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
4.5 Printer Description Attributes 4.5 Printer Description Attributes
These attributes form the attribute group called "printer- These attributes form the attribute group called "printer-
description". A Printer object may be realized in either a print description". A Printer object may be realized in either a print
server or output device. Note: How these attributes are set by an server or output device. Note: How these attributes are set by an
Administrator is outside the scope of this specification. The Administrator is outside the scope of this specification. The
following table summarizes these attributes, their syntax, and whether following table summarizes these attributes, their syntax, and whether
or not they are MANDATORY. If they are not MANDATORY, they are or not they are MANDATORY. If they are not MANDATORY, they are
OPTIONAL. OPTIONAL.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri | uri | MANDATORY | | printer-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri-user | uri | |
+----------------------------+----------------------+----------------+
| printer-name | name | MANDATORY | | printer-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-location | text | | | printer-location | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-description | text | | | printer-description | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-more-info-site | uri | | | printer-more-info | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-driver-installer | uri | | | printer-driver-installer | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-make-and-model | text | | | printer-make-and-model | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-more-info- | uri | | | printer-more-info- | uri | |
| manufacturer | | | | manufacturer | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state | type1 enum | MANDATORY | | printer-state | type1 enum | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state-reasons | 1setOf type2 keyword | | | printer-state-reasons | 1setOf type2 keyword | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state-message | text | | | printer-state-message | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| operations-supported | 1setOf type2 enum | MANDATORY |
+----------------------------+----------------------+----------------+
| printer-is-accepting-jobs | boolean | MANDATORY | | printer-is-accepting-jobs | boolean | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| queued-job-count | integer | | | queued-job-count | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-message-from- | text | | | printer-message-from- | text | |
| operator | | | | operator | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-language | human-language | MANDATORY | | printer-language | human-language | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-language-supported | 1setOf human-language| MANDATORY | | printer-language-supported | 1setOf human-language| MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| content-char-set-supported | 1setOf char-set | |
+----------------------------+----------------------+----------------+
| content-char-set | char-set | |
+----------------------------+----------------------+----------------+
| color-supported | boolean | | | color-supported | boolean | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| pdl-override | type2 keyword | |
+----------------------------+----------------------+----------------+
| message-protection- | keyword | | | message-protection- | keyword | |
| supported | | | | supported | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
Expires January 25, 1998
| authentication-author | keyword | | | authentication-author | keyword | |
| ization-supported | | | | ization-supported | | |
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| color-supported | boolean | | | printer-up-time | seconds | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| pdl-override-supported | type2 keyword | | | printer-current-time | dateTime | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
4.5.1 printer-uri (uri) 4.5.1 printer-uri (uri)
This attribute contains the URI for the printer. An administrator This attribute contains the URI for the printer. An administrator
determines a printer's URI and sets this attribute to that URI. The determines a printer's URI and sets this attribute to that URI. The
precise format of a printer URI is implementation dependent. precise format of a printer URI is implementation dependent.
4.5.2 printer-uri-user (uri) 4.5.2 printer-name (name)
This attribute contains the URI for an HTML page with more information
about this printer.
ISSUE: Get rid of "printer-uri-user" or "printer-more-info-site"?
4.5.3 printer-name (name)
This attribute contains the name of the printer. It is a name that is This attribute contains the name of the printer. It is a name that is
more user friendly than the printer-URI. An administrator determines a more user friendly than the printer-URI. An administrator determines a
printer's name and sets this attribute to that name. This name may be 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- 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 English locales, a name may contain characters that are not allowed in
a URI. a URI.
4.5.4 printer-location (text) 4.5.3 printer-location (text)
This attribute identifies the location of this printer. This could This attribute identifies the location of this printer. This could
include things like: _in Room 123A, second floor of building XYZ_. include things like: _in Room 123A, second floor of building XYZ_.
4.5.5 printer-description (text) 4.5.4 printer-description (text)
This attribute identifies the descriptive information about this This attribute identifies the descriptive information about this
Printer. This could include things like: "This printer can be used Printer. This could include things like: "This printer can be used
for printing color transparencies for HR presentations", or "Out of for printing color transparencies for HR presentations", or "Out of
courtesy for others, please print only small (1-5 page) jobs at this 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 printer", or even "This printer is going away on July 1, 1997, please
find a new printer". find a new printer".
4.5.6 printer-more-info-site (uri) 4.5.5 printer-more-info (uri)
This attribute contains a URI used to obtain more information about This attribute contains a URI used to obtain more information about
this specific printer. The information obtained from this URI is this specific printer. For example, this could be an HTTP type URI
referencing an HTML page accessible to a Web Browser. The information
Expires January 25, 1998 obtained from this URI is intended for end user consumption. Features
intended for end user consumption. Features outside the scope of IPP outside the scope of IPP can be accessed from this URI. The
can be accessed from this URI. The information is intended to be information is intended to be specific to this printer instance and
specific to this printer instance and site services (e.g. job pricing, site specific services (e.g. job pricing, services offered, end user
services offered, end user assistance). The printer manufacturer may assistance).
initially populate this attribute.
4.5.7 printer-driver-installer (uri) deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
4.5.6 printer-driver-installer (uri)
This attribute contains a URI to use to locate the driver installer This attribute contains a URI to use to locate the driver installer
for this printer. This attribute is intended for consumption by for this printer. This attribute is intended for consumption by
automata. The mechanics of print driver installation is outside the automata. The mechanics of print driver installation is outside the
scope of IPP. The printer manufacturer may initially populate this scope of IPP. The printer manufacturer may initially populate this
attribute. attribute.
4.5.8 printer-make-and-model (text) 4.5.7 printer-make-and-model (text)
This attribute identifies the make and model of the printer. This attribute identifies the make and model of the printer.
4.5.9 printer-more-info-manufacturer (uri) 4.5.8 printer-more-info-manufacturer (uri)
This attribute contains a URI used to obtain more information about This attribute contains a URI used to obtain more information about
this type of printer. The information obtained from this URI is this type of printer. The information obtained from this URI is
intended for end user consumption. Features outside the scope of IPP intended for end user consumption. Features outside the scope of IPP
can be accessed from this URI (e.g., latest firmware, upgrades, print can be accessed from this URI (e.g., latest firmware, upgrades, print
drivers, optional features available). The information is intended to drivers, optional features available). The information is intended to
be germane to this printer without regard to site specific be germane to this printer without regard to site specific
modifications or services. modifications or services.
4.5.10 printer-state (type1 enum) 4.5.9 printer-state (type1 enum)
This attribute identifies the current state of the printer. The This attribute identifies the current state of the printer. The
"printer-state reasons" attribute augments the "printer-state" "printer-state reasons" attribute augments the "printer-state"
attribute to give more detailed information about the Printer in the attribute to give more detailed information about the Printer in the
given printer state. given printer state.
A Printer SHALL keep this attribute set in a timely manner to the A Printer SHALL keep this attribute set in a timely manner to the
value in the table below which most accurately reflects the state of value in the table below which most accurately reflects the state of
the Printer. If the printer has jobs that are requesting notification the Printer. If the printer has jobs that are requesting notification
of printer-problems or job-problems, then _timely manner_ means of printer-problems or job-problems, then _timely manner_ means
continually.. Otherwise, _timely manner_ means whether the Printer continually.. Otherwise, _timely manner_ means whether the Printer
receives a query for this attribute. A Printer NEED NOT implement all receives a query for this attribute. A Printer NEED NOT implement all
values if they are not applicable to a given implementation. values if they are not applicable to a given implementation.
The following standard values are defined: The following standard values are defined:
'unknown'(2): The Printer state is not known, or is indeterminate. 'unknown'(2): The Printer state is not known, or is indeterminate.
A Printer SHALL use this state only if it cannot determine its A Printer SHALL use this state only if it cannot determine its
actual state. actual state.
Expires January 25, 1998
'idle'(3): If a Printer receives a job (whose required resources 'idle'(3): If a Printer receives a job (whose required resources
are ready) while in this state, such a job SHALL transit into the are ready) while in this state, such a job SHALL transit into the
processing state immediately. If the printer-state-reasons processing state immediately. If the printer-state-reasons
attribute contains any reasons, they SHALL be reasons that would attribute contains any reasons, they SHALL be reasons that would
not prevent a job from transiting into the processing state not prevent a job from transiting into the processing state
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
immediately, e.g., toner-low. Note: if a Printer controls more immediately, e.g., toner-low. Note: if a Printer controls more
than one output device, the above definition implies that a than one output device, the above definition implies that a
Printer is idle if at least one output device is idle. Printer is idle if at least one output device is idle.
'processing'(4): If a Printer receives a job (whose required 'processing'(4): If a Printer receives a job (whose required
resources are ready) while in this state, such a job SHALL resources are ready) while in this state, such a job SHALL
transit into the pending state immediately. Such a job SHALL transit into the pending state immediately. Such a job SHALL
transit into the processing state only after jobs ahead of it transit into the processing state only after jobs ahead of it
complete. If the printer-state-reasons attribute contains any complete. If the printer-state-reasons attribute contains any
reasons, they SHALL be reasons that do not prevent the current reasons, they SHALL be reasons that do not prevent the current
skipping to change at page 55, line 46 skipping to change at page 60, line 40
Note: if a Printer controls more than one output device, the Note: if a Printer controls more than one output device, the
above definition implies that a Printer is stopped only if all above definition implies that a Printer is stopped only if all
output devices are stopped. Also, it is tempting to define output devices are stopped. Also, it is tempting to define
stopped as when a sufficient number of output devices are stopped stopped as when a sufficient number of output devices are stopped
and leave it to an implementation to define the sufficient and leave it to an implementation to define the sufficient
number. But such a rule complicates the definition of stopped number. But such a rule complicates the definition of stopped
and processing. For example, with this alternate definition of and processing. For example, with this alternate definition of
stopped, a job can move from idle to processing without human stopped, a job can move from idle to processing without human
intervention, even though the Printer is stopped. intervention, even though the Printer is stopped.
4.5.11 printer-state-reasons (1setOf type2 keyword) 4.5.10 printer-state-reasons (1setOf type2 keyword)
This attribute supplies additional detail about the printer's state. This attribute supplies additional detail about the printer's state.
Each MAY have asuffix to indicate its level of severity. The three Each MAY have asuffix to indicate its level of severity. The three
levels are: report (least severe), warning, and error (most severe). levels are: report (least severe), warning, and error (most severe).
Expires January 25, 1998
- '-report': This suffix indicates that the reason is a "report". - '-report': This suffix indicates that the reason is a "report".
An implementation may choose to omit some or all reports. Some An implementation may choose to omit some or all reports. Some
reports specify finer granularity about the printer state; others reports specify finer granularity about the printer state; others
serve as a precursor to a warning. A report SHALL contain nothing serve as a precursor to a warning. A report SHALL contain nothing
that could affect the printed output. that could affect the printed output.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
- '-warning': This suffix indicates that the reason is a "warning". - '-warning': This suffix indicates that the reason is a "warning".
An implementation may choose to omit some or all warnings. An implementation may choose to omit some or all warnings.
Warnings serve as a precursor to an error. A warning SHALL Warnings serve as a precursor to an error. A warning SHALL
contain nothing that prevents a job from completing, though in contain nothing that prevents a job from completing, though in
some cases the output may be of lower quality. some cases the output may be of lower quality.
- '-error': This suffix indicates that the reason is an "error". . - '-error': This suffix indicates that the reason is an "error". .
An implementation SHALL include all errors. If this attribute An implementation SHALL include all errors. If this attribute
contains one or more errors, printer SHALL be in the stopped contains one or more errors, printer SHALL be in the stopped
state. state.
skipping to change at page 57, line 4 skipping to change at page 61, line 47
be powered down or physical removed. In this state, a Printer be powered down or physical removed. In this state, a Printer
SHALL not produce printed output, and unless the Printer is SHALL not produce printed output, and unless the Printer is
realized by a print server that is still active, the Printer realized by a print server that is still active, the Printer
SHALL perform no other operations requested by a client, SHALL perform no other operations requested by a client,
including returning this value. If a Printer had been printing a including returning this value. If a Printer had been printing a
job when it was shutdown, the Printer need not resume printing job when it was shutdown, the Printer need not resume printing
that job when the Printer is no longer shutdown. If the Printer that job when the Printer is no longer shutdown. If the Printer
resumes printing such a job, it may leave evidence in the printed resumes printing such a job, it may leave evidence in the printed
output of such a shutdown, e.g. the part printed before the output of such a shutdown, e.g. the part printed before the
shutdown may be printed a second time after the shutdown. shutdown may be printed a second time after the shutdown.
Expires January 25, 1998
'connecting-to-device': The server has scheduled a job on the 'connecting-to-device': The server has scheduled a job on the
Printer and is in the process of connecting to a shared network Printer and is in the process of connecting to a shared network
output device (and might not be able to actually start printing output device (and might not be able to actually start printing
the job for an arbitrarily long time depending on the usage of the job for an arbitrarily long time depending on the usage of
the output device by other servers on the network). the output device by other servers on the network).
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
'timed-out': The server was able to connect to the output device 'timed-out': The server was able to connect to the output device
(or is always connected), but was unable to get a response from (or is always connected), but was unable to get a response from
the output device. the output device.
'stopping': The printer will be stopping in a while and will change 'stopping': The printer will be stopping in a while and will change
its reason to printer-stopped. This reason is a non-critical, its reason to printer-stopped. This reason is a non-critical,
even for a Printer with a single output device. When an output- even for a Printer with a single output device. When an output-
device ceases accepting jobs, the Printer will have this state device ceases accepting jobs, the Printer will have this state
while the output device completes printing. while the output device completes printing.
'stopped-partly': When a Printer controls more than one output 'stopped-partly': When a Printer controls more than one output
device, this reason indicates that one or more output devices are device, this reason indicates that one or more output devices are
stopped. If the reason is a report, fewer than half of the output 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 devices are stopped. If the reason is a warning, fewer than all
of the output devices are stopped. of the output devices are stopped.
'toner-low': The Printer is low on toner. 'toner-low': The Printer is low on toner.
'marker-supply-low': The Printer is low on marker supply.
'spool-area-full': The limit of persistent storage allocated for 'spool-area-full': The limit of persistent storage allocated for
spooling has been reached. spooling has been reached.
4.5.12 printer-state-message (text) ISSUE: Show a partitioning of which "printer-state-reasons" are valid
or expected for each "printer-state" value.
4.5.11 printer-state-message (text)
This attribute specifies the additional information about the printer This attribute specifies the additional information about the printer
state in human readable text and it is set by the Printer (or the state and printer state reasons in human readable text.
Administrator by some mechanism outside the scope of IPP).
ISSUE: Do we want to delete the last phrase and imply that this is a 4.5.12 operations-supported (1setOf type2 enum)
human readable version of printer-state and printer-state-reason and
not something created by an admin? printer-message-from-the-operator This attribute specifies the set of supported operations for this
is from an admin. Printer.
The following standard values are defined:
0x00 reserved, not used
0x01 Print-Job
0x02 Print-URI
0x03 Validate-Job
0x04 Create-Job
0x05 Get-Jobs
0x06 Get-Attributes
0x07 Send-Document
0x08 Send-URI
0x09 Cancel-Job
0x0A-0x3FFF reserved for future operations
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
0x4000-0xFFFF reserved for private extensions
In order for IPP to be extensible, this set of operations is defined
to be a 1setOf type2 enum (see section 6.1 for a description of typed
extensions). Since the base type is enum, the possible full range of
values is 0x0000-0xFFFF, however a special range of 0x4000-0xFFFF has
been 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.5.13 printer-is-accepting-jobs (boolean) 4.5.13 printer-is-accepting-jobs (boolean)
This attribute determines whether the printer is currently accepting This attribute determines whether the printer is currently accepting
job. If the value is true, the printer is accepting jobs. If the job. If the value is true, the printer is accepting jobs. If the
value is false, the printer is currently rejecting any jobs submitted value is false, the printer is currently rejecting any jobs submitted
to it. to it.
Note: This value is independent of the printer state and printer- Note: This value is independent of the printer state and printer-
state-reasons because its value does not affect the current job; state-reasons because its value does not affect the current job;
rather it affects future jobs. This attribute may cause the Printer to 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 reject jobs when the printer-state is idle or it may cause the Printer
to accepts jobs when the printer-state is stopped. to accepts jobs when the printer-state is stopped.
Expires January 25, 1998
4.5.14 queued-job-count (integer(0:2**31 - 1)) 4.5.14 queued-job-count (integer(0:2**31 - 1))
This attribute contains a count of the number of jobs that are either This attribute contains a count of the number of jobs that are either
pending and/or processing and is set by the Printer. pending and/or processing and is set by the Printer.
4.5.15 printer-message-from-operator (text) 4.5.15 printer-message-from-operator (text)
This attribute provides a message from an operator, system This attribute provides a message from an operator, system
administrator or "intelligent" process to indicate to the end user administrator or "intelligent" process to indicate to the end user
information or status of the printer, such as why it is unavailable or information or status of the printer, such as why it is unavailable or
skipping to change at page 58, line 28 skipping to change at page 63, line 51
4.5.16 printer-human-language (human-language) 4.5.16 printer-human-language (human-language)
This attribute specifies the current human-language that the Printer This attribute specifies the current human-language that the Printer
is operating in. is operating in.
4.5.17 printer-human-language-supported (1setOf human-language) 4.5.17 printer-human-language-supported (1setOf human-language)
This attribute specifies the supported human languages that the This attribute specifies the supported human languages that the
Printer operates in. Printer operates in.
4.5.18 printer-content-char-set (char-set) deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
This attribute specifies the current character set encoding that the 4.5.18 color-supported (boolean)
Printer is operating in. If this attribute is not supported, the
Printer MUST support UTF-8.
4.5.19 printer-content-char-set-supported (1setOf char-set)
This attribute specifies the supported character set encodings that
the Printer operates in. If this attribute is not supported, the
Printer MUST support UTF-8.
4.5.20 color-supported (boolean)
This attribute identifies whether the Printer is capable of any type This attribute identifies whether the Printer is capable of any type
of color printing at all. All document instructions having to do with of color printing at all. All document instructions having to do with
color are embedded within the document PDL (none are external IPP color are embedded within the document PDL (none are external IPP
attributes). attributes).
4.5.21 pdl-override (type2 keyword) 4.5.19 pdl-override (type2 keyword)
A client supplies Job Template attributes to 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, within the Page Description Language (PDL) of the document
data. If there is a conflict between the value of one of these IPP
Expires January 25, 1998 This attribute expresses the ability for a particular Printer
Job Template attributes, and a corresponding instruction in the implementation to either attempt to override print data instructions
document (either implicit or explicit), it is desirable that the value with IPP attributes or not.
of the IPP attribute take precedence over the document instruction.
Until companies that supply interpreters for PDLs, such as PostScript
and PCL allow a way for external attributes (such as IPP attributes)
to take precedence over internal job production instructions, a
Printer might not be able to support the semantics that IPP attributes
override (take on a higher precedence) the embedded PDL instructions.
This attribute expresses how a particular Printer implementation
handles these conflicts.
This attribute takes on the following values: This attribute takes on the following values:
- 'guaranteed': This value indicates that the Printer guarantees
that all IPP attribute values take precedence over embedded PDL
instructions.
- 'attempted': This value indicates that the Printer attempts to - 'attempted': This value indicates that the Printer attempts to
make sure that IPP attribute values take precedence over embedded make sure that IPP attribute values take precedence over embedded
PDL instructions, however there is no guarantee. instructions in the Print data, however there is no guarantee.
- 'ignored': This value indicates that the Printer ignores all IPP - 'not-attempted': This value indicates that the Printer makes not
Job Template attributes and it makes no attempts to ensure that attempt to ensure that IPP attribute values take precedence over
IPP attribute values take precedence over embedded PDL embedded instructions in the print data.
instructions.
This is a MANDATORY attribute. This is a MANDATORY attribute.
Note: Since 'attempted' does not offer any type of guarantee, a given Appendix E: Processing IPP Attributes (see Section 15) contains a full
implementation might not do a very "good" job of attempting to ensure description of how this attribute interacts with and affects other IPP
that IPP attributes take a higher precedence over PDL instructions attributes, especially the "ipp-attribute-fidelity" attribute.
embedded in the document data, but it would still be a conforming
implementation.
If the value of this attribute is 'guaranteed', the implementation
MUST guarantee that the IPP attribute values take precedence over any
related job processing instructions in the PDL Job's document data.
This can be done by modifying the interpreter within the output device
itself to understand IPP attributes, or by merging theses Job Template
attributes directly into the document data, or in any other
implementation specific manner. In any case, the semantics of
'guaranteed' MUST be preserved.
4.5.22 Security Related Attributes 4.5.20 Security Related Attributes
The security document [22] describes four common usage scenarios: The security document [22] describes four common usage scenarios:
- no security - no security
- message protection - message protection
- client authentication and authorization - client authentication and authorization
Expires January 25, 1998
- mutual authentication, authorization, and message protection - mutual authentication, authorization, and message protection
In order to let an end user know what to expect in terms of security, In order to let an end user know what to expect in terms of security,
there are two attributes described below. Since by definition an end there are two attributes described below. Since by definition an end
user, because of security reasons, might not be allowed to query these user, because of security reasons, might not be allowed to query these
two attributes, therefore, it is important that if these two two attributes, therefore, it is important that if these two
attributes are supported, then they are also populated in the attributes are supported, then they are also populated in the
directory entry (see [24]). directory entry (see [24]).
These attributes allow for minimal client/server negotiation regarding These attributes allow for minimal client/server negotiation regarding
security features. If the Printer requires the feature, the client security features. If the Printer requires the feature, the client
can decide whether or not to participate. If the client does not can decide whether or not to participate. If the client does not
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
support the feature, and the Printer requires it, then the client support the feature, and the Printer requires it, then the client
knows before hand that such an interaction would fail. knows before hand that such an interaction would fail.
Standard values for these two attributes include: Standard values for these two attributes include:
'supported' - means that the Printer is capable of supporting the 'supported' - means that the Printer is capable of supporting the
security feature (somehow), but it is does not require the client security feature (somehow), but it is does not require the client
to use it. to use it.
'required' - means that the Printer is capable of supporting the 'required' - means that the Printer is capable of supporting the
security feature (somehow) and the client is required to use it. security feature (somehow) and the client is required to use it.
'none' - means that the Printer is not capable of supporting 'none' - means that the Printer is not capable of supporting
message protection at all. message protection at all.
Note: This is a single-valued attribute, not a multi-valued Note: This is a single-valued attribute, not a multi-valued
attribute, i.e., an implementation can not support 'none' and attribute, i.e., an implementation can not support 'none' and
'required' or any other combination of values. 'required' or any other combination of values.
4.5.22.1 message-protection-supported (keyword) 4.5.20.1 message-protection-supported (keyword)
This attribute is used to determine whether or not a printer supports This attribute is used to determine whether or not a printer supports
or requires message protection (whether it be through encryption or or requires message protection (whether it be through encryption or
some other privacy mechanism). some other privacy mechanism).
4.5.22.2 authentication-authorization-supported (keyword) 4.5.20.2 authentication-authorization-supported (keyword)
This attribute is used to determine whether or not a printer supports This attribute is used to determine whether or not a printer supports
or requires authentication and authorization. or requires authentication and authorization.
4.5.23 best-effort (1setOf boolean) 4.5.21 printer-up-time (seconds)
This attribute determines how a Printer handles a conflict between This attribute is a MANDATORY attribute. It indicates the amount of
what a client requests in a create request and what a Printer time (in seconds) that this instance of this Printer implementation
supports. The value 'true' means that a best effort attempt to print has been up and running. This value is used to populate the Job
the Job is possible. In order to achieve this, the Printer might attributes "time-at-pending", "time-at-processing", and "time-at-
ignore some attributes or might have to substitute some supported completed". These time values are all measured in seconds and all
value for a requested value which is unsupported. The value 'false' have meaning only relative to this attribute, "printer-up-time".
Expires January 25, 1998 ISSUE: Does this need to be MANDATORY?
means that only total fidelity is supported; a best effort attempt to
print the Job is not possible. In other words, the job can only be
printed exactly as specified in the create request. If one or more of
the client-supplied values in the create request is not supported by
the Printer, the Printer rejects the create request.
For example, if a client supplies a "finishings" Job Template 4.5.22 printer-current-time (dateTime)
attribute set to 'staple' but the printer does not support stapling
(not a feature or it is temporarily out of staples) and if the "best-
effort" input parameter is set to 'true' and the Printer's "best-
effort-supported" attributes includes 'true' then the Printer tries to
still print the job even if it can not be stapled.
Note: that the "best-effort" attribute in a create request is unlikely This attribute is an OPTIONAL attribute. It indicates the current
to be used much. Many clients will submit a job with no attributes, absolute wall-clock time. If an implementation supports this
and the Printer will use default values. Other clients will submit a attribute, the a client could calculate the absolute wall-clock time
job via a GUI that limits the attribute values to values which are each Job's "time-at-pending", "time-at-processing", and "time-at-
supported. Best effort printing is useful in the GUI context only if
a user expects the job to be moved to another printer and prefers a deBry, Hastings, Herriot, Isaacson, Powell
sub-optimal result to nothing at all. Best effort printing is most Expires February xx, 1998
useful in the case where an end-user uses a command line interface to completed" attributes by using both "printer-up-time" and this
request attributes that might not be supported. 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 MANDATORY "printer-up-time" attribute.
5. Conformance 5. Conformance
This section describes conformance issues and requirements. This This section describes conformance issues and requirements. This
document introduces model entities such as objects, operations, document introduces model entities such as objects, operations,
attributes, and attribute values. These conformance sections describe attributes, and attribute values. These conformance sections describe
the conformance requirements which apply to these model entities. the conformance requirements which apply to these model entities.
5.1 Conditionally Mandatory 5.1 Client Conformance Requirements
For example, a conditionally mandatory attribute means that a Printer
implementation need not support the attribute if the attribute
controls a feature that the output device does not implement or
expose. For example, for an output device that can only print on one
side, a Printer need not support the "sides" attribute. For an output
device that does not support any of the finishing attribute values, a
Printer need not support the "finishing" attribute.
ISSUE: We still have a problem with conditionally mandatory. What
MUST be supported? What NEED NOT? What SHOULD NOT?
Expires January 25, 1998
5.2 Client Conformance Requirements
A conforming client SHALL send operations that conform to the protocol A conforming client SHALL send operations that conform to the protocol
defined in _Internet Printing Protocol/1.0: Protocol Specification_ defined in _Internet Printing Protocol/1.0: Protocol Specification_
[23]. For each parameter or attribute included in an operation [23]. For each parameter or attribute included in an operation
request, a conforming client SHALL send a value whose type and value request, a conforming client SHALL send a value whose type and value
syntax conforms to the requirement of this document syntax conforms to the requirement of this document
Otherwise, there are no conformance requirements placed on the user Otherwise, there are no conformance requirements placed on the user
interfaces provided by IPP clients or their applications. For interfaces provided by IPP clients or their applications. For
example, one application might not allow an end user to submit example, one application might not allow an end user to submit
skipping to change at page 62, line 36 skipping to change at page 66, line 47
in Section 4.1 that may be returned to it in a response from a Printer in Section 4.1 that may be returned to it in a response from a Printer
A query response may contain parameters, attributes, and values that A query response may contain parameters, attributes, and values that
the client does not expect. Therefore, a client implementation MUST the client does not expect. Therefore, a client implementation MUST
gracefully handle such responses and not refuse to interoperate with a gracefully handle such responses and not refuse to interoperate with a
conforming Printer that is returning extended registered or private conforming Printer that is returning extended registered or private
attributes and/or attribute values that conform to Section 6. Clients attributes and/or attribute values that conform to Section 6. Clients
may choose to ignore any parametes, attributes, or values that it does may choose to ignore any parametes, attributes, or values that it does
not understand. not understand.
5.3 Printer Object Conformance Requirements deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
5.2 Printer Object Conformance Requirements
This section specifies the conformance requirements for conforming This section specifies the conformance requirements for conforming
Printer object implementations with respect to objects, operations, Printer object implementations with respect to objects, operations,
and attributes. and attributes.
5.3.1 Objects 5.2.1 Objects
Conforming Printer implementations SHALL implement all of the model Conforming Printer implementations SHALL implement all of the model
objects as defined in this specification in the indicated sections: objects as defined in this specification in the indicated sections:
Section 0 Section 2.1 Printer Object
Printer Object
Section 2.2 Job Object Section 2.2 Job Object
Section 2.3 Document Object Section 2.3 Document Object
Expires January 25, 1998 5.2.2 Operations
5.3.2 Operations
Conforming Printer implementations SHALL implement all of the Conforming Printer implementations SHALL implement all of the
MANDATORY model operations, including mandatory responses, as defined MANDATORY model operations, including mandatory responses, as defined
in this specification in the indicated sections: in this specification in the indicated sections:
For a Printer object: For a Printer object:
Get-Operations (section 3.2.1) MANDATORY Print-Job (section 3.2.1) MANDATORY
Print-Job (section 3.2.2) MANDATORY Print-URI (section 3.2.2) OPTIONAL
Print-URI (section 3.2.3) OPTIONAL Validate-Job (section 3.2.3) MANDATORY
Validate-Job (section 3.2.4) MANDATORY Create-Job (section 3.2.4) OPTIONAL
Create-Job (section 3.2.5) OPTIONAL Get-Jobs (section 3.2.6) MANDATORY
Get-Jobs (section 3.2.7) MANDATORY Get-Attributes (section3.2.5) MANDATORY
Get-Attributes (section3.2.6) MANDATORY
For a Job object: For a Job object:
Send-Document (section 3.3.1) OPTIONAL Send-Document (section 3.3.1) OPTIONAL
Send-URI (section 3.3.2) OPTIONAL Send-URI (section 3.3.2) OPTIONAL
Cancel-Job (section 3.3.3) MANDATORY Cancel-Job (section 3.3.3) MANDATORY
Get-Attributes (section 3.3.4) MANDATORY Get-Attributes (section 3.3.4) MANDATORY
Conforming Printer implementations SHALL support all request and Conforming Printer implementations SHALL support all request and
response parameters and all values of such parameters, except for response parameters and all values of such parameters, except for
parameters which are collections of attributes. The following section parameters which are collections of attributes. The following section
on attributes specifies the support required for attributes. on attributes specifies the support required for attributes.
5.3.3 Attributes 5.2.3 Attributes
Conforming Printer implementations SHALL support all of the MANDATORY Conforming Printer implementations SHALL support all of the MANDATORY
attributes, as defined in this specification in the indicated attributes, as defined in this specification in the indicated
sections. sections.
Conforming Printer implementations SHALL support all CONDITIONALLY If a Printer supports an attribute, it SHALL support only those values
MANDATORY attributes as defined in this specification (in the specified in this document or through the extension mechanism
indicated sections) if in the implementation the condition us true.
If a Printer implements a "xxx-supported" attribute it MUST implement
the corresponding "xxx" default value attribute and vice versa.
ISSUE: For each attribute Job-Template attribute _xxx_, there are 3
attributes: Job attributes _xxx_, Printer attribute _xxx_ (default
value) and Printer attribute _xxx-supported_; a Printer supports
either all three of these attributes or none of the three
If a Printer implements an attribute, it SHALL support only those deBry, Hastings, Herriot, Isaacson, Powell
values specified in this document or through the extension mechanism Expires February xx, 1998
described in the next section. It MAY support any non-empty subset of described in the next section. It MAY support any non-empty subset of
Expires January 25, 1998
these values. That is, it SHALL support at least one of the specified these values. That is, it SHALL support at least one of the specified
values and at most all of them. values and at most all of them.
5.3.4 Printer extensions 5.2.4 Printer extensions
A conforming Printer may support registered extensions and private A conforming Printer may support registered extensions and private
extensions, as long as they meet the requirements specified in Section extensions, as long as they meet the requirements specified in Section
6. 6.
A conforming Printer SHALL send responses that conform to the protocol A conforming Printer SHALL send responses that conform to the protocol
defined in _Internet Printing Protocol/1.0: Protocol Specification_ defined in _Internet Printing Protocol/1.0: Protocol Specification_
[23]. For each parameter or attribute included in an operation [23]. For each parameter or attribute included in an operation
response, a conforming printer SHALL send a value whose type and value response, a conforming printer SHALL send a value whose type and value
syntax conforms to the requirement of this document syntax conforms to the requirement of this document
5.3.5 Attribute Syntaxes 5.2.5 Attribute Syntaxes
A Printer SHALL be able to accept any of the attribute syntaxes A Printer SHALL be able to accept any of the attribute syntaxes
defined in Section 4.1 in any operation in which a client may supply defined in Section 4.1 in any operation in which a client may supply
attributes or parameters. Furthermore, a Printer SHALL return attributes or parameters. Furthermore, a Printer SHALL return
attributes to the client in operation responses that conform to the attributes to the client in operation responses that conform to the
syntax specified in Section 4.1. syntax specified in Section 4.1.
5.4 Security Conformance Requirements 5.3 Security Conformance Requirements
The security mechanisms being considered for IPP fall outside the
scope of the application layer protocol itself. There are two
mechanisms used to begin secure communications using IPP:
1. Information in the directory entry for an IPP Printer (or from
additional information at a Web site hosting the IPP Printer)
indicate which, if any, security protocols are used in
conjunction with IPP.
2. The URI for the IPP Printer contains the security protocol
information (https://..., etc.).
In either case, the security protocol (if any) is initiated first
which allows for the negotiation of security features. IPP is then
run as an application protocol on top of the security protocols. One
cannot "bootstrap" the security features from IPP itself.
ISSUE: The above is not quite correct. Waiting for better description ISSUE: The "why" and "what" needs to be moved from the Security
from the security document [22]. document to this document. The "how" from the Security document needs
to be moved to the Protocol Specification document.
Expires January 25, 1998
6. IANA Considerations (registered and private extensions) 6. IANA Considerations (registered and private extensions)
During the development of this standard, the IPP working group During the development of this standard, the IPP working group
(working with IANA) will register additional keywords and enums while (working with IANA) will register additional keywords and enums while
the standard is in the proposed and draft states according to the the standard is in the proposed and draft states according to the
procedures described in this section. IANA will handle registration procedures described in this section. IANA will handle registration
of additional enums after this standard is approved in cooperation of additional enums after this standard is approved in cooperation
with an IANA-appointed registration editor from the IPP working group with an IANA-appointed registration editor from the IPP working group
according to the procedures described in this section. according to the procedures described in this section.
6.1 Typed Extensions 6.1 Typed Extensions
This document identifies both keywords and enum values. For private This document uses prefixes to the "keyword" and "enum" basic syntax
(unregistered) keyword extensions, implementers SHOULD use keywords type in order to communicate extra information to the reader through
with a suitable distinguishing prefix, such as "xxx-" where xxx is the its name. This extra information need not be represented in an
(lowercase) company name registered with IANA for use in domain names.
For private (unregistered) enum extension, implementers SHOULD support
values in the reserved integer range (see "enum").
The definitions of these various types are as follows. deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
implementation because it is unimportant to a client or Printer. The
list below describes the prefixes and their meaning.
6.1.1 Type1 "type1": The IPP standard must be revised to add a new keyword or
a new enum. No private keywords or enums are allowed.
The IPP standard must be revised to add a new keyword or a new enum. "type2": Implementers can, at any time, add new keyword or enum
No private keywords or enums are allowed. values by proposing them to the IPP working group for
registration (or an IANA-appointed registry advisor after the IPP
working group is no longer certified) where they are reviewed for
approval. IANA keeps the registry.
This draft contains the following type1 keywords: "type3": Implementers can, at any time, add new keyword and enum
values by submitting a registration request directly to IANA, no
IPP working group or IANA-appointed registry advisor review is
required.
- <fill in> "type4": Anyone (system administrators, system integrators, site
managers, etc.) can, at any time, add new installation-defined
values (keywords or new enum values) to a local system. Care
SHOULD be taken by the implementers to see that keywords do not
conflict with other keywords defined by the standard or as
defined by the implementing product. There is no registration or
approval procedure for type 4 keywords.
This draft contains the following type1 enums: By definition, each of the four types above assert some sort of
registry or review process in order for extensions to be considered
valid. Each higher level (1, 2, 3, 4) 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 type4 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.
- <fill in> This specification defines keyword and enum values for all of the
above types, including type4 keywords.
6.1.2 Type2 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 [30].
Implementers can, at any time, add new keyword or enum values by Note: RFC 1035 [30] indicates that while upper and lower case letters
proposing them to the IPP working group for registration (or an IANA- are allowed in domain names, no significance is attached to the case.
appointed registry advisor after the IPP working group is no longer That is, two names with the same spelling but different case are to be
certified) where they are reviewed for approval. IANA keeps the treated as if identical. Also, the labels in a domain name must
registry. follow the rules for ARPANET host names: They must start with a
letter, end with a letter or digit, and have as interior characters
This draft contains the following type2 keywords: deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
only letters, digits, and hyphen. Labels must be 63 characters or
less. Labels are separated by the "." character.
- <fill in> For private (unregistered) enum extension, implementers SHOULD use
values in the reserved integer range (see "enum").
This draft contains the following type2 enums: 6.2 Registration of MIME types/sub-types for document-formats
Expires January 25, 1998 The "document-format" attribute's syntax is "mimeType". This means
- <fill in> that valid values are MIME types. RFC 2045 [??] defines the syntax
for valid MIME types. Also, IANA is the registry for all MIME types.
6.1.3 Type3 6.3 Attribute Extensibility
Implementers can, at any time, add new keyword and enum values by Attribute names are considered to be set of type2 keywords. In order
submitting a registration request directly to IANA, no IPP working to be extended, the same rules as type2 keywords apply.
group or IANA-appointed registry advisor review is required.
This draft contains the following type3 keywords: 6.4 Attribute Syntax Extensibility
- <fill in> Attribute syntaxes are considered to be set of type2 enums. In order
to be extended, the same rules as type2 enums apply.
This draft contains the following type3 enums: 7. Internationalization Considerations
- <fill in> This model describes attributes whose values can be text strings
intended for human understanding rather than machine understanding.
These attributes are:
6.1.4 Type4 Printer Attributes:
Anyone (system administrators, system integrators, site managers, printer-name
etc.) can, at any time, add new installation-defined values (keywords printer-location
or new enum values) to a local system. Care SHOULD be taken by the printer-description
implementers to see that keywords do not conflict with other keywords printer-make-and-model
defined by the standard or as defined by the implementing product. printer-state-message
There is no registration or approval procedure for type4 values. printer-message-from-operator
This draft contains the following type4 keywords: Job Attributes
- <fill in> job-name
job-state-message
job-message-from-operator
This draft contains the following type4 enums: Document Attributes
- <fill in> deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
document-name
6.2 Registration of MIME types/sub-types for document-formats These attributes MUST contain characters for the coded character set
defined in ISO 10646 [??] and be encoded using the UTF-8 character
encoding rules [28]. No other coded character sets or encoding rules
are allowed.
The "document-format" attribute IANA enums for indicating document However, since these strings are intended for human understanding, the
formats which IANA registers as ? names. strings can be in any human language identifiable with tags defined in
RFC 1766 [??]. A client that queries the above mentioned text
attributes needs to know what human language is being used for these
text attributes. A Printer optionally supports a "human-languages-
supported" supported values attribute and a "human-language" default
value attribute. Since these are optional, if the printer does not
support these attributes, the client can assume that the text strings
are either US English "en-US" or any other language that is specific
to a given site. Whatever the value, the same value applies to ALL
text based attributes for a given Printer and its contained Jobs.
ISSUE: MIME type/sub-types has raised its head again. In the HTTP mapping for IPP/1.0, these attributes are mapped in to the
HTTP headers that control negotiation of human language between client
and server.
7. Security Considerations 8. Security Considerations
There is another Internet-Draft called "Internet Printing There is another Internet-Draft called "Internet Printing
Protocol/1.0: Security" [22]. That document is being drafted and Protocol/1.0: Security" [22]. That document is being drafted and
reviewed in parallel with this document. The mapping of IPP on top of reviewed in parallel with this document. The mapping of IPP on top of
appropriate security protocols will be described in that document. appropriate security protocols will be described in that document.
Expires January 25, 1998
IPP does not introduce any new, general purpose security mechanisms IPP does not introduce any new, general purpose security mechanisms
for authentication and encryption. for authentication and encryption.
A Printer may choose, for security reasons, not to return all A Printer may choose, for security reasons, not to return all
attributes that a client requests. It may even return none of the attributes that a client requests. It may even return none of the
requested attributes. In such cases, the status returned is the same requested attributes. In such cases, the status returned is the same
as if the Printer had returned all requested attributes. The client as if the Printer had returned all requested attributes. The client
cannot tell by such a response whether the requested attribute was cannot tell by such a response whether the requested attribute was
present or absent on the Printer. present or absent on the Printer.
8. References 9. References
[1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog,
J., "Printer MIB", RFC 1759, March 1995. J., "Printer MIB", RFC 1759, March 1995.
[2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC [2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC
2068, January 1997 2068, January 1997
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
[3] Crocker, D., "Standard for the Format of ARPA Internet Text [3] Crocker, D., "Standard for the Format of ARPA Internet Text
Messages", RFC 822, August 1982. Messages", RFC 822, August 1982.
[4] Postel, J., "Instructions to RFC Authors", RFC 1543, October [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October
1993. 1993.
[5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996.
[6] Herriot, R. (editor), X/Open A Printing System Interoperability [6] Herriot, R. (editor), X/Open A Printing System Interoperability
Specification (PSIS), August 1995. Specification (PSIS), August 1995.
skipping to change at page 68, line 5 skipping to change at page 72, line 34
Support", RFC 1123, October, 1989, Support", RFC 1123, October, 1989,
[10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC
1179, August 1990. 1179, August 1990.
[11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource
Locators (URL)", RFC 1738, December, 1994. Locators (URL)", RFC 1738, December, 1994.
[20] Internet Printing Protocol: Requirements [20] Internet Printing Protocol: Requirements
Expires January 25, 1998
[21] Internet Printing Protocol/1.0: Model and Semantics (This [21] Internet Printing Protocol/1.0: Model and Semantics (This
document) document)
[22] Internet Printing Protocol/1.0: Security [22] Internet Printing Protocol/1.0: Security
[23] Internet Printing Protocol/1.0: Protocol Specification [23] Internet Printing Protocol/1.0: Protocol Specification
[24] Internet Printing Protocol/1.0: Directory Schema [24] Internet Printing Protocol/1.0: Directory Schema
[25] S. Bradner, "Key words for use in RFCs to Indicate Requirement [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119 , March 1997 Levels", RFC 2119 , March 1997
[26] H. Alvestrand, " Tags for the Identification of Languages", RFC [26] H. Alvestrand, " Tags for the Identification of Languages", RFC
1766, March 1995. 1766, March 1995.
[27] T. Hastings, "Job Monitoring MIB", <draft-ietf-print-mib- [27] T. Hastings, "Job Monitoring MIB", <draft-ietf-print-mib-
monitoring-01.txt>, June 1997. monitoring-01.txt>, June 1997.
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
[28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO
10646, RFC 2044, October 1996. 10646, RFC 2044, October 1996.
[29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt, [29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt,
July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1]. July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1].
[30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND [30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND
SPECIFICATION", RFC 1035, November 1987. SPECIFICATION", RFC 1035, November 1987.
[31] ?, " ", RFC 2130, ?. [31] ?, " ", RFC 2130, ?.
[32] ?, " ", RFC 1514, ?. [32] ?, " ", RFC 1514, ?.
[33] ?, " ", RFC 1903, ?. [33] ?, " ", RFC 1903, ?.
9. Author's Address [34] ?, " ", RFC 1808, ?.
10. Author's Address
Scott A. Isaacson (Editor) Scott A. Isaacson (Editor)
Novell, Inc. Novell, Inc.
122 E 1700 S 122 E 1700 S
Provo, UT 84606 Provo, UT 84606
Phone: 801-861-7366 Phone: 801-861-7366
Fax: 801-861-4025 Fax: 801-861-4025
EMail: scott_isaacson@novell.com EMail: scott_isaacson@novell.com
Tom Hastings Tom Hastings
Xerox Corporation Xerox Corporation
701 S. Aviation Blvd. 701 S. Aviation Blvd.
Expires January 25, 1998
El Segundo, CA 90245 El Segundo, CA 90245
Phone: 310-333-6413 Phone: 310-333-6413
Fax: 310-333-5514 Fax: 310-333-5514
EMail: hastings@cp10.es.xerox.com EMail: hastings@cp10.es.xerox.com
Robert Herriot Robert Herriot
Sun Microsystems Inc. Sun Microsystems Inc.
901 San Antonio.Road, MPK-17 901 San Antonio.Road, MPK-17
Palo Alto, CA 94303 Palo Alto, CA 94303
Phone: 415-786-8995 (Area code change to 650 in August 1997) Phone: 415-786-8995 (Area code change to 650 in August 1997)
Fax: 415-786-7077 (Area code change to 650 in August 1997) Fax: 415-786-7077 (Area code change to 650 in August 1997)
Email: robert.herriot@eng.sun.com Email: robert.herriot@eng.sun.com
Roger deBry Roger deBry
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
HUC/003G HUC/003G
IBM Corporation IBM Corporation
P.O. Box 1900 P.O. Box 1900
Boulder, CO 80301-9191 Boulder, CO 80301-9191
Phone: (303) 924-4080 Phone: (303) 924-4080
Fax: (303) 924-9889 Fax: (303) 924-9889
Email: debry@vnet.ibm.com Email: debry@vnet.ibm.com
Patrick Powell Patrick Powell
skipping to change at page 69, line 48 skipping to change at page 74, line 31
Email: papowell@sdsu.edu Email: papowell@sdsu.edu
IPP Mailing List: ipp@pwg.org IPP Mailing List: ipp@pwg.org
IPP Mailing List Subscription: ipp-request@pwg.org IPP Mailing List Subscription: ipp-request@pwg.org
IPP Web Page: http://www.pwg.org/ipp/ IPP Web Page: http://www.pwg.org/ipp/
Other Participants: Other Participants:
Chuck Adams - Tektronix Chuck Adams - Tektronix
Jeff Barnett - IBM Jeff Barnett - IBM
Ron Bergman - Data Products Ron Bergman - Dataproducts Corp.
Sylvan Butler, HP Sylvan Butler, HP
Keith Carter, IBM Corporation Keith Carter, IBM Corporation
Jeff Copeland - QMS Jeff Copeland - QMS
Andy Davidson - Tektronix Andy Davidson - Tektronix
Mabry Dozier - QMS Mabry Dozier - QMS
Expires January 25, 1998
Lee Farrell - Canon Information Systems Lee Farrell - Canon Information Systems
Steve Gebert - IBM Steve Gebert - IBM
Babek Jahromi, Microsoft Babek Jahromi, Microsoft
David Kellerman - Northlake Software David Kellerman - Northlake Software
Rick Landau - Digital Rick Landau - Digital
Harry Lewis - IBM Harry Lewis - IBM
Pete Loya - HP Pete Loya - HP
Ray Lutz - Cognisys Ray Lutz - Cognisys
Mike MacKay, Novell, Inc. Mike MacKay, Novell, Inc.
Carl-Uno Manros, Xerox, Corp. Carl-Uno Manros, Xerox, Corp.
Jay Martin - Underscore Jay Martin - Underscore
Stan McConnell - Xerox Stan McConnell - Xerox
Paul Moore, Microsoft Paul Moore, Microsoft
Pat Nogay - IBM Pat Nogay - IBM
Bob Pentecost - HP Bob Pentecost - HP
Rob Rhoads - Intel Rob Rhoads - Intel
deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
David Roach - Unisys David Roach - Unisys
Stuart Rowley, Kyocera Hiroyuki Sato - Canon Stuart Rowley, Kyocera Hiroyuki Sato - Canon
Bob Setterbo - Adobe Bob Setterbo - Adobe
Devon Taylor, Novell, Inc. Devon Taylor, Novell, Inc.
Mike Timperman - Lexmark Mike Timperman - Lexmark
Randy Turner - Sharp Randy Turner - Sharp
Atsushi Yuki - Kyocera Atsushi Yuki - Kyocera
Lloyd Young - Lexmark Lloyd Young - Lexmark
Bill Wagner - DPI Bill Wagner - DPI
Jim Walker - DAZEL Jim Walker - DAZEL
Chris Wellens - Interworking Labs Chris Wellens - Interworking Labs
Rob Whittle - Novell Rob Whittle - Novell
Don Wright - Lexmark Don Wright - Lexmark
Peter Zehler, Xerox, Corp. Peter Zehler, Xerox, Corp.
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
10. APPENDIX A: Terminology Expires February xx, 1998
11. APPENDIX A: Terminology
This specification uses the terminology defined in this section. This specification uses the terminology defined in this section.
10.1 Conformance Terminology 11.1 Conformance Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [25]. The document are to be interpreted as described in RFC 2119 [25]. The
sections below reiterate these definitions and include some additional sections below reiterate these definitions and include some additional
ones. ones.
10.1.1 MUST 11.1.1 MUST
This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means
that the definition is an absolute requirement of the specification. that the definition is an absolute requirement of the specification.
10.1.2 MUST NOT 11.1.2 MUST NOT
This phrase, or the phrase "SHALL NOT", means that the definition is This phrase, or the phrase "SHALL NOT", means that the definition is
an absolute prohibition of the specification. an absolute prohibition of the specification.
10.1.3 SHOULD 11.1.3 SHOULD
This word, or the adjective "RECOMMENDED", means that there may exist This word, or the adjective "RECOMMENDED", means that there may exist
valid reasons in particular circumstances to ignore a particular item, valid reasons in particular circumstances to ignore a particular item,
but the full implications must be understood and carefully weighed but the full implications must be understood and carefully weighed
before choosing a different course. before choosing a different course.
10.1.4 SHOULD NOT 11.1.4 SHOULD NOT
This phrase, or the phrase "NOT RECOMMENDED" means that there may This phrase, or the phrase "NOT RECOMMENDED" means that there may
exist valid reasons in particular circumstances when the particular exist valid reasons in particular circumstances when the particular
behavior is acceptable or even useful, but the full implications behavior is acceptable or even useful, but the full implications
should be understood and the case carefully weighed before should be understood and the case carefully weighed before
implementing any behavior described with this label. implementing any behavior described with this label.
10.1.5 MAY 11.1.5 MAY
This word, or the adjective "OPTIONAL", means that an item is truly This word, or the adjective "OPTIONAL", means that an item is truly
optional. One vendor may choose to include the item because a optional. One vendor may choose to include the item because a
particular marketplace requires it or because the vendor feels that it particular marketplace requires it or because the vendor feels that it
enhances the product while another vendor may omit the same item. An enhances the product while another vendor may omit the same item. An
implementation which does not include a particular option MUST be implementation which does not include a particular option MUST be
prepared to interoperate with another implementation which does prepared to interoperate with another implementation which does
include the option, though perhaps with reduced functionality. In the include the option, though perhaps with reduced functionality. In the
Expires January 25, 1998 deBry, Hastings, Herriot, Isaacson, Powell
Expires February xx, 1998
same vein an implementation which does include a particular option same vein an implementation which does include a particular option
MUST be prepared to interoperate with another implementation which MUST be prepared to interoperate with another implementation which
does not include the option (except, of course, for the feature the does not include the option (except, of course, for the feature the
option provides.) option provides.)
10.1.6 CONDITIONALLY MANDATORY 11.1.6 NEED NOT
This term means that an item MUST be implemented in a conforming
implementation if the specified condition is true. Conversely, a
conforming implementation NEED NOT implement the item if the specified
condition is false.
ISSUE: Bob H. writes: After writing the paragraphs below, I have
concluded that job-template attributes should all be optional, and we
should drop the "conditionally mandatory" term. At the very least,
they have to be optional for print servers. There may be some
argument for making some of them conditionally mandatory in embedded
printers, but the extra complexity of the explanation may not be worth
the trouble. We all need to give this issue some more thought. As long
as the explanation is so murky, I don't think any two people would
come up with the same list of mandatory attributes for an
implementation and that is no better than making them optional.
Now for the details.
Before discussing the issue, we should understand that there are two
categories of attributes:
o printer control (e.g. media or sides)
o job control (e.g. job-priority, job-sheets or notify-events)
And there are two types of implementations
o embedded printer
o print server
We also need to look at the model document's definition of
conditionally mandatory. The following is paraphrasing from 3 parts of
the model document. It says an implementation must support the
attribute if it knows about and is able to support it, and need not
support the attribute that controls a feature that the output device
does not implement or expose. It also says that if a certain
implementation supports only one well-known value of some "xxx-
supported" attribute, it is not required that that implementation
support that attribute.
Expires January 25, 1998
This definition is somewhat reasonable for an embedded printer. It is
easy to determine if an output device supports an IPP printer control
attribute, though if the feature has only one value it may not be easy
to determine if the value is "well-known". If a printer supports only
letter paper, then the rules above say that support of "media" is not
required. But suppose the size is B only. Is B "well-known" enough to
qualify for the exclusion? If IPP has an exclusion for a known
feature, the rule should exclude "non- selectable" features rather
than "well-known" because "well-known" is subjective.
This definition is somewhat more difficult for job control attributes