draft-ietf-ipp-model-03.txt   draft-ietf-ipp-model-04.txt 
INTERNET-DRAFT INTERNET-DRAFT R. deBry
R. deBry draft-ietf-ipp-model-04.txt IBM Corporation
IBM Corporation
T. Hastings T. Hastings
Xerox Corporation Xerox Corporation
R. Herriot R. Herriot
Sun Microsystems Sun Microsystems
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
P. Powell P. Powell
San Diego State University San Diego State University
July 14, 1997 July 25, 1997
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
draft-ietf-ipp-model-03.txt
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.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
skipping to change at page 2, line 5 skipping to change at page 2, line 5
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 14, 1998 Expires January 25, 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 3, line 5
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 14, 1998 Expires January 25, 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 .............................................10
2.2 Job Object....................................................12 2.2 Job Object .................................................12
2.3 Document Object...............................................13 2.3 Document Object ............................................12
2.4 Object Relationships..........................................14 2.4 Object Relationships .......................................12
2.5 Object Identity...............................................14 2.5 Object Identity ............................................13
3. IPP Operations................................................15 3. IPP Operations................................................13
3.1 Operation Semantics...........................................16 3.1 General Semantics ..........................................14
3.1.1 Get-Operations Operation.................................17 3.1.1 Operation Status Codes and Messages......................14
3.1.1.1 Get-Operations Request..............................17 3.1.2 Security and Query Operations............................14
3.1.1.2 Get-Operations Response.............................17 3.1.3 Job Creation Operations..................................15
3.1.2 Print-Job Operation......................................17 3.2 Printer Operations .........................................16
3.1.2.1 Print-Job Request...................................18 3.2.1 Get-Operations Operation.................................16
3.1.2.2 Print-Job Response..................................20 3.2.1.1 Get-Operations Request ................................16
3.1.3 Print-URI Operation......................................20 3.2.1.2 Get-Operations Response ...............................16
3.1.3.1 Print-URI Request...................................20 3.2.2 Print-Job Operation......................................17
3.1.3.2 Print-URI Response..................................21 3.2.2.1 Print-Job Request .....................................17
3.1.4 Validate-Job Operation...................................21 3.2.2.2 Print-Job Response ....................................20
3.1.4.1 Validate-Job Request................................21 3.2.3 Print-URI Operation......................................20
3.1.4.2 Validate-Job Response...............................21 3.2.4 Validate-Job Operation...................................21
3.1.5 Create-Job Operation.....................................22 3.2.5 Create-Job Operation.....................................21
3.1.5.1 Create-Job Request..................................22 3.2.6 Get-Attributes Operation.................................21
3.1.5.2 Create Job Response.................................22 3.2.6.1 Get-Attributes Request ................................22
3.1.6 Send-Document Operation..................................23 3.2.6.2 Get-Attributes Response ...............................23
3.1.6.1 Send-Document Request...............................23 3.2.7 Get-Jobs Operation.......................................23
3.1.6.2 Send-Document Response..............................23 3.2.7.1 Get-Jobs Request ......................................24
3.1.7 Send-URI Operation.......................................23 3.2.7.2 Get-Jobs Response .....................................24
3.1.7.1 Send-URI Request....................................24 3.3 Job Operations .............................................25
3.1.7.2 Send-URI Response...................................24 3.3.1 Send-Document Operation..................................25
3.1.8 Cancel Job Operation.....................................24 3.3.1.1 Send-Document Request .................................25
3.1.8.1 Cancel-Job Request..................................24 3.3.1.2 Send-Document Response ................................25
3.1.8.2 Cancel-Job Response.................................25 3.3.2 Send-URI Operation.......................................25
3.1.9 Get-Attributes Operation.................................25 3.3.3 Cancel Job Operation.....................................26
3.1.9.1 Get-Attributes Request..............................25 3.3.3.1 Cancel-Job Request ....................................26
3.1.9.2 Get-Attributes Response.............................27 3.3.3.2 Cancel-Job Response ...................................26
3.1.10 Get-Jobs Operation.......................................27 3.3.4 Get-Attributes Operation.................................26
3.1.10.1 Get-Jobs Request....................................27 3.3.4.1 Get-Attributes Request ................................26
3.1.10.2 Get-Jobs Response...................................28 4. Object Attributes.............................................27
3.2 Operation Status Codes and Messages...........................28 4.1 Attribute Syntaxes .........................................27
4. Object Attributes.............................................29 4.1.1 Attribute Extensibility..................................29
4.1 Attribute Syntaxes............................................29 4.2 Job Template Attributes ....................................31
4.1.1 Attribute Extensibility..................................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-name (name)..........................................37 4.2.3 notify-addresses (1setOf uri)............................35
4.2.2 job-sheets (type4 keyword)...............................38 4.2.4 job-priority (integer(1:100))............................36
Expires January 14, 1998 Expires January 25, 1998
4.2.3 notify-events (1setOf type2 keyword).....................38 4.2.5 job-hold-until (type4 keyword)...........................36
4.2.4 notify-addresses (1setOf uri)............................38 4.2.6 multiple-document-handling (type2 keyword)...............37
4.2.5 job-priority (integer(1:100))............................39 4.2.7 media (type4 keyword)....................................37
4.2.6 job-hold-until (type4 keyword)...........................39 4.2.8 number-up (type3 keyword)................................38
4.2.7 multiple-documenthandling (type2 keyword)................40 4.2.9 sides (type2 keyword)....................................38
4.2.8 best-effort (boolean)....................................40 4.2.10 printer-resolution (resoultion)..........................39
4.2.9 media (type4 keyword)....................................42 4.2.11 print-quality (type2 enum)...............................39
4.2.10 number-up (type3 keyword)................................42 4.2.12 finishings (1setOf type2 enum)...........................39
4.2.11 sides (type2 keyword)....................................43 4.2.13 copies (integer(1:2**31 - 1))............................40
4.2.12 printer-resolution (type2 enum)..........................43 4.2.14 document-format (type2 enum).............................40
4.2.13 print-quality (type2 enum)...............................44 4.2.15 compression (type3 keyword)..............................41
4.2.14 copies (integer(1:2**31 - 1))............................45 4.2.16 job-k-octets (integer(0:2**31 - 1))......................41
4.2.15 finishing (1setOf type2 enum)............................45 4.2.17 job-impressions (integer(0:2**31 - 1))...................41
4.2.16 document-format (type2 keyword)..........................46 4.2.18 job-media-sheets (integer(0:2**31 - 1))..................41
4.2.17 compression (type3 keyword)..............................46 4.3 Job Description Attributes .................................42
4.2.18 job-k-octets (integer(0:2**31 - 1))......................46 4.3.1 job-uri (uri)............................................43
4.2.19 job-impressions (integer(0:2**31 - 1))...................46 4.3.2 job-uri-user (uri).......................................44
4.2.20 job-media-sheets (integer(0:2**31 - 1))..................47 4.3.3 job-name (name)..........................................44
4.3 Job Description Attributes....................................47 4.3.4 job-originating-user (name)..............................44
4.3.1 job-uri (uri)............................................48 4.3.5 job-originating-host (name)..............................44
4.3.2 job-uri-user (uri).......................................49 4.3.6 user-human-language (human-language).....................44
4.3.3 job-originating-user (name)..............................49 4.3.7 user-content-char-set (char-set).........................45
4.3.4 job-originating-host (name)..............................49 4.3.8 job-state (type1 enum)...................................45
4.3.5 user-locale (locale).....................................49 4.3.9 job-state-reasons (1setOf type2 keyword)................47
4.3.6 job-state (type1 enum)...................................49 4.3.10 job-state-message (text).................................49
4.3.7 job-state-reasons (1setOf type2 keyword)................51 4.3.11 output-device-assigned (name)............................49
4.3.8 job-state-message (text).................................53 4.3.12 time-since-pending (integer).............................49
4.3.9 output-device-assigned (name)............................53 4.3.13 time-since-processing (integer)..........................49
4.3.10 time-since-pending (milliseconds)........................53 4.3.14 time-since-completed (integer)...........................49
4.3.11 time-since-processing (milliseconds).....................53 4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))........49
4.3.12 time-since-completed (milliseconds)......................53 4.3.16 job-message-from-operator (text).........................50
4.3.13 number-of-intervening-jobs (integer(0:2**31 - 1))........53 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))............50
4.3.14 job-message-from-operator (text).........................53 4.3.18 job-impressions-completed (integer(0:2**31 - 1))........50
4.3.15 job-k-octets-processed (integer(0:2**31 - 1))............54 4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))........50
4.3.16 job-impressions-completed (integer(0:2**31 - 1))........54 4.4 Document Attributes ........................................50
4.3.17 job-media-sheets-completed (integer(0:2**31 - 1))........54 4.4.1 document-name (name).....................................51
4.4 Document Attributes...........................................54 4.4.2 document-format (type2 enum).............................51
4.4.1 document-name (name).....................................54 4.4.3 document-uri (uri).......................................51
4.4.2 document-format (type2 enum).............................55 4.5 Printer Description Attributes .............................51
4.4.3 document-uri (uri).......................................55 4.5.1 printer-uri (uri)........................................53
4.5 Printer Description Attributes................................55 4.5.2 printer-uri-user (uri)...................................53
4.5.1 printer-uri (uri)........................................56 4.5.3 printer-name (name)......................................53
4.5.2 printer-uri-user (uri)...................................57 4.5.4 printer-location (text)..................................53
4.5.3 printer-name (name)......................................57 4.5.5 printer-description (text)...............................53
4.5.4 printer-location (text)..................................57 4.5.6 printer-more-info-site (uri).............................53
4.5.5 printer-description (text)...............................57 4.5.7 printer-driver-installer (uri)...........................54
4.5.6 printer-more-info-site (uri).............................57 4.5.8 printer-make-and-model (text)............................54
4.5.7 printer-driver-installer (uri)...........................57 4.5.9 printer-more-info-manufacturer (uri).....................54
Expires January 14, 1998 Expires January 25, 1998
4.5.8 printer-make-and-model (text)............................57 4.5.10 printer-state (type1 enum)...............................54
4.5.9 printer-more-info-manufacturer (uri).....................58 4.5.11 printer-state-reasons (1setOf type2 keyword).............55
4.5.10 printer-state (type1 keyword)............................58 4.5.12 printer-state-message (text).............................57
4.5.11 printer-state-reasons (1setOf type2 keyword).............59 4.5.13 printer-is-accepting-jobs (boolean)......................57
4.5.12 printer-is-accepting-jobs (boolean)......................61 4.5.14 queued-job-count (integer(0:2**31 - 1))..................58
4.5.13 printer-state-message (text).............................61 4.5.15 printer-message-from-operator (text).....................58
4.5.14 queued-job-count (integer(0:2**31 - 1))..................61 4.5.16 printer-human-language (human-language)..................58
4.5.15 printer-message-from-the-operator (text).................61 4.5.17 printer-human-language-supported (1setOf human-language).58
4.5.16 printer-locale (locale)..................................61 4.5.18 printer-content-char-set (char-set)......................58
4.5.17 printer-locales-supported (1setOf locale)................61 4.5.19 printer-content-char-set-supported (1setOf char-set).....58
4.5.18 color-supported (boolean)................................61 4.5.20 color-supported (boolean)................................58
4.5.19 pdl-override (type2 keyword).............................62 4.5.21 pdl-override (type2 keyword).............................58
4.5.20 Security Related Attributes..............................63 4.5.22 Security Related Attributes..............................59
4.5.20.1 message-protection-supported (keyword)..............63 4.5.22.1 message-protection-supported (keyword) ................60
4.5.20.2 authentication-authorization-supported (keyword)....63 4.5.22.2 authentication-authorization-supported (keyword) ......60
5. Conformance...................................................64 4.5.23 best-effort (1setOf boolean).............................60
5.1 Conditionally Mandatory.......................................64 5. Conformance...................................................61
5.2 Client Conformance Requirements...............................64 5.1 Conditionally Mandatory ....................................61
5.3 Printer Object Conformance Requirements.......................65 5.2 Client Conformance Requirements ............................62
5.3.1 Objects..................................................65 5.3 Printer Object Conformance Requirements ....................62
5.3.2 Operations...............................................65 5.3.1 Objects..................................................62
5.3.3 Attributes...............................................65 5.3.2 Operations...............................................63
5.3.4 Printer extensions.......................................66 5.3.3 Attributes...............................................63
5.3.5 Attribute Syntaxes.......................................66 5.3.4 Printer extensions.......................................64
5.4 Security Conformance Requirements.............................66 5.3.5 Attribute Syntaxes.......................................64
6. IANA Considerations (registered and private extensions).......66 5.4 Security Conformance Requirements ..........................64
6.1 Typed Extensions..............................................67 6. IANA Considerations (registered and private extensions).......65
6.1.1 Type1....................................................67 6.1 Typed Extensions ...........................................65
6.1.2 Type2....................................................67 6.1.1 Type1....................................................65
6.1.3 Type3....................................................68 6.1.2 Type2....................................................65
6.1.4 Type4....................................................68 6.1.3 Type3....................................................66
6.2 Registration of MIME types/sub-types for document-formats.....68 6.1.4 Type4....................................................66
7. Security Considerations.......................................69 6.2 Registration of MIME types/sub-types for document-formats ..66
8. References....................................................69 7. Security Considerations.......................................66
9. Author's Address..............................................70 8. References....................................................67
10. APPENDIX A: Terminology.......................................73 9. Author's Address..............................................68
10.1 Conformance Terminology.......................................73 10. APPENDIX A: Terminology.......................................71
10.1.1 MUST.....................................................73 10.1 Conformance Terminology ....................................71
10.1.2 MUST NOT.................................................73 10.1.1 MUST.....................................................71
10.1.3 SHOULD...................................................73 10.1.2 MUST NOT.................................................71
10.1.4 SHOULD NOT...............................................73 10.1.3 SHOULD...................................................71
10.1.5 MAY......................................................73 10.1.4 SHOULD NOT...............................................71
10.1.6 CONDITIONALLY MANDATORY..................................74 10.1.5 MAY......................................................71
10.1.7 NEED NOT.................................................74 10.1.6 CONDITIONALLY MANDATORY..................................72
10.2 Model Terminology.............................................74 10.1.7 NEED NOT.................................................73
10.2 Model Terminology ..........................................74
10.2.1 Keyword..................................................74 10.2.1 Keyword..................................................74
10.2.2 Parameters...............................................74 10.2.2 Parameters...............................................74
10.2.2.1 Parameter Name......................................74
Expires January 14, 1998 Expires January 25, 1998
10.2.2.2 Parameter Value.....................................75 10.2.2.1 Parameter Name ........................................74
10.2.2.3 Parameter Syntax....................................75 10.2.2.2 Parameter Value .......................................74
10.2.2.3 Parameter Syntax ......................................74
10.2.3 Attributes...............................................75 10.2.3 Attributes...............................................75
10.2.3.1 Attribute Name......................................75 10.2.3.1 Attribute Name ........................................75
10.2.3.2 Attribute Group Name................................76 10.2.3.2 Attribute Group Name ..................................75
10.2.3.3 Attribute Value.....................................76 10.2.3.3 Attribute Value .......................................75
10.2.3.4 Attribute Syntax....................................76 10.2.3.4 Attribute Syntax ......................................76
10.2.4 Supports.................................................76 10.2.4 Supports.................................................76
11. APPENDIX B: Status Codes.....................................77 11. APPENDIX B: Status Codes.....................................77
11.1 Status Codes (type2 keyword)..................................78 11.1 Status Codes (type2 keyword) ...............................78
11.1.1 Informational............................................78 11.1.1 Informational............................................78
11.1.2 Successful Status Codes..................................78 11.1.2 Successful Status Codes..................................78
11.1.2.1 successful-ok.......................................78 11.1.2.1 successful-ok .........................................78
11.1.2.2 successful-ok-ignored-or-substituted-attributes .......78
11.1.3 Redirection Status Codes.................................78 11.1.3 Redirection Status Codes.................................78
11.1.4 Client Error Status Codes................................79 11.1.4 Client Error Status Codes................................79
11.1.4.1 client-error-bad-request............................79 11.1.4.1 client-error-bad-request ..............................79
11.1.4.2 client-error-forbidden..............................79 11.1.4.2 client-error-forbidden ................................79
11.1.4.3 client-error-not-authenticated......................79 11.1.4.3 client-error-not-authenticated ........................79
11.1.4.4 client-error-not-authorized.........................79 11.1.4.4 client-error-not-authorized ...........................79
11.1.4.5 client-error-not-possible...........................80 11.1.4.5 client-error-not-possible .............................80
11.1.4.6 client-error-timeout................................80 11.1.4.6 client-error-timeout ..................................80
11.1.4.7 client-error-not-found..............................80 11.1.4.7 client-error-not-found ................................80
11.1.4.8 client-error-gone...................................80 11.1.4.8 client-error-gone .....................................80
11.1.4.9 client-error-request-entity-too-large...............81 11.1.4.9 client-error-request-entity-too-large .................81
11.1.4.10 client-error-request-URI-too-long...................81 11.1.4.10 client-error-request-URI-too-long .....................81
11.1.4.11 client-error-unsupported-document-format............81 11.1.4.11 client-error-unsupported-document-format ..............81
11.1.4.12 client-error-attribute- not-supported...............81 11.1.4.12 client-error-attribute-not-supported ..................81
11.1.5 Server Error Status Codes................................82 11.1.5 Server Error Status Codes................................82
11.1.5.1 server-error-internal- error........................82 11.1.5.1 server-error-internal- error ..........................82
11.1.5.2 server-error-operation-not-supported................82 11.1.5.2 server-error-operation-not-supported ..................82
11.1.5.3 server-error-service-unavailable....................82 11.1.5.3 server-error-service-unavailable ......................82
11.1.5.4 server-error- version-not-supported.................82 11.1.5.4 server-error-version-not-supported ....................82
11.1.5.5 server-error-device-error...........................83 11.1.5.5 server-error-device-error .............................83
11.1.5.6 server-error-temporary-error........................83 11.1.5.6 server-error-temporary-error ..........................83
11.2 Status Keywords for IPP Operations............................84 11.2 Status Keywords for IPP Operations .........................84
12. APPENDIX C: "document-format" enum values.....................84 12. APPENDIX C: "document-format" enum values.....................84
13. APPENDIX D: "media" keyword values...........................87 13. APPENDIX D: "media" keyword values...........................88
Expires January 14, 1998 Expires January 25, 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 (often based on a simplified printing model which abstracts the many
complex) components of real world printing solutions. Many of these components of real world printing solutions. The Internet is a
systems include features, interfaces, and relationships that are distributed computing environment where requesters of print services
beyond the scope of IPP. IPP has to run in a distributed computing (clients, applications, PC drivers, etc.) cooperate and interact with
environment where requesters of print services (clients, print service providers. This model and semantics document describes
applications, PC drivers, etc.) cooperate and interact with print a simple, abstract model for IPP even though the underlying
service providers. Although the underlying configuration may be a configurations may be complex "n-tier" client/server systems. An
complex n-tier client/server system, an important simplifying step in important simplifying step in the IPP model is to expose only the key
the IPP model is to expose only the key objects and interfaces objects and interfaces required for printing. The model does not
required for printing. The IPP model encapsulates these important include features, interfaces, and relationships that are beyond the
elements into three simple object types: scope of IPP [20].
Printer (Section 2.1) The IPP model encapsulates the important components of distributed
Job (Section 2.2) printing into three object types:
Document (Section 2.3)
- Printer (Section 0)
- Job (Section 2.2)
- 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) and attributes (see section 4). The remainder of this document uses
specific model terminology (such as "attributes", "supports",
"keywords", and "parameters") and conformance terminology (such as
"MANDATORY", "MUST", and "OPTIONAL"). Appendix A defines these terms
as they relate to this document.
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 14, 1998 Expires January 25, 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 36 skipping to change at page 8, line 36
I +--------+--------+ | I +--------+--------+ |
O | | O | |
N +-----------------+ | IPP Printer N +-----------------+ | IPP Printer
| Print Service | | | Print Service | |
+-----------------+ | +-----------------+ |
| --+ | --+
+-----------------+ +-----------------+
| Output Device(s)| | Output Device(s)|
+-----------------+ +-----------------+
IPP Printers encapsulate the functions normally associated with An IPP Printer encapsulates the functions normally associated with
physical output devices along with the spooling, scheduling and physical output devices along with the spooling, scheduling and
multiple device management functions associated with a print server. multiple device management functions often associated with a print
Printers may be registered as entries in a directory where end users server. IPP Printers are optionally registered as entries in a
find and select them based on some sort of filtered and context based directory where end users find and select them based on some sort of
searching. The directory is used to store relatively static filtered and context based searching mechanism. The directory is used
information about the Printer, allowing end users to search for and to store relatively static information about the Printer, allowing end
find Printers that match their search criteria (name, context, printer users to search for and find Printers that match their search criteria
capabilities, etc.). (name, context, printer capabilities, etc.). The more dynamic
information associated with a Printer includes state, currently loaded
and ready media, number of jobs at the Printer, errors, warnings, and
so forth.
IPP clients implement the IPP protocol on the client side and give end IPP clients implement the IPP protocol on the client side, and give
users or programs the ability to query an IPP Printer and submit and end users (or programs) the ability to query an IPP Printer and submit
manage their print jobs. An IPP server is just that part of the IPP and manage their print jobs. An IPP server is just that part of the
Printer that implements the protocol. The rest of the IPP Printer IPP Printer that implements the server-side protocol. The rest of the
implements the application semantics of the print service 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 device.
Expires January 14, 1998 Expires January 25, 1998
All information about the Printer, both static and dynamic IPP Printer implements the application semantics of the print service
information, can be accessed directly from the Printer itself. The itself. The IPP Printer may be embedded in an output device or may be
more dynamic information associated with a Printer includes state, implemented on a host on the network that communicates with the output
currently loaded and ready media, number of jobs on the Printer, device.
errors, warnings, etc. The Printer is optionally represented by an
entry in a directory service. The more static information (name, URI,
location, etc.) are stored with along with the entry in the directory
service to enable filtered directory queries.
When a job is submitted to the Printer, the Printer SHALL create a Job When a job is submitted to the Printer, the Printer creates a Job
object. The end user then interacts with this new Job to query its object. The end user then interacts with this new Job to query its
status and monitor the progress of the job. End users may also cancel status and monitor the progress of the job. End users may also cancel
the Job. The end user is able to register to receive certain events the Job. The end user is able to register to receive certain events
which are then routed using the notification service(s). 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. The
attributes (and values) supported by each object instance describe the attributes (and values) supported by each object instance describe the
implementation (that is the realizable features, functions, and implementation (that is the realizable features, functions, and
characteristics either in software or hardware) for that object characteristics either in software or hardware) for that object
instance. For example, the object type "Printer" is defined as set of instance. For example, the object type "Printer" is defined as set of
attributes that each instance of a Printer object might potentially attributes that each instance of a Printer object might potentially
support. In the same manner, the object type "Job" is defined as a support. In the same manner, the object type "Job" is defined as a
set of attributes that are potentially supported by each instance of a set of attributes that are potentially supported by each instance of a
Job object. 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 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 - "CONDITIONALLY MANDATORY": whether or not the object instance
supports the attribute is determined by a semantic condition. supports the attribute is determined by a semantic condition.
For example, if the implementation behind a given instance of a For example, a Printer object implementation MUST support the
Printer object knows about and is able to support multiple levels "job-priority-supported" attribute if the implementation knows
of job priorities, that instance MUST support the "job-priority- about and is able to realize multiple levels of job priorities.
supported" attribute. An administrator may set the values to be An administrator may set the values to be somewhat more
somewhat more restrictive that what a given implementation might restrictive that what a given implementation might allow, however
allow, however the attribute MUST still be supported. the attribute MUST still be supported.
Expires January 14, 1998 There is no such similar labeling of attribute values. However, if an
implementation supports an attribute, it must support any non-empty
subset 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. The A major component of the IPP model is the Printer object. An instance
capabilities and state of an IPP Printer are described by its of a Printer object implements the IPP protocol. Using the protocol,
end users may query the attributes of the Printer, submit Jobs to the
Printer, determine subsequent states of submitted and queued Jobs, and
cancel Jobs (section 3 describes each of the Printer specific
operations in detail). The actual implementation components behind
the Printer abstraction may take on different forms and different
configurations. However, the model abstraction allows the details of
the configuration of real components to remain transparent to the end
user.
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)
Operations which are invoked on a printer include:
Get-Operations (Section 3.1.1)
Print-Job (section 3.1.2)
Print-URI (Section 3.1.3)
Validate-Job (Section 3.1.4)
Create-Job (section 3.1.5)
Get-Attributes (section 3.1.9)
Get-Jobs (section 3.1.10)
An instance of a Printer object implements the IPP protocol. Using
the protocol, end users may query the attributes of the Printer,
submit jobs to the Printer, determine subsequent states of submitted
and queued jobs, and cancel their own print jobs. The actual
implementation components behind the Printer object abstraction may
take on different forms and different configurations, however, the
details of the configuration of real components are transparent to the
end user.
Since a Printer object is an abstraction of a generic document output Since a Printer object is an abstraction of a generic document output
device and print service provider, an IPP Printer object could be used device and print service provider, an IPP Printer object could be used
to represent any real or virtual device with semantics consistent with to represent any real or virtual device with semantics consistent with
the Printer object. For example, an instance of a Printer object could thePrinter object, such as a fax-out device, an imager, or even a CD
be used to front end a fax-out device, any kind of imager, or even a writer.
CD writer.
Some examples of configurations supporting a Printer object include: Some examples of configurations supporting a Printer object include:
1) An output device, with no spooling capabilities 1) An output device, with no spooling capabilities
2) An output device, with a built-in spooler 2) An output device, with a built-in spooler
3) A print server supporting IPP with one or more associated output 3) A print server supporting IPP with one or more associated output
devices devices
3a) The associated output devices 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 Printer See the following figures for some examples on how to view IPP Printer
objects on top of several print system configurations. The embedded objects implemented on top of various print system configurations.
The embedded case below represents configurations 1 and 2. The hosted
Expires January 14, 1998 and fan-out figures below represent configuration 3.
case below represents configurations 1 and 2. The hosted and fan-out
figures below represent configuration 3.
Expires January 14, 1998 Expires January 25, 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 44 skipping to change at page 11, line 44
+-->| output device | +-->| output device |
any/ | | any/ | |
O +--------+ ########### / +---------------+ O +--------+ ########### / +---------------+
/|\ | client |-IPP-># Printer #--* /|\ | client |-IPP-># Printer #--*
/ \ +--------+ # Object # \ +---------------+ / \ +--------+ # Object # \ +---------------+
########### any\ | | ########### any\ | |
+-->| output device | +-->| output device |
| | | |
+---------------+ +---------------+
2.2 Job Object It is assumed that URIs for IPP Printers are available to end users or
programs that wish to interact with the Printer. Although NOT
A Job object is used to model a job. A job can contain one or more MANDATORY, it is RECOMMENDED that Printers be registered in a
documents. The information required to create a Job object is sent in directory service which end users and programs can interrogate.
"Internet Printing Protocol: Directory Schema"[24] defines the
Expires January 14, 1998 Expires January 25, 1998
a create request from the end user via an IPP client to a Printer. A attributes to be associated with a Printer entry in a directory
create request can be either a Print-Job Request, a Print-URI Request, service.
or a Create-Job Request. The Printer MUST perform validation checks
to verify that the job may indeed be processed. A client MAY send a
Validate-Job Request (with no document data) so that the Printer
performs all validation checks without the overhead of transferring
all of the document data. As an example of some of the validation
checks that are performed, the create request may specify that the
documents within the job are to be printed duplex (on both sides of
the media). However, the Printer might not support such a feature.
Once the Printer validates the submitted information, a Job object is
created. The instance of the Job object is initialized with
information from the create request. If a Create-Job operation is
used to create the Job object, subsequent Send-Document operations are
used to transfer the document data from the client to the IPP Printer.
This model specification defines rules for what is done when: 2.2 Job Object
- optional attributes are missing A Job object is used to model a job. A Job can contain one or more
- there are conflicts between what is supported and what is Documents. The information required to create a Job object is sent in
requested a create request from the end user via an IPP client to an IPP
- there are conflicts between what the client requests via external Printer. Section 3 describes each of the Job specific operations in
attributes in the IPP operation and what the client requests in detail.
embedded instructions in the document page description language
(PDL).
Job attributes are grouped as follows: The characteristics and state of an IPP Job are described by its
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)
The following operations can be invoked on Jobs:
Send-Document (section 3.1.6)
Send-URI (Section 3.1.7)
Cancel Job (section 3.1.8)
Get-Attributes (section 3.1.9)
2.3 Document Object 2.3 Document Object
A Document object consists of either printable data or a reference A Document object consists of either printable data or a reference
(URI) to printable data and a set of Document Attributes (see section (URI) to printable data and a set of Document Attributes (see section
4.4). These Document Attributes only describe the data to be printed; 4.4). These Document attributes only describe the data to be printed;
they do not include any specialized document processing instructions they do not include any specialized document processing instructions.
that apply to only this one Document. All Job Template attributes, All document processing instructions are included as Job level
that isthose attributes that describe desired job processing behavior, attributes (called Job Template attributes), and they apply equally
Expires January 14, 1998
are defined as part of the Job object, therefore, they apply equally
to all Documents within a Job. to all Documents within a Job.
Currently there are no operations defined for Document objects. 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 (the same document
data could be sent to a the same or a different Printer, but the data could be sent to a the same or a different Printer, but the
corresponding Job object would be an identical, but different Job corresponding Job object would be an identical, but different Job
Expires January 25, 1998
object). A Job object contains one or more Documents. If the object). A Job object contains one or more Documents. If the
Document is simply a reference to some print data stream, the Document is simply a reference to some print data stream, the
reference may be used in multiple Documents in the same Job or even in referenced document may be used in multiple Documents in the same Job
different Jobs. If the Document is not just a reference, but an or even in different Jobs, though each Document contains its own copy
of the reference. If the Document is not just a reference, but an
actual stream of print data, the stream is contained in only one actual stream of print data, the stream is contained in only one
Document, although there can be copies of the same document data in Document, although there can be copies of the same document data in
other Documents in the same or different Jobs. 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. 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 In addition to an identifier attribute, instances of Printer and Job
skipping to change at page 15, line 4 skipping to change at page 13, line 35
not constrained to be unique. not constrained to be unique.
To summarize, each instance of Printer and Job objects will have two To summarize, each instance of Printer and Job objects will have two
identifying attributes: identifying attributes:
- "xxx-uri": The unique identifier for this object instance - "xxx-uri": The unique identifier for this object instance
- "xxx-name": The non unique name for this object instance - "xxx-name": The non unique name for this object instance
Document objects sent to an IPP Printer only have names, no Document objects sent to an IPP Printer only have names, no
identifiers. The "document-name" attribute is used to store the name identifiers. The "document-name" attribute is used to store the name
Expires January 14, 1998
of the Document. This name is just of interest within the context of of the Document. This name is just of interest within the context of
a Job; it need not be unique. a Job; it need not be unique.
If Documents are printed by reference, the corresponding document If Documents are printed by reference, the corresponding document
object contains a "document-uri" attribute, but the value of this object contains a "document-uri" attribute, but the value of this
attribute is a reference to the document data to be printed; it is not attribute is a reference to the document data to be printed; it is not
the unique identifier of the Document object itself. the unique identifier of the Document object itself.
3. IPP Operations 3. IPP Operations
Jobs and Printers each have a set of associated operations. End users Jobs and Printers each have a set of associated operations.
or programs invoke these operations using an IPP client. The Operations consist of requests and responses. When a client
operations are: communicates with an IPP object, it issues an operation request to the
URI for that object. Each request carries along with it the input
parameters and any data required to perform the operation. Each
request requires a response from the object indicating success or
failure of the operation including output parameters, status codes,
For a Printer object: Expires January 25, 1998
Get-Operations (section 3.1.1) Print-Job (section 3.1.2) Print- and/or status messages. The representation and encoding of IPP
URI (section 3.1.3) operations, parameters, and attributes is described in "Internet
Validate-Job (section 3.1.4) Printing Protocol: Protocol Specification" [23]. This section of this
Create-Job (section 3.1.5) document describes the IPP operations in terms of their contents and
Get-Jobs (section 3.1.8) semantics including both the request and the response for each
Get-Attributes (section 3.1.9) operation.
For a Job object: The Printer operations are fully defined in section ??:
Send-Document (section 3.1.6)
Send-URI (section 3.1.7)
Cancel-Job (section 3.1.8)
Get-Attributes (section 3.1.9)
When a client communicates with a remote IPP object, it sends an Get-Operations (section 3.2.1)
operation request to the URI for that object. Each request carries Print-Job (section 3.2.2)
along with it the input parameters and data required to perform the Print-URI (section 3.2.3)
specified operation. Each request requires a response from the object Validate-Job (section 3.2.4)
indicating success or failure of the operation including output Create-Job (section 3.2.5)
parameters, status codes, and/or status messages. The representation Get-Jobs (section 3.3.3)
and encoding of the IPP protocol are contained in "Internet Printing Get-Attributes (section 3.3.4)
Protocol: Protocol Specification."[23]
It is assumed that URIs for IPP Printers are available to end users or The Job operations are fully defined in section ??:
programs that wish to invoke Printer operations. Although NOT
MANDATORY, it is RECOMMENDED that Printers be registered in a
directory service which end users and programs can interrogate.
"Internet Printing Protocol: Directory Schema"[24] defines the
attributes to be associated with a Printer entry in a directory
service.
Expires January 14, 1998 Send-Document (section 3.3.1)
3.1 Operation Semantics Send-URI (section 3.3.2)
Cancel-Job (section 3.3.3)
Get-Attributes (section 3.3.4)
In this section, the IPP operations are described in terms of their There are no Document operations.
contents and semantics including both the request and the response for
each operation.
In order to create a new Job object, a client uses one of three 3.1 General Semantics
operations:
- The Print-Job operation: This operation is used if the client 3.1.1 Operation Status Codes and Messages
wants to create a Job with only a single Document and the
document data is included in the request. In this case, the
client "pushes" the document data to the Printer.
- The Print-URI operation: This operation is used if the client Every operation response returns a MANDATORY status code and an
wants to create a Job with only a single Document and only a URI OPTIONAL status message. A status code provides information on the
reference to the document data (not the document data itself) is processing of a request. A message provides a short textual
included in the request. In this case, the Printer "pulls" the description of the status of the operation. The status code is
document data from the location identified by the URI. intended for use by automata and a status message is intended for the
human user. An IPP application (i.e. a browser, GUI, print driver or
gateway) is not required to examine or display the message. Status
codes and suggested corresponding status messages are described in
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.
- The Create-Job operation: This operation is used if the client 3.1.2 Security and Query Operations
wants to create a Job with one or more Documents. 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 with the
operation request (client "pushes" the document data to the
printer), and the Send-URI operation includes only a reference (a
URI) to the document data (the Printer "pulls" the document data
from the referenced location).
A Create-Job operation followed by a only one Send-Document operation In many of these IPP operations, a client supplies a list of
is semantically equivalent to a Print-Job operation, however, for 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
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
returned all requested attributes. The client cannot tell by such a
response whether the requested attribute was present or absent on the
Printer.
3.1.3 Job Creation Operations
In order to create a new Job object, a client issues a create request.
A create request any one of following three operation requests:
- The Print-Job operation: This operation is used by a client that
wants to create a Job with only a single Document. The operation
allows for the client to "push" the document data to the Printer
by including the document data in the request itself.
- The Print-URI operation: This operation is used by a client that
wants to create a Job with only a single Document, however, the
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
that wants to create a Job with multiple Documents. 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
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
semantically equivalent to a Print-Job operation, however, for
performance reasons, the client SHOULD use the Print-Job operation for performance reasons, the client SHOULD use the Print-Job operation for
all single Document Jobs. Throughout this model specification, the all single Document Jobs. Throughout this model specification, the
term "create request" is used to refer to any of these three operation term "create request" is used to refer to any of these three operation
requests. requests.
Every operation response returns a MANDATORY status code and an Also, as the Printer evaluates input parameters and Job Template
OPTIONAL status message (see Section 10). In most cases, if the attributes in a create request at the time the Job is first submitted,
status code indicates an error (the code belongs to either the it makes a decision whether or not to accept or reject the request and
"client-error" or the "server-error" group), there are additional create the Job object. At job submission time, the Printer does not
output parameters returned that are not returned in the successful need to validate the document data or the URI reference to document
case.
In many of these operations, a client supplies a list of attributes to Expires January 25, 1998
be returned in the response. A Printer may be configured, for data (in the case of a Print-URI). However, at job processing time,
security reasons, not to return all attributes that a client requests. the Printer might realize any of the following:
It may even return none of the requested attributes. In such cases,
Expires January 14, 1998 - there an error in the document data and it can not be parsed
the status returned is the same as if the Printer had returned all - the document data is in an unsupported format
requested attributes. The client cannot tell by such a response - the URI reference is incomplete or incorrect
whether the requested attribute was present or absent on the Printer. - the URI reference is no longer valid (i.e., the server hosting
the data might be down)
- or any other job processing error
3.1.1 Get-Operations Operation In this case, the Printer, depending on the error, can set the "job-
state", "job-state-reasons", or "job-state-message" to some
appropriate value.
Since some of the IPP operations defined in this specification are 3.2 Printer Operations
OPTIONAL and therefore some implementations may choose to not
implement support them, this operation is a simple, MANDATORY
operation that all implementations MUST support. The client uses this
operation to query a specific implementation for a list of supported
operations.
3.1.1.1 Get-Operations Request 3.2.1 Get-Operations Operation
The client uses this operation to query a specific implementation for
a list of supported operations. All implementations MUST support this
operation because some of the IPP operations defined in this
specification are OPTIONAL.
3.2.1.1 Get-Operations Request
The Get-Operations Request has no input parameters. The Get-Operations Request has no input parameters.
3.1.1.2 Get-Operations Response 3.2.1.2 Get-Operations Response
The Printer returns the following output parameters as part of the The Printer returns the following output parameters as part of the
Get-Operations Response: Get-Operations Response:
Target Printer ("printer-uri"):
The URI of the target printer.
Supported Operations ("supported-operations"): Supported Operations ("supported-operations"):
A list of the operations that this implementation supports A list of the operations that this implementation supports
(including all MANDATORY operations). The values are taken (including all MANDATORY operations). The values are taken from
from the following set: 'Get-Operations', 'Print-Job', 'Print- the following set: 'Get-Operations', 'Print-Job', 'Print-URI',
URI', 'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get- 'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get-Attributes',
Attributes', 'Send-Document', 'Send-URI', and 'Cancel-Job'. 'Send-Document', 'Send-URI', and 'Cancel-Job'.
Note: Since this list contains all MANDATORY operations ('Get- Note: Since this list contains all MANDATORY operations ('Get-
Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get- Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get-
Attributes', and 'Cancel-Job'), this output parameter will never Attributes', and 'Cancel-Job'), this output parameter will never
be empty. be empty.
3.1.2 Print-Job Operation Expires January 25, 1998
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 sends a Print-Job Request to a Printer and receives a
Print-Job Response from that Printer. The information in a Print-Job Print-Job Response from that Printer. The information in a Print-Job
Request (along with any default information associated with the Request (along with any default information associated with the
Printer) is sufficient for the Printer to create a Job object and then Printer) is sufficient for the Printer to create a Job object and then
process that Job. A Print-Job operation differs from a Print-URI process that Job. A Print-Job operation differs from a Print-URI
operation in that a Print-Job operation contains the document data to operation in that a Print-Job operation contains the document data to
be printed and a Print-URI operation only contains a reference to the be printed and a Print-URI operation only contains a reference to the
document data. document data.
Expires January 14, 1998 3.2.2.1 Print-Job Request
3.1.2.1 Print-Job Request
The following input parameters are part of the Print-Job Request: The following input parameters are part of the Print-Job Request:
"printer-uri" (uri):
The URI of the target printer.
"job-name" (name):
This optional parameter is supplied by the client. If it is not
supplied by the client, the Printer generates a name (see Section
4.3.3).
"best-effort" (boolean):
This parameter identifies the clients desire to accept best
effort printing or not. Best effor printing allows a job to be
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
required. In this case, the client is requesting that the Job be
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: Job Template Attributes:
Expires January 25, 1998
An optional set of Job Template attributes as defined in section An optional set of Job Template attributes as defined in section
4.2. If the client supplies no Job Template attributes in the 4.2. If the client supplies no Job Template attributes in the
Create-Job Request, the Printer uses its default value attributes Print-Job Request, the Printer uses its default value attributes
when processing the job. Since a Print-Job operation is used for when processing the job.
a Job with only one Document, the Document attributes "document-
name" and "document-format" are also supplied by the client. Document Attributes
"document-name" is MANDATORY; "document-format" is OPTIONAL. The client optionally supplies the "document-name" and "document-
format" attributes. If "document-name" is not supplied, the
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
just be a Job Template attribute?
Document Content: Document Content:
The client supplies the document data to be processed. The client supplies the document data to be processed.
The simplest Print-Job Request consists of just the Document Content The simplest Print-Job Request consists of just the Document Content
and nothing else. In this case, the Printer creates a new Job object and nothing else. In this case, the Printer creates a new Job object
with no associated Job Template attributes and the job contains a with no associated Job Template attributes and the job contains a
single Document. 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 When a Printer receives a Print-Job Request, the Printer either
accepts or rejects the request. The Printer accepts the Print-Job accepts or rejects the request. The Printer accepts the Print-Job
Request and creates a Job object if it is able to accept all Job Request and creates a Job object if it is able to accept all Job
Template attributes in the request. The Printer rejects the request Template attributes in the request. The Printer rejects the request
and does not create a Job object if the Printer rejects any Job and does not create a Job object if the Printer rejects any Job
Template attribute in the request. There are six cases to consider Template attribute in the request. There are six cases to consider
when accepting or rejecting Job Template attributes: when accepting or rejecting Job Template attributes:
1. The client supplies a Job Template attribute named "xxx" and the 1. The client supplies a Job Template attribute named "xxx" and the
value supplied by the client is among the values supported by the value supplied by the client is among the values supported by the
Printer (i.e., is among the values of the Printer's "xxx- Printer (i.e., is among the values of the Printer's "xxx-
supported" attribute): The "xxx" Job Template attribute is supported" attribute): The "xxx" Job Template attribute is
accepted. The Printer creates the Job object and associates the accepted. The Printer creates the Job object and associates the
"xxx" attribute with the new Job object using the value supplied "xxx" attribute with the new Job object using the value supplied
by the client. by the client.
2. The client supplies a Job Template attribute but the attribute 2. The client supplies a Job Template attribute but the attribute
is syntactically bad: The Printer SHALL reject the job and return is syntactically bad: The Printer rejects the job and returns the
name of the badly formed attribute (if known) in the attribute in the "unsupported-attributes" output parameter.
"unsupported-attributes" response parameter.
3. The client supplies a Job Template attribute and the attribute 3. The client supplies a Job Template attribute and the attribute
value is not among the values supported by the Printer: This value is not among the values supported by the Printer or the
case depending on the value of the "best-effort' attribute (see Printer does not support the attribute at all: This case depends
Section 4.2.8), tIf the client supplies a "best-effort" of on the value of the "best-effort' parameter. If the client
'false' (or supplies no "best-effort" attribute and the Printer's
default behavior attribute is set to 'false') the Printer SHALL
Expires January 14, 1998 Expires January 25, 1998
reject the Job and return the 'client-error-attribute- supplies a value of 'false'the Printer SHALL reject the Job and
unsupported" error code and the unsupported attribute in the return the 'client-error-attribute-unsupported" error code and
"unsupported-attributes " output parameter. If the client the unsupported attribute in the "unsupported-attributes " output
supplies a "best-effort" of 'true' (or supplies no "best-effort" parameter. If the client supplies a "best-effort" value of
attribute and the Printer's default behavior attribute is set to 'true' the Printer SHALL accept the Job either ignore unsupported
'true') the Printer SHALL accept the Job and substitute supported attributes or substitute supported values for all unsupported
values for all unsupported values supplied by the client. In values supplied by the client. In this case, if everything else
this case, if everything else is ok, the Printer returns a is ok, the Printer returns a "successful-ok-ignored-or-
"successful-ok" status code. The client must query the newly substituted-attributes" status code. The client could later
create Job object to find out if any of the requested values have query the Job object to find which of the Job attributes had been
been modified. ignored or substituted.
4. The client supplies a Job Template attribute and the Printer ISSUE: Does the above satisfy Jim W.'s issue about persistence of
does not support the attribute: The Printer rejects the the best effort value?
attribute. The Printer returns the 'client-error-attribute-
unsupported' error code and the rejected attribute in the
"unsupported-attributes" output parameter.
5. The client does not supply a Job Template attribute, but the 5. The client does not supply a Job Template attribute that is
Printer supports the attribute: The attribute is accepted and supported by the Printer:: If all other attributes are
when the Printer creates the Job object, the Printer SHALL NOT acceepted, the Printer accepts the request and creates the Job
associate the attribute with the new Job object using Printer's object, the Printer does not associate the attribute with the new
default value attribute. When the Printer processes that Job, Job object. When the Printer processes that Job, the Printer uses
the Printer uses the behavior implied by the default value the behavior implied by the default value Printer attribute as
Printer attribute as set at the time of Job processing (not Job set at the time of Job processing (not Job creation). In other
creation). In other words, these rules allow for a Job object to words, these rules allow a client to submit a Job with no Job
be created without implementing some of the Job Template Template attribute and as the Printer processes the Job, the
attributes. As the Printer processes the Job, if the Printer Printer uses its the default value attribute in place of the
supports a corresponding default value attribute for the missing missing Job Template attribute. Suppose the Printer were to
Job Template attribute, the Printer uses the default value. 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. The client does not supply an attribute, and the Printer does 6. Neither the client supplies an attribute nor the Printer
not support the attribute: The Printer accepts the Job. However, supports the attribute: : The Printer accepts the Job, however,
as far as IPP is concerned, the result of processing that Job as far as IPP is concerned, the result of processing that Job
(with respect to the missing attributes) is undefined. In many (with respect to the missing attributes) is undefined.
cases though, this case represents a legacy environment, and even
without IPP attributes, the job will be processed successfully.
For example, the document data might have been 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, both
the output device and the printer driver are unaware of the IPP
protocol, and an intermediate process (which is IPP aware) is
able to submit the job and make sure that it is delivered to the
output device, yet not be aware of all the Job Template
attributes that might possibly be supported.
Expires January 14, 1998 In many cases though, this case represents a legacy environment,
3.1.2.2 Print-Job Response and even without IPP attributes, the Job will be processed
successfully. For example, the document data might have been
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
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
The Printer SHALL return to the client the following output parameters The Printer SHALL return to the client the following output parameters
as part of the Print-Job Response: as part of the Print-Job Response:
Job Identifier ("job-uri"): "job-uri" (uri):
A URI which the client SHALL use for all other operations on this A URI which the client SHALL use for all other operations on this
Job Job
Job Status Attributes: Job Status Attributes:
This includes the following Job attributes: "job-name", "job- This includes the following Job attributes: "job-name", "job-
state", and "job-state-reasons". The value of each attribute is state", and "job-state-reasons". The value of each attribute is
taken from a "snapshot" of the new Job object sometime after the taken from a "snapshot" of the new Job object sometime after the
time the Printer receives the print request until just prior to time the Printer receives the print request until just prior to
returning the response to the client. Since the "job-state- returning the response to the client. Since the "job-state-
message" attribute is OPTIONAL, it MAY be included in the message" attribute is OPTIONAL, it MAY be included in the
response, but it is NOT REQUIRED. response, but it is NOT REQUIRED.
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.
Unsupported Attributes: Unsupported Attributes:
If there is an error, this output parameter contains a set of This is a set of attributes and attribute values that are
attributes that are unsupported. This output parameter is not unsupported. This output parameter is only returned in the
used if the status code indicates that there were no errors. response if the status code indicates that there was such an
error.
The simplest response consists of the just the job identifier ("job- The simplest response consists of the just the job identifier ("job-
uri") and Job Status attributes output parameters with a status code uri") and Job Status attributes output parameters with a status code
of "successful-ok". of "successful-ok".
3.1.3 Print-URI Operation 3.2.3 Print-URI Operation
This operation is identical to the Print-Job operation (section 3.1.2)
except that a client supplies a reference (a URI) to the document data
to be printed rather than the document data itself. It is up to the
IPP server to interpret the URI and subsequently "pull" the document
from the source referenced by the URI string.
3.1.3.1 Print-URI Request
The following elements are part of the Print-URI Request:
Expires January 14, 1998
Job Template Attributes:
(see section 3.1.2.1)
Document URI ("document-uri"):
The client supplies a URI reference to the document data rather
than the document data itself.
3.1.3.2 Print-URI Response
The Printer SHALL return to the client the following output parameters
as part of the Print-URI Response:
Job Identifier ("job-uri"):
(see section 3.1.2.2)
Job Status:
(see section 3.1.2.2)
Unsupported Attributes:
(see section 3.1.2.2)
3.1.4 Validate-Job Operation
This operation is identical to the Print-Job operation (section 3.1.2)
except that a client supplies no document data or any reference to
document data and the Printer allocates no resources (i.e., a new Job
object) to process the job. The VALIDATE request is only used to
verify capabilities of a printer object against whatever input
parameters are supplied in the Validate-Job request.
3.1.4.1 Validate-Job Request
The following elements are part of the Validate-Job Request:
Job Template Attributes:
(see section 3.1.2.1)
3.1.4.2 Validate-Job Response
The Printer SHALL return to the client the following output parameters This operation is identical to the Print-Job operation (section 3.2.2)
as part of the Validate-Job Response: except that a client supplies a URI reference to the document data
using the "document-uri" (uri) input parameter rather than including
the document data itself. It is up to the IPP server to interpret the
URI and subsequently "pull" the document from the source referenced by
the URI string.
Expires January 14, 1998 Expires January 25, 1998
Unsupported Attributes: 3.2.4 Validate-Job Operation
(see section 3.1.2.2)
Note: In this case, no "job-uri" or Job Status output parameters are This operation is similar to the Print-Job operation (section 3.2.2)
returned. 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
process the job. This operation is used only to verify capabilities
of a printer object against whatever input parameters are supplied in
the Validate-Job request. There is no "job-uri" output parameter
returned in the Validate-Job Response. If the client supplies a
"document-uri" input parameter, the Printer SHOULD only validate the
syntax of the URI rather than follow the reference and validate the
contents of the reference. The Printer may choose to validate the
reference, however, later at job processing time, the reference will
need to be validated yet again. If all is well, the Printer returns
the status code "successful-ok".
3.1.5 Create-Job Operation 3.2.5 Create-Job Operation
This operation is similar to the Print-Job operation (section 3.1.2) This operation is similar to the Print-Job operation (section 3.2.2)
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. It is possible by one or more Send-Document or Send-URI operations. If a Printer
for a given implementation to only support either Send-Document or object supports the Create-Job operation, it MUST also support either
Send-URI but not both. In that case, a client SHOULD NOT use an the Send-Document operation or the Send-URI operation or both. Since
unsupported operation. If a Printer supports the Create-Job a client can use the Get-Operations operation, a client SHOULD NOT
operation, it MUST also support one of the Send-Document or Send-URI attempt to use an unsupported operation.
operations or both.
3.1.5.1 Create-Job Request
The following elements are part of the Create-Job Request:
Job Template Attributes:
(see section 3.1.2.1)
3.1.5.2 Create Job Response
The Printer returns to the client the following output parameters as
part of the Create-Job Response:
Job Identifier ("job-uri"):
(see section 3.1.2.2)
Job Status:
(see section 3.1.2.2)
Unsupported Attributes:
(see section 3.1.2.2)
Expires January 14, 1998
3.1.6 Send-Document 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
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
operation.
3.1.6.1 Send-Document Request
The client submits the request to a Job URI.
The following abstract data types are part of the Send-Document
Request:
Document Attributes:
A set of Document Description attributes (section 4.4).
Last Document Flag ("last-document"):
This is a boolean flag that is set to 'true' if this is the last
Document for the Job.
Document Content:
The client supplies the document data.
3.1.6.2 Send-Document Response
The following output parameters are part of the Send-Document
Response:
Job Status:
(see section 3.1.2.2)
Unsupported Attributes:
(see section 3.1.2.2)
3.1.7 Send-URI Operation
This operation is identical to the Send-Document operation (see
section 3.1.6) except that a client supplies a reference (a URI) to
the document data to be printed rather than the document data itself.
It is up to the IPP server to interpret the URI and subsequently
"pull" the document from the source referenced by the URI string.
Expires January 14, 1998
3.1.7.1 Send-URI Request
The client submits the request to a Job URI.
The following abstract data types are part of the Send-URI Request:
Document Attributes:
(see section 3.1.6.1)
Last Document Flag ("last-document"):
(see section 3.1.6.1)
Document Reference ("document-uri"):
The client supplies a URI reference to the document data.
3.1.7.2 Send-URI Response
The following output parameters are part of the Send-URI Response:
Job Status:
(see section 3.1.6.2)
Unsupported Attributes:
(see section 3.1.6.2)
3.1.8 Cancel Job Operation
This operation allows a user to cancel one specific Print Job any time
after the print job has been established on the Printer. Some pages
may be printed before a job is terminated if printing has already
started when the Cancel Job operation is received. Only the end user
who is also the job originator ("job-originating-user" Job attribute)
can cancel the job using IPP 1.0.
3.1.8.1 Cancel-Job Request
The client submits the request to a Job URI.
The following abstract data types are part of the Cancel Job Request:
Message ("message"):
Optional message to the operator
Expires January 14, 1998
3.1.8.2 Cancel-Job Response
There are no output parameters other Cancel Job Response other than
the Status Code and optional Status Message.
3.1.9 Get-Attributes Operation 3.2.6 Get-Attributes Operation
The Get-Attributes operation allows a client to obtain information The Get-Attributes operation allows a client to obtain information
from a Printer or Job object. The client supplies as an operation from a Printer object. The client supplies as an operation parameter
parameter the set of attribute names and/or attribute group names that the set of attribute names and/or attribute group names that the
the requester is interested in. The Printer returns a corresponding requester is interested in. The Printer returns a corresponding
attribute set in the response with the appropriate attribute values attribute set in the response with the appropriate attribute values
filled in for each requested attribute (either explicitly named in the filled in for each requested attribute (either explicitly named in the
request or implicitly included by naming an attribute group). request or implicitly included by naming an attribute group).
3.1.9.1 Get-Attributes Request
When querying a Printer object, the client submits the Get-Attributes
request to a Printer URI. When querying a Job object, the client
submits the Get-Attributes request to a Job URI.The following input
parameters are part of the Get-Attributes Request whether or not the
request is to a Printer URI or a Job URI:
Requested Attributes ("requested-attributes") :
An optional set of attribute names (without values) or attribute
group names in whose values the requester is interested. If the
client omits this input parameter, the Printer SHALL respond as
if this input parameter had been supplied with a value of 'all'.
Attributes may be requested by name or by group name. 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 Job Description attributes in Section
4.3.
For Printers, the attribute groups include: For Printers, the attribute groups include:
- 'job-template': all of the Job Template attributes that apply - 'job-template': all of the Job Template attributes that apply to
to a Printer object (the last two columns of the table in a Printer object (the last two columns of the table in Section
Section 4.2). 4.2).
- 'printer-description': the attributes specified in Section 4.5. - 'printer-description': the attributes specified in Section 4.5.
Expires January 14, 1998
There are also special groups: There are also special groups:
Expires January 25, 1998
- 'none': no attributes of the specified object. 'none' is - 'none': no attributes of the specified object. 'none' is
primarily useful in Get-Jobs, but can be used as a "ping" with primarily useful in Get-Jobs, but can be used as a "ping" with
the Get-Attributes operation. the Get-Attributes operation.
- 'all': all supported attributes - 'all': all supported attributes
It is NOT REQUIRED that a Printer support ALL attributes It is NOT REQUIRED that a Printer support all attributes belonging to
belonging to a group, however it is MANDATORY that a Printer a group, however it is MANDATORY that each Printer implementation
implementation understand these group names. understand all group names.
Document Attributes ("document-name", "document-format", and There is one group named 'document-attributes' which consists of the
"document-uri", see Section 4.4) may also be requested either Document Attributes described in section 4.4 ("document-name",
individually or as a group named 'document-attributes'. If any "document-format", and "document-uri"). These attributes may be
or all of these attributes are requested, in the response, they requested either individually or as a group. If any or all of these
are treated as multi-valued attributes (one value for each attributes are requested, in the response, they are treated as multi-
Document in the Job). If there are 5 Documents in the Job, then valued attributes (one value for each Document in the Job). For
each returned Document attribute MUST have 5 values: the set of example, there are 5 Documents in the Job, then each returned Document
first values from each attribute correspond to the first attribute MUST have 5 values: the set of first values from each
Document, the set of second values correspond to the second attribute correspond to the first Document, the set of second values
Document, and so on. In order to maintain the same number of correspond to the second Document, and so on. In order to maintain
values in each returned attribute, if there is no value for the the same number of values in each returned attribute, if there is no
"document-format" attribute for one of the Documents, the value value for either the "document-format" or "document-uri" attributes, a
'other' is returned in its place, and if there is no value for special "out of band" value of 'none' is returned in its place. This
the "document-uri" attribute for one of the Documents, the out of band value requires an encoding described in the Protocol
special URI 'none' is returned in its place. For example if all Specification document [23].
Document attributes are requested, and there are 3 Documents is a
Job, the returned attributes might look like: 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-name = 'Document 1', 'Document 2', Document 3'
document-format = 'langPS', 'other', 'langPCL' document-format = 'langPS', 'none', 'langPCL'
document-uri = ' ftp://some.domain.com/file1.ps', 'none', 'none' 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 The following input parameters are part of the Get-Attributes Request
only when querying a Printer: when the request is directed to a Printer object:
Document Format ("document-format") : "printer-uri" (uri):
The URI of the target printer.
This input parameter conditions the Printer attributes and values "requested-attributes" (1setOf keyword) :
that might depend on the document format. The Printer SHALL An optional set of attribute names (without values) or attribute
return only (1) those attributes that are supported and (2) the group names in whose values the requester is interested. If the
attribute values that are supported for the specified document client omits this input parameter, the Printer SHALL respond as
format. By specifying the document format, the client can if this input parameter had been supplied with a value of 'all'.
eliminate the attributes and values that are not supported for a
specific document format. For example, a Printer might have
multiple interpreters to support both 'langPS' (for PostScript)
and 'langPCL' (for PCL) documents. However, for only one of
those interpreters might the Printer be able to support "number-
up" with values of 'one', 'two', and 'four'. For the other
Expires January 14, 1998 Expires January 25, 1998
"document-format" (enum) :
This input parameter is useful for determining the set of
supported attribute values which relate to the requested document
format. The Printer SHALL return only (1) those attributes that
are supported and (2) the attribute values that are supported for
the specified document format. By specifying the document
format, the client can get the Printer to eliminate the
attributes and values that are not supported for a specific
document format. For example, a Printer might have multiple
interpreters to support both 'langPS' (for PostScript) and
'langPCL' (for PCL) documents. However, for only one of those
interpreters might the Printer be able to support "number-up"
with values of 'one', 'two', and 'four'. For the other
interpreter it might be able to only support "number-up" with a interpreter it might be able to only support "number-up" with a
value of 'one'. 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.
If this input parameter is sent in a Get-Attribute Request sent 3.2.6.2 Get-Attributes Response
to a Job URI, the request is rejected with a status code of
'client-error-not-possible'.
3.1.9.2 Get-Attributes Response
The Printer returns the following response parameters as part of the The Printer returns the following response parameters 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 This is a the set of requested attributes and their current
values. The Printer ignores (does not respond with) any values. The Printer ignores (does not respond with) any
requested attribute which is not supported. requested attribute which is not supported.
3.1.10 Get-Jobs Operation 3.2.7 Get-Jobs Operation
The Get-Jobs operation allows a client to retrieve 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 more than one object. returns attributes from possibly more than one object (see the
description of attribute groups in section 3.2.6).
3.1.10.1 Get-Jobs Request Expires January 25, 1998
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 input parameters are part of the Get-Jobs Request:
Expires January 14, 1998 "printer-uri" (uri):
Limit ("limit"): The URI of the target printer.
"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
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 jobs in the example, if the limit if 50, and there are 75 spooled jobs, only
'completed' state and 25 in the 'pending state' and the client the first 50 jobs are returned; the other 25 jobs are not
requests first 'completed jobs' and then 'pending' jobs, only the returned.
oldest 50 'completed' jobs are returned. The other 25
'completed' jobs are not returned and neither are any of the
'pending' jobs returned.
Requested Job Attributes ("requested-attributes"): "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.1.10.2 Get-Jobs Response 3.2.7.2 Get-Jobs Response
The Printer SHALL return the following output parameters as part of The Printer SHALL return the following output parameters as part of
the Get-Jobs Response: the Get-Jobs Response:
Req uested Attributes: Req uested Attributes:
The result includes zero or more Job objects each with zero or The result includes zero or more Job objects each with zero or
more attributes. Jobs are returned in the following order: First more attributes. Jobs are returned in the following order: First
all active Jobs (Jobs in the 'pending', 'processing', 'pending- all active Jobs (Jobs in the 'pending', 'processing', 'pending-
held', and 'processing-stopped' states) are returned oldest to held', and 'processing-stopped' states) are returned oldest to
newest (with respect to expected completion time) followed by all newest (with respect to expected completion time) followed by all
completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled' completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled'
states) newest to oldest (with respect to actual completion states) newest to oldest (with respect to actual completion
time). Jobs that are in the 'pending-held' state SHALL appear in time). Jobs that are in the 'pending-held' state SHALL appear in
their position as if they were 'pending' (otherwise, a user might their position as if they were 'pending' (otherwise, a user might
be confused by Jobs that move from 'pending-held' to 'pending' as be confused by Jobs that move from 'pending-held' to 'pending' as
seeming to jump ahead in the queue). seeming to jump ahead in the queue).
3.2 Operation Status Codes and Messages Expires January 25, 1998
3.3 Job Operations
An operation status code provides information on the processing of a 3.3.1 Send-Document Operation
request. A message provides a short textual description of the status
Expires January 14, 1998 Once a Job object has been created using a Create-Job operation
of the operation. The status code is intended for use by automata and (returning a "job-uri"), a client directs a Send-Document operation to
a status message is intended for the human user. An IPP application the newly create Job object. The operation adds a new Document to the
(i.e. a browser, GUI, print driver or gateway) is not required to Job object. An entire document MUST be sent in a single Send-Document
examine or display the message. Status codes and suggested Request.
corresponding status messages are described in section 11..
3.3.1.1 Send-Document Request
The client submits the request to a Job URI.
The following abstract data types are part of the Send-Document
Request:
"job-uri" (uri):
The URI of the target Job.
Document Attributes:
An optional set of Document Description attributes (section 4.4).
Last Document Flag ("last-document"):
This is a boolean flag that is set to 'true' if this is the last
Document for the Job.
Document Content:
The client supplies the document data.
3.3.1.2 Send-Document Response
The following output parameters are part of the Send-Document
Response:
Job Status:
(see section 3.2.2.2)
Unsupported Attributes:
(see section 3.2.2.2)
3.3.2 Send-URI Operation
This operation is identical to the Send-Document operation (see
section 3.3.1) except that a client supplies a URI reference
("document-uri") rather than the document data itself. It is up to
Expires January 25, 1998
the IPP server to interpret the URI and subsequently "pull" the
document from the source referenced by the URI string.
3.3.3 Cancel Job Operation
This operation allows a user to cancel one specific Print Job any time
after the print job has been established on the Printer. Some pages
may be printed before a job is terminated if printing has already
started when the Cancel Job operation is received. The Printer
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
The client submits the request to a Job URI.
The following abstract data types are part of the Cancel Job Request:
"job-uri" (uri):
The URI of the target Job.
"message" (text):
Optional message to the operator
3.3.3.2 Cancel-Job Response
There are no output parameters other Cancel Job Response other than
the Status Code and optional Status Message.
3.3.4 Get-Attributes Operation
The Get-Attributes operation allows a client to obtain information
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
than a Job URI and there is no Document Format input parameter used
for querying a Job object.. In an input parameter, the client supplies
the set of attribute names and/or attribute group names that the
requester is interested in.
3.3.4.1 Get-Attributes Request
Expires January 25, 1998
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]
skipping to change at page 29, line 38 skipping to change at page 27, line 32
"keyword" (see section 10.2.1). The keyword is included in the "keyword" (see section 10.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 The following table shows the basic syntax types that a client and
server SHALL be able to handle. server SHALL be able to handle.
text: a sequence of characters, length: 0 to 4095, UTF8 text: a sequence of characters, length: 0 to 4095, where each
characters. This syntax type is used for free form human character is a member of the UCS-2 coded character set.. This
readable text intended for human consumption. syntax type is used for free form human readable text intended
for human consumption. The default encoding for attributes of
name: a sequence of characters, length: 1 to 255, UTF8 characters. type "text" is the UTF8 encoding rules. However, if the
This syntax type is used for referencing some object or entity attribute "content-char-set" is set to a value of type "char-set"
via a user-friendly string, such as a Printer name, a document then that value describes the encoding rules used for text
name, a user name, or a host name. attributes.
fileName: a sequence of characters, length: 1 to 1024, UTF8 name: this is the same a "text" except that the sequence of
characters. This syntax type is used for referencing some file. characters is of length 1 to 255 This syntax type is used for
The limit is the same as in POSIX and Microsoft NT. 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.
Expires January 14, 1998
keyword: a sequence of characters, length: 1 to 255, containing keyword: a sequence of characters, length: 1 to 255, containing
only the characters ASCII lowercase letters ("a" - "z"), ASCII only the characters ASCII lowercase letters ("a" - "z"), ASCII
digits ("0" - "9"), hyphen ("-"), and underscore ("_"). The digits ("0" - "9"), hyphen ("-"), dot ("."), and underscore
first character MUST be an ASCII lowercase letter. This syntax ("_"). The first character MUST be an ASCII lowercase letter.
type is used for enumerating semantic identifiers of entities in This syntax type is used for enumerating semantic identifiers of
the abstract protocol (specified in this document). These
entities can be attribute names or values of attributes. When a Expires January 25, 1998
keyword is used to represent an attribute (its name), it MUST be entities in the abstract protocol (specified in this document).
unique within the full scope of IPP objects and attributes. When These entities can be attribute names or values of attributes.
a keyword is used to represent a value of an attribute, it MUST When a keyword is used to represent an attribute (its name), it
be unique just within the scope of that attribute. That is, the MUST be unique within the full scope of IPP objects and
same keyword can not be used for two different values within the attributes. When a keyword is used to represent a value of an
same attribute to mean two different semantic ideas. However, attribute, it MUST be unique just within the scope of that
the same keyword can be used across two or more attributes, attribute. That is, the same keyword can not be used for two
representing different semantic ideas for each attribute. 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 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 to 2**31 - 1. Each value has an associated keyword name. Each
attribute (whose syntax is enum) enumerates the values that are attribute (whose syntax is enum) enumerates the values that are
defined for the attribute. The enum type is used for attributes defined for the attribute. The enum type is used for attributes
for which there are enum values assigned by other standards, such for which there are enum values assigned by other standards, such
as SNMP MIBs. A number of attribute enum values in this as SNMP MIBs. A number of attribute enum values in this
specification are also used for corresponding attributes in the specification are also used for corresponding attributes in the
IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are
not used for attributes to which the system administrator may not used for attributes to which the system administrator may
skipping to change at page 30, line 46 skipping to change at page 28, line 42
6. 6.
uri: a sequence of characters as defined in rfc1738 and rfc1808. uri: a sequence of characters as defined in rfc1738 and rfc1808.
This syntax type is used for carrying Universal Resource This syntax type is used for carrying Universal Resource
Identifiers. Identifiers.
uriScheme: a sequence of characters representing the URI Scheme. uriScheme: a sequence of characters representing the URI Scheme.
These include 'http' for HTTP schemed URIs (e.g., http://...), These include 'http' for HTTP schemed URIs (e.g., http://...),
and 'ftp' for FTP schemed URIs (e.g., ftp://...). and 'ftp' for FTP schemed URIs (e.g., ftp://...).
locale: a standard identifier for human language and optionally a human-language: a standard identifier for human language and
country. The values for this syntax type are taken from RFC 1766 optionally a country. The values for this syntax type are taken
[26]. RFC 1766 does not have provision for expressing the coded from RFC 1766 [26]. RFC 1766 does not have provision for
character set component of a locale. The coded character set expressing the coded character set component of a locale. The
used in the IPP protocol SHALL be UTF-8 [28]. "content-char-set" attribute contains a value which represents
the encoding rules used. If "content-char-set" is not supported,
ISSUE: The term 'locale' usually includes country, language, and the coded character set used in the IPP protocol MUST be UTF-8
coded character set. But our data type and RFC 1766 do not [28].
Expires January 14, 1998 char-set: a standard identifier the character set used in the
include coded character set. Should we change the name from encoding of attributes of type "text". The values for this syntax
'locale' to 'human-language' and the corresponding attributes type are taken from RFC 2130 [31].
from "user-locale" to "user-language", and "printer-locale" to
"printer-language" (though printer language is what IANA
registers for our document formats)?
Expires January 25, 1998
octetString: a sequence of octets. This syntax type is used for octetString: a sequence of octets. This syntax type is used for
opaque data, such as the document-content. opaque data, such as the document-content.
boolean: two values of 'true' and 'false'. This syntax type is boolean: two values of 'true' and 'false'. This syntax type is
like a keywordSet, but there are only two values. Note: An like a keywordSet, but there are only two values. Note: An
application might use a checkbox for an attribute with this application might use a checkbox for an attribute with this
syntax type. syntax type.
integer: an integer value that is in the range from -2**31 to integer: an integer value that is in the range from -2**31 to
2**31 - 1. Each attribute specifies the range constraint 2**31 - 1. Each attribute specifies the range constraint
explicitly if the range is different from the full range of explicitly if the range is different from the full range of
possible integer values (e.g., 0 - 100 for the "job-priority" possible integer values (e.g., 0 - 100 for the "job-priority"
attribute). attribute).
dateTime: a standard, fixed length representation of date and time dateTime: a standard, fixed length representation of date and time
(to the nearest second) as defined in RFC 1123 [27]. For as defined in RFC 1514 [32] and RFC 1903 [33].
example, Sun, 06 Nov 1994 08:49:37 GMT. This is a fixed-length
subset of that defined by RFC 1123 (an update to RFC 822). All
values MUST be represented in Greenwich Mean Time (GMT). This is
indicated by the inclusion of "GMT" as the three-letter
abbreviation for time.
seconds: a non-negative integer with implicit units of seconds.
This is used for relative time.
milliseconds: a non-negative integer with implicit units of resolution: a special syntax used only for "printer-resolution"
milliseconds. This is used for relative time. 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 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. for multi-valued attributes, whose value is a set of values.
Note: The syntax type is called "1setOf" to indicate that set of Note: The syntax type is called "1setOf" to indicate that set of
values SHALL NOT be empty (a set of size 0). values SHALL NOT be empty (a set of size 0).
rangeOf X: a range of value of type X. This syntax type is used rangeOf X: a range of value of type X. This syntax type is used
for ordered values (numeric, lexical, etc.) such as integers. for ordered values (numeric, lexical, etc.) such as integers.
4.1.1 Attribute Extensibility 4.1.1 Attribute Extensibility
This document uses prefixes to the "keyword" and "enum" basic This document uses prefixes to the "keyword" and "enum" basic
syntax type in order to communicate extra information to the reader syntax type in order to communicate extra information to the reader
through its name. This extra information need not be represented in through its name. This extra information need not be represented in
Expires January 14, 1998
an implementation because it is unimportant to a client or Printer. an implementation because it is unimportant to a client or Printer.
The table below describes the prefixes and their meaning. The table below describes the prefixes and their meaning.
"type1": The IPP standard must be revised to add a new keyword or "type1": The IPP standard must be revised to add a new keyword or
a new enum. No private keywords or enums are allowed. 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 "type2": Implementers can, at any time, add new keyword or enum
values by proposing them to the IPP working group for values by proposing them to the IPP working group for
registration (or an IANA-appointed registry advisor after the IPP registration (or an IANA-appointed registry advisor after the IPP
working group is no longer certified) where they are reviewed for working group is no longer certified) where they are reviewed for
approval. IANA keeps the registry. approval. IANA keeps the registry.
"type3": Implementers can, at any time, add new keyword and enum "type3": Implementers can, at any time, add new keyword and enum
values by submitting a registration request directly to IANA, no values by submitting a registration request directly to IANA, no
IPP working group or IANA-appointed registry advisor review is IPP working group or IANA-appointed registry advisor review is
required. required.
"type4": Anyone (system administrators, system integrators, site "type4": Anyone (system administrators, system integrators, site
managers, etc.) can, at any time, add new installation-defined managers, etc.) can, at any time, add new installation-defined
values (keywords or new enum values) to a local system. Care values (keywords or new enum values) to a local system. Care
SHOULD be taken by the implementers to see that keywords do not SHOULD be taken by the implementers to see that keywords do not
conflict with other keywords defined by the standard or as conflict with other keywords defined by the standard or as
defined by the implementing product. There is no registration or defined by the implementing product. There is no registration or
approval procedure for type 4 keywords. approval procedure for type 4 keywords.
Each of the four types above assert some sort of registry or review By definition, each of the four types above assert some sort of
process in order to be valid extensions. "type1" extensions are only registry or review process in order for extensions to be considered
valid if the specification is updated, "type2" extensions are only valid. Each higher level (1, 2, 3, 4) tends to be decreasingly less
valid if the IPP working group or an IANA approved review process stringent than the previous level. Therefore, any typeN value MAY be
approves them, "type3" extensions are only valid if IANA registers the registered using a process for some typeM where M is less than N,
value with no review process required, and "type4" extensions are however such registration is NOT REQUIRED. For example, a type4 value
always valid (there is no review or registration process required). MAY be registered in a type 1 manner (by being included in a future
Any typeN value MAY be registered using a process for some typeM where version of an IPP specification) however it is NOT REQUIRED.
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 This specification defines keyword and enum values for all of the
above types, including type4 keywords. above types, including type4 keywords.
For private (unregistered) keyword extensions, implementers SHOULD use For private (unregistered) keyword extensions, implementers SHOULD use
keywords with a suitable distinguishing prefix, such as "xxx-" where keywords with a suitable distinguishing prefix, such as "xxx-" where
xxx is the (lowercase) company name registered with IANA for use in xxx is the (lowercase) fully qualified company name registered with
domain names [30]. IANA for use in domain names [30].
Note: RFC 1035 [30] indicates that while upper and lower case letters Note: RFC 1035 [30] indicates that while upper and lower case letters
are allowed in domain names, no significance is attached to the case. are allowed in domain names, no significance is attached to the case.
Expires January 14, 1998
That is, two names with the same spelling but different case are to be That is, two names with the same spelling but different case are to be
treated as if identical. Also, he labels in a domain name must follow treated as if identical. Also, the labels in a domain name must
the rules for ARPANET host names: They must start with a letter, end follow the rules for ARPANET host names: They must start with a
with a letter or digit, and have as interior characters only letters, letter, end with a letter or digit, and have as interior characters
digits, and hyphen. Labels must be 63 characters or less. only letters, digits, and hyphen. Labels must be 63 characters or
less. Lables are separated by the "." character.
ISSUE: Since "." is allowed in fully qualified domain names we must
state that "." gets mapped to "_" for keywords or we must allow for
"." in keywords. Also, why do we not allow uppercase in keywords?
Should we make keyword be much more broad (all printable ASCII) now
that we have binary delimeters?
For private (unregistered) enum extension, implementers SHOULD values Expires January 25, 1998
in the reserved integer range (see "enum"). For private (unregistered) enum extension, implementers SHOULD use
values in the reserved integer range (see "enum").
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. Take for
example, a generic Job Template attribute called "xxx": example, a generic Job Template attribute called "xxx":
1. "xxx" is optionally supplied by the client in a create request. 1. "xxx" is optionally supplied by the client in a create request.
If "xxx" is supplied, the client is specifying that the Printer If "xxx" is supplied, the client is specifying that the Printer
SHALL apply a specific job processing behavior to this job while SHALL apply a specific job processing behavior to this job while
processing the Job. When "xxx" is not supplied by the client, processing the Job. When "xxx" is not supplied by the client,
the the Printer applies thedefault job processing behavior. the Printer applies the default job processing behavior.
2. "xxx-supported" is a Printer attribute that describes which 2. "xxx-supported" is a Printer attribute that describes which
behaviors are supported by a Printer. "xxx-supported" is a behaviors are supported by a Printer. "xxx-supported" is a
CONDITIONALLY MANDATORY attribute, that is the "xxx-supported" CONDITIONALLY MANDATORY attribute, that is the "xxx-supported"
attribute is MANDATORY if the Printer is capable of realizing one attribute is MANDATORY if the Printer is capable of realizing two
or more of the behaviors associated with the attribute and its or more of the behaviors associated with the attribute and its
values. A client can query the Printer and find out what values. A client can query the Printer and find out what
behaviors are supported by inspecting the values of the "xxx- behaviors are supported by inspecting the values of the "xxx-
supported" attribute. supported" attribute.
3. The Printer also supports a default value attribute named "xxx". 3. The Printer also supports a default value attribute named "xxx".
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
(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 Along with the supported attribute, the default value attribute
is also CONDITIONALLY MANDATORY. However, if the Printer is also CONDITIONALLY MANDATORY. However, if the Printer
supports either the "xxx" default value attribute or the "xxx- supports either the "xxx" default value attribute or the "xxx-
supported" attribute, the Printer MUST support the other and vice supported" attribute, the Printer MUST support both.
versa.
Expires January 14, 1998
4. If a client application wishes to present an end user with a 4. If a client application wishes to present an end user with a
list of supported and default values from which to choose, the list of supported and default values from which to choose, the
client program SHOULD query the Printer for the supported and client program SHOULD query the Printer for the supported and
default value attributes. The values that the client then default value attributes. The values that the client then
supplies in the create request will all fall within the supported supplies in the create request will all fall within the supported
values of the Printer. When querying the Printer, the client MAY values of the Printer. When querying the Printer, the client MAY
enumerate each attribute by name in the Get-Attributes Request, enumerate each attribute by name in the Get-Attributes Request,
or the client MAY just name the "printer-job-template" group in or the client MAY just name the "job-template" group in order to
order to get the complete set of supported and default value get the complete set of supported and default value attributes
attributes which are supported. which are supported.
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. The default value contains a range of supported priority values which is equal to or
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 one in the create request. If the
client does supply the "job-priority" attribute, the Printer validates client does supply the "job-priority" attribute, the Printer validates
the value to make sure that it falls within the range of supported the value to make sure that it falls within the range of supported
values. If the client-supplied value is supported, the Job object is values. If the client-supplied value is supported, the Job object is
created and the "job-priority" attribute is populated with that value. created and the "job-priority" attribute is populated with that value.
The Job object, when queried, returns the value supplied by the The Job object, when queried, returns the value supplied by the
client. If the client does not supply a "job-priority" value in the client. If the client does not supply a "job-priority" value in the
create request, the Job object is created, but no "job-priority" create request, the Job object is created, but no "job-priority"
attribute is associated with the Job. The client queries the attribute is associated with the Job. The client queries the
Printer's default value "job-priority" value to find out at what 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 The table below summarizes the names, relationships, and conformance
requirements for all Job Template attributes. The following general requirements for all Job Template attributes. The following general
rules apply to implementation requirements: rules apply to implementation requirements:
1. In a create request, all Job Template attributes are OPTIONAL. 1. In a create request, all Job Template attributes are optionally
supplied by the client.
2. In a Printer Object, all supported attributes ("xxx-supported") 2. In a Printer Object, all supported attributes ("xxx-supported")
are CONDITIONALLY MANDATORY. are CONDITIONALLY MANDATORY.
3. All Printer default value attributes ("xxx") are CONDITIONALLY 3. All Printer default value attributes ("xxx") are CONDITIONALLY
MANDATORY. MANDATORY.
Note: If the Printer implements either the default value attribute Note: If the Printer implements either the default value attribute
or the supported values attribute, the Printer MUST also or the supported values attribute, the Printer MUST also
implement the other and vice versa. implement the other and vice versa.
The table only shows exceptions to the above rules. The first column 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 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 14, 1998 Expires January 25, 1998
attribute in the Job object (in the create request, the same name and
syntax is used). 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 the attribute is MANDATORY.
Expires January 14, 1998
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| Job |Printer: Default Value| Printer: Supported | | Job |Printer: Default Value| Printer: Supported |
+===================+======================+======================+ +===================+======================+======================+
| job-name | No | No |
| (name, MAN) | | |
+-------------------+----------------------+----------------------+
| 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 |
|(1setOf uri) | |-supported | |(1setOf uri) | |-supported |
| | |(1setOf uri scheme) | | | |(1setOf uriScheme) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-priority | job-priority |job-priority-supported| | job-priority | job-priority |job-priority-supported|
| (integer 1-100) | (integer 1-100) |(rangeOf integer | | (integer 1-100) | (integer 1-100) |(rangeOf integer |
| | | 1-100) | | | | 1-100) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-hold-until | job-hold-until | job-hold-until- | | job-hold-until | job-hold-until | job-hold-until- |
| (type4 keyword) | (type4 keyword) | supported | | (type4 keyword) | (type4 keyword) | supported |
| | |(1setOf type4 keyword)| | | |(1setOf type4 keyword)|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
|multiple-document- |multiple-document- |multiple-document- | |multiple-document- |multiple-document- |multiple-document- |
| handling | handling |handling-supported | | handling | handling |handling-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| best-effort | best-effort | best-effort-supported|
| (boolean) | (boolean, MAN) |(boolean, MAN) |
| | | |
+-------------------+----------------------+----------------------+
| media | media | media-supported | | media | media | media-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| number-up | number-up | number-up-supported | | number-up | number-up | number-up-supported |
| (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)|
| | | | | | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| sides | sides | sides-supported | | sides | sides | sides-supported |
| (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- |
Expires January 14, 1998
| (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
| 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)| (integer: 1 - MAX) | (rangeOf integer |
| | | 1- MAX) | | | | 1- MAX) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| document-format | document-format | document-format- | | document-format | document-format | document-format- |
| (type2 enum) | (type2 enum) | supported | | (type2 enum) | (type2 enum) | supported |
skipping to change at page 37, line 42 skipping to change at page 34, line 35
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-impressions | No | job-impressions- | | job-impressions | No | job-impressions- |
| (integer) | | supported | | (integer) | | supported |
| | | (rangeOf integer) | | | | (rangeOf integer) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-media-sheets | No | job-media-sheets- | | job-media-sheets | No | job-media-sheets- |
| (integer) | | supported | | (integer) | | supported |
| | | (rangeOf integer) | | | | (rangeOf integer) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
4.2.1 job-name (name) 4.2.1 job-sheets (type4 keyword)
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
unique.
If "job-name" is not supplied in the create request, the Printer, on
creation of the Job, SHALL generate a name. The name MAY be generated
using the name of the first Document in the Job (the "document-name"
attribute). If "job-name" is supplied in the create request, the
Printer SHALL use its value as the name of the created Job.
Expires January 14, 1998
4.2.2 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.
Standard values are: Standard values are:
'none': no job sheet is printed 'none': no job sheet is printed
'standard': a site specific standard job sheet (start only) or 'standard': one or more site specific standard job sheets are
sheets (start and end) is printed printed, e.g. a single start sheet or both start and end sheet is
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.
4.2.3 notify-events (1setOf type2 keyword) Expires January 25, 1998
Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section
4.2.6).
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 while this job is processing (i.e., when the Job moves
from the 'processing' to the 'processing-stopped' state). from the 'processing' to the 'processing-stopped' state or from
Problems include any of the "job-state-reasons" or "printer- 'pending' to 'pending-held'). Problems also can include any of
state-reason" values. the "job-state-reasons" or "printer-state-reason" values.
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. If
the Printer enters the 'stopped' state the reason in the the Printer enters the 'stopped' state, the reason is in the
"printer-state-reasons" attribute. "printer-state-reasons" attribute.
4.2.4 notify-addresses (1setOf uri) ISSUE: Do you really need this last sentence. That is, should this
document state what information an implementation should use to
compose the notification message.
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
Expires January 14, 1998
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 uri scheme values are: Standard uriScheme values are:
'mailto': email is used Expires January 25, 1998
'http': an HTTP method is used to add HTML formatted events to the 'mailto': the Printer sends a text message via email to the
end of the specified HTML file. specified email address
'ftp': FTP is used to append a record at the end of a specified 'http': the Printer sends an HTML formatted message via an HTTP
text file. POST method to the specified URI
'ftp': the Printer sends a text message via an FTP `append' command
to the specified remote file.
4.2.5 job-priority (integer(1:100)) 4.2.4 job-priority (integer(1:100))
This attribute specifies a priority for scheduling the print-job. A This attribute specifies a priority for scheduling the Job. A higher
higher value specifies a higher priority. The value 1 is defined to value specifies a higher priority. The value 1 indicates the lowest
indicate the lowest possible priority. The value 100 is defined to possible priority. The value 100 indicates the highest possible
indicate the highest possible priority. Among those jobs that are priority. Among those jobs that are ready to print, a Printer SHALL
ready to print, a Printer SHALL print all jobs with a priority value print all jobs with a priority value of n before printing those with a
of n before printing those with a priority value of n-1 for all n. priority value of n-1 for all n. The mapping of vendor-defined
The mapping of vendor-defined priority over this range is priority over this range is implementation-specific.
implementation-specific.
4.2.6 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.
'evening': evening 'evening': evening
skipping to change at page 40, line 4 skipping to change at page 36, line 48
An administrator SHALL associate allowable print times with a named An administrator SHALL associate allowable print times with a named
time period (by means outside IPP 1.0). An administrator is time period (by means outside IPP 1.0). An administrator is
encouraged to pick names that suggest the type of time period. encouraged to pick names that suggest the type of time period.
If the value of this attribute specifies a time period that is in the If the value of this attribute specifies a time period that is in the
future, the Printer 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
Expires January 14, 1998
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 remain, SHALL consider the job as a candidate for processing reasons that keep it in the 'pending-held' state remain, the Printer
by moving the job to the 'pending' state. SHALL consider the job as a candidate for processing by moving the job
to the 'pending' state.
If this job attribute value is the named value 'no-hold', or the time Expires January 25, 1998
period has already started , the job SHALL be a candidate for If this job attribute value is the named value 'no-hold', or specified
processing immediately. time period is in effect has already started , the job SHALL be a
candidate for processing immediately.
4.2.7 multiple-documenthandling (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, job-sheet placement, and documents. It controls finishing operations, and job-sheet placement.
the order of documents when the copies attribute exceeds 1. When the copies attribute exceeds 1, it also controls the order of
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
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.
skipping to change at page 40, line 43 skipping to change at page 37, line 39
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, ....
'separate-documents-collated-copies': If the files for the job are 'separate-documents-collated-copies': If the files for the job are
a and b, then each file SHALL be treated as a single document for a and b, then each file SHALL be treated as a single document for
finishing operations. Also, a client may specify that a slip finishing operations. Also, a client may specify that a slip
sheet be placed between files a and b. If more than one copy is sheet be placed between files a and b. If more than one copy is
made, the ordering SHALL be a, b, a, b, ...., and the Printer made, the ordering SHALL be a, b, a, b, ...., and the Printer
shall force each document copy to start on a new sheet shall force each document copy to start on a new sheet
4.2.8 best-effort (boolean) 4.2.7 media (type4 keyword)
This attribute determines how to control a conflict between what a
client requests in a create request and what a Printer supports. The
value 'true' means that a best effort attempt to print the Job is
possible (or acceptable). In order to achieve this, the Printer might
have to substitute some supported value for a requested value which is
unsupported. The value 'false' means that total fidelity is required;
Expires January 14, 1998
a best effort attempt to print the Job is not possible (or not
acceptable). In other words, the job must 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.
There are two cases to consider:
- The Printer's "best-effort-supported" attribute is set to 'true':
This indicates that the Printer is capable of best effort
printing. In this case either the "best-effort" Job Template
attribute in the create request or the Printer's "best-effort"
(the default value attribute) can be set to either 'true' or
'false'. If "best-effort" is set to 'false' the Printer ensures
full fidelity of the other IPP attributes in the create request.
That is, if any other attribute in the create-request is set to a
value that is not supported, the Printer rejects the create
request. If "best-effort" attribute is set to 'true', the the
Printer makes whatever substitutions are necessary to ensure that
the job is printed. For example, if a client supplies a
"finishings" Job Template attribute set to 'staple' but the
printer does not support stapling (not a feature or it is
temporarily out of staples) then if the "best-effort" attribute
is set to 'true' the job can still be printed but it is not
stapled. If "best-effort" is set to 'false', the create request
is rejected since the Printer can not guarantee that the job will
be stapled.
- The Printer's "best-effort-supported" attribute is set to
'false': This indicates that the Printer is not capable of (or
will not support) best effort printing. The Job Template
attributes supplied by the client in the create request must
match all of the Printer's supported values, or else the Printer
rejects the create request. In this case Printer's "best-effort"
attribute (the default value attribute) MUST also be set to
'false'. If the client supplies the "best-effort" Job Template
create request, it too MUST be set to 'false'. If it is set to
'true', the Printer rejects the create request.
Note: that the "best-effort" attribute in a create request is unlikely
to be used much. Many clients will submit a job with no attributes,
and the Printer will use default values. Other clients will submit a
job via a GUI that limits the attribute values to values which are
supported. Best-effort is useful in the GUI context only if a user
expects the job to be moved to another printer and prefers a sub-
optimal result to nothing at all. Best-effort is most useful in the
case where an end-user uses a command line interface to request
attributes that might not be supported.
Expires January 14, 1998
4.2.9 media (type4 keyword)
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 which 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 which 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.
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 13.
4.2.10 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.
'one': The Printer SHALL place one logical page on a single side of 'one': The Printer SHALL place one logical page on a single side of
an instance of the selected medium (MAY add some sort of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
'two': The Printer SHALL place two logical page on a single side of 'two': The Printer SHALL place two logical pages on a single side
an instance of the selected medium (MAY add some sort of of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
'four': The Printer SHALL place four logical page on a single side 'four': The Printer SHALL place four logical pages on a single side
of an instance of the selected medium (MAY add some sort of of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
Expires January 14, 1998
This attribute primarily controls the translation, scaling and This attribute primarily controls the translation, scaling and
rotation of page images, but a site may choose to add embellishments, rotation of page images, but a site may choose to add embellishments,
such as borders to each logical page. such as borders to each logical page.
4.2.11 sides (type2 keyword) 4.2.9 sides (type2 keyword)
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'. 'duplex', and 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
'head-to-toe' all work the same for portrait or landscape, that is, all work the same for portrait or landscape. However 'head-to-toe' is
'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape. 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also
'head-to-head' also switches between 'duplex' and 'tumble' when using switches between 'duplex' and 'tumble' when using portrait and
portrait and landscape modes. landscape modes.
4.2.12 printer-resolution (type2 enum) 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 values are type2 enums which represent single integers or pair of The value is a special type consisting of a pair of integers and a
integers. The latter are to specify the resolution when the x and y value which specifies the units for the two integers. The three
dimensions differ. When two integers are specified, the first is in values are the same as those specified in the draft-ietf-
the x direction, i.e., in the direction of the shortest dimension of printmib-mib-info-02.txt as prtMarkerAddressabilityFeedDir (the
the medium, so that the value is independent of whether the printer resolution in the feed direction),
feeds long edge or short edge first. prtMarkerAddressabilityXFeedDir (the resolution in the cross feed
direction), and prtMarkerAddressabilityUnit (the units of the
The standard values are: first two values, namely dots per inch and dots per centimeter).
4.2.11 print-quality (type2 enum)
'normal'(3):
Expires January 14, 1998
'res-100'(4): 100 x 100 dpi
'res-200'(5): 200 x 200 dpi
'res-240'(6): 240 x 240 dpi
'res-300'(7): 300 x 300 dpi
'res-360'(8): 360 x 360 dpi
'res-400'(9): 400 x 400 dpi
'res-600'(10): 600 x 600 dpi
'res-720'(11): 720 x 720 dpi
'res-800'(12): 800 x 800 dpi
'res-1200'(13): 1200 x 1200 dpi
'res-1440'(14): 1440 x 1440 dpi
'res-1600'(15): 1600 x 1600 dpi
'res-1800'(16): 1800 x 1800 dpi
'res-100x200'(100): 100 x 200 dpi
'res-200x100'(101): 200 x 100 dpi
'res-300x600'(102): 300 x 600 dpi
'res-600x300'(103): 600 x 300 dpi
'res-360x720'(104): 360 x 260 dpi
'res-720x360'(105): 720 x 360 dpi
'res-400x800'(106): 400 x 800 dpi
'res-800x400'(107): 800 x 400 dpi
'res-600x1200'(108): 600 x 1200 dpi
'res-1200x600'(109): 1200 x 600 dpi
'res-720x1440'(110): 720 x 1440 dpi
'res-1440x720'(111): 1440 x 720 dpi
'res-1800x600'(112): 1800 x 600 dpi
ISSUE: Should we add metric enums? Such as
'res-8x3.85'(200): 8 lines per 3.85 mm (fax)
'res-8x7.7'(201): 8 lines per 7.7 mm (fax)
'res-8x15.4'(202): 8 lines per 15.4 mm (fax)
'res-16x15.4'(203): 16 lines per 15.4 mm (fax)
4.2.13 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 'draft'(3): lowest quality available on the printer
'normal'(4): normal or intermediate quality on the printer 'normal'(4): normal or intermediate quality on the printer
'high'(5): highest quality available on the printer 'high'(5): highest quality available on the printer
Expires January 14, 1998 4.2.12 finishings (1setOf type2 enum)
4.2.14 copies (integer(1:2**31 - 1))
This attribute specifies the number of copies of the job to be
printed.
Note: The effect of this attribute on job with multiple documents is
controlled by the "multiple-document-handling" job attribute (section
4.2.7).
4.2.15 finishing (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. The uses for each copy of each printed document in a particular Job. For
definition of a copy for Jobs with multiple documents is controlled by Jobs with multiple documents, the "multiple-document-handling"
the "multiple-document-handling" attribute. attribute determines what constitutes a _copy_ for purposes of
finishing.
Expires January 25, 1998
Standard values are: Standard values are:
'none'(3): Perform no finishing 'none'(3): Perform no finishing
'staple'(4): Bind the document(s) with one or more staples. The 'staple'(4): Bind the document(s) with one or more staples. The
exact number and placement of the staples is site-defined. exact number and placement of the staples is site-defined.
'staple-top-left'(5): Place one or more staples on the top left 'staple-top-left'(5): Place one or more staples on the top left
corner of the document(s). corner of the document(s).
'staple-bottom-left'(6): Place one or more staples on the bottom '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 'staple-top-right'(7): Place one or more staples on the top right
skipping to change at page 46, line 4 skipping to change at page 40, line 34
of the staples is site-defined. of the staples is site-defined.
'punch'(11): This value indicates that holes are required in the 'punch'(11): This value indicates that holes are required in the
finished document. The exact number and placement of the holes is finished document. The exact number and placement of the holes is
site-defined The punch specification MAY be satisfied (in a site-defined The punch specification MAY be satisfied (in a
site- and implementation-specific manner) either by site- and implementation-specific manner) either by
drilling/punching, or by substituting pre-drilled media. drilling/punching, or by substituting pre-drilled media.
'cover'(12): This value is specified when it is desired to select 'cover'(12): This value is specified when it is desired to select
a non-printed (or pre-printed) cover for the document. This does a non-printed (or pre-printed) cover for the document. This does
not supplant the specification of a printed cover (on cover stock not supplant the specification of a printed cover (on cover stock
medium) by the document itself. medium) by the document itself.
Expires January 14, 1998
'bind'(13): This value indicates that a binding is to be applied 'bind'(13): This value indicates that a binding is to be applied
to the document; the type and placement of the binding is site- to the document; the type and placement of the binding is site-
defined." defined."
4.2.16 document-format (type2 keyword)
4.2.13 copies (integer(1:2**31 - 1))
This attribute specifies the number of copies of the job to be
printed.
Note: The effect of this attribute on job with multiple documents is
controlled by the "multiple-document-handling" job attribute (section
4.2.6).
4.2.14 document-format (type2 enum)
This attribute defines the document format for each Document in a Job. This attribute defines the document format for each Document in a Job.
The standard values for this attribute are enums. Since the complete The standard values for this attribute are enums. Since the complete
list is rather long, the full enumeration of standard values is found list is rather long, the full enumeration of standard values is found
in section 12 APPENDIX C: "document-format" enum values. in section 12 APPENDIX C: "document-format" enum 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- SHALL NOT supply the attribute in the create request or the Send-
Document Request. Document Request.
4.2.17 compression (type3 keyword) 4.2.15 compression (type3 keyword)
This attribute identifies compression algorithms used for compressed This attribute identifies compression algorithms used for compressed
document data. document data.
Standard values for this attribute are: ISSUE: Is this in the HTTP header and an attribute is compression
applied at both levels?
'none': no compression is used. 'none': no compression is used.
'zip':ZIP compression technology 'zip':ZIP compression technology
'tar': UNIX TAR compression technology `gzip' GNU zip compression technology described in RFC 1952.
'compress': UNIX compression technology
4.2.18 job-k-octets (integer(0:2**31 - 1)) 4.2.16 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 tries to compute the value if it is not supplied in known. The Printer may try to compute the value if it is not supplied
the create request. The Printer, however, might not be able to in the create request. The Printer, however, might not be able to
compute this value at the time the Job is created. If not, the compute this value at the time the Job is created. If not, the
Printer may support this attribute at any later time as it is able to Printer may support this attribute at any later time as it is able to
compute value. compute value.
4.2.19 job-impressions (integer(0:2**31 - 1)) ISSUE: What does this last sentence mean. Do we need to make the
distinction as to whether the printer computes this attribute
immediately as it is creates versus somewhat later?
4.2.17 job-impressions (integer(0:2**31 - 1))
This attribute specifies the total size of the job in impressions. This attribute specifies the total size of the job in impressions.
Expires January 14, 1998 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 size of the job in media-sheets.
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 14, 1998 Expires January 25, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri | uri | MANDATORY | | job-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri-user | uri | | | job-uri-user | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-name | name | |
+----------------------------+----------------------+----------------+
| job-originating-user | name | MANDATORY | | job-originating-user | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-host | name | | | job-originating-host | name | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| user-locale | locale | | | 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-since-pending | milliseconds | MANDATORY |
skipping to change at page 48, line 44 skipping to change at page 43, line 48
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| 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
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.
Expires January 14, 1998
4.3.2 job-uri-user (uri) 4.3.2 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-originating-user (name) 4.3.3 job-name (name)
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
unique. This is set to the value of the "job-name" input parameter in
the create request. However, if it is not supplied in the create
request, the Printer, on creation of the Job, SHALL generate a name.
The Printer can be generate the name using the name of the first
Document (the "document-name" attribute) if supplied or some other
piece of Job specific information.
4.3.4 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 SHALL set this attribute to the most print job. The Printer sets this attribute to the most authenticated
authenticated name that it can obtain from the protocol over which the name that it can obtain from the protocol over which the operation was
operation was received from the client. received from the client.
4.3.4 job-originating-host (name) 4.3.5 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
SHALL set this attribute to the most authenticated host name it can sets this attribute to the most authenticated host name it can obtain
obtain from the protocol over which the operation was received from from the protocol over which the operation was received from the
the client. client.
4.3.5 user-locale (locale) 4.3.6 user-human-language (human-language)
This attribute identifies the human language and optional the country This attribute identifies the human language and optionally the
of the end user. The Printer sets this attribute to the most reliable country of the end user. The Printer sets this attribute to the most
value it can obtain from the protocol over which the Print operation reliable value it can obtain from the protocol over which the Print
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 locale it SHOULD use
for localizing any text strings that it sends back to the end user. for localizing any text strings that it sends back to the end user.
These include status messages, text attributes, and notification These include status messages, text attributes, and notification
messages. messages.
4.3.6 job-state (type1 enum) 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
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)
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.
Standard values are: Standard values are:
'unknown'(2): The job state is not known, or its state is 'unknown'(2): The job state is not known, or its state is
indeterminate. indeterminate.
'pending'(3): The job is a candidate to start processing, but is 'pending'(3): The job is a candidate to start processing, but is
not yet processing. not yet processing.
'pending-held'(4): The job is not a candidate for processing for 'pending-held'(4): The job is not a candidate for processing for
any number of reasons but will return to the 'pending' state as any number of reasons but will return to the 'pending' state as
Expires January 14, 1998
soon as the reasons are no longer present. The job's "job-state- soon as the reasons are no longer present. The job's "job-state-
reason" attribute SHALL indicate why the job is no longer a reason" attribute SHALL indicate why the job is no longer a
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 When the job is in the 'processing' state, the entire job state
includes the detailed status represented in the printer's includes the detailed status represented in the printer's
"printer-state", "printer-state-reasons", and "printer-state- "printer-state", "printer-state-reasons", and "printer-state-
message" attributes. message" attributes.
Implementations MAY include additional values in the job's "job- Implementations MAY include additional values in the job's "job-
state-reasons" attribute to indicate the progress of the job, state-reasons" attribute to indicate the progress of the job,
such as adding the 'job-printing' value to indicate when the such as adding the 'job-printing' value to indicate when the
output device is actually making marks on paper. Most output device is actually making marks on paper. Most
implementations won't bother with this nuance. implementations won't bother with this nuance.
ISSUE: Change to (but this must be synchronized with JMP)
'processing'(5): One of:
1. the job is using, or is attempting to use hardware devices
that are making marks on a medium, and/or performing
finishing, such as stapling OR
2. the job is using, or is attempting to use software processes
that are analyzing or interpreting a PDL without making marks
on a medium.
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
reached the output device or because the job is queued in the
output device or some other spooler, awaiting the output
device to print it.
'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. For example, if the output device "job-state-reasons" attribute.
is stopped, the 'printer-stopped' value MAY be included in the
job's "job-state-reasons" attribute.
NOTE - When an output device is stopped, the device usually 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.
'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 14, 1998 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 51, line 30 skipping to change at page 47, line 30
| ^ ^ \ | ^ ^ \
--->+ | | +----> aborted --->+ | | +----> aborted
| v v / | v v /
+----> pending-held processing-stopped ----+ +----> pending-held processing-stopped ----+
Normally a job progresses from left to right. Other state transitions Normally a job progresses from left to right. Other state transitions
are unlikely, but are not forbidden. Not shown are the transitions to are unlikely, but are not forbidden. Not shown are the transitions to
the 'canceled' state from the 'pending', 'pending-held', 'processing', the 'canceled' state from the 'pending', 'pending-held', 'processing',
and 'processing-stopped' states. and 'processing-stopped' states.
4.3.7 job-state-reasons (1setOf type2 keyword) 4.3.9 job-state-reasons (1setOf type2 keyword)
This attribute provides additional information about the job's current This attribute provides additional information about the job's current
state, i.e., information that augments the value of the job's "job- state, i.e., information that augments the value of the job's "job-
state" attribute. state" attribute.
Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT
implement them, even if (1) the output device supports the implement them, even if (1) the output device supports the
functionality represented by the reason and (2) is available to the functionality represented by the reason and (2) is available to the
Printer object implementation. These values MAY be used with any job Printer object implementation. These values MAY be used with any job
state or states for which the reason makes sense. Furthermore, when state or states for which the reason makes sense. Furthermore, when
skipping to change at page 52, line 5 skipping to change at page 48, line 5
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
"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 14, 1998 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 NOTE - For easy of understanding the order of the reasons is presented
in the order in which the reason is most likely to occur: 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
skipping to change at page 52, line 31 skipping to change at page 48, line 31
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 'resources-are-not-ready': At least one of the resources needed by
the job, such as media, fonts, resource objects, etc., is not the job, such as media, fonts, resource objects, etc., is not
ready on any of the physical printer's for which the job is a ready on any of the physical printer's for which the job is a
candidate. This condition MAY be detected when the job is candidate. This condition MAY be detected when the job is
accepted, or subsequently while the job is pending or processing, accepted, or subsequently while the job is pending or processing,
depending on implementation. 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).
Expires January 25, 1998
'logfile-pending ': The job's logfile is pending file transfer. 'logfile-pending ': The job's logfile is pending file transfer.
'logfile-transferring': The job's logfile is being transferred. 'logfile-transferring': The job's logfile is being transferred.
ISSUE: How does this protocol get a logfile transfer to occur? I
suggest we delete them.
Expires January 14, 1998 4.3.10 job-state-message (text)
4.3.8 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.9 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
Printer, the Printer NEED NOT set this attribute. If a Print Server Printer, the Printer NEED NOT set this attribute. If a Print Server
implements a Printer, the value MAY be empty until the Printer assigns implements a Printer, the value MAY be empty until the Printer assigns
an output device to the job. an output device to the job.
4.3.10 time-since-pending (milliseconds) 4.3.12 time-since-pending (integer)
This attribute indicates the amount of time that has passed since the This attribute indicates the amount of time in milliseconds that has
Job was first put into the pending state.. passed since the Job was first put into the pending state..
4.3.11 time-since-processing (milliseconds) 4.3.13 time-since-processing (integer)
This attribute indicates the amount of time that has passed since the This attribute indicates the amount of time in milliseconds that has
Job first entered the processing state. passed since the Job first entered the processing state.
4.3.12 time-since-completed (milliseconds) 4.3.14 time-since-completed (integer)
This attribute indicates the amount of time that has passed since the This attribute indicates the amount of time in milliseconds that has
Job was completed. passed since the Job was completed.
4.3.13 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
in the response or cannot be because of site security policy in the response or cannot be because of site security policy
restrictions. restrictions.
4.3.14 job-message-from-operator (text) 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)
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.
Expires January 14, 1998 4.3.17 job-k-octets-processed (integer(0:2**31 - 1))
4.3.15 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]. counters as in the Job Monitoring MIB [27]. That is, if the "job-
state" is 'processing' or 'processing-stopped', this value is intended
to contain amount of the job that has been processed to the time at
which the attributes are requested.
4.3.16 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.17 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 describes the document data for the job. For
single-Document Jobs, they are supplied in the Print-Job or Print-URI single-Document Jobs, they are supplied in the Print-Job or Print-URI
requests. For multi-Document Jobs, they are supplied in each Send- requests. For multi-Document Jobs, they are supplied in each Send-
Document or Send-URI request. Document or Send-URI request.
Expires January 25, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-name | name | MANDATORY | | document-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-format | type 2 enum | | | document-format | type 2 enum | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-uri | uri | | | document-uri | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
4.4.1 document-name (name) 4.4.1 document-name (name)
This attribute contains the name of the document used by the client to This attribute contains the name of the document used by the client to
initially identify the document. When a client prints by reference, initially identify the document. When a client prints by reference,
i.e. includes the document-URI attribute and no document content, this i.e. includes the document-URI attribute and no document content, this
attribute SHALL be absent. attribute SHALL be absent.
Expires January 14, 1998
4.4.2 document-format (type2 enum) 4.4.2 document-format (type2 enum)
See section 4.2.16 that describes the "document-format" Job Template See section 4.2.13 that describes the "document-format" Job Template
attribute. attribute. This attribute is a job-template attribute. It may be
specified with the job or separately for each document. In a Print-Job
or Print-URI operation, there is no distinction between job and
document attributes because there is only one job. If document-format
is included with a Create-Job operation, it specifies the format for
all documents. If document-format is included with a Send-Document or
Send-URI operation, it overrides whatever format was specified with
Create-Job.
4.4.3 document-uri (uri) 4.4.3 document-uri (uri)
This attribute contains the URI of the document when the document This attribute contains the URI of the document when the document
content is not included in the Send Document operation. Document- content is not included in the Send Document operation. Note: For
number is the only other attribute allowed when a document-URI Print-URI and Send-URI "document-uri" is an explicit parameter which
attribute is present in a Send Document operation. sets the "document-uri" attribute in the Document object.
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 14, 1998 Expires January 25, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri | uri | MANDATORY | | printer-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri-user | uri | | | printer-uri-user | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-name | name | MANDATORY | | printer-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-location | text | | | printer-location | text | |
skipping to change at page 56, line 30 skipping to change at page 52, line 30
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| 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 | type2 keyword | | | printer-state-reasons | 1setOf type2 keyword | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state-message | text | | | printer-state-message | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| 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-locale | locale | MANDATORY | | printer-language | human-language | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-locales-supported | 1setOf locale | 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 | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| message-protection- | keyword | |
| supported | | |
+----------------------------+----------------------+----------------+
Expires January 25, 1998
| authentication-author | keyword | |
| ization-supported | | |
+----------------------------+----------------------+----------------+
| color-supported | boolean | |
+----------------------------+----------------------+----------------+
| pdl-override-supported | type2 keyword | |
+----------------------------+----------------------+----------------+
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
SHALL determine a printer's URI and SHALL set this attribute to that determines a printer's URI and sets this attribute to that URI. The
URI. The precise format of a printer URI SHALL be implementation precise format of a printer URI is implementation dependent.
dependent.
Expires January 14, 1998
4.5.2 printer-uri-user (uri) 4.5.2 printer-uri-user (uri)
Similar to "printer-uri", this attribute contains the URI for an HTML This attribute contains the URI for an HTML page with more information
page with more information about this printer. about this printer.
ISSUE: Get rid of "printer-uri-user" or "printer-more-info-site"?
4.5.3 printer-name (name) 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 SHALL more user friendly than the printer-URI. An administrator determines a
determine a printer's name and SHALL set this attribute to that name. printer's name and sets this attribute to that name. This name may be
This name may be the last part of the printer's URI or it may be the last part of the printer's URI or it may be unrelated. In non-US-
unrelated. In non-US-English locales, a name may contain characters English locales, a name may contain characters that are not allowed in
that are not allowed in a URI. a URI.
4.5.4 printer-location (text) 4.5.4 printer-location (text)
This attribute identifies the location of this printer. This attribute identifies the location of this printer. This could
include things like: _in Room 123A, second floor of building XYZ_.
4.5.5 printer-description (text) 4.5.5 printer-description (text)
This attribute identifies the descriptive information about the 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.6 printer-more-info-site (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. The information obtained from this URI is
Expires January 25, 1998
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. The information is intended to be can be accessed from this URI. The information is intended to be
specific to this printer instance and site services (e.g. job pricing, specific to this printer instance and site services (e.g. job pricing,
services offered, end user assistance). The printer manufacturer may services offered, end user assistance). The printer manufacturer may
initially populate this attribute. initially populate this attribute.
4.5.7 printer-driver-installer (uri) 4.5.7 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.8 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.
Expires January 14, 1998
4.5.9 printer-more-info-manufacturer (uri) 4.5.9 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 keyword) 4.5.10 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 continually keep this attribute set to the value in A Printer SHALL keep this attribute set in a timely manner to the
the table below which most accurately reflects the state of the value in the table below which most accurately reflects the state of
Printer. A Printer NEED NOT implement all values if they are not the Printer. If the printer has jobs that are requesting notification
applicable to a given implementation. of printer-problems or job-problems, then _timely manner_ means
continually.. Otherwise, _timely manner_ means whether the Printer
receives a query for this attribute. A Printer NEED NOT implement all
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
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
job from printing, e.g. toner-low. Note: if a Printer controls job from printing, e.g. toner-low. Note: if a Printer controls
more than one output device, the above definition implies that a more than one output device, the above definition implies that a
Printer is processing if at least one output device is Printer is processing if at least one output device is
processing, and none is idle. processing, and none is idle.
Expires January 14, 1998
'stopped'(5): If a Printer receives a job (whose required 'stopped'(5): 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 some human fixes the transit into the processing state only after some human fixes the
problem that stopped the printer and after jobs ahead of it problem that stopped the printer and after jobs ahead of it
complete printing. The "printer-state-reasons" attribute SHALL complete printing. The "printer-state-reasons" attribute SHALL
contain at least one reason, e.g. media-jam, which prevents it contain at least one reason, e.g. media-jam, which prevents it
from either processing the current job or transiting a pending from either processing the current job or transiting a pending
job to the processing state. job to the processing state.
skipping to change at page 59, line 33 skipping to change at page 56, line 5
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.11 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.
- '-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.
skipping to change at page 60, line 4 skipping to change at page 56, line 27
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.
If the implementation does not add any one of the three suffixes, all If the implementation does not add any one of the three suffixes, all
parties SHALL assume that the reason is an "error". parties SHALL assume that the reason is an "error".
If a logical Printer controls more than one output device, each value If a logical Printer controls more than one output device, each value
of this attribute MAY apply to one or more of the output devices. An of this attribute MAY apply to one or more of the output devices. An
error on one output device that does not stop the logical Printer as a error on one output device that does not stop the logical Printer as a
Expires January 14, 1998
whole MAY appear as a warning in the Printer's "printer-state-reasons whole MAY appear as a warning in the Printer's "printer-state-reasons
attribute". The "printer-state" for such a Printer may have a value attribute". The "printer-state" for such a Printer may have a value
of 'stopped' even though there are with no "printer-state-reasons" of 'stopped' even though there are with no "printer-state-reasons"
values that are "errors". values that are "errors".
The following standard values are defined: The following standard values are defined:
'media-needed': A tray has run out of media. 'media-needed': A tray has run out of media.
'media-jam': The printer has a media jam. 'media-jam': The printer has a media jam.
'paused': Someone has paused the Printer. In this state, a Printer 'paused': Someone has paused the Printer. In this state, a Printer
skipping to change at page 60, line 32 skipping to change at page 57, line 4
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).
'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,
skipping to change at page 61, line 5 skipping to change at page 57, line 28
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.
'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.
Expires January 14, 1998 4.5.12 printer-state-message (text)
4.5.12 printer-is-accepting-jobs (boolean)
This attribute specifies the additional information about the printer
state in human readable text and it is set by the Printer (or the
Administrator by some mechanism outside the scope of IPP).
ISSUE: Do we want to delete the last phrase and imply that this is a
human readable version of printer-state and printer-state-reason and
not something created by an admin? printer-message-from-the-operator
is from an admin.
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.
4.5.13 printer-state-message (text) Expires January 25, 1998
This attribute specifies the additional information about the printer
state in human readable text and it SHALL be set by the Printer (or
the Administrator by some mechanism outside the scope of IPP).
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 SHALL be set by the Printer. pending and/or processing and is set by the Printer.
4.5.15 printer-message-from-the-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
when it is expected to be available. when it is expected to be available.
4.5.16 printer-locale (locale) 4.5.16 printer-human-language (human-language)
This attribute specifies the current locale that the Printer is This attribute specifies the current human-language that the Printer
operating in. is operating in.
4.5.17 printer-locales-supported (1setOf locale) 4.5.17 printer-human-language-supported (1setOf human-language)
This attribute specifies the supported locales that the Printer This attribute specifies the supported human languages that the
operates in. Printer operates in.
4.5.18 color-supported (boolean) 4.5.18 printer-content-char-set (char-set)
This attribute specifies the current character set encoding that the
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).
Expires January 14, 1998 4.5.21 pdl-override (type2 keyword)
4.5.19 pdl-override (type2 keyword)
A client supplies Job Template attributes to affect the rendering, A client supplies Job Template attributes to affect the rendering,
production and finishing of the documents in the job. Similar types production and finishing of the documents in the job. Similar types
of instructions may also be contained in the document to be printed, of instructions may also be contained in the document to be printed,
that is, within the Page Description Language (PDL) of the document 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 data. If there is a conflict between the value of one of these IPP
Expires January 25, 1998
Job Template attributes, and a corresponding instruction in the Job Template attributes, and a corresponding instruction in the
document (either implicit or explicit), it is desirable that the value document (either implicit or explicit), it is desirable that the value
of the IPP attribute take precedence over the document instruction. of the IPP attribute take precedence over the document instruction.
Until companies that supply interpreters for PDLs, such as PostScript Until companies that supply interpreters for PDLs, such as PostScript
and PCL allow a way for external attributes (such as IPP attributes) and PCL allow a way for external attributes (such as IPP attributes)
to take precedence over internal job production instructions, a to take precedence over internal job production instructions, a
Printer might not be able to support the semantics that IPP attributes Printer might not be able to support the semantics that IPP attributes
override (take on a higher precedence) the embedded PDL instructions. override (take on a higher precedence) the embedded PDL instructions.
This attribute expresses how a particular Printer implementation This attribute expresses how a particular Printer implementation
handles these conflicts. handles these conflicts.
skipping to change at page 63, line 5 skipping to change at page 59, line 47
If the value of this attribute is 'guaranteed', the implementation If the value of this attribute is 'guaranteed', the implementation
MUST guarantee that the IPP attribute values take precedence over any MUST guarantee that the IPP attribute values take precedence over any
related job processing instructions in the PDL Job's document data. related job processing instructions in the PDL Job's document data.
This can be done by modifying the interpreter within the output device This can be done by modifying the interpreter within the output device
itself to understand IPP attributes, or by merging theses Job Template itself to understand IPP attributes, or by merging theses Job Template
attributes directly into the document data, or in any other attributes directly into the document data, or in any other
implementation specific manner. In any case, the semantics of implementation specific manner. In any case, the semantics of
'guaranteed' MUST be preserved. 'guaranteed' MUST be preserved.
Expires January 14, 1998 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
skipping to change at page 63, line 42 skipping to change at page 60, line 35
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.20.1 message-protection-supported (keyword) 4.5.22.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.20.2 authentication-authorization-supported (keyword) 4.5.22.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.
Expires January 14, 1998 4.5.23 best-effort (1setOf boolean)
This attribute determines how a Printer handles a conflict between
what a client requests in a create request and what a Printer
supports. The value 'true' means that a best effort attempt to print
the Job is possible. In order to achieve this, the Printer might
ignore some attributes or might have to substitute some supported
value for a requested value which is unsupported. The value 'false'
Expires January 25, 1998
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
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
to be used much. Many clients will submit a job with no attributes,
and the Printer will use default values. Other clients will submit a
job via a GUI that limits the attribute values to values which are
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
sub-optimal result to nothing at all. Best effort printing is most
useful in the case where an end-user uses a command line interface to
request attributes that might not be supported.
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 Conditionally Mandatory
For example, a conditionally mandatory attribute means that a Printer For example, a conditionally mandatory attribute means that a Printer
implementation need not support the attribute if the attribute implementation need not support the attribute if the attribute
controls a feature that the output device does not implement or controls a feature that the output device does not implement or
expose. For example, for an output device that can only print on one 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 side, a Printer need not support the "sides" attribute. For an output
device that does not support any of the finishing attribute values, a device that does not support any of the finishing attribute values, a
Printer need not support the "finishing" attribute. 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 5.2 Client Conformance Requirements
There are no conformance requirements placed on the user interfaces A conforming client SHALL send operations that conform to the protocol
provided by IPP clients or their applications. For example, one defined in _Internet Printing Protocol/1.0: Protocol Specification_
application might not allow an end user to submit multiple documents [23]. For each parameter or attribute included in an operation
per job, while another does. One application might first query a request, a conforming client SHALL send a value whose type and value
Printer object in order to supply a graphical user interface (GUI) syntax conforms to the requirement of this document
dialogue box with supported and default values whereas a different
implementation might not. Otherwise, there are no conformance requirements placed on the user
interfaces provided by IPP clients or their applications. For
example, one application might not allow an end user to submit
multiple documents per job, while another does. One application might
first query a Printer object in order to supply a graphical user
interface (GUI) dialogue box with supported and default values whereas
a different implementation might not.
When sending a Get-Attributes or create request, an IPP client need When sending a Get-Attributes or create request, an IPP client need
not supply any attributes. not supply any attributes.
A client SHALL be able to accept any of the attribute syntaxes defined A client SHALL be able to accept any of the attribute syntaxes defined
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 attributes and values that the client A query response may contain parameters, attributes, and values that
does not expect. Therefore, a client implementation MUST gracefully the client does not expect. Therefore, a client implementation MUST
handle such responses and not refuse to interoperate with a conforming gracefully handle such responses and not refuse to interoperate with a
Printer that is returning extended registered or private attributes conforming Printer that is returning extended registered or private
and/or attribute values that conform to Section 6. Clients may choose attributes and/or attribute values that conform to Section 6. Clients
to ignore any attributes that it does not understand. may choose to ignore any parametes, attributes, or values that it does
not understand.
Expires January 14, 1998
5.3 Printer Object Conformance Requirements 5.3 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.3.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 2.1 Printer Object Section 0
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.3.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.1.1) MANDATORY Get-Operations (section 3.2.1) MANDATORY
Print-Job (section 3.1.2) MANDATORY Print-Job (section 3.2.2) MANDATORY
Print-URI (section 3.1.3) OPTIONAL Print-URI (section 3.2.3) OPTIONAL
Validate-Job (section 3.1.4) MANDATORY Validate-Job (section 3.2.4) MANDATORY
Create-Job (section 3.1.5) OPTIONAL Create-Job (section 3.2.5) OPTIONAL
Get-Jobs (section 3.1.8) MANDATORY Get-Jobs (section 3.2.7) MANDATORY
Get-Attributes (section 3.1.9) MANDATORY Get-Attributes (section3.2.6) MANDATORY
For a Job object: For a Job object:
Send-Document (section 3.1.6) OPTIONAL Send-Document (section 3.3.1) OPTIONAL
Send-URI (section 3.1.7) OPTIONAL Send-URI (section 3.3.2) OPTIONAL
Cancel-Job (section 3.1.8) MANDATORY Cancel-Job (section 3.3.3) MANDATORY
Get-Attributes (section 3.1.9) MANDATORY Get-Attributes (section 3.3.4) MANDATORY
Conforming Printer implementations SHALL support all request and
response parameters and all values of such parameters, except for
parameters which are collections of attributes. The following section
on attributes specifies the support required for attributes.
5.3.3 Attributes 5.3.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 Conforming Printer implementations SHALL support all CONDITIONALLY
MANDATORY attributes as defined in this specification (in the MANDATORY attributes as defined in this specification (in the
indicated sections) if in the implementation the condition us true. indicated sections) if in the implementation the condition us true.
Expires January 14, 1998
If a Printer implements a "xxx-supported" attribute it MUST implement If a Printer implements a "xxx-supported" attribute it MUST implement
the corresponding "xxx" default value attribute and vice versa. 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
values specified in this document or through the extension mechanism
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
values and at most all of them.
5.3.4 Printer extensions 5.3.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
defined in _Internet Printing Protocol/1.0: Protocol Specification_
[23]. For each parameter or attribute included in an operation
response, a conforming printer SHALL send a value whose type and value
syntax conforms to the requirement of this document
5.3.5 Attribute Syntaxes 5.3.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.4 Security Conformance Requirements
skipping to change at page 66, line 45 skipping to change at page 65, line 5
information (https://..., etc.). information (https://..., etc.).
In either case, the security protocol (if any) is initiated first In either case, the security protocol (if any) is initiated first
which allows for the negotiation of security features. IPP is then which allows for the negotiation of security features. IPP is then
run as an application protocol on top of the security protocols. One run as an application protocol on top of the security protocols. One
cannot "bootstrap" the security features from IPP itself. cannot "bootstrap" the security features from IPP itself.
ISSUE: The above is not quite correct. Waiting for better description ISSUE: The above is not quite correct. Waiting for better description
from the security document [22]. from the security document [22].
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
Expires January 14, 1998
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. Throughout This document identifies both keywords and enum values. For private
this document, references to "typeN enum" or "typeN keyword" can be (unregistered) keyword extensions, implementers SHOULD use keywords
found (where N can be 1, 2, 3 or 4). The typeN extension has more with a suitable distinguishing prefix, such as "xxx-" where xxx is the
registration controls than a typeM extension where M is greater than (lowercase) company name registered with IANA for use in domain names.
N. That is, there are more controls in place to extend a type1 value For private (unregistered) enum extension, implementers SHOULD support
over a type 2 value. However, 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 type1 manner (i.e., by being included in a future
version of an IPP specification). For private (unregistered) keyword
extensions, implementers SHOULD use keywords with a suitable
distinguishing prefix, such as "xxx-" where xxx is the (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"). values in the reserved integer range (see "enum").
The definitions of these various types are as follows. The definitions of these various types are as follows.
6.1.1 Type1 6.1.1 Type1
The IPP standard must be revised to add a new keyword or a new enum. The IPP standard must be revised to add a new keyword or a new enum.
No private keywords or enums are allowed. No private keywords or enums are allowed.
This draft contains the following type1 keywords: This draft contains the following type1 keywords:
skipping to change at page 68, line 5 skipping to change at page 65, line 50
6.1.2 Type2 6.1.2 Type2
Implementers can, at any time, add new keyword or enum values by Implementers can, at any time, add new keyword or enum values by
proposing them to the IPP working group for registration (or an IANA- proposing them to the IPP working group for registration (or an IANA-
appointed registry advisor after the IPP working group is no longer appointed registry advisor after the IPP working group is no longer
certified) where they are reviewed for approval. IANA keeps the certified) where they are reviewed for approval. IANA keeps the
registry. registry.
This draft contains the following type2 keywords: This draft contains the following type2 keywords:
Expires January 14, 1998
- <fill in> - <fill in>
This draft contains the following type2 enums: This draft contains the following type2 enums:
Expires January 25, 1998
- <fill in> - <fill in>
6.1.3 Type3 6.1.3 Type3
Implementers can, at any time, add new keyword and enum values by Implementers can, at any time, add new keyword and enum values by
submitting a registration request directly to IANA, no IPP working submitting a registration request directly to IANA, no IPP working
group or IANA-appointed registry advisor review is required. group or IANA-appointed registry advisor review is required.
This draft contains the following type3 keywords: This draft contains the following type3 keywords:
skipping to change at page 68, line 45 skipping to change at page 66, line 41
This draft contains the following type4 keywords: This draft contains the following type4 keywords:
- <fill in> - <fill in>
This draft contains the following type4 enums: This draft contains the following type4 enums:
- <fill in> - <fill in>
6.2 Registration of MIME types/sub-types for document-formats 6.2 Registration of MIME types/sub-types for document-formats
The "document-format" attribute has MIME type/sub-type values for The "document-format" attribute IANA enums for indicating document
indicating document formats which IANA registers as "media type" formats which IANA registers as ? names.
names.
ISSUE: MIME type/sub-types has raised its head again.
Expires January 14, 1998
7. Security Considerations 7. 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.
skipping to change at page 70, line 5 skipping to change at page 67, line 48
[8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail
Extensions) Part One: Mechanism for Specifying and Describing the Extensions) Part One: Mechanism for Specifying and Describing the
Format of Internet Message Bodies", RFC 1521, September, 1993. Format of Internet Message Bodies", RFC 1521, September, 1993.
[9] Braden, S., "Requirements for Internet Hosts - Application and [9] Braden, S., "Requirements for Internet Hosts - Application and
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.
Expires January 14, 1998
[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
skipping to change at page 70, line 38 skipping to change at page 68, line 33
[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, ?.
[32] ?, " ", RFC 1514, ?.
[33] ?, " ", RFC 1903, ?.
9. Author's Address 9. 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
Expires January 14, 1998
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.
2550 Garcia Ave., MPK-17 901 San Antonio.Road, MPK-17
Mountain View, CA 94043 Palo Alto, CA 94303
Phone: 415-786-8995 Phone: 415-786-8995 (Area code change to 650 in August 1997)
Fax: 415-786-7077 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
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
skipping to change at page 71, line 47 skipping to change at page 69, line 49
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 - Data Products
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
Expires January 14, 1998
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
Pat Nogay - IBM Pat Nogay - IBM
Bob Pentecost - HP Bob Pentecost - HP
Rob Rhoads - Intel Rob Rhoads - Intel
David Roach - Unisys David Roach - Unisys
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 14, 1998 Expires January 25, 1998
10. APPENDIX A: Terminology 10. 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 10.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]. document are to be interpreted as described in RFC 2119 [25]. The
sections below reiterate these definitions and include some additional
ones.
10.1.1 MUST 10.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 10.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.
skipping to change at page 73, line 50 skipping to change at page 72, line 4
10.1.5 MAY 10.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
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
Expires January 14, 1998
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 10.1.6 CONDITIONALLY MANDATORY
This term means that an item MUST be implemented in a conforming This term means that an item MUST be implemented in a conforming
implementation if the specified condition is true. Conversely, a implementation if the specified condition is true. Conversely, a
conforming implementation NEED NOT implement the item if the specified conforming implementation NEED NOT implement the item if the specified
condition is false. 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
in an embedded printer. There is no hardware associated with job-
sheets or job-priority. So an output-device "knows" about such a
feature only if its software implements it, in which case IPP likely
supports it. This all seems rather circular. So the answer is that all
job control attributes are optional for embedded printers.
For print servers, the rule is quite inscrutable because a print
server can potentially serve all types of printers with a variety of
features. Are all printer-control attributes mandatory because a
connected printer could have the feature or all printer-control
attributes optional because the printer-server itself has none of the
features? Because job-control attributes are normally implemented by a
print servers and not output devices, the feature doesn't exist unless
it is implemented, hence nothing is mandatory. So I am left not
knowing what to do for a print server. Can I implement nothing or must
I implement all to be conforming. I think everything is optional.
When I look at the four combinations of the 2 types of implementations
and 2 types of attributes, I conclude that only printer control
attributes in embedded printer implementations could be conditionally
mandatory. All job control attributes in embedded printers and all
attributes in print servers must be optional.
10.1.7 NEED NOT 10.1.7 NEED NOT
The verb "NEED NOT" indicates an action that the subject of the The verb "NEED NOT" indicates an action that the subject of the
sentence does not have to implement in order to claim conformance to sentence does not have to implement in order to claim conformance to
the standard. The verb "NEED NOT" is used instead of "MAY NOT" since the standard. The verb "NEED NOT" is used instead of "MAY NOT" since
"MAY NOT" sounds like a prohibition. "MAY NOT" sounds like a prohibition.
Expires January 25, 1998
10.2 Model Terminology 10.2 Model Terminology
10.2.1 Keyword 10.2.1 Keyword
Keywords are used within this document as identifiers of semantic Keywords are used within this document as identifiers of semantic
entities within the abstract model. Attribute names, some attribute entities within the abstract model. Attribute names, some attribute
values, attribute syntaxes, and attribute group names are represented values, attribute syntaxes, and attribute group names are represented
as keywords. In this document, a keyword is a sequence of characters as keywords. In this document, a keyword is a sequence of characters
(length of 1 to 255) which consists of the following ASCII characters: (length of 1 to 255) which consists of the following ASCII characters:
lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), and lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"),
underscore ("_"). A keyword starts with a lower-case letter. In the period ("."), and underscore ("_"). A keyword starts with a lower-
actual protocol, these keywords will be represented using an case letter.
appropriate protocol encoding.
10.2.2 Parameters 10.2.2 Parameters
A parameter is an item of information supplied in an operation A parameter is an item of information supplied in an operation
consisting of a parameter name and a parameter value(s). Each consisting of a parameter name and a parameter value(s). Each
parameter has a specific syntax. Clients supply input parameters in parameter has a specific syntax. Clients supply input parameters in
operation requests and servers return output parameters in operation operation requests and servers return output parameters in operation
responses. Most parameters have corresponding object attributes; some responses. Some parameters have corresponding object attributes; some
do not. All parameters are defined in section 3. do not. All parameters are defined in section 3.
10.2.2.1 Parameter Name 10.2.2.1 Parameter Name
Each parameter is uniquely identified in this document by its Each parameter is uniquely identified in this document by its
parameter name which is a keyword. The keyword parameter name is parameter name which is a keyword. The keyword parameter name is
given in the section header describing that parameter. In running given in the section header describing that parameter. In running
text in this document, parameter names are indicated inside double text in this document, parameter names are indicated inside double
quotation marks ("). quotation marks (").
Expires January 14, 1998
10.2.2.2 Parameter Value 10.2.2.2 Parameter Value
Each parameter has one or more values. Parameter values are Each parameter has one or more values. Parameter values are
represented in the syntax type specified for that parameter. In represented in the syntax type specified for that parameter. In
running text in this document, parameter values are indicated inside running text in this document, parameter values are indicated inside
single quotation marks ('), whether their parameter syntax is keyword, single quotation marks ('), whether their parameter syntax is keyword,
integer, text, etc. integer, text, etc.
10.2.2.3 Parameter Syntax 10.2.2.3 Parameter Syntax
Each parameter is defined using an explicit syntax. In this document, Each parameter is defined using an explicit syntax. In this document,
each syntax type is defined as a keyword with specific meaning. The each syntax type is defined as a keyword with specific meaning. The
protocol specification document [23] indicates the actual on-the-wire protocol specification document [23] indicates the actual on-the-wire
encoding for each parameter syntax. Parameter syntaxes are the same as encoding for each parameter syntax. Parameter syntaxes are the same as
attribute syntaxes and they are defined in section 4.1. attribute syntaxes and they are defined in section 4.1.
Expires January 25, 1998
10.2.3 Attributes 10.2.3 Attributes
An attribute is an item of information that is associated with an An attribute is an item of information that is associated with an
instance of an IPP object. An attribute consists of an attribute name instance of an IPP object. An attribute consists of an attribute name
and an attribute value(s). Each attribute has a specific syntax.. and an attribute value(s). Each attribute has a specific syntax..
All attributes are defined in section 4. All attributes are defined in section 4.
An interesting set of attributes is called Job Template Attributes An interesting set of attributes is called Job Template Attributes
(these attributes are described in detail in section 4.2.) The client (these attributes are described in detail in section 4.2.) The client
optionally supplies Job Template attributes as input parameters in a optionally supplies Job Template attributes as input parameters in a
skipping to change at page 76, line 5 skipping to change at page 75, line 39
the client. the client.
10.2.3.1 Attribute Name 10.2.3.1 Attribute Name
Each attribute is uniquely identified in this document by its Each attribute is uniquely identified in this document by its
attribute name which is a keyword. The keyword attribute name is attribute name which is a keyword. The keyword attribute name is
given in the section header describing that attribute. In running given in the section header describing that attribute. In running
text in this document, attribute names are indicated inside double text in this document, attribute names are indicated inside double
quotation marks ("). quotation marks (").
Expires January 14, 1998
10.2.3.2 Attribute Group Name 10.2.3.2 Attribute Group Name
Related attributes are grouped into named groups. The name of the Related attributes are grouped into named groups. The name of the
group is a keyword. The group name may be used in an input parameter group is a keyword. The group name may be used in an input parameter
in place of naming all the attributes in the group explicitly. in place of naming all the attributes in the group explicitly.
Attribute groups are defined in section 4. Attribute groups are defined in section 4.
10.2.3.3 Attribute Value 10.2.3.3 Attribute Value
Each attribute has one or more values. Attribute values are Each attribute has one or more values. Attribute values are
represented in the syntax type specified for that attribute. In represented in the syntax type specified for that attribute. In
running text in this document, attribute values are indicated inside running text in this document, attribute values are indicated inside
single quotation marks ('), whether their attribute syntax is keyword, single quotation marks ('), whether their attribute syntax is keyword,
integer, text, etc. integer, text, etc.
Expires January 25, 1998
10.2.3.4 Attribute Syntax 10.2.3.4 Attribute Syntax
Each attribute is defined using an explicit attribute syntax. In this Each attribute is defined using an explicit attribute syntax. In this
document, each attribute syntax is defined as a keyword with specific document, each attribute syntax is defined as a keyword with specific
meaning. The protocol specification document [23] indicates the meaning. The protocol specification document [23] indicates the
actual on-the-wire encoding for each attribute syntax. Attribute actual on-the-wire encoding for each attribute syntax. Attribute
syntaxes are defined in section 4.1. syntaxes are defined in section 4.1.
10.2.4 Supports 10.2.4 Supports
skipping to change at page 77, line 4 skipping to change at page 76, line 39
attribute. Conformance to IPP does not mandate that all attribute. Conformance to IPP does not mandate that all
implementations support all possible values representing all possible implementations support all possible values representing all possible
job processing behaviors and features. For example, if a given job processing behaviors and features. For example, if a given
instance of a Printer supports only certain document formats, then instance of a Printer supports only certain document formats, then
that Printer responds with the "document-format-supported" attribute that Printer responds with the "document-format-supported" attribute
populated with a set of values, possibly only one, taken from the populated with a set of values, possibly only one, taken from the
entire set of possible values defined in this model document. This entire set of possible values defined in this model document. This
set of values represent the Printer's set of supported document set of values represent the Printer's set of supported document
formats. Another example is the "finishings-supported" attribute. If formats. Another example is the "finishings-supported" attribute. If
a Printer is not physically capable of stapling (there is no stapler a Printer is not physically capable of stapling (there is no stapler
Expires January 14, 1998
in the output device itself), the "finishings-supported" attribute in the output device itself), the "finishings-supported" attribute
MUST NOT be populated with the value of 'staple'. MUST NOT be populated with the value of 'staple'.
ISSUE: We have said that conformance does not mandate support for any
values. For example, a printer could have a stapler and supported
finishings-supported but not the value _staple_ and still be in
conformance, though not useful. Is this true?
In order to ease the implementation burden, if a certain In order to ease the implementation burden, if a certain
implementation supports only one well-known value of some "xxx- implementation supports only one well-known value of some "xxx-
supported" attribute, it is NOT REQUIRED that that implementation supported" attribute, it is NOT REQUIRED that that implementation
support that attribute. For example, if a Printer object represents a support that attribute. For example, if a Printer object represents a
physical device that can not print on two sides of the media, the only physical device that can not print on two sides of the media, the only
possible value for the "sides-supported" attribute could be 'one- possible value for the "sides-supported" attribute could be 'one-
sided'. In this case, it is NOT REQUIRED that the implementation sided'. In this case, it is NOT REQUIRED that the implementation
Expires January 25, 1998
support the "sides-supported" attribute since a client could infer support the "sides-supported" attribute since a client could infer
that the implementation supports only single-sided printing from the that the implementation supports only single-sided printing from the
absence of the "sides-supported" attribute. If for some reason, an absence of the "sides-supported" attribute. If for some reason, an
implementation only supported "two-sided-long-edge" then that implementation only supported "two-sided-long-edge" then that
implementation MUST support the "sides-supported" attribute to be a implementation MUST support the "sides-supported" attribute to be a
conforming implementation. The "well-known value" for CONDITIONALLY conforming implementation. The "well known value" for CONDITIONALLY
MANDATORY attribute is specified in the section describing that MANDATORY attribute is specified in the section describing that
attribute. attribute.
ISSUE: The "well known value" condition for each Job Template
attribute has not yet been identified. The most difficult one will be
"media-supported", that is there probably not one "well known value"
for "media supported". This "well known value" is a very slippery
slope...
Note: The supported attributes are set (populated) by some Note: The supported attributes are set (populated) by some
administrative process or automatic sensing mechanism that is outside administrative process or automatic sensing mechanism that is outside
the scope of IPP. the scope of IPP.
11. APPENDIX B: Status Codes 11. APPENDIX B: Status Codes
This section defines status code keywords that are used to provide This section defines status code keywords that are used to provide
semantic information on the results of an operation request. Each semantic information on the results of an operation request. Each
operation response MUST include a status code. For error type status operation response MUST include a status code. For error type status
codes, the response MAY also contain a message that provides a short codes, the response MAY also contain a status message that provides a
textual description of the status. The status code is intended for use short textual description of the status. The status code is intended
by automata, and the message is intended for the human end user. for use by automata, and the status message is intended for the human
Since the message is an OPTIONAL component of the operation response, end user. Since the status message is an OPTIONAL component of the
an IPP application (i.e. a browser, GUI, print driver or gateway) is operation response, an IPP application (i.e. a browser, GUI, print
NOT REQUIRED to examine or display the message. driver or gateway) is NOT REQUIRED to examine or display the status
message.
The prefix of the status keyword defines the class of response as The prefix of the status keyword defines the class of response as
follows: follows:
"informational" - Request received, continuing process "informational" - Request received, continuing process
"successful" - The action was successfully received, understood, "successful" - The action was successfully received, understood,
and accepted and accepted
"redirection" - Further action must be taken in order to complete "redirection" - Further action must be taken in order to complete
the request the request
"client-error" - The request contains bad syntax or cannot be "client-error" - The request contains bad syntax or cannot be
fulfilled fulfilled
"server-error" - The server failed to fulfill an apparently valid "server-error" - The server failed to fulfill an apparently valid
request request
Expires January 14, 1998
IPP status codes are extensible. IPP applications are NOT REQUIRED to IPP status codes are extensible. IPP applications are NOT REQUIRED to
understand the meaning of all registered status codes, though such understand the meaning of all registered status codes, though such
Expires January 25, 1998
understanding is obviously desirable. However, applications SHALL understanding is obviously desirable. However, applications SHALL
understand the class of any status code, as indicated by the prefix, understand the class of any status code, as indicated by the prefix,
and treat any unrecognized response as being equivalent to the first and treat any unrecognized response as being equivalent to the first
status code of that class, with the exception that an unrecognized status code of that class, with the exception that an unrecognized
response shall not be cached. For example, if an unrecognized status response shall not be cached. For example, if an unrecognized status
code of "client-error-foo-bar" is received by the client, it can code of "client-error-foo-bar" is received by the client, it can
safely assume that there was something wrong with its request and safely assume that there was something wrong with its request and
treat the response as if it had received a "client-error-bad-request" treat the response as if it had received a "client-error-bad-request"
status code. In such cases, IPP applications could present the status code. In such cases, IPP applications could present the
OPTIONAL message (if present) to the end user since the message is OPTIONAL message (if present) to the end user since the message is
skipping to change at page 78, line 43 skipping to change at page 78, line 41
11.1.2 Successful Status Codes 11.1.2 Successful Status Codes
This class of status code indicates that the client's request was This class of status code indicates that the client's request was
successfully received, understood, and accepted. successfully received, understood, and accepted.
11.1.2.1 successful-ok 11.1.2.1 successful-ok
The request has succeeded. The request has succeeded.
11.1.2.2 successful-ok-ignored-or-substituted-attributes
The request has succeeded, but since "best effort" printing was
allowed and requested, in order to print the job, some attributes were
ignored or unsupported values were substituted with supported values.
11.1.3 Redirection Status Codes 11.1.3 Redirection Status Codes
This class of status code indicates that further action needs to be This class of status code indicates that further action needs to be
taken to fulfill the request. taken to fulfill the request.
Expires January 25, 1998
There are no status codes defined in IPP 1.0 for this class of status There are no status codes defined in IPP 1.0 for this class of status
code. code.
Expires January 14, 1998
11.1.4 Client Error Status Codes 11.1.4 Client Error Status Codes
This class of status code is intended for cases in which the client This class of status code is intended for cases in which the client
seems to have erred. The server SHOULD return a message containing an seems to have erred. The server SHOULD return a message containing an
explanation of the error situation and whether it is a temporary or explanation of the error situation and whether it is a temporary or
permanent condition. permanent condition.
11.1.4.1 client-error-bad-request 11.1.4.1 client-error-bad-request
The request could not be understood by the server due to malformed The request could not be understood by the server due to malformed
skipping to change at page 80, line 5 skipping to change at page 80, line 5
11.1.4.4 client-error-not-authorized 11.1.4.4 client-error-not-authorized
The requester is not authorized to perform the request. Additional The requester is not authorized to perform the request. Additional
authentication information or authorization credentials will not help authentication information or authorization credentials will not help
and the request SHOULD be repeated. This status code is used when the and the request SHOULD be repeated. This status code is used when the
server wishes to reveal that the authentication information is server wishes to reveal that the authentication information is
understandable, however, the requester is explicitly not authorized to understandable, however, the requester is explicitly not authorized to
perform the request. This status codes reveals more information than perform the request. This status codes reveals more information than
"client-error-forbidden". "client-error-forbidden".
Expires January 14, 1998 Expires January 25, 1998
11.1.4.5 client-error-not-possible 11.1.4.5 client-error-not-possible
This status code is used when the request is for something that can This status code is used when the request is for something that can
happen. For example, there might be a request to cancel a job that not happen. For example, there might be a request to cancel a job
has already been aborted by the system. The IPP client SHOULD NOT that has already been aborted by the system. The IPP client SHOULD
repeat the request. NOT repeat the request.
11.1.4.6 client-error-timeout 11.1.4.6 client-error-timeout
The client did not produce a request within the time that the server The client did not produce a request within the time that the server
was prepared to wait. For example, a client issued a Create-Job was prepared to wait. For example, a client issued a Create-Job
operation and then, after a long period of time, issued a Send- operation and then, after a long period of time, issued a Send-
Document operation and this error status code was returned in response Document operation and this error status code was returned in response
to the Send-Document request. The server might have been forced to to the Send-Document request. The server might have been forced to
clean up resources that had been held for the waiting additional clean up resources that had been held for the waiting additional
Documents. The server was forced to close the Job since the client Documents. The server was forced to close the Job since the client
skipping to change at page 80, line 38 skipping to change at page 80, line 38
indication is given of whether the condition is temporary or indication is given of whether the condition is temporary or
permanent. For example, a client with an old reference to a Job (a permanent. For example, a client with an old reference to a Job (a
URI) tries to cancel the Job, however in the mean time the Job might URI) tries to cancel the Job, however in the mean time the Job might
have been completed and all record of it at the Printer has been have been completed and all record of it at the Printer has been
deleted. This status code, 'client-error-not-found' is returned deleted. This status code, 'client-error-not-found' is returned
indicating that the referenced Job can not be found. This error indicating that the referenced Job can not be found. This error
status code is also used when a client supplies a URI as a reference status code is also used when a client supplies a URI as a reference
to the document data in either a Print-URI or Send-URI operation to the document data in either a Print-URI or Send-URI operation
however the document can not be found. however the document can not be found.
ISSUE: Shall a printer be required to validate the URI at submit time?
If the Printer tries to resolve the URI at job processing time, how is
this error returned? In a new "job-state-reasons" value? In a "job-
state-message" value?
In practice, an IPP application should avoid a not found situation by In practice, an IPP application should avoid a not found situation by
first querying and presenting a list of valid Printer URIs and Job first querying and presenting a list of valid Printer URIs and Job
URIs to the end-user. URIs to the end-user.
11.1.4.8 client-error-gone 11.1.4.8 client-error-gone
The requested object is no longer available at the server and no The requested object is no longer available at the server and no
forwarding address is known. This condition should be considered forwarding address is known. This condition should be considered
permanent. Clients with link editing capabilities should delete permanent. Clients with link editing capabilities should delete
references to the request URI after user approval. If the server does references to the request URI after user approval. If the server does
not know or has no facility to determine, whether or not the condition not know or has no facility to determine, whether or not the condition
Expires January 14, 1998
is permanent, the status code "client-error-not-found" should be used is permanent, the status code "client-error-not-found" should be used
instead. instead.
This response is primarily intended to assist the task of web This response is primarily intended to assist the task of web