draft-ietf-ipp-model-01.txt   draft-ietf-ipp-model-02.txt 
skipping to change at page 1, line 14 skipping to change at page 1, line 14
R. deBry R. deBry
IBM Corporation IBM Corporation
T. Hastings T. Hastings
Xerox Corporation Xerox Corporation
R. Herriot R. Herriot
Sun Microsystems Sun Microsystems
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
P. Powell P. Powell
San Diego State University San Diego State University
June 3, 1997 June 23, 1997
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
draft-ietf-ipp-model-01.txt draft-ietf-ipp-model-02.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, and documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups. Note that other groups may also distribute working its working groups. Note that other groups may also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
skipping to change at page 2, line 5 skipping to change at page 2, line 5
aspects of a new Internet Printing Protocol (IPP). IPP is an aspects of a new Internet Printing Protocol (IPP). IPP is an
application level protocol that can be used for distributed printing application level protocol that can be used for distributed printing
using Internet tools and technology. The protocol is heavily influenced using Internet tools and technology. The protocol is heavily influenced
by the printing model introduced in the Document Printing Application by the printing model introduced in the Document Printing Application
(ISO/IEC 10175 DPA) standard. Although DPA specifies both end user and (ISO/IEC 10175 DPA) standard. Although DPA specifies both end user and
administrative features, IPP version 1.0 is focused only on end user administrative features, IPP version 1.0 is focused only on end user
functionality. functionality.
The full set of IPP documents includes: The full set of IPP documents includes:
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
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 for clarify the features that need to be included in a printing protocol for
the Internet. It identifies requirements for three types of users: end the Internet. It identifies requirements for three types of users: end
users, operators, and administrators. The requirements document calls users, operators, and administrators. The requirements document calls
out a subset of end user requirements that must be satisfied in the out a subset of end user requirements that MUST be satisfied in the
first version of IPP. Operator and administrator requirements are out first version of IPP. Operator and administrator requirements are out
of scope for v1.0. The model and semantics document describes a of scope for v1.0. The model and semantics document describes a
simplified model with abstract objects, their attributes, and their simplified model with abstract objects, their attributes, and their
operations. The model introduces a Printer object and a Job object. The operations. The model introduces a Printer object and a Job object. The
Job object supports multiple documents per job. The security document Job object supports multiple documents per job. The security document
covers potential threats and proposed counters to those threats. The covers potential threats and proposed counters to those threats. The
protocol specification is formal document which incorporates the ideas protocol specification is formal document which incorporates the ideas
in all the other documents into a concrete mapping using clearly defined in all the other documents into a concrete mapping using clearly defined
data representations and transport protocol mappings that real data representations and transport protocol mappings that real
implementers can use to develop interoperable client and server side implementers can use to develop interoperable client and server side
components. Finally, the directory schema document shows a generic components. Finally, the directory schema document shows a generic
schema for directory service entries that represent instances of IPP schema for directory service entries that represent instances of IPP
Printers. 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.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
Table of Contents Table of Contents
1. 6 1. Introduction.......................................................7
Introduction..........................................................7
2. Terminology........................................................7 2. Terminology........................................................7
2.1 Conformance Terminology........................................8 2.1 Conformance Terminology ......................................8
2.1.1 MUST......................................................8 2.1.1 MUST......................................................8
2.1.2 MUST NOT..................................................8 2.1.2 MUST NOT..................................................8
2.1.3 SHOULD....................................................8 2.1.3 SHOULD....................................................8
2.1.4 SHOULD NOT................................................8 2.1.4 SHOULD NOT................................................8
2.1.5 MAY.......................................................8 2.1.5 MAY.......................................................8
2.1.6 CONDITIONALLY MANDATORY...................................8 2.1.6 CONDITIONALLY MANDATORY...................................9
2.1.7 NEED NOT..................................................9 2.1.7 NEED NOT..................................................9
2.2 Model Terminology..............................................9 2.2 Model Terminology ...........................................10
2.2.1 Keyword...................................................9 2.2.1 Keyword..................................................10
2.2.2 Attributes................................................9 2.2.2 Parameters...............................................10
2.2.3 Attribute Name............................................9 2.2.2.1 Parameter Name ....................................10
2.2.4 Group Name................................................9 2.2.2.2 Parameter Value ...................................10
2.2.5 Attribute Value..........................................10 2.2.2.3 Parameter Syntax ..................................10
2.2.6 Attribute Syntax.........................................10 2.2.3 Attributes...............................................11
2.2.7 Implements...............................................10 2.2.3.1 Attribute Name ....................................11
2.2.8 Supports.................................................10 2.2.3.2 Attribute Group Name ..............................11
3. Simplified Printing Model.........................................11 2.2.3.3 Attribute Value ...................................11
4. IPP Objects.......................................................13 2.2.3.4 Attribute Syntax ..................................11
4.1 Printer Object................................................13 2.2.4 Supports.................................................12
4.2 Job Object....................................................15 3. Simplified Printing Model.........................................12
4.3 Document Object...............................................16 4. IPP Objects.......................................................15
4.4 Object Relationships..........................................17 4.1 Printer Object ..............................................15
4.5 Object Attributes.............................................17 4.2 Job Object ..................................................17
4.5.1 Job Template Attribute Overview..........................17 4.3 Document Object .............................................18
4.5.2 The "best-effort" Job Attribute Overview.................18 4.4 Object Relationships ........................................19
4.6 Object Identity...............................................19 4.5 Object Attributes ...........................................19
5. IPP Operations....................................................19 4.5.1 Job Template Attribute Overview..........................19
5.1 Operation Semantics...........................................20 4.5.2 The "best-effort" Job Attribute Overview.................20
5.1.1 Print-Job Operation......................................20 4.6 Object Identity .............................................20
5.1.1.1 Print-Job Request...................................20 5. IPP Operations....................................................21
5.1.1.2 Print-Job Response..................................22 5.1 Operation Semantics .........................................22
5.1.2 Create-Job Operation.....................................23 5.1.1 Get-Operations Operation.................................22
5.1.2.1 Create-Job Request..................................23 5.1.1.1 Get-Operations Request ............................23
5.1.2.2 Create Job Response.................................24 5.1.1.2 Get-Operations Response ...........................23
5.1.3 Send-Document Operation..................................25 5.1.2 Print-Job Operation......................................23
5.1.3.1 Send-Document Request...............................25 5.1.2.1 Print-Job Request .................................23
5.1.3.2 Send-Document Response..............................25 5.1.2.2 Print-Job Response ................................25
5.1.4 Cancel Job Operation.....................................26 5.1.3 Print-URI Operation......................................26
5.1.4.1 Cancel-Job Request..................................26 5.1.3.1 Print-URI Request .................................26
5.1.4.2 Cancel-Job Response.................................26 5.1.3.2 Print-URI Response ................................26
5.1.5 Get-Attributes Operation.................................26 5.1.4 Validate-Job Operation...................................27
5.1.5.1 Get-Attributes Request..............................27 5.1.4.1 Validate-Job Request ..............................27
5.1.4.2 Validate-Job Response .............................27
June 3, 1997, Expires December 3, 1997
5.1.5.2 Get-Attributes Response.............................28
5.1.6 Get-Jobs Operation.......................................29
5.1.6.1 Get-Jobs Request....................................29
5.1.6.2 Get-Jobs Response...................................30
5.2 Operation Status and Messages.................................31
5.3 Status Codes (type2 keyword)..................................31
6. Object Attributes.................................................31
6.1 Attribute Syntaxes............................................32
6.1.1 Attribute Extensibility..................................35
6.2 Job Template Attributes.......................................36
6.2.1 job-name (name)..........................................41
6.2.2 job-sheets (type4 keyword)...............................42
6.2.3 notification-events (1setOf type2 keyword)...............42
6.2.4 notification-addresses (1setOf uri)......................42
6.2.5 job-priority (integer(1:100))............................43
6.2.6 job-hold-until (type4 keyword)...........................43
6.2.7 multiple-documents-are (type2 keyword)...................44
6.2.8 best-effort (type2 keyword)..............................44
6.2.9 media (type4 keyword)....................................45
6.2.10 number-up (type3 keyword)...............................46
6.2.11 sides (type2 keyword)...................................46
6.2.12 printer-resolution (type2 keyword)......................47
6.2.13 print-quality (type2 keyword)...........................47
6.2.14 copies (integer(1:2**31 - 1))...........................48
6.2.15 finishings (1setOf type2 keyword).......................48
6.2.16 compression (type3 keyword).............................48
6.2.17 job-k-octets (integer(0:2**31 - 1)).....................48
6.2.18 job-impressions (integer(0:2**31 - 1))..................49
6.2.19 job- media-sheets (integer(0:2**31 - 1))................49
6.3 Job Attributes................................................49
6.3.1 Job Template Attributes..................................49
6.3.2 Job Description Attributes...............................49
6.3.2.1 job-URI (uri).......................................51
6.3.2.2 job-originating-user (name).........................51
6.3.2.3 job-originating-host (name).........................51
6.3.2.4 user-locale (type3 keyword).........................51
6.3.2.5 job-state (type1 keyword)...........................51
6.3.2.6 job-state-reasons (1setOf type2 keyword)...........55
6.3.2.7 job-state-message (text)............................58
6.3.2.8 output-device-assigned (uri)........................58
6.3.2.9 time-since-submission (milliseconds)................58
6.3.2.10 time-since-processing (milliseconds)...............58
6.3.2.11 number-of-intervening-jobs (integer(0:2**31 - 1))..58
6.3.2.12 job-message-from-operator (text)...................59
6.3.2.13 time-since-completion (milliseconds)...............59
6.3.2.14 job-k-octets-completed (integer(0:2**31 - 1))......59
6.3.2.15 job-impressions-completed (integer(0:2**31 - 1))..59
6.3.2.16 job-media-sheets-completed (integer(0:2**31 - 1))..59
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
6.4 Document Attributes...........................................59 5.1.5 Create-Job Operation.....................................28
6.4.1 document-name(name, Mandatory)...........................60 5.1.5.1 Create-Job Request ................................28
6.4.2 document-format (type2 keyword)..........................60 5.1.5.2 Create Job Response ...............................28
6.4.3 document-URI (uri).......................................61 5.1.6 Send-Document Operation..................................29
6.5 Printer Attributes............................................61 5.1.6.1 Send-Document Request .............................29
6.5.1 Printer Job Template Attributes..........................61 5.1.6.2 Send-Document Response ............................29
6.5.2 Printer Description Attributes..........................61 5.1.7 Send-URI Operation.......................................30
6.5.2.1 printer-URI (uri)...................................63 5.1.7.1 Send-URI Request ..................................30
6.5.2.2 printer-name (name).................................63 5.1.7.2 Send-URI Response .................................30
6.5.2.3 printer-location (text).............................63 5.1.8 Cancel Job Operation.....................................30
6.5.2.4 printer-description (text)..........................63 5.1.8.1 Cancel-Job Request ................................31
6.5.2.5 printer-more-info-site (uri)........................64 5.1.8.2 Cancel-Job Response ...............................31
6.5.2.6 printer-driver-installer (uri)......................64 5.1.9 Get-Attributes Operation.................................31
6.5.2.7 printer-make-and-model (text).......................64 5.1.9.1 Get-Attributes Request ............................31
6.5.2.8 maximum-printer-speed (integerUnits)................64 5.1.9.2 Get-Attributes Response ...........................33
6.5.2.9 printer-more-info-manf (uri)........................64 5.1.10 Get-Jobs Operation .....................................34
6.5.2.10 printer-state (type1 keyword)......................65 5.1.10.1 Get-Jobs Request ..................................34
6.5.2.11 printer-state-reasons (1setOf type2 keyword).......67 5.1.10.2 Get-Jobs Response .................................34
6.5.2.12 printer-is-accepting-jobs (boolean)................69 5.2 Operation Status Codes and Messages .........................35
6.5.2.13 printer-state-message (text).......................69 6. Object Attributes.................................................35
6.5.2.14 queued-job-count (integer(0:2**31 - 1))............70 6.1 Attribute Syntaxes ..........................................36
6.5.2.15 printer-message-from-the-operator (text)...........70 6.1.1 Attribute Extensibility..................................37
6.5.2.16 printer-locale (locale)............................70 6.2 Job Template Attributes .....................................38
6.5.2.17 printer-locales-supported (1setOf locale)..........70 6.2.1 job-name (name)..........................................42
7. Conformance.......................................................70 6.2.2 job-sheets (type4 keyword)...............................43
7.1 Conditionally Mandatory.......................................70 6.2.3 notify-events (1setOf type2 keyword).....................43
7.2 Client Conformance Requirements...............................71 6.2.4 notify-addresses (1setOf uri)............................43
7.3 Printer Object Conformance Requirements.......................71 6.2.5 job-priority (integer(1:100))............................44
7.3.1 Objects..................................................71 6.2.6 job-hold-until (type4 keyword)...........................44
7.3.2 Operations...............................................71 6.2.7 multiple-documents-are (type2 keyword)...................45
7.3.3 Attributes...............................................72 6.2.8 best-effort (type2 keyword)..............................45
7.3.4 Default Value............................................72 6.2.9 media (type4 keyword)....................................47
7.3.5 Availability.............................................73 6.2.10 number-up (type3 keyword) ..............................47
7.3.6 Printer extensions.......................................73 6.2.11 sides (type2 keyword) ..................................48
7.3.7 Attribute Syntaxes.......................................73 6.2.12 printer-resolution (type2 keyword) .....................48
7.4 Security Conformance Requirements.............................73 6.2.13 print-quality (type2 keyword) ..........................49
8. IANA Considerations, Registered Extensions, Private Extensions....73 6.2.14 copies (integer(1:2**31 - 1)) ..........................49
9. Security Considerations...........................................74 6.2.15 finishing (1setOf type2 keyword) .......................49
10. References.......................................................74 6.2.16 document-format (type2 keyword) ........................50
11. Author's Address.................................................75 6.2.17 compression (type3 keyword) ............................50
12.77 6.2.18 job-k-octets (integer(0:2**31 - 1)) ....................50
Change History.......................................................78 6.2.19 job-impressions (integer(0:2**31 - 1)) .................50
12.1 Changes made to version 970512, dated 12-May-1997 to make 6.2.20 job- media-sheets (integer(0:2**31 - 1)) ...............51
version 970603, dated 03-June-1997...............................78 6.3 Job Description Attributes ..................................51
12.2 Changes made to version 970509, dated 9-May-1997 to make version 6.3.1 job-uri (uri)............................................52
970512, dated 12-May-1997.........................................78 6.3.2 job-uri-user (uri).......................................53
12.3 Changes made to version 2.2, dated 5-May-1997 to make version 6.3.3 job-originating-user (name)..............................53
970509, dated 9-May-1997..........................................79 6.3.4 job-originating-host (name)..............................53
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
12.4 Changes made to version 2.1, dated 24-April-1997 to make version 6.3.5 user-locale (type3 keyword)..............................53
2.2, dated 5-May-1997.............................................79 6.3.6 job-state (type1 keyword)................................53
12.5 Changes made to version 2.0, dated 26-March-1997 to make version 6.3.7 job-state-reasons (1setOf type2 keyword)................53
2.1, dated 22-April-1997..........................................79 6.3.8 job-state-message (text).................................53
12.6 Changes made to version 1.8, dated 24-March-1997 to make version 6.3.9 output-device-assigned (name)............................53
2.0, dated 26-March-1997..........................................79 6.3.10 time-since-pending (milliseconds) ......................54
12.7 Changes made to version 1.7, dated 24-Mar-1997 to make version 6.3.11 time-since-processing (milliseconds) ...................54
1.8, dated 24-March-1997..........................................79 6.3.12 time-since-completed (milliseconds) ....................54
12.8 Changes made to version 1.6, dated 12-Mar-1997 to make version 6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) ......54
1.7, dated 24-March-1997..........................................80 6.3.14 job-message-from-operator (text) .......................54
12.9 Changes made to version 1.5, dated 11-Mar-1997 to make version 6.3.15 job-k-octets-completed (integer(0:2**31 - 1)) ..........54
1.6, dated 12-March-1997..........................................80 6.3.16 job-impressions-completed (integer(0:2**31 - 1)) ......55
12.10 Changes made to version 1.4, dated 27-Feb-1997 to make version 6.3.17 job-media-sheets-completed (integer(0:2**31 - 1)) ......55
1.5, dated 9-March-1997...........................................82 6.4 Document Attributes .........................................55
6.4.1 document-name (name).....................................55
6.4.2 document-format (type2 keyword)..........................55
6.4.3 document-uri (uri).......................................56
6.5 Printer Description Attributes ..............................56
6.5.1 printer-uri (uri)........................................57
6.5.2 printer-uri-user (uri)...................................58
6.5.3 printer-name (name)......................................58
6.5.4 printer-location (text)..................................58
6.5.5 printer-description (text)...............................58
6.5.6 printer-more-info-site (uri).............................58
6.5.7 printer-driver-installer (uri)...........................58
6.5.8 printer-make-and-model (text)............................58
6.5.9 printer-more-info-manufacturer (uri).....................59
6.5.10 printer-state (type1 keyword) ..........................59
6.5.11 printer-state-reasons (1setOf type2 keyword) ...........60
6.5.12 printer-is-accepting-jobs (boolean) ....................62
6.5.13 printer-state-message (text) ...........................62
6.5.14 queued-job-count (integer(0:2**31 - 1)) ................62
6.5.15 printer-message-from-the-operator (text) ...............62
6.5.16 printer-locale (locale) ................................62
6.5.17 printer-locales-supported (1setOf locale) ..............62
6.5.18 color-supported (boolean) ..............................62
7. Conformance.......................................................63
7.1 Conditionally Mandatory .....................................63
7.2 Client Conformance Requirements .............................63
7.3 Printer Object Conformance Requirements .....................63
7.3.1 Objects..................................................64
7.3.2 Operations...............................................64
7.3.3 Attributes...............................................64
7.3.4 Printer extensions.......................................65
7.3.5 Attribute Syntaxes.......................................65
7.4 Security Conformance Requirements ...........................65
8. IANA Considerations, Registered Extensions, Private Extensions....66
9. Security Considerations...........................................66
1. June 23, 1997, Expires December 23, 1997
10.References .......................................................66
11.Author's Address .................................................67
12.APPENDIX A - Status Codes ........................................70
12.1 Status Codes (type2 keyword) ................................70
12.1.1 Informational ..........................................71
12.1.2 Successful Status Codes ................................71
12.1.2.1 successful-OK (IPPL1) .............................71
12.1.3 Redirection Status Codes ...............................71
12.1.4 Client Error Status Codes ..............................71
12.1.4.1 client-error-bad-request (IPPL1) ..................71
12.1.4.2 client-error-unauthorized .........................71
12.1.4.3 client-error-payment-required .....................72
12.1.4.4 client-error-forbidden (IPPL1) ....................72
12.1.4.5 client-error-method-not-allowed ...................72
12.1.4.6 client-error-timeout (NEW) ........................72
12.1.4.7 client-error-not-found ............................72
12.1.4.8 client-error-gone .................................72
12.1.4.9 client-error-request-entity-too-large (IPPL1) .....73
12.1.4.10client-error-request-URI-too-long .................73
12.1.4.11client-error-unsupported-media-type (IPPL1) .......73
12.1.4.12client-error-attribute-value-not-supported ........73
12.1.5 Server Error Status Codes ..............................74
12.1.5.1 server-error-internal-server-error ................74
12.1.5.2 server-error-operation-not-implemented ............74
12.1.5.3 server-error-service-unavailable ..................74
12.1.5.4 server-error-timeout (NEW) ........................74
12.1.5.5 server-error-HTTP-version-not-supported (NEW) .....74
12.1.5.6 server-error-IPP-version-not-supported ............75
12.1.5.7 server-error-printer-error ........................75
12.1.5.8 server-error-write-fault ..........................75
12.2 Mapping of HTTP 1.1 Status Codes to IPP Status Keywords .....76
12.3 Status Keywords for IPP Operations ..........................77
13.APPENDIX B - "document-format" Values ............................77
14.APPENDIX C - "media" Values ......................................80
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
Introduction 1. Introduction
The Internet Printing Protocol (IPP) is an application level protocol The Internet Printing Protocol (IPP) is an application level protocol
that can be used for distributed printing on the Internet. The protocol that can be used for distributed printing on the Internet. The protocol
is heavily influenced by the printing model introduced in the Document is heavily influenced by the printing model introduced in the Document
Printing Application (ISO/IEC 10175 DPA) standard. Although DPA Printing Application (ISO/IEC 10175 DPA) standard. Although DPA
identifies both end user and administrative features, the first version identifies both end user and administrative features, the first version
of IPP is focused only on end user functionality. of IPP is focused only on end user functionality.
Section 2. Terminology introduces the terminology used within this Section 2 introduces the terminology used within this document.
document.
Section 0 introduces the simplified IPP model. The IPP model is made Section 3 introduces the simplified IPP model. The IPP model is made
simple by exposing only the objects, attributes, and operations that are simple by exposing only the objects, attributes, and operations that are
essential for end user access and control of the print subsystem. When essential for end user access and control of the print system. When
future versions of IPP include features which satisfy operator and future versions of IPP include features which satisfy operator and
administrator requirements, the model can be extended to support the administrator requirements, the model can be extended to support the
appropriate objects, attributes, and operations. appropriate objects, attributes, and operations.
Section 0 introduces the full semantics of the Printer, Job, and Section 4 introduces the full semantics of the Printer, Job, and
Document objects in the IPP model. It covers how instances of these Document objects in the IPP model. It covers how instances of these
objects are identified, named, and related to each other. objects are identified, named, and related to each other.
Section 0 covers the operations that are part of the IPP model. These Section 5 covers the operations that are part of the IPP model. These
operations include: the Create-Job, Send-Document, Print-Job, Cancel, operations include: the Create-Job, Send-Document, Print-Job, Cancel,
Get-Attributes, and Get-Jobs operations. Get-Attributes, and Get-Jobs operations.
Section 0 describes the attributes, their syntaxes, and semantics which Section 6 describes the attributes, their syntaxes, and semantics which
are part of the IPP model. Each object's attributes are described, and are part of the IPP model. Each object's attributes are described, and
the attributes are grouped into logical groups to help clarify their the attributes are grouped into logical groups to help clarify their
relationships and meaning. These groups are also used to simplify relationships and meaning. These groups are also used to simplify
queries that request multiple attributes. queries that request multiple attributes.
Section 7. Conformance is a review of conformance issues and clarifies Section 7 is a review of conformance issues and clarifies requirements
requirements that apply to client side and server side implementations. that apply to client side and server side implementations.
Sections 8. IANA Considerations, Registered Extensions, Private Sections 8-11 cover extensibility, security, technical references, and
Extensions-11. Author's Address cover extensibility, security, technical author information.
references, and author information.
2. Terminology 2. Terminology
This specification uses the terminology defined in this section. This specification uses the terminology defined in this section.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
2.1 Conformance Terminology 2.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].
2.1.1 MUST 2.1.1 MUST
This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", mean that This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", mean that
the definition is an absolute requirement of the specification. the definition is an absolute requirement of the specification.
ISSUE: There are too many "SHALLs" in the document right now. Carl-Uno
makes the comment: "I think we have gone overboard in the use of SHALL
in this version. Every time we need a verb it is preceded by a SHALL,
also in places where it does not serve any purpose. I think that this
only detracts from the places where SHALL is really useful." These do
need to be cleaned up. Also, many of our conformance requirements in
the form of MANDATORY, CONDITIONALLY MANDATORY and SHALL statements are
too stringent, and needs quite a bit of relaxation.
2.1.2 MUST NOT 2.1.2 MUST NOT
This phrase, or the phrase "SHALL NOT", mean that the definition is an This phrase, or the phrase "SHALL NOT", mean that the definition is an
absolute prohibition of the specification. absolute prohibition of the specification.
2.1.3 SHOULD 2.1.3 SHOULD
This word, or the adjective "RECOMMENDED", mean that there may exist This word, or the adjective "RECOMMENDED", mean that there may exist
valid reasons in particular circumstances to ignore a particular item, valid reasons in particular circumstances to ignore a particular item,
but the full implications must be understood and carefully weighed but the full implications must be understood and carefully weighed
skipping to change at page 8, line 45 skipping to change at page 9, line 4
behavior described with this label. behavior described with this label.
2.1.5 MAY 2.1.5 MAY
This word, or the adjective "OPTIONAL", mean that an item is truly This word, or the adjective "OPTIONAL", mean 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 include prepared to interoperate with another implementation which does include
June 23, 1997, Expires December 23, 1997
the option, though perhaps with reduced functionality. In the same vein the option, though perhaps with reduced functionality. In the same vein
an implementation which does include a particular option MUST be an implementation which does include a particular option MUST be
prepared to interoperate with another implementation which does not prepared to interoperate with another implementation which does not
include the option (except, of course, for the feature the option include the option (except, of course, for the feature the option
provides.) provides.)
2.1.6 CONDITIONALLY MANDATORY 2.1.6 CONDITIONALLY MANDATORY
June 3, 1997, Expires December 3, 1997
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 item corresponds to a feature or behavior that the implementation if the item corresponds to a feature or behavior that the
implementation is capable of realizing. It is also true, that a implementation is capable of realizing. It is also true, that a
conforming implementation NEED NOT implement the items that correspond conforming implementation is not required to implement the items that
to features or behaviors that the implmentation is not capable of correspond to features or behaviors that the implementation is not
realizing. capable of realizing.
ISSUE: Should we use the following definition and define an explicit
condition for each attribute labeled as CONDITIONALLY MANDATORY?
This term means that an item MUST be implemented in a conforming
implementation if the specified condition is true. Furthermore, a
conforming implementation NEED NOT implement the item if the
specified condition is false.
2.1.7 NEED NOT 2.1.7 NEED NOT
The verb "NEED NOT" indicates an action that the subject of the sentence The verb "NEED NOT" indicates an action that the subject of the sentence
does not have to implement in order to claim conformance to the does not have to implement in order to claim conformance to the
standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY
NOT" sounds like a prohibition. NOT" sounds like a prohibition.
ISSUE: Occasionally in the document the terms MANDATORY and OPTIONAL
get used for what a requester shall supply in a request or what a
provider shall return in a response. I think that it is confusing to
say that such and such input parameter is OPTIONAL meaning that the
requester NEED NOT supply it in a request because it sounds like we are
saying that the requester NEED not implement the input parameter and
that the provide need not support the input parameter. Same for
responses. Instead of labeling input parameters and output parameters
as MANDATORY and OPTIONAL, just say something like "the requester SHALL
supply the xxx input-parameter in the yyy operation" or "the requester
MAY supply the zzz input-parameter in the yyy operation" or "the
requester NEED NOT supply the zzz input-parameter in the yyy operation".
In headings for parameters, how about: "(SHALL be supplied)" and "(MAY
be omitted)"? In the description of each parameter we need to also
specify whether support of the input parameter is MANDATORY for the
provider or whether support is OPTIONAL.
June 23, 1997, Expires December 23, 1997
2.2 Model Terminology 2.2 Model Terminology
2.2.1 Keyword 2.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. These entities are often attribute entities within the abstract model. Attribute names, attribute values,
names, attribute values, attribute syntaxes, and attribute groups. In attribute syntaxes, and attribute groups are represented as keywords. In
this document, a keyword is a sequence of characters (length of 1 to this document, a keyword is a sequence of characters (length of 1 to
255) which consists of the following ASCII characters: letters, digits, 255) which consists of the following ASCII characters: lower-case
hyphen ("-"), and underscore ("_"). A keyword MUST start with a letter. letters, digits, hyphen ("-"), and underscore ("_"). A keyword MUST
In the actual protocol, these keywords will be represented using an start with a lower-case letter. In the actual protocol, these keywords
appropriate protocol encoding (strings, enumerated values, constants, will be represented using an appropriate protocol encoding (strings,
operation codes, identifiers, etc.). enumerated values, constants, operation codes, identifiers, etc.).
2.2.2 Attributes 2.2.2 Parameters
An attribute is an item of information consisting of an attribute name A parameter is an item of information supplied in an operation
and attribute value(s) using a specific syntax for that attribute. All consisting of a parameter name and parameter value(s) using a specific
attributes are defined in section 6. Object Attributes. Attributes syntax for that parameter. Clients supply input parameters in an
operation request and Printers return output parameters in an operation
response. Most parameters have corresponding object attributes, some do
not. All parameters are defined in section 5. Parameterare identified
as being "MANDATORY", "CONDITIONALLY MANDATORY", or "OPTIONAL" for
implementation and "SHALL be supplied" or "MAY be omitted" in operation
requests and responses.
2.2.2.1 Parameter Name
Each parameter is uniquely identified in this document by its parameter
name which is a keyword. The keyword parameter name is given in the
section header describing that parameter. In running text in this
document, parameter names are indicated inside double quotation marks
(").
2.2.2.2 Parameter Value
Each parameter has one or more values. Parameter values are represented
in the syntax type specified for that parameter. In running text in this
document, parameter values are indicated inside single quotation marks
('), whether their parameter syntax is keyword, integer, text, etc.
2.2.2.3 Parameter Syntax
Each parameter is defined using an explicit syntax. In this document,
each syntax type is defined as a keyword with specific meaning. The
protocol specification document [23] indicates the actual representation
for each parameter syntax that SHALL be used for the actual protocol.
June 23, 1997, Expires December 23, 1997
Parameter syntaxes are the same as attribute syntaxes which are defined
in section 6.1.
2.2.3 Attributes
An attribute is an item of information that is associated with an object
instance consisting of an attribute name and attribute value(s) using a
specific syntax for that attribute. A requester sets an attribute by
supplying an input parameter in an operation request which has the same
syntax as the attribute. A provider returns an attribute by supplying
an output parameter in an operation response which has the same syntax
as the attribute. The attributes that can be set by a client have a
corresponding representation as an input parameter. The attributes that
can be queires by a client have a corresonding representation as an
output parameter. All attributes are defined in section 6. Attributes
are identified as being "MANDATORY", "CONDITIONALLY MANDATORY", or are identified as being "MANDATORY", "CONDITIONALLY MANDATORY", or
"OPTIONAL". "OPTIONAL".
2.2.3 Attribute Name 2.2.3.1 Attribute Name
Each attribute is uniquely identified in this document by its attribute Each attribute is uniquely identified in this document by its attribute
name which is a keyword. The keyword attribute name is given in the name which is a keyword. The keyword attribute name is given in the
section header describing that attribute. In running text in this section header describing that attribute. In running text in this
document, attribute names are indicated inside double quotation marks document, attribute names are indicated inside double quotation marks
("). (").
2.2.4 Group Name 2.2.3.2 Attribute Group Name
Related attributes are grouped into named groups. The name of the group
is a keyword. It can be used wherever an attribute name is used in
June 3, 1997, Expires December 3, 1997
place of naming all the attributes in the group explicitly. Attribute
groups are defined in section 6. Object Attributes.
2.2.5 Attribute Value
Each attribute shall have one or more values. Attribute values shall be Related attributes are grouped into named attribute groups. The name of
represented in the syntax type specified for that attribute. In running the group is a keyword. It MAY be used as the value of an input
text in this document, attribute values are indicated inside single parameter in place of naming all the attributes in the group explicitly.
quotation marks ('), whether their syntax types are keyword, integer, Attribute groups are defined in section 6.
text, etc.
2.2.6 Attribute Syntax 2.2.3.3 Attribute Value
Each attribute is defined using an explicit syntax. In this document, Each attribute has one or more values. Attribute values are represented
each syntax type is defined as a keyword with specific meaning. The in the syntax type specified for that attribute. In running text in this
protocol specification document [23] shall indicate the actual document, attribute values are indicated inside single quotation marks
representation for each syntax type that shall be used for the actual ('), whether their attribute syntax is keyword, integer, text, etc.
protocol. Attribute syntaxes are defined in section 6.1 Attribute
Syntaxes.
2.2.7 Implements 2.2.3.4 Attribute Syntax
By definition, an attribute is implemented if, in response to a query Each attribute is defined using an explicit attribute syntax. In this
for that attribute, an implementation responds with both the attribute document, each attribute syntax is defined as a keyword with specific
and a current value (or values) for that attribute. . A conforming meaning. The protocol specification document [23] indicates the actual
implementation SHALL implement all MANDATORY attributes and it SHALL representation for each attribute syntax that SHALL be used for the
implement all CONDITIONALLY MANDATORY attributes whose possible values actual protocol. Attribute syntaxes are defined in section 6.1.
correspond to the behaviors that the implementation is capable of
realizing.
2.2.8 Supports June 23, 1997, Expires December 23, 1997
2.2.4 Supports
By definition, a job processing behavior or selectable feature is By definition, a job processing behavior or selectable feature is
supported by Printer only if that Printer implements the corresponding supported by a Printer only if that Printer responds with the
"supported" attribute populated with the value representing that corresponding attribute and the associated value in a response to a
behavior or feature. A given implementation may exhibit a behavior that query for that attribute. A given implementation may exhibit a behavior
corresponds to the value of some supported attribute, but if the that corresponds to the value of some supported attribute, but if the
implementation, when queried for that attribute, doesn't respond with implementation, when queried for that attribute, doesn't respond with
the supported attribute populated with that specific value, then as far the supported attribute populated with that specific value, then as far
as IPP is concerned, that Printer does not support that feature. as IPP is concerned, that Printer does not support that feature. A
Section 6. Object Attributes describes all of the Printer object's conforming implementation SHALL support all MANDATORY attributes and all
supported attributes. Most of the Printer object's supported attributes CONDITIONALLY MANDATORY attributes whose possible values correspond to
are OPTIONAL or CONDITIONALLY MANDATORY, therefore conformance to IPP the behaviors that the implementation is capable of realizing. Therefore
does not mandate that all implementations support all possible value conformance to IPP does not mandate that all implementations support all
representing all possible job processing behaviors and features. possible values representing all possible job processing behaviors and
features.
June 3, 1997, Expires December 3, 1997
For example, if a given instance of a Printer supports only certain For example, if a given instance of a Printer supports only certain
document formats, then that Printer SHALL implement the "document- document formats, then that Printer SHALL respond with the "document-
format-supported" attribute and that attribute SHALL be populated with a format-supported" attribute populated with a set of values, possibly
set of values, possibly only one, taken from the entire set of possible only one, taken from the entire set of possible values defined in this
values defined in this model document. This implemented set of values model document. This set of values represent the Printer's set of
represent the Printer's set of supported document formats. Another supported document formats. Another example is the "finishings-
example is the "finishings-supported" attribute. If a Printer is not supported" attribute. If a Printer is not physically capable of
physically capable of stapling (there is no stapler in the output device stapling (there is no stapler in the output device itself), the
itself), the "finishings-supported" attribute MUST NOT be implemented "finishings-supported" attribute MUST NOT be populated with the value of
with the value of 'staple'. Note: The supported attributes are set 'staple'.
(populated) by some administrative process or automatic sensing
mechanism which is outside the scope of IPP. Note: The supported attributes are set (populated) by some
administrative process or automatic sensing mechanism which is outside
the scope of IPP.
3. Simplified Printing Model 3. Simplified Printing Model
In order to a achieve its goal of realizing a workable printing protocol In order to a achieve its goal of realizing a workable printing protocol
for the Internet, IPP is based on a simplified printing model which for the Internet, IPP is based on a simplified printing model which
abstracts the many (often complex) components of real world printing abstracts the many (often complex) components of real world printing
solutions. Many of these systems include features, interfaces, and solutions. Many of these systems include features, interfaces, and
relationships that are beyond the scope of IPP. IPP has to run in a relationships that are beyond the scope of IPP. IPP has to run in a
distributed computing environment where requesters of print services distributed computing environment where requesters of print services
(clients, applications, PC drivers, etc.) cooperate and interact with (clients, applications, PC drivers, etc.) cooperate and interact with
print service providers. Although the underlying configuration may be a print service providers. Although the underlying configuration may be a
complex n-tier client/server system, an important simplifying step in complex n-tier client/server system, an important simplifying step in
the IPP model is to expose only the key objects and interfaces required the IPP model is to expose only the key objects and interfaces required
for printing. The IPP model encapsulates these important elements into for printing. The IPP model encapsulates these important elements into
three simple objects: three simple objects:
Printer (Section 0) June 23, 1997, Expires December 23, 1997
Job (Section 0) Printer (Section 4.1)
Document (Section 0) Job (Section 4.2)
Document (Section 4.3)
Each of these objects has a set of operations associated with it. These Each of these objects has a set of operations associated with it. These
include: include:
Printer: Printer:
Create-Job (Section 0) Get-Operations (Section 5.1.1)
Print-Job (Section ???) Print-Job (Section 5.1.2)
Get-Attributes (Section 0) Print-URI (Section 5.1.3)
Get-Jobs (Section 0) Validate-Job (Section 5.1.4)
Create-Job (Section 5.1.5)
Get-Attributes (Section 5.1.9)
Get-Jobs (Section 5.1.10)
Job Job
Send-Document(section ???) Send-Document(Section 5.1.6)
Get-Attributes (Section 0) Send-URI (Section 5.1.7)
Cancel Job (Section 0) Cancel-Job (Section 5.1.8)
Get-Attributes (Section 5.1.9)
June 3, 1997, Expires December 3, 1997
There are no operations defined for a Document object. All document There are no operations defined for a Document object. All document
information is accessed through a Job object and its operations. information is accessed through a Job object and its operations.
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 defined are other components of a print service which are not explicitly defined
in the IPP model. The following figure illustrates where IPP fits with in the IPP model. The following figure illustrates where IPP fits with
respect to these other components. respect to these other components.
June 23, 1997, Expires December 23, 1997
+--------------+ +--------------+
| Application | | Application |
o +. . . . . . . | o +. . . . . . . |
\|/ | Spooler | \|/ | Spooler |
/ \ +. . . . . . . | +---------+ / \ +. . . . . . . | +---------+
End-User | Print Driver |---| File | End-User | Print Driver |---| File |
+-----------+ +-----+ +------+-------+ +----+----+ +-----------+ +-----+ +------+-------+ +----+----+
| Browser | | GUI | | | | Browser | | GUI | | |
+-----+-----+ +--+--+ | | +-----+-----+ +--+--+ | |
| | | | | | | |
skipping to change at page 12, line 37 skipping to change at page 14, line 28
O I E | +---------+----------+ O I E | +---------+----------+
T R C | | T R C | |
I E U | I E U |
F C R -------------- Transport ------------------ F C R -------------- Transport ------------------
I T I I T I
C O T | --+ C O T | --+
A R Y +--------+--------+ | A R Y +--------+--------+ |
T Y | IPP Server | | T Y | IPP Server | |
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 physical IPP Printers encapsulate the functions normally associated with physical
output devices along with the spooling, scheduling and multiple device output devices along with the spooling, scheduling and multiple device
management functions associated with a print server. Printers may be management functions associated with a print server. Printers may be
registered as entries in a directory where end users find and select registered as entries in a directory where end users find and select
them based on some sort of filtered and context based searching. The them based on some sort of filtered and context based searching. The
directory is used to store relatively static information about the directory is used to store relatively static information about the
June 3, 1997, Expires December 3, 1997
Printer, allowing end users to search for and find Printers that match Printer, allowing end users to search for and find Printers that match
their search criteria (name, context, printer capabilities, etc.) their search criteria (name, context, printer capabilities, etc.).
IPP clients implement the IPP protocol on the client side and give end IPP clients implement the IPP protocol on the client side and give end
users or programs the ability to query an IPP Printer and submit and users or programs the ability to query an IPP Printer and submit and
manage their print jobs. An IPP server is just that part of the IPP manage their print jobs. An IPP server is just that part of the IPP
Printer that implements the protocol. The rest of the IPP Printer Printer that implements the protocol. The rest of the IPP Printer
implements the application semantics of the print service itself. All implements the application semantics of the print service itself. The
IPP Printer MAY be embedded in an output device or MAY be embedded in a
host on the network that communicates with the output device. All
information about the Printer, both static and dynamic information, can information about the Printer, both static and dynamic information, can
June 23, 1997, Expires December 23, 1997
be accessed directly from the Printer itself. The more dynamic be accessed directly from the Printer itself. The more dynamic
information associated with a Printer includes state, currently loaded information associated with a Printer includes state, currently loaded
and ready media, number of jobs on the Printer, errors, warnings, etc.. and ready media, number of jobs on the Printer, errors, warnings, etc.
When a job is submitted to the Printer, a Job object is created. The When a job is submitted to the Printer, the Printer SHALL create a Job
end user then interacts with this new Job to query its status and object. The end user then interacts with this new Job to query its
monitor the progress of the job. End users may also cancel the Job. status and monitor the progress of the job. End users may also cancel
The end user is able to register to receive certain events which are the Job. The end user is able to register to receive certain events
then routed using the notification service(s). which are then routed using the notification service(s).
4. IPP Objects 4. IPP Objects
4.1 Printer Object An IPP object is defined as set of attributes that can be potentially
supported by each instance of the object. The attributes for each
object type are identified as MANDATORY, CONDITIONALLY MANDATORY, or
OPTIONAL (see section 2). Each instance of an IPP object supports an
appropriate set of attributes (with values for each of the attributes)
that describe that instance. That is, an IPP Printer object is defined
as set of attributes that can potentially be implemented by some entity
claiming to be an IPP Printer. In the same manner, a Job object is
defined as a set of attributes that are potentially associated with each
instance of a Job object.
A major component of the IPP model is the Printer object. 4.1 Printer Object
The capabilities and state of an IPP Printer are described by its A major component of the IPP model is the Printer object.The
attributes. Printer attributes are defined in the following categories: capabilities and state of an IPP Printer are described by its
attributes. Printer attributes are grouped as follows:
Job Template Attributes (section 6.5.1 Printer Job Template "job-template" attributes (section 6.2)
Attributes) "printer-description" attributes (section 6.5)
Printer Description Attributes (section 6.5.2 Printer Description
Attributes)
Operations which are invoked on a printer include: Operations which are invoked on a printer include:
Create-Job (section 0) Get-Operations (Section 5.1.1)
Print-Job (section ???) Print-Job (section 5.1.2)
Get-Attributes (section 0) Print-URI (Section 5.1.3)
Get-Jobs (section 0) Validate-Job (Section 5.1.4)
Create-Job (section 5.1.5)
Get-Attributes (section 5.1.9)
Get-Jobs (section 5.1.10)
An instance of a Printer object implements IPP. Using the protocol, end An instance of a Printer object implements IPP. Using the protocol, end
users may query the attributes of the Printer, submit jobs to the users may query the attributes of the Printer, submit jobs to the
Printer, determine subsequent states of submitted and queued jobs, and Printer, determine subsequent states of submitted and queued jobs, and
cancel their own print jobs. The realization of a Printer object may cancel their own print jobs. The realization of a Printer object may
take on different forms for any given configuration of real components. take on different forms for any given configuration of real components.
However, the details of the configuration of real components must be
June 23, 1997, Expires December 23, 1997
However, the details of the configuration of real components are
transparent to the end user. transparent to the end user.
June 3, 1997, Expires December 3, 1997
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 or print service provider, an IPP Printer object could be used to device or print service provider, an IPP Printer object could be used to
represent any real or virtual device with semantics consistent with the represent any real or virtual device with semantics consistent with the
Printer object. For example, an instance of a Printer object could be Printer object. For example, an instance of a Printer object could be
used to front end a fax-out device, any kind of imager, or even a CD used to front end a fax-out device, any kind of imager, or even a CD
writer. writer.
Some examples of configurations supporting a Printer object include: Some examples of configurations supporting a Printer object include:
1) An output device, with no spooling capabilities 1) An output device, with no spooling capabilities
skipping to change at page 15, line 5 skipping to change at page 17, line 5
devices devices
3a) The associated output devices might or might not be capable of 3a) The associated output devices might or might not be capable of
spooling jobs 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 Printer
objects on top of several print system configurations. The embedded objects on top of several print system configurations. The embedded
case below represents configurations 1 and 2. The hosted and fan-out case below represents configurations 1 and 2. The hosted and fan-out
figures below represent configuration 3. figures below represent configuration 3.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
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 15, line 48 skipping to change at page 18, line 4
/ \ +--------+ # Object # \ +---------------+ / \ +--------+ # Object # \ +---------------+
########### any\ | | ########### any\ | |
+-->| output device | +-->| output device |
| | | |
+---------------+ +---------------+
4.2 Job Object 4.2 Job Object
A Job object is used to model a job. A job can contain one or more A Job object is used to model a job. A job can contain one or more
documents. The information required to create a Job object is sent in a documents. The information required to create a Job object is sent in a
create request from the end user via an IPP client to a Printer. A
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
create request can be either a Create-Job Request or a Print-Job create request from the end user via an IPP client to a Printer. A
Request. The Printer may perform some validation checks to verify that create request can be either a Print-Job Request, a Print-URI request,
the job may indeed be processed. For example, the create request may or a Create-Job Request. The Printer MUST perform validation checks to
specify that the documents within the job are to be printed duplex (on verify that the job may indeed be processed. A client MAY send a
both sides of the media). However, the Printer might not support such a Validate-Job Request (with no document data) so that the Printer
feature. Once the Printer validates the submitted information, a Job performs all validation checks without the overhead of transferring all
object is created. The instance of the Job object is initialized with of the document data. As an example of some of the validation checks
information from the create request. If a Create-Job operation is used that are performed, the create request may specify that the documents
to create the Job object, subsequent Send-Document operations are used within the job are to be printed duplex (on both sides of the media).
to transfer the document data from the client to the IPP Printer. 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 MUST be done when: This model specification defines rules for what MUST be done when:
- optional attributes are missing - optional attributes are missing
- there are conflicts between what is supported and what is - there are conflicts between what is supported and what is requested
requested
- there are conflicts between what the client requests via external - there are conflicts between what the client requests via external
attributes in the IPP operation and what the client requests in attributes in the IPP operation and what the client requests in
embedded instructions in the document page description language embedded instructions in the document page description language
(PDL). (PDL).
Job attributes are broken up into the following groups: Job attributes are grouped as follows:
Job Template Attributes (optionally supplied by the client/end user, "job-template" attributes (optionally supplied by the client/end
section 6.3.1 Job Template Attributes user, section 6.2)
Job Description Attributes (set by the Printer, section 6.3.2 Job "job-description" attributes (set by the Printer, section 6.3)
Description Attributes)
The following operations can be invoked on Jobs: The following operations can be invoked on Jobs:
Send-Document(section 5.1.3 Send-Document Operation)
Cancel Job (section 0)
Get-Attributes (section 0)
4.3 Document Object
Documents consist of printable data and attributes that describe the Send-Document (section 5.1.6)
data to be printed. In this version of the protocol only the attributes Send-URI (Section 5.1.7)Cancel Job (section 5.1.8)
in section 6.4 Document Attributes are defined for individual Get-Attributes (section 5.1.9)
documents. Documents are sent in a Send-Document operation or in a
Print-Job operation.
Document attributes include:
Document Attributes (section 0) 4.3 Document Object
Currently no operations are defined on documents. A Document object consists of printable data and Document Attributes
(see section 6.4). These Document Attributes only describe the data to
be printed; they do not include any specialized document processing
instructions that apply to only one Document in a multi-document Job.
All Job Template attributes (those attributes that describe desired job
processing behavior) are defined as part of the Job object, therefore,
they apply equally to all Documents within a Job. Currently there are no
operations defined for Document objects.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
4.4 Object Relationships 4.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 object maintained persistently along with the persistent storage of the object
attributes. A Printer can represent one or more output devices. An attributes. A Printer can represent one or more output devices. An
output device can be represented by at most one Printer object. A output device can be represented by at most one Printer object. A
Printer can contain zero or more Job objects. A Job object is contained Printer can contain zero or more Job objects. A Job object is contained
in exactly one Printer object. A Job object contains one or more in exactly one Printer object. A Job object contains one or more
Documents. If the Document is simply a reference to some print data Documents. If the Document is simply a reference to some print data
stream, the reference may be used in multiple documents in the same Job stream, the reference may be used in multiple Documents in the same Job
or even in different Jobs. If the Document is not just a reference, but or even in different Jobs. If the Document is not just a reference, but
an actual stream of print data, it shall only be contained in one an actual stream of print data, the stream SHALL contain only one
Document, although there can be copies of it in other Documents. document, although there can be copies of the same document data in
other Documents in the same or different Jobs.
ISSUE: Does "An output device can be represented by at most one Printer
object" kill "fan-in" too much?
4.5 Object Attributes 4.5 Object Attributes
Each object type is defined by a set of attributes which describe the Each object type is defined by a set of possible attributes which
realization of each instance of an object. That is, a Printer object is describe the realization of each instance of an object. That is, a
defined as set of attributes that are associated with each instance of a Printer object is defined as set of attributes which each instance of a
Printer object. In the same manner, a Job object is defined by defining Printer object might potentially support. In the same manner, a Job
the set of attributes that are associated with each instance of a Job object is defined as a set of attributes that are associated with each
object. Some attributes are OPTIONAL, some are MANDATORY, and some are instance of a Job object. Some attributes are OPTIONAL, some are
CONDITIONALLY MANDATORY (see section 2). Object attributes are defined MANDATORY, and some are CONDITIONALLY MANDATORY (see section 2). Object
in section 0 of this document. attributes are defined in section 6 of this document.
4.5.1 Job Template Attribute Overview 4.5.1 Job Template Attribute Overview
Attributes that a client may optionally include in a create request are Attributes that a client may optionally include in a create request are
called Job Template attributes. These are described in detail in called Job Template attributes. These are described in detail in
section 0. The Printer object has associated attributes which define section 6.2. The Printer object has associated attributes which define
supported and default values for the Printer. supported and default values for the Printer.
- When a Job Template attribute is supplied by a client in a create - When a Job Template attribute is supplied by a client in a create
request, the attribute and its value describe the desired job request, the attribute and its value describe the desired job
processing behavior. processing behavior.
- The Printer object's supported attribute describes what behaviors - The Printer object's supported attribute describes what behaviors
are possible. are possible.
- The Printer object's default value attribute describes what will be - The Printer object's default value attribute describes what will be
done when no other job processing information is supplied by the done when no other job processing information is supplied by the
client. client.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
4.5.2 The "best-effort" Job Attribute Overview 4.5.2 The "best-effort" Job Attribute Overview
A client supplies Job Template attributes to affect the rendering, Client supplied Job Template attributes affect the rendering,
production and finishing of the documents in the job. Similar types of production, and finishing of the documents in a job. Similar types of
instructions may also be contained in the document to be printed, that instructions may also be contained within the Page Description Language
is, within the Page Description Language (PDL) of the document data. If (PDL) of the document to be printed. The "best-effort" attribute,
there is a conflict between the value of one of these IPP Job Template described in detail in section 6.2.8 is provided to help manage the
attributes, and a corresponding instruction in the document (either conflicts between values supplied in IPP Job Template attributes and
implicit or explicit), it is desirable that the value of the attribute corresponding instructions contained within the body of the document
shall take precedence over the document instruction. Until companies itself. The "best-effort" attribute SHALL take one of the following
that supply interpreters for PDLs, such as PostScript and PCL allow a values:
way to external attributes (such as IPP attributes) to take precedence
over internal job production instructions, a Printer might not be able
to implement the semantics that IPP attributes override (take on a
higher precedence) the embedded PDL instructions. Therefore, IPP
introduces a special Job Template attribute named "best-effort". This
attribute gives the end user some ability to influence, or at least
understand, how a particular Printer implementation handles these
conflicts.
This attribute takes on the following values:
- 'shall-honor-ipp-attributes': If a Printer supports this value and - 'shall-honor-ipp-attributes': If a Printer supports this value and
a client requests this value, the Printer guarantees that all IPP a client requests this value, the Printer guarantees that all IPP
attribute values take precedence over embedded instructions in the attribute values take precedence over embedded instructions in the
job data (the PDL of the job's documents). job data (the PDL of the job's documents).
- 'should-honor-ipp-attributes': If a Printer supports this value, - 'should-honor-ipp-attributes': If a Printer supports this value,
and a client requests this value, the Printer should try to make and a client requests this value, the Printer SHOULD try to make
sure that IPP attribute values take precedence over embedded PDL sure that IPP attribute values take precedence over embedded PDL
instructions, however there is no guarantee instructions, however there is no guarantee
ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should- This "best-effort" attribute has nothing to do with conflict between
honor-attribute-prcedence'? what a Printer supports and what an IPP client requests. If there is
such a conflict, the Printer SHALL reject the create request. A client
A Printer SHALL implement the "best-effort-supported" attribute. Notice SHOULD query the printer to find out what is supported before supplying
that since 'should-honor-ipp-attributes' does not offer any type of specific values in a create request.
guarantee, a Printer may not do a very "good" job of implementing the
semantics of "should", but it would still be a conforming
implementation.
If there is ever a conflict between what a Printer supports and what an
IPP client requests, the Printer shall reject the print request. A
client should query the printer to find out what is supported before
making a request. This ensures that all requested attribute values are
supported.
ISSUE: Should this be called "effort-level" rather than "best-effort"?
June 3, 1997, Expires December 3, 1997
4.6 Object Identity 4.6 Object Identity
All instances of Printer and Job objects have an identifier attribute All instances of Printer and Job objects have an identifier attribute
whose value is globally unique so that they can persistently and whose value is globally unique so that they can persistently and
unambiguously referenced. The IPP model requires that these values be unambiguously referenced. The IPP model requires that these values be
URIs as defined by RFC 1738 and RFC 1808. In addition to an identifier URIs as defined by RFC 1738 and RFC 1808. In addition to an identifier
attribute, instances of Printer and Job objects may have a name. An attribute, instances of Printer and Job objects may have a name. An
object name need not be unique across all instances of all objects. object name need not be unique across all instances of all objects. The
The Printer name is chosen and set by an administrator. The Job name is Printer name is chosen and set by an administrator. If not supplied by
created by the Printer using the name of the first document in the job. the client, tthe Job name is created by the Printer. In all cases, the
In all cases, the name only has local meaning, and is not constrained to name only has local meaning, and is not constrained to be unique.
be globally 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 globally unique identifier for this object instance - "xxx-uri": The globally unique identifier for this object instance
- "xxx-name": The non-globally unique name for this object instance - "xxx-name": The non unique name for this object instance
Document objects only have names, no identifiers. The "document-name" June 23, 1997, Expires December 23, 1997
attribute is used to store the name of the Document. This name is just Document objects sent to an IPP Printer only have names, no identifiers.
of interest within the context of a Job. It need not be globally The "document-name" attribute is used to store the name of the Document.
unique. This name is just of interest within the context of a Job; it need not
be unique.
If Documents are printed by reference, they are identified by URIs. If Documents are printed by reference, they are identified by URIs.
5. IPP Operations 5. IPP Operations
Jobs and Printers each have a set of associated operations. End users or Jobs and Printers each have a set of associated operations. End users or
programs invoke these operations using an IPP client. The operations programs invoke these operations using an IPP client. The operations
are: are:
For a Printer object: For a Printer object:
Create-Job (section 0) Get-Operations (section 5.1.1) MANDATORY
Print-Job (section ???) Print-Job (section 5.1.2) MANDATORY
Get-Attributes (section 0) Print-URI (section 5.1.3) OPTIONAL
Get-Jobs (section 0). Validate-Job (section 5.1.4) OPTIONAL
Create-Job (section 5.1.5) OPTIONAL
Get-Jobs (section 5.1.8) OPTIONAL
Get-Attributes (section 5.1.9) OPTIONAL
For a Job object: For a Job object:
Send-Document (section ??) Send-Document (section 5.1.6) OPTIONAL
Cancel-Job (section 0) Send-URI (section 5.1.7) OPTIONAL
Get-Attributes (section 0) Cancel-Job (section 5.1.8) MANDATORY
Get-Attributes (section 5.1.9) OPTIONAL
IPP Job and Printer objects are identified by URIs. When a client
communicates with a remote IPP object, it sends an operation request to
the URI for that object. Each request carries along with it the input
parameters and data required to perform the specified operation. Each
request requires a response from the object indicating success or
June 3, 1997, Expires December 3, 1997 When a client communicates with a remote IPP object, it sends an
failure of the operation including response data and/or error messages. operation request to the URI for that object. Each request carries
The representation and encoding of the IPP protocol are contained in along with it the input parameters and data required to perform the
"Internet Printing Protocol: Protocol Specification."[23] specified operation. Each request requires a response from the object
indicating success or failure of the operation including response data
and/or error messages. The representation and encoding of the IPP
protocol are contained in "Internet Printing Protocol: Protocol
Specification."[23]
It is assumed that URIs for IPP Printers are available to end users or It is assumed that URIs for IPP Printers are available to end users or
programs that wish to invoke Printer operations. Although NOT programs that wish to invoke Printer operations. Although NOT
MANDATORY, it is RECOMMENDED that Printers be registered in a directory MANDATORY, it is RECOMMENDED that Printers be registered in a directory
service which end users and programs can interrogate. "Internet Printing service which end users and programs can interrogate. "Internet Printing
Protocol: Directory Schema"[24] defines the attributes to be associated Protocol: Directory Schema"[24] defines the attributes to be associated
with a Printer entry in a directory service. with a Printer entry in a directory service.
June 23, 1997, Expires December 23, 1997
5.1 Operation Semantics 5.1 Operation Semantics
In this section, the IPP operations are described in terms of their In this section, the IPP operations are described in terms of their
contents and semantics including both the request and the response. contents and semantics including both the request and the response.
In order to create a new Job object, a client MAY use one of two In order to create a new Job object, a client MAY use one of three
operations: either the Create-Job operation or the Print-Job operation. operations:
If the client wants to create a Job with only a single Document, the
client MAY use the Print-Job operation or a Create-Job operation
followed by a single Send-Document operation. For performance reasons,
the client SHOULD use the Print-Job operation for all single Document
Jobs. If the client wants to create a Job with more than one Document,
the client SHALL use the Create-Job operation followed by as many Send-
Document operations as needed (on Document per Send-Document operation).
The Print-Job operation is a convenience operation for creating a Job
with only one Document. Throughout this model specification, the term
create request is used to refer to either a Create-Job Request or a
Print-Job Request.
5.1.1 Print-Job Operation - The Print-Job operation: This operation is used if the client
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.
When an end user desires to submit a print job with only one document, - The Print-URI operation: This operation is used if the client wants
to create a Job with only a single Document and only a URI
reference to the document data (not the document data itself) is
included in the request. In this case, the Printer "pulls" the
document data from the location identified by the URI.
- The Create-Job operation: This operation is used if the client
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 is
semantically equivalent to a Print-Job operation, however, for
performance reasons, the client SHOULD use the Print-Job operation for
all single Document Jobs. Throughout this model specification, the term
"create request" is used to refer to any of the three operation requests
that creates a new job object (a Print-Job request, a Print-URI request,
or a Create-Job request).
5.1.1 Get-Operations Operation
Since some of the IPP operations defined in this specification are
OPTIONAL and therefore some implementations MAY choose to not implement
support them, this operation, Get-Operations, 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
OPTIONAL operations.
June 23, 1997, Expires December 23, 1997
5.1.1.1 Get-Operations Request
The Get-Operations Request has no parameters.
5.1.1.2 Get-Operations Response
The Printer SHALL return to the client the following output parameters
as part of the Get-Operations Response:
Supported Operations:
A list of the OPTIONAL operations that this implementation
supports. This set of OPTIONAL operations are 'Create-Job',
'Print-URI', 'Submit-Document', 'Submit-URI', 'Get-Jobs', and 'Get-
Attributes'.
Status
Status information including error status
5.1.2 Print-Job Operation
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 Print- 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 Request Job Response from that Printer. The information in a Print-Job Request
(along with any default information associated with the Printer) is (along with any default information associated with the Printer) is
sufficient for the Printer to create a Job object and then process that sufficient for the Printer to create a Job object and then process that
Job. Job. A Print-Job operation differs from a Print-URI 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 document data.
5.1.1.1 Print-Job Request 5.1.2.1 Print-Job Request
The following elements are part of the Print-Job Request: The following elements are part of the Print-Job Request:
Job Template Attributes: Job Template Attributes:
An optional set of Job Template attributes as defined in section An optional set of Job Template attributes as defined in section
6.2 Job Template Attributes. If the client supplies no Job 6.2. If the client supplies no Job Template attributes in the
Template attributes in the Create-Job Request, the Printer uses its Create-Job Request, the Printer uses its default value attributes
default value attributes when processing the job. when processing the job. Since a Print-Job operation is used for a
Job with only one Document, the Document attributes "document-name"
and "document-format" are also supplied by the client. "document-
name" is MANDATORY; "document-format" is OPTIONAL.
June 3, 1997, Expires December 3, 1997
Document Content Document Content
The client either supplies the raw document data or a URI reference The client supplies the document data.
to the data but not both.
June 23, 1997, Expires December 23, 1997
The simplest Print-Job Request consists of just the Document Content and The simplest Print-Job Request consists of just the Document Content and
nothing else. This means that the Printer SHALL create a new Job object nothing else. This means that the Printer SHALL create a new Job object
with no Job Template attributes and a single contained Document. with no Job Template attributes and a single contained Document.
When a Printer receives a Print-Job Request, the Printer SHALL either When a Printer receives a Print-Job Request, the Printer SHALL either
accept or reject the request. The Printer SHALL accept the Print-Job accept or reject the request. The Printer SHALL accept the Print-Job
Request and SHALL create a Job object if it is able to accept all Request and SHALL create a Job object if it is able to accept all
attributes in the request. The Printer SHALL reject the request and attributes in the request. The Printer SHALL reject the request and
SHALL NOT create a Job object if the Printer rejects any attribute in SHALL NOT create a Job object if the Printer rejects any attribute in
the request. There are six cases to consider with respect to each Job the request. There are six cases to consider when accepting or
and Document attributes: rejectingJob and Document 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-supported" Printer (i.e., is among the values of the Printer's "xxx-supported"
attribute): The "xxx" Job Template attribute is accepted. If the attribute): The "xxx" Job Template attribute is accepted. If the
"best-effort-supported" attribute contains the value 'shall-honor- "best-effort-supported" attribute contains the value 'shall-honor-
ipp-attributes' the Printer SHALL guarantee the behavior ipp-attributes' the Printer SHALL guarantee the behavior
represented by the value in the "xxx" attribute (i.e., the IPP represented by the value in the "xxx" attribute (i.e., the IPP
attribute has precedence over any other embedded job instruction). attribute has precedence over any other embedded job instruction).
If the value of the "best-effort-supported" is 'should-honor-ipp- If the value of the "best-effort-supported" is 'should-honor-ipp-
attributes' then the Printer SHOULD try to realize the behavior attributes' then the Printer SHOULD try to realize the behavior
requested by the client, but NEED NOT guarantee the behavior. The requested by the client, but NEED NOT guarantee the behavior. The
Printer creates the Job object and implements the "xxx" attribute Printer creates the Job object and associates the "xxx" attribute
in the new Job object and uses the value supplied by the client. with the new Job object using the value supplied by the client.
2. The client supplies an attribute value but the attribute is 2. The client supplies a Job Template attribute but the attribute is
syntactically bad: The Printer shall reject the job and return the syntactically bad: The Printer SHALL reject the job and return the
??? error code. 'attribute-unsupported' error code and the name of the badly formed
attribute (if known) in the "unsupported-attributes" response
parameter.
3. The client supplies an attribute value and the attribute value is 3. The client supplies a Job Template attribute and the attribute
not among the values supported by the Printer: The Printer SHALL value is not among the values supported by the Printer: The
reject the job and return the 'attribute-unsupported' error code. Printer SHALL reject the Job and return the 'attribute--value-
unsupported' error code and the name of the unsupported attribute
in the "unsupported-attribute-values" response parameter.
4. The client supplies an attribute value and the Printer does not 4. The client supplies a Job Template attribute and the Printer does
implement the attribute: The attribute is ignored. The Printer not support the attribute: The Printer rejects the attribute. The
behaves as if the attribute was never supplied by the client in the Printer returns the 'attribute-unsupported' error code and the name
Print-Job Request. In the response, the Printer SHALL return the of the rejected attribute in the "unsupported-attributes" response
names of all ignored attributes. The final result of the Job is parameter.
undefined for an ignored attribute (that is the desired behavior
might or might not be realized).
ISSUE: Should the printer just reject the job? 5. The client does not supply a Job Template attribute, but the
Printer supports the attribute: The attribute is accepted and when
the Printer creates the Job object, the Printer SHALL NOT associate
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
5. The client does not supply an attribute, but the Printer the attribute with the new Job object. When the Printer processes
implements the attribute: The attribute is accepted and when the that Job, the Printer SHOULD attempt to use the behavior implied by
Printer creates the Job object, the Printer SHALL NOT implement the the default value Printer attribute as set at the time of Job
attribute in the Job object. When the Printer processes that Job,
the Printer SHOULD attempt to use the behavior implied by the
default value Printer attribute as set at the time of Job
processing (not Job creation). In other words, these rules allow processing (not Job creation). In other words, these rules allow
for a Job object to be created without implementing some of the Job for a Job object to be created without implementing some of the Job
Template attributes. As the Printer processes the Job, if the Template attributes. As the Printer processes the Job, if the
Printer implements a default value attribute for the missing Job Printer supports a corresponding default value attribute for the
Template attribute, the Printer does its best to realize the missing Job Template attribute, the Printer uses the default value.
behavior of the default value. If the Printer does not implement Depending on the value of the Printer's "best-effort" attribute,
the default value attribute, the results are undefined. the Printer either guarantees the behavior corresponding to the
default value or it does its best to realize the behavior of the
Note: For each Job Template attribute, this specification REQUIRES default value. The results of processing a Job are undefined if
that a Printer to implement the CONDITIONALLY MANDATORY attributes. the Printer does not support the default value attribute and the
client does not supply a value in the create request.
6. The client does not supply an attribute, and the Printer does not 6. The client does not supply an attribute, and the Printer does not
implement the attribute: The Printer accepts the Job and creates a support the attribute: The Printer accepts the Job but how the Job
Job object. When the Job is processed, the actual behavior is finally processed (with respect to the missing Job Template
realized with respect to the missing Job Template attribute is attributes) is undefined.
undefined.
5.1.1.2 Print-Job Response 5.1.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 Identifier:
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: Job Status:
The following Job attributes: job-name, job-state, and job-state- The following Job attributes: job-name, job-state, and job-state-
reasons. The value of each attribute shall be from a snapshot reasons. The value of each attribute SHALL be from a snapshot
taken sometime after the time the Printer receives the print taken sometime after the time the Printer receives the print
request. The "job-state-message" attribute is OPTIONAL. request. The "job-state-message" attribute is OPTIONAL.
Note: Since any job affecting printer state information is Note: Since any printer state information which affects a job's
reflected in the "job-state" and "job-state-reasons" job state is reflected in the "job-state" and "job-state-reasons"
attributes, it is sufficient to return only job status attributes attributes, it is sufficient to return only these attributes and no
and no printer status attributes at Job creation time. specific printer status attributes.
Ignored Attributes: ISSUE: Randy suggest that the following are optional returns in a
A list of attribute names which were ignored in the creation of the response: job-originating-user job-originating-host user-locale job-
Job object. state job-state-reasons job-state-message output-device-assigned
time-since-submission time-since-processing number-of-intervening-jobs
job-message-from-operator time-since-completion job-k-octets-completed
job-impressions-completed job-media-sheets-completed
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
Unsupported Attributes: Unsupported Attributes:
A list of attribute names which are unsupported. Any attributes in A list of attribute names which are unsupported. The existence of
this list imply that the Job object was not created. any attribute name in this list implies that the Job was rejected.
Bad Attributes: Unsupported Attribute Values:
A list of attribute names which were syntactically incorrect. Any A list of attribute names whose client supplied values are
attributes in this list imply that the Job object was not created. unsupported. The existence of any attribute name in this list
implies that the Job was rejected.
ISSUE: Should we call both of these "attribute-syntax-invalid'?
Status Status
Status information including error status Status information including error status
The simplest response shall consist of the job identifier, the Job The simplest response SHALL consist of the job identifier, the Job
Status attributes, and an operation status that is either an "ok" status Status attributes, and an operation status that is either an "ok" status
or an "error" status. or an "error" status.
5.1.2 Create-Job Operation 5.1.3 Print-URI Operation
When an end user desires to submit a print job, the client sends a
Create-Job Request to a Printer and receives a Create-Job Response from
that Printer. The information in a Create-Job Request along with any
default information associated with the Printer is sufficient for the
Printer to create a Job object. An instance of a Job object contains
all the information needed by the Printer to print one or more documents
as a print job. If the client follows the Create-Job operations with as
many Send-Document operations as needed.
5.1.2.1 Create-Job Request This operation is identical to the Print-Job operation (section 5.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.
The following elements are part of the Create-Job Request: 5.1.3.1 Print-URI Request
Number of Documents: The following elements are part of the Print-URI Request:
An optional integer value specifying the number of Documents for
this Job. The document data is transferred in a series of
subsequent Send-Document operations (one document per Send-Document
operation). If this value is not supplied by the client, the
Printer waits to receive an empty Send-Document operation signaling
the end of Documents for this Job. If the client wants to create a
Job with only a single document, the client MAY use the Print-Job
operation. This is a convenience operation for creating a Job with
only one Document. The Print-Job Operation is semantically the
same as a Create-Job operation followed by one Send-Document
operation.
Job Template Attributes: Job Template Attributes:
An optional set of Job Template attributes as defined in section (see section 5.1.2.1)
6.2 Job Template Attributes. If the client supplies no Job
June 3, 1997, Expires December 3, 1997 Document Reference:
Template attributes in the Create-Job Request, the implemented The client supplies the a URI reference to the document data.
Printer defaults are used.
The simplest Create-Job Request has no data which means that the Printer 5.1.3.2 Print-URI Response
SHALL create a new Job object with no Job Template attributes and the
number of Documents is yet to be determined.
When a Printer receives a Create-Job Request, the Printer SHALL The Printer SHALL return to the client the following output parameters
either accept or reject the request. The rules for accepting or as part of the Print-URI Response:
rejecting a Create-Job Request are the same as the rules for
accepting or rejecting the Print-Job Request (see section 5.1.1.1
Print-Job Request).
5.1.2.2 Create Job Response Job Identifier:
The Printer shall return to the client the following output parameters June 23, 1997, Expires December 23, 1997
as part of the Create-Job Response: (see section 5.1.2.2)
Job Status:
(see section 5.1.2.2)
Unsupported Attributes:
(see section 5.1.2.2)
Unsupported Attribute Values:
(see section 5.1.2.2)
Status
(see section 5.1.2.2)
5.1.4 Validate-Job Operation
This operation is identical to the Print-Job operation (section 5.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.
5.1.4.1 Validate-Job Request
The following elements are part of the Validate-Job Request:
Job Template Attributes:
(see section 5.1.2.1)
5.1.4.2 Validate-Job Response
The Printer SHALL return to the client the following output parameters
as part of the Validate-Job Response:
Job Identifier: Job Identifier:
A URI which the client shall use for all other operations on this (see section 5.1.2.2)
Job
Job Status: Job Status:
The following Job attributes: job-name, job-state, and job-state- (see section 5.1.2.2)
reasons. The value of each attribute shall be from a snapshot
taken sometime after the time the Printer receives the print
request.
Note: Since any job affecting printer state information is Unsupported Attributes:
reflected in the "job-state" and "job-state-reasons" job (see section 5.1.2.2)
attributes, it is sufficient to return only job status attributes
and no printer status attributes at Job creation time.
Ignored Attributes: June 23, 1997, Expires December 23, 1997
A list of attribute names which were ignored in the creation of the Unsupported Attribute Values:
Job object. (see section 5.1.2.2)
Status
(see section 5.1.2.2)
5.1.5 Create-Job Operation
This operation is similar to the Print-Job operation (section 5.1.2)
except that a client supplies no document data or any reference to
document data in the Create-Job request. This operation is followed by
one or more Send-Document or Send-URI operations. It is possible for a
given implementation to only support either Send-Document or Send-URI
but not both. In that case, a client SHOULD NOT use an unsupported
operation. If a Printer supports the Create-Job operation, it MUST also
support one of the Send-Document or Send-URI operations or both.
5.1.5.1 Create-Job Request
The following elements are part of the Create-Job Request:
Job Template Attributes:
(see section 5.1.2.1)
5.1.5.2 Create Job Response
The Printer SHALL return to the client the following output parameters
as part of the Create-Job Response:
Job Identifier:
(see section 5.1.2.2)
Job Status:
(see section 5.1.2.2)
Unsupported Attributes: Unsupported Attributes:
A list of attribute names which are unsupported. Any attributes in (see section 5.1.2.2)
this list imply that the Job object was not created.
Bad Attributes: Unsupported Attribute Values:
A list of attribute names which were syntactically incorrect. Any (see section 5.1.2.2)
attributes in this list imply that the Job object was not created.
June 23, 1997, Expires December 23, 1997
Status Status
Status information including error status (see section 5.1.2.2)
June 3, 1997, Expires December 3, 1997 (see section 5.1.2.2)
The simplest response shall consist of the job identifier, the Job
Status attributes, and an operation status that is either an "ok" status
or an "error" status.
5.1.3 Send-Document Operation 5.1.6 Send-Document Operation
Once a Job object has been created using a Create-Job operation, a Once a Job object has been created using a Create-Job operation
client uses the Send-Document operation to transport the documents to be (returning a "job-uri"), a client directs a Send-Document operation to
printed and add them to the named Job object. A document MUST be sent the newly create Job object (identified by the returned "job-uri"). The
in a single Send-Document operation. operation adds a new Document to the Job object. An entire document MUST
be sent in a single Send-Document operation.SEND-DOCUMENT requests are
directed towards the job object referenced by the "job_URI" string
returned in a successful CREATE-JOB-RESP message.
5.1.3.1 Send-Document Request 5.1.6.1 Send-Document Request
The client submits the request to a Job URI. The client submits the request to a Job URI.
The following abstract data types are part of the Send-Document Request: The following abstract data types are part of the Send-Document Request:
Document Attributes: Document Attributes:
An optional set of Document Description attributes (section 6.4 A set of Document Description attributes (section 6.4).
Document Attributes). Last Document Flag
This is a boolean flag that is set if this is the last Document for
the Job.
Document Content: Document Content:
The client either supplies the raw document data or a URI reference The client supplies the document data.
to the data but not both.
5.1.3.2 Send-Document Response 5.1.6.2 Send-Document Response
The following abstract data types are part of the Send-Document The following output parameters are part of the Send-Document Response:
Response:
Job Status: Job Status:
The following Job attributes: job-name, job-state, and job-state- (see section 5.1.2.2)
reasons. The value of each attribute shall be from a snapshot
taken sometime after the time the Printer receives the print
request.
Note: Since any job affecting printer state information is Unsupported Attributes:
reflected in the "job-state" and "job-state-reasons" job (see section 5.1.2.2)
attributes, it is sufficient to return only job status attributes
and no printer status attributes at Job creation time.
Ignored Attributes: Unsupported Attribute Values:
A list of attribute names which were ignored in the creation of the (see section 5.1.2.2)
Job object.
Status:
(see section 5.1.2.2)
June 23, 1997, Expires December 23, 1997
5.1.7 Send-URI Operation
This operation is identical to the Send-Document operation (see section
5.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.
5.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 5.1.6.1)
Last Document Flag
(see section 5.1.6.1)
Document Reference:
The client supplies a URI reference to the document data.
5.1.7.2 Send-URI Response
The following output parameters are part of the Send-URI Response:
Job Status:
(see section 5.1.6.2)
June 3, 1997, Expires December 3, 1997
Unsupported Attributes: Unsupported Attributes:
A list of attribute names which are unsupported. Any attributes in (see section 5.1.6.2)
this list imply that the Job object was not created.
Bad Attributes: Unsupported Attribute Values:
A list of attribute names which were syntactically incorrect. Any (see section 5.1.6.2)
attributes in this list imply that the Job object was not created.
Status: Status:
Status information including error status (see section 5.1.6.2)
5.1.4 Cancel Job Operation 5.1.8 Cancel Job Operation
This operation allows a user to cancel one specific Print Job any time 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 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 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 when the Cancel Job operation is received. Only the end user who is
also the job originator ("job-originating-user" Job attribute) can also the job originator ("job-originating-user" Job attribute) can
cancel the job using IPP 1.0. cancel the job using IPP 1.0.
5.1.4.1 Cancel-Job Request June 23, 1997, Expires December 23, 1997
5.1.8.1 Cancel-Job Request
The client submits the request to a Job URI. The client submits the request to a Job URI.
The following abstract data types are part of the Cancel Job Request: The following abstract data types are part of the Cancel Job Request:
Message: Message:
Optional message to the operator Optional message to the operator
5.1.4.2 Cancel-Job Response 5.1.8.2 Cancel-Job Response
The following information is part of the Cancel Job Response: The following information is part of the Cancel Job Response:
Status: Status:
Status information including error status Status information including error status
5.1.5 Get-Attributes Operation ISSUE: Randy suggests that the following might be optionally returned
in a response: job-state job-state-reasons job-state-message job-k-
octets-completed job-impressions-completed job-media-sheets-completed
time-since-submission time-since-processing job-originating-user job-
originating-host
The Get-Attributes operation allows client to obtain information from a 5.1.9 Get-Attributes Operation
Printer or Job object. The client supplies the set of attributes names
and/or attribute group names that the requester is interested in as The Get-Attributes operation allows a client to obtain information from
operation input parameters. The Printer shall return a corresponding a Printer or Job object. The client supplies as an operation parameter
the set of attribute names and/or attribute group names that the
requester is interested in. The Printer SHALL return a corresponding
attribute list in the response with the appropriate attribute values attribute list in the response with the appropriate attribute values
filled in for each attribute (explicitly named or implicitly included in filled in for each attribute (explicitly named or implicitly included in
an attribute group) that the client supplied in the request. an attribute group) that the client supplied in the request.
June 3, 1997, Expires December 3, 1997 ISSUE: Should this be broken up into two sections - one for Printer one
5.1.5.1 Get-Attributes Request for Job?
The client shall submit the Get-Attributes request to a Job URI or 5.1.9.1 Get-Attributes Request
The client SHALL submit the Get-Attributes request to a Job URI or
Printer URI. Printer URI.
The following input parameters shall be part of the Get-Attributes The following input parameters SHALL be part of the Get-Attributes
Request: Request:
Document Format: Document Format:
The client shall supply this input parameter only when requesting
attributes of the Printer object. The Printer shall reject this June 23, 1997, Expires December 23, 1997
The client SHALL supply this input parameter only when requesting
attributes of the Printer object. The Printer SHALL reject this
request, if this input parameter is supplied for a Job object. request, if this input parameter is supplied for a Job object.
This input parameter conditions the Printer attributes and values This input parameter conditions the Printer attributes and values
that might depend on the document format. The Printer shall return that might depend on the document format. The Printer SHALL return
only (1) those attributes that are implemented and (2) the only (1) those attributes that are supported and (2) the attribute
attribute values that are supported for the specified document values that are supported for the specified document format. By
format. By specifying the document format, the client can specifying the document format, the client can eliminate the
eliminate the attributes that are not implemented and values that attributes and values that are not supported.
are not supported for the document format that the client has or is
able to generate.
If the client omits this input parameter, the effect shall be the If the client omits this input parameter, the effect SHALL be the
same as if the value of the Printer's document format attribute same as if the value of the Printer's default value document format
were supplied. It is recommended that the client always supply a attribute were supplied. It is recommended that the client always
value for document-format, since the Printer's default value for supply a value for document-format, since the Printer's default
document-format may be 'auto-sense', in which case the returned value for document-format may be 'auto-sense', in which case the
attributes and values are for the union of the document formats returned attributes and values are for the union of the document
that the Printer supports in its 'auto-sense' support." formats that the Printer supports in its 'auto-sense' support."
Requested Attributes: Requested Attributes:
An optional set of attribute names (without values) or attribute An optional set of attribute names (without values) or attribute
group names in whose values the requester is interested. If the group names in whose values the requester is interested. If the
client omits this input parameter, the effect shall be the same as client omits this input parameter, the effect SHALL be the same as
if the "all" attribute group were supplied. if the "all" attribute group were supplied.
Attributes may be requested by name or by group name. For Jobs, the Attributes may be requested by name or by group name. For Jobs, the
attribute groups include: attribute groups include:
- 'job-template': the attributes specified in Section 6.3.1 Job - 'job-template': all of the Job Template attributes that apply to a
Template Attributes. Job object (the first column of the table in Section 6.2).
- 'job-description': the attributes specified in Section 6.3.2 Job - 'job-description': the Job Description attributes in Section 6.3.
Description Attributes.
For Printers, the attribute groups include: For Printers, the attribute groups include:
- 'printer-job-template': the attributes specified in Section 6.5.1 - 'job-template': all of the Job Template attributes that apply to a
Printer Job Template Attributes. Printer object (the last two columns of the table in Section 6.2).
- 'printer-description': the attributes specified in Section 6.5.
June 3, 1997, Expires December 3, 1997
- 'printer-description': the attributes specified in Section 6.5.2
Printer Description Attributes.
There are also special groups: There are also special groups:
- 'none': no attributes of the specified object. Note: none is - 'none': no attributes of the specified object. Note: none is
primarily useful in Get-Jobs, but can be used as a "ping" with the primarily useful in Get-Jobs, but can be used as a "ping" with the
Get-Attributes operation. Get-Attributes operation.
- 'all': all attributes of the specified object - 'all': all attributes of the specified object
5.1.5.2 Get-Attributes Response June 23, 1997, Expires December 23, 1997
5.1.9.2 Get-Attributes Response
The Printer shall return the following output parameters as part of the The Printer SHALL return the following response parameters as part of
Get-Attributes Response: the Get-Attributes Response:
Result Attributes: Result Attributes:
The requested attributes of the object with their current values, The requested attributes of the object with their current
if the requester supplied any Requested Attributes. If the request valuesSHALL
did not supply any attribute names, the Printer shall assume that
the client is implicitly requesting the default group of "all" and
shall return all attributes implemented for the specified Job or
Printer object.
Unimplemented Attributes:
A list of attribute names which are unimplemented.
Unknown: Unknown Attributes:
A list of attribute names which are unknown. A list of attribute names included in the Get-Attributes request
which are unknown by the Printer.
Status: Status:
Status information including error status Status information including error status
A Printer may choose, for security reasons, not to return all attributes A Printer MAY be configured, for security reasons, not to return all
that a client requests. It may even return none of the requested attributes that a client requests. It may even return none of the
attributes. In such cases, the status returned is the same as if the requested attributes. In such cases, the status returned is the same as
Printer had returned all requested attributes. The client cannot tell by if the Printer had returned all requested attributes. The client cannot
such a response whether the requested attribute was present or absent on tell by such a response whether the requested attribute was present or
the Printer. absent on the Printer.
In response to a "Get-Attributes" (or a "Get-Jobs") operation the In response to a "Get-Attributes" (or a "Get-Jobs") operation the
following requirements apply to the Printer: following requirements apply to the Printer:
1. If the client supplies an attribute name in the Requested 1. If the client supplies an attribute name in the Requested
Attribute input parameter and that attribute is implemented by the Attribute input parameter and that attribute is supported by the
Printer, the printer shall respond with all current values for that Printer, the printer SHALL respond with all current values for that
attribute. If the value of an implemented attribute is unknown for attribute.
June 3, 1997, Expires December 3, 1997
some reason, the Printer shall respond with the attribute name in
the "unknown attribute list" response parameter.
2. If the client supplies an attribute name in the Requested 2. If the client supplies an attribute name in the Requested
Attribute input parameter that attributed is not implemented by the Attributes input parameter and that attribute is not supported by
Printer, the Printer shall respond with the attribute name in the the Printer, the Printer SHALL respond with the attribute name in
"unimplemented attribute list" response parameter. the "unsupported attributes" response parameter.
3. If the client supplies an attribute group that is implemented by 3. If the client supplies an attribute group that is supported by the
the Printer, the Printer shall respond with all current values for Printer, the Printer SHALL respond with all current values for each
each implemented attribute in the group. It shall not respond for supported attribute in the group. It SHALL not respond for
unimplemented attributes in the group. If the value of an attribute unsupported attributes in the group.
is unknown for some reason, the Printer shall respond with the
attribute name in the "unknown attribute list" response parameter.
4. If the client supplies an attribute group keyword that is not 4. If the client supplies an attribute group keyword that is not
implemented, the Printer has no means for determining if it is an unsupported, the Printer assumes that it is an unknown attribute
unimplemented attribute or attribute group. In this case, the and responds group name in the "unknown attribute list" response
Printer assumes that it is an unimplemented attribute and responds parameter.
as if it is an unimplemented attribute (the Printer responds with
the attribute name in the "unknown attribute list" response
parameter).
5.1.6 Get-Jobs Operation June 23, 1997, Expires December 23, 1997
5.1.10 Get-Jobs Operation
The Get-Jobs operation allows a client to retrieve Printer attributes The Get-Jobs operation allows a client to retrieve Printer attributes
and a list of print jobs belonging to the target Printer object. A list and a list of print jobs belonging to the target Printer object. A list
of Job attribute names or attribute group names that the client is of Job attribute names or attribute group names that the client is
interested in seeing may be included in the request. interested in seeing may be included in the request.
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 more than one object.
5.1.6.1 Get-Jobs Request 5.1.10.1 Get-Jobs Request
The client shall submit the Get-Jobs request to a Printer URI. The client SHALL submit 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:
Job Owner
This is the user-name. If the value is non-null, then the
requester wants only those jobs whose job-originating-owner is the
same as the specified user-name. If the value is null, then the
requester wants all jobs.
Limit Limit
This is an integer value which indicates a limit to the number of This is an integer value which 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
June 3, 1997, Expires December 3, 1997
limit is n then only the first n jobs are returned in the Get-Jobs 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 example, if The limit applies across all Job States requested. For example, if
the limit if 50, and there are 75 jobs in the 'completed' state and the limit if 50, and there are 75 jobs in the 'completed' state and
25 in the 'pending state' and the client requests first 'completed 25 in the 'pending state' and the client requests first 'completed
jobs' and then 'pending' jobs, only the first 50 'completed' jobs jobs' and then 'pending' jobs, only the oldest 50 'completed' jobs
are returned. The other 25 'completed' jobs are not returned and are returned. The other 25 'completed' jobs are not returned and
neither are any of the 'pending' jobs returned. neither are any of the 'pending' jobs returned.
Job States
A possibly empty set of job state values. If the set is not empty,
then the requester wants only those jobs whose job-state is the
same as one of the specified job state values. If this operation
parameter has more than one value, the Printer SHALL return the
jobs grouped by state with each group being in the same order as
supplied by the client in this parameter. Within each group, the
jobs are ordered from oldest to newest with respect to completion
time (either actual or expected). For example, if the client
requests all 'pending' and 'completed' jobs, first all jobs in the
'pending' state are returned (ordered from oldest to newest) and
then all jobs in the 'completed' state are returned (ordered from
oldest to newest). If the client request all 'completed' and
'processing' jobs, first all jobs in the 'completed' state are
returned (ordered from oldest to newest) and then all jobs in the
'processing' state are returned (oldest to newest). If the client
does not supply this operation parameter, the value SHALL be
assumed to be (by both the client and the Printer) first 'pending'
and then 'processing'.
Requested Job Attributes: Requested Job Attributes:
A optional set of attribute names (without values) or attribute A optional set of attribute names (without values) or attribute
groups names in whose values the requester is interested from each groups names in whose values the requester is interested from each
of the jobs on the specified Printer. The attribute group names of the jobs on the specified Printer. The attribute group names
are the same as for the Get-Attributes operation for the Job are the same as for the Get-Attributes operation for the Job
object. If the client omits this input parameter, the effect shall object. If the client omits this input parameter, the effect SHALL
be the same as if the 'none' attribute group were supplied. be the same as if the "job-uri" attribute were supplied.
5.1.6.2 Get-Jobs Response 5.1.10.2 Get-Jobs Response
The Printer shall return the following output parameters as part of the The Printer SHALL return the following output parameters as part of the
Get-Jobs Response: Get-Jobs Response:
Result Attributes: Result Attributes:
The result includes zero or more objects each with zero or more The result includes zero or more objects each with zero or more
attributes. Each Job is returned in chronological order. This attributes. Each Job is returned in chronological order. This
June 3, 1997, Expires December 3, 1997
order is explicitly defined to be: oldest to newest with respect to order is explicitly defined to be: oldest to newest with respect to
completion time, either actual or expected. completion time, either actual or expected. Jobs that are in the
'pending-held' state SHALL appear in their position as if they were
'pending' (otherwise, a user might be deceived by jobs that move
If the client did not supply any Job attributes, the Printer shall June 23, 1997, Expires December 23, 1997
assume that the client is implicitly requesting the 'none' group from 'pending-held' to 'pending' as seeming to jump ahead in the
(that is no Job attributes are returned, just the Job URI for each queue).
Job).
If the client did not supply any Job attributes, the Printer SHALL
assume that the client is implicitly requesting the "job-uri"
attribute (that is no other Job attributes are returned, but the
Job URI for each Job).
Status Status
Status information including error status Status information including error status
A Printer may choose, for security reasons, not to return all attributes A Printer MAY be configured, for security reasons, not to return all
that a client requests. It may even return none of the requested attributes that a client requests. It may even return none of the
attributes. In such cases, the status returned is the same as if the requested attributes. In such cases, the status returned is the same as
Printer had returned all requested attributes. The client cannot tell by if the Printer had returned all requested attributes. The client cannot
such a response whether the requested attribute was present or absent on tell by such a response whether the requested attribute was present or
the Printer. absent on the Printer.
5.2 Operation Status and Messages
The Status code provides information on the results of a request.
The Message provides a short textual description of the Status. The
Status is intended for use by automata and the 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.
5.3 Status Codes (type2 keyword) ISSUE: Some people still have complaints about this security statement.
Each Status is described below, including a description of which 5.2 Operation Status Codes and Messages
operation(s) it can follow and any meta-information required in the
response.
ISSUE: Keith's doc still need to go here. An operation status code provides information on the processing of a
request. A message provides a short textual description of the Status.
The status code is intended for use by automata and a 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 messages are included
in section 12 "APPENDIX A - Status Codes".
6. Object Attributes 6. Object Attributes
This section describes the attributes with their corresponding syntaxes This section describes the attributes with their corresponding syntaxes
and values that are part of the IPP model. The sections below show the and values that are part of the IPP model. The sections below show the
objects and their associated attributes which are included within the objects and their associated attributes which are included within the
scope of this protocol. Many of these attributes are derived from other scope of this protocol. Many of these attributes are derived from other
relevant specifications: relevant specifications:
- ISO/IEC 10175 DPA (Final, June 1996) - ISO/IEC 10175 DPA (Final, June 1996)
- RFC 1759 Printer MIB (Proposed Standard, May 1995) - RFC 1759 Printer MIB (Proposed Standard, May 1995)
- Internet-Draft: Printer MIB (Draft Standard in progress, December - Internet-Draft: Printer MIB (Draft Standard in progress, December
1996) 1996)
- Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997) - Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997)
June 3, 1997, Expires December 3, 1997
Each attribute is uniquely identified in this document using a "keyword" Each attribute is uniquely identified in this document using a "keyword"
in the section header describing that attribute. A keyword is a (see section 2.2.1). The keyword in included in the section header
sequence of characters (length of 1 to 255) which consists of just
letters, digits, hyphen ("-"), and underscore ("_"). With these June 23, 1997, Expires December 23, 1997
restrictions, there will be a straight forward encoding of these describing that attribute. Not only are attributes uniquely identified
keywords onto real values in the protocol specification. Not only are with keywords, some attributes take on a syntax which is a set of
attributes uniquely identified with keywords, some attributes take on a keywords.
syntax which is a set of keywords. This set of keywords represents the
domain of the attribute.
6.1 Attribute Syntaxes 6.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.
Table 1 - Attribute Syntaxes
Basic Type Description Comments
text a sequence of For free form human
characters; readable text
length: 0 to intended for human
4095; consumption.
characters: any
name a sequence of For referencing some
characters; object via a user-
length: 1 to friendly string,
255; such as a Printer
characters: any name, a document
name, a user name,
or a host name. May
include the SPACE
character.
Note: The protocol
may need to provide
means to quote the
SPACE character if
the protocol uses
SPACE for other
purposes.
fileName a sequence of For referencing some
characters; file. The limit is
length: 1 to the same as POSIX
1024;
June 3, 1997, Expires December 3, 1997
Basic Type Description Comments
characters: any and NT.
keyword a sequence of
characters; identifiers of
length: 1 to entities in the
255; abstract protocol
characters: (specified in this
letters, digits, document). These
hyphen ("-"), entities can be
For semantic
underscore ("_") attribute names or
values of
attributes, When a
keyword is used to
represent an
attribute (its
name), it must be
unique within the
full scope of IPP
objects and
attributes. When a
keyword is used to
represent a value of
an attribute, it
must be unique just
within the scope of
that attribute.
That is, a keyword
can not be used for
two different values
of 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.
uri a sequence of Universal Resource
characters as Identifier
defined in
rfc1738 and
June 3, 1997, Expires December 3, 1997 text: a sequence of characters, length: 0 to 4095, any characters.
Basic Type Description Comments This syntax type is used for free form human readable text intended
for human consumption.
rfc1808 name: a sequence of characters, length: 1 to 255, any characters.
This syntax type is used for referencing some object or entity via
a user-friendly string, such as a Printer name, a document name, a
user name, or a host name.
uriScheme a sequence of "http" for HTTP fileName: a sequence of characters, length: 1 to 1024, any
characters schemed URIs (e.g., characters. This syntax type is used for referencing some file.
representing the http://...). "ftp" The limit is the same as in POSIX and Microsoft NT.
URI Scheme for FTP schemed URIs
(e.g., ftp://...).
locale a standard ISSUE: What standard keyword: a sequence of characters, length: 1 to 255, containing only
identifier for values will be used the characters ASCII letters, ASCII digits, hyphen ("-"),
language and for locale? underscore ("_"). The first character MUST be an ASCII letter.
character set This syntax type is used for enumerating semantic identifiers of
entities in the abstract protocol (specified in this document).
These entities can be attribute names or values of attributes.
When a keyword is used to represent an attribute (its name), it
MUST be unique within the full scope of IPP objects and attributes.
When a keyword is used to represent a value of an attribute, it
MUST be unique just within the scope of that attribute. That is,
the same keyword can not be used for two different values within
the same attribute to mean two different semantic ideas. However,
the same keyword can be used across two or more attributes,
representing different semantic ideas for each attribute.
octetString a sequence of Used for opaque uri: a sequence of characters as defined in rfc1738 and rfc1808.
octets data, such as the This syntax type is used for carrying Universal Resource
document-content. Identifiers.
boolean two values of like an keywordSet, uriScheme: a sequence of characters representing the URI Scheme.
'true' and but there are only These include 'http' for HTTP schemed URIs (e.g., http://...), and
'false' two values. Note: An 'ftp' for FTP schemed URIs (e.g., ftp://...).
application might
use a checkbox for
such a value.
integer an integer value each attribute locale: a standard identifier for country and language. The values
that is in the specifies the range for this syntax type are taken from RFC 1766 [26].
range from - constraint
2**31 to 2**31 - explicitly.
1
dateTime a value that absolute date and June 23, 1997, Expires December 23, 1997
holds the date time octetString: a sequence of octets. This syntax type is used for
and time to the opaque data, such as the document-content.
nearest second.
seconds a non-negative a relative time boolean: two values of 'true' and 'false'. This syntax type is like
integer with a keywordSet, but there are only two values. Note: An application
implicit units might use a checkbox for an attribute with this syntax type.
of seconds
milliseconds a non-negative a relative time integer: an integer value that is in the range from -2**31 to 2**31
interger with - 1. Each attribute specifies the range constraint explicitly if
implicit units the range is different from the full range of possible integer
of milliseconds values (e.g., 0 - 100 for the "job-priority" attribute).
June 3, 1997, Expires December 3, 1997 dateTime: a standard, fixed length representation of date and time
Basic Type Description Comments (to the nearest second) as defined in RFC 1123 [27]. For 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.
integerUnits an integer with an integer value seconds: a non-negative integer with implicit units of seconds.
explicit units expressed in units This is used for relative time.
ISSUE: we have two milliseconds: a non-negative integer with implicit units of
types with implicit milliseconds. This is used for relative time.
units and one with
explicit units where
the units are
specific for one
attribute:
"printer-speed".
1setOf X 1 or more values for sets of values 1setOf X: 1 or more values of type X. This syntax type is used for
of type X. multi-valued attributes, whose value is a set of values. Note:
The syntax type is called "1setOf" to indicate that set of values
SHALL NOT be empty (a set of size 0).
rangeOf X a range of value for a range of rangeOf X: a range of value of type X. This syntax type is used
of type X values, such as for ordered values (numeric, lexical, etc.) such as integers.
integers
6.1.1 Attribute Extensibility 6.1.1 Attribute Extensibility
This document uses prefixes to the keyword basic syntax type in order This document uses prefixes to the "keyword" basic syntax type in
to communicate extra information to the reader through its name. This order to communicate extra information to the reader through its
extra information need not be represented in an implementation name. This extra information need not be represented in an
because it is unimportant to a client or Printer. The table below implementation because it is unimportant to a client or Printer. The
describes the prefixes and their meaning. table below describes the prefixes and their meaning.
ISSUE: There are some references to the Printer Working Group (PWG).
How do we describe in this document the process for the PWG to
approve type 2 extensions?
Basic Prefix Comments
Type
keyword type1 someone must revise the IPP standard
to add a new name. No private names
are allowed.
keyword type2 implementers can, at any time, add new "type1": The editor MUST revise the IPP standard to add a new name.
values by proposing them to the PWG No private names are allowed.
for registration (or an IANA-appointed
registry advisor after the PWG is no
June 3, 1997, Expires December 3, 1997 "type2": Implementers can, at any time, add new values by proposing
Basic Prefix Comments them to the PWG for registration (or an IANA-appointed registry
Type
longer certified) where they are June 23, 1997, Expires December 23, 1997
reviewed for approval. IANA keeps the advisor after the PWG is no longer certified) where they are
registry. Implementers can support reviewed for approval. IANA keeps the registry. Implementers can
private (unregistered) with a suitable support private (unregistered) with a suitable distinguishing
distinguishing prefix, such as -xxx- prefix, such as "-xxx-" where xxx is the company name registered
where xxx is the company name with IANA for use in domain names.
registered with IANA for use in domain
names.
keyword type3 implementers can, at any time, add new "type3": Implementers can, at any time, add new values by submitting
values by submitting a registration a registration request directly to IANA, no PWG or IANA-appointed
request directly to IANA, no PWG or registry advisor review is required. Implementers can support
IANA-appointed registry advisor review private (unregistered) names with a suitable distinguishing prefix,
is required. Implementers can support such as "-xxx-" where xxx is the company name registered with IANA
private (unregistered) names with a for use in domain names.
suitable distinguishing prefix, such
as -xxx- where xxx is the company name
registered with IANA for use in domain
names.
keyword type4 system administrators can, at any "type4": Anyone (system administrators, system integrators, site
time, add new installation-defined managers, etc.) can, at any time, add new installation-defined
names to a local system. Care should names to a local system. Care SHOULD be taken by the implementers
be taken by the administrator to see to see that keywords do not conflict with other keywords defined by
that keywords do not conflict with the standard or as defined by the implementing product. There is no
other keywords defined by the standard registration or approval procedure for type 4 keywords.
or as defined by the implementing
product. There is no registration or
approval procedure for type 4
keywords.
ISSUE: Since the standard specifies Each of the four types above assert some sort of registry or review
some of the type 4 values, shouldn't process in order to be valid. "type1" values are only valid if the
it be possible to register additional specification is updated, "type2" values are only valid if the PWG or an
type 4 values after the standard is IANA approved review process approves them, "type3" values are only
approved? valid if IANA registers the value with no review process required, and
"type4" values are always valid (there is no review or registration
process required). Any typeN value MAY be registered using a process
for some typeM where M is less than N, however such registration is NOT
REQUIRED. For example, a type4 value MAY be registered in a type 1
manner (by being included in a future version of an IPP specification)
however it is NOT REQUIRED.
Note: This standard defines keyword values for all of the above types. Note: This specification defines keyword values for all of the above
types, including type4 keywords.
6.2 Job Template Attributes 6.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":
June 3, 1997, Expires December 3, 1997
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
will apply a specific job processing behavior to this job while will apply a specific job processing behavior to this job while
processing the Job. When "xxx" is not supplied, the client expects processing the Job. When "xxx" is not supplied, the client expects
the Printer will apply the default job processing behavior. the Printer will apply the default job processing behavior.
2. "xxx-supported" is a Printer attribute that describes what is June 23, 1997, Expires December 23, 1997
behaviors are supported by that Printer. "xxx-supported" is a 2. "xxx-supported" is a Printer attribute that describes which
behaviors are supported by a Printer. "xxx-supported" is a
CONDITIONALLY MANDATORY attribute which means that the Printer CONDITIONALLY MANDATORY attribute which means that the Printer
only implements the attribute if it is capable of realizing one or only supports the attribute if it is capable of realizing one or
more of the behaviors associated with the attribute and its values. more of the behaviors associated with the attribute and its values.
A client can query the Printer and find out what behaviors are A client can query the Printer and find out what behaviors are
supported by inspecting at the values in the "xxx-supported" supported by inspecting at the values in the "xxx-supported"
attribute. attribute.
3. The Printer also implements 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 (either other job processing information is supplied by the client (either
explicitly as an IPP attribute in the create request or implicitly explicitly as an IPP attribute in the create request or implicitly
as an embedded instruction within the job data). Along with the as an embedded instruction within the job data). Along with the
supported attribute, the default value attribute is also supported attribute, the default value attribute is also
CONDITIONALLY MANDATORY. However, if the Printer implements the CONDITIONALLY MANDATORY. However, if the Printer supports the
"xxx-supported" attribute, the Printer MUST implement the "xxx-supported" attribute, the Printer MUST support the
corresponding default value attribute and vice versa. corresponding default value attribute and vice versa.
4. The Printer OPTIONALLY implements the "xxx-available" attribute. 4. If a client application wishes to present an end user with a list
This attribute describes a state of readiness for each supported
attribute. The supported and available attributes have the same
number of attributes and are ordered so that there is a set of
ordered value pairs between the two attributes. The availability
state of a supported attribute value indicates the level of effort
required by the Printer to actually use resource indicated by the
supported value. The following values are used in the "xxx-
available" attributes:
'ready' - the resource can be used by a Job without human
intervention (the resource is not exhausted)
'not-ready' - the use of the resource requires human intervention
(the resource may be exhausted or not automatically available)
Note: The "xxx-available" attribute only applies to the "media" and
"finishings" attributes.
5. If a client application wishes to present an end user with a list
of supported and default values from which to choose, the client of supported and default values from which to choose, the client
program should query the supported, default values, and possibly program SHOULD query the supported and default value attributes.
the available attributes. The values that the client then sends in The values that the client then supplies in the create request will
the create request will all fall within the supported values at the all fall within the supported values at the Printer. When querying
the Printer, the client MAY enumerate each attribute by name in the
June 3, 1997, Expires December 3, 1997 Get-Attributes Request, or the client MAY just name the "printer-
Printer. When querying the Printer, the client MAY enumerate each job-template" group in order to get the complete set of supported
attribute by name in the Get-Attributes Request, or the client MAY and default value attributes which are supported.
just name the "printer-job-template" group in order to get the
complete set of supported, default value, and available attributes
which are implemented.
The "job-priority" attribute is an example of a Job Template attribute. 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 query the 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 "job- Printer for the "job-priority-supported" attribute and the "job-
priority" default value attribute. The supported attribute contains a priority" default value attribute. The supported attribute contains a
set of supported priority values (a range). The default value attribute set of supported priority values (a range). The default value attribute
contains job priority value that will be used for a new job if the 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 client does client does not supply one in the create request. If the client does
supply the "job-priority" attribute, the Printer validates the value to supply the "job-priority" attribute, the Printer validates the value to
make sure that it falls within the range of supported values. If the make sure that it falls within the range of supported values. If the
client-supplied value is supported, the Job object is created and the client-supplied value is supported, the Job object is created and the
"job-priority" attribute is populated with that value. The Job object, "job-priority" attribute is populated with that value. The Job object,
when queried, returns the value supplied by the client. If the client when queried, returns the value supplied by the client. If the client
does not supply a "job-priority" value in the create request, the Job does not supply a "job-priority" value in the create request, the Job
object is created, but no "job-priority" attribute is implemented for object is created, but no "job-priority" attribute is associated with
the Job. The client queries the Printer's default value "job-priority" the Job. The client queries the Printer's default value "job-priority"
value to find out at what priority the job will be processed. value to find out at what priority the job will be processed.
June 23, 1997, Expires December 23, 1997
The following table summarize the names, relationships, and conformance The following table summarize 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 OPTIONAL.
2. In a Printer Object, all supported attributes are CONDITIONALLY 2. In a Printer Object, all supported attributes are CONDITIONALLY
MANDATORY. MANDATORY.
3. All Printer default value attributes are CONDITIONALLY MANDATORY. 3. All Printer default value attributes are CONDITIONALLY MANDATORY.
However, if the supported attribute is implemented then the default However, if the Printer implements that "supported" attribute then
value attribute MUST be implemented and vice versa. the Printer MUST also implement the default value attribute as
well. and vice versa.
4. All "available" attributes are OPTIONAL.
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
June 3, 1997, Expires December 3, 1997
attribute in the Job object (in the create request, the same name and attribute in the Job object (in the create request, the same name and
syntax is used). The next three columns show the name and syntax for syntax is used). Section All of the attributes in the first column make
each Job Template attribute in the Printer object (the default value up the groupThe last two columns show the name and syntax for each Job
attribute, the supported attribute, and the available attribute). A Template attribute in the Printer object (the default value attribute
"No" in the table means the Printer SHALL NOT implement the attribute. and the supported attribute). A "No" in the table means the Printer
SHALL NOT support the attribute. A "MAN" indicates that the attribute
Job Printer Printer Printer is MANDATORY.
Default Value Supported Available
job-name No No No
(name, MAN))
job-sheets job-sheets job-sheets- No
(type4 keyword) (type4 keyword) supported
(1setOf type4
keyword)
notificaiton- notification- No
events events events
(1setOf type2 (1setOf type2
notification-
(1setOf type2
keyword) keyword) keyword)
notification- No notification- No
addresses addresses-
(1setOf uri) supported
(1setOf uri
scheme)
job-priority job-priority job-priority- No
(int) (int) supported
(rangeOf int)
job-hold-until job-hold-until job-hold-until- No
(type4 keyword) (type4 keyword) supported
(1setOf type4
keyword)
multiple- multiple- multiple- No
documents-are documents-are documents-are-
(type2 keyword) (type2 keyword) supported
(1setOf type2
June 3, 1997, Expires December 3, 1997
Job Printer Printer Printer
Default Value Supported Available
keyword)
best-effort best-effort best-effort- No
(type2 keyword) (type2 keyword, supported
MAN) (1setOf type2
keyword, MAN)
media media media-supported media-available
(type4 keyword) (type4 keyword) (1setOf type2 (1setOf avail
keyword) keyword)
number-up number-up number-up-
(type3 keyword) (type3 keyword) supported
(1setOf type3
keyword)
sides sides sides-supported
(type2 keyword) (type2 keyword) (1setOf type2
keyword)
printer- printer- printer-
resolution resolution resolution-
(type2 keyword) (type2 keyword) supported
(1setOf type2
keyword)
print-quality print-quality print-quality -
(type2 keyword) (type2 keyword) supported
(1setOf type2
keyword)
finishings finishings finishings- finishings-
(setOf type2 (setOf type2 supported available
keyword) keyword) (setOf type2 (setOf avail
keyword) keyword)
copies copies copies-supported No
(int) (int) (rangeOf int)
June 3, 1997, Expires December 3, 1997
Job Printer Printer Printer
Default Value Supported Available
compression compression compression- No
(type3 keyword) (type3 keyword) supported
(1setOf type3
keyword)
job-k-octets No job-k-octets-
supported
No
(int)
(rangeOf int)
job-impressions No job-impressions- No June 23, 1997, Expires December 23, 1997
(int) supported +----------------------+----------------------+----------------------+
(rangeOf int) | Job |Printer: Default Value| Printer: Supported |
+----------------------+----------------------+----------------------+
| job-name | No | No |
| (name, MAN) | | |
+----------------------+----------------------+----------------------+
| job-sheets | job-sheets |job-sheets-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| notify-events | notify-events | notify-events- |
|(1setOf type2 keyword)|(1setOf type2 keyword)| supported |
| | |(1setOf type2 keyword)|
+----------------------+----------------------+----------------------+
|notify-addresses |No |notify-addresses |
|(1setOf uri) | |-supported |
| | |(1setOf uri scheme) |
+----------------------+----------------------+----------------------+
| job-priority | job-priority |job-priority-supported|
| (integer 1-100) | (integer 1-100) |(rangeOf integer |
| | | 1-100) |
+----------------------+----------------------+----------------------+
| job-hold-until | job-hold-until | job-hold-until- |
| (type4 keyword) | (type4 keyword) | supported |
| | |(1setOf type4 keyword)|
+----------------------+----------------------+----------------------+
|multiple-documents-are|multiple-documents-are|multiple-documents-are|
| (type2 keyword) | (type2 keyword) |-supported |
| | |(1setOf type2 keyword)|
+----------------------+----------------------+----------------------+
| best-effort | best-effort | best-effort-supported|
| (type2 keyword) | (type2 keyword, MAN) |(1setOf type2 keyword,|
| | |MAN) |
+----------------------+----------------------+----------------------+
| media | media | media-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| number-up | number-up | number-up-supported |
| (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| sides | sides | sides-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| resolution | resolution | resolution-supported |
job-media-sheets No job-media- No June 23, 1997, Expires December 23, 1997
(int) sheets-supported | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
(rangeOf int) | | | |
+----------------------+----------------------+----------------------+
| quality | quality | quality-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| finishings | finishings | finishings-supported |
|(1setOf type2 keyword)|(1setOf type2 keyword)|(1setOf type2 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| copies | copies | copies-supported |
| (integer: 0 - MAX) | (integer: 0 - MAX) | (rangeOf integer |
| | | 0- MAX) |
+----------------------+----------------------+----------------------+
| document-format | document-format | document-format- |
| (type2 keyword) | (type2 keyword) | supported |
| | |(1setOf type3 keyword)|
+----------------------+----------------------+----------------------+
| compression | No | compression-supported|
| (type3 keyword) | |(1setOf type3 keyword)|
| | | |
+----------------------+----------------------+----------------------+
| job-k-octets | No |job-k-octets-supported|
| (integer) | | (rangeOf integer) |
| | | |
+----------------------+----------------------+----------------------+
| job-impressions | No | job-impressions- |
| (integer) | | supported |
| | | (rangeOf integer) |
+----------------------+----------------------+----------------------+
| job-media-sheets | No | job-media-sheets- |
| (integer) | | supported |
| | | (rangeOf integer) |
+----------------------+----------------------+----------------------+
6.2.1 job-name (name) 6.2.1 job-name (name)
This attribute defines the name of the job. It is a name that is more This attribute is the name of the job. It is a name that is more user
user friendly than the job-URI. friendly than the "job-uri" attribute value. It does not need to be
unique.
If "job-name" is not supplied in the in the create request, the Printer, If "job-name" is not supplied in the create request, the Printer, on
on creation of the Job, shall generate a name which is the name of the creation of the Job, SHALL generate a name. The name MAY be generated
first document in the job. This name comes from the "document-name" using the name of the first Document in the Job ((the "document-name"
attribute or "document-URI" attribute depending on which attribute is attribute).. If "job-name" is supplied in the create request, the
supplied in the Create-Job Request for the first document. If "job- Printer SHALL use its value as the name of the created Job.
name" is supplied in the Create-Job Request, the Printer uses its value
as the name of the created Job.
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
6.2.2 job-sheets (type4 keyword) 6.2.2 job-sheets (type4 keyword)
This attribute determines which of 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 is printed 'standard': a site specific standard job sheet is printed
extensions: names the specific job sheet (banner page)
To force no job sheets, the system administrator SHALL set the only To force no job sheets, the system administrator SHALL set the supported
supported value to 'none'.. To force the use of banner pages, the value to only 'none'. To force the use of banner pages, the supported
supported values shall not include 'none'. If a client requests 'none' values SHALL not include 'none'. If a client requests 'none' in the
in the create request, the request is rejected. create request, the request is rejected.
6.2.3 notification-events (1setOf type2 keyword) 6.2.3 notify-events (1setOf type2 keyword)
This attribute specifies the events for which the end user desires some This attribute specifies the events for which the end user desires some
sort of notification. The "notification-addresses" attribute is used to sort of notification. The "notify-addresses" attribute is used to
describe the destination addresses for these events. 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 event occurs. 'all': the Printer SHALL notify when any of event occurs.
'job-completion': the Printer shall notify when the job containing 'job-completion': the Printer SHALL notify when the job containing
this attribute completes with or without errors. this attribute completes with or without errors.
'job-canceled': the Printer shall notify when the job containing 'job-canceled': the Printer SHALL notify when the job containing
this attribute is canceled by the end-user or by the operator, or this attribute is canceled by the end-user or by the operator, or
aborts before completion. aborts before completion.
'job-problems': the Printer shall notify when this job has a problem 'job-problems': the Printer SHALL notify when this job has a problem
while this job is printing. Problems include any of the "job-state- while this job is printing. Problems include any of the "job-state-
reasons" or "printer-state-reason" values reasons" or "printer-state-reason" values.
'printer-problems': the Printer shall notify when any job, including 'printer-problems': the Printer SHALL notify when any job, including
this job, is affected by a Printer problem (the printer has moved this job, is affected by a Printer problem (the printer has moved
to the stopped state and there is a reason in the printer-state- to the stopped state and there is a reason in the printer-state-
reasons attribute) while this job is waiting to print or printing. reasons attribute) while this job is waiting to print or printing.
Problems include any of the "job-state-reasons" or "printer-state- Problems include any of the "job-state-reasons" or "printer-state-
reason" values reason" values.
6.2.4 notification-addresses (1setOf uri) ISSUE: Should these correspond with Job states job-completed, job-
completed-aborted, job-completed-canceled?
6.2.4 notify-addresses (1setOf uri)
This attribute describes both where (the address) and how (the mechanism This attribute describes both where (the address) and how (the mechanism
for delivery ) notification events are to be delivered. The Printer for delivery ) events are to be delivered. The Printer SHALL use this
shall use this attribute as the set of addresses and methods for sending
messages when an event occurs that the end user (job submitter) has June 23, 1997, Expires December 23, 1997
registered an interest in. attribute as the set of addresses and methods for sending messages when
an event occurs that the end user (job submitter) has registered an
interest in.
June 3, 1997, Expires December 3, 1997
Standard uri scheme values are: Standard uri scheme values are:
'mailto': email is used 'mailto': email is used
'http': an HTTP method is used to add HTML formatted events to the 'http': an HTTP method is used to add HTML formatted events to the
end of the specified HTML file. end of the specified HTML file.
'ftp': FTP is used to append a record at the end of a specified text 'ftp': FTP is used to append a record at the end of a specified text
file. file.
6.2.5 job-priority (integer(1:100)) 6.2.5 job-priority (integer(1:100))
This attribute specifies a priority for scheduling the print-job. A This attribute specifies a priority for scheduling the print-job. A
higher value specifies a higher priority. The value 1 is defined to higher value specifies a higher priority. The value 1 is defined to
indicate the lowest possible priority. The value 100 is defined to indicate the lowest possible priority. The value 100 is defined to
indicate the highest possible priority. Priority is expected to be indicate the highest possible priority. Among those jobs that are ready
evenly or "normally" distributed across this range. Among those jobs to print, a Printer SHALL print all jobs with a priority value of n
that are ready to print, a Printer shall print all jobs with a priority before printing those with a priority value of n-1 for all n. The
value of n before printing those with a priority value of n-1 for all n. mapping of vendor-defined priority over this range is implementation-
The mapping of vendor-defined priority over this range is specific.
implementation-specific.
6.2.6 job-hold-until (type4 keyword) 6.2.6 job-hold-until (type4 keyword)
This job attribute specifies the named time period during which the Job This job attribute specifies the named time period during which the Job
print job shall become a candidate for printing. 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
'night': night 'night': night
'weekend': weekend (Saturday or Sunday) 'weekend': weekend
'second-shift': second-shift 'second-shift': second-shift
'third-shift': third-shift (after midnight) 'third-shift': third-shift (after midnight)
An administrator shall associate allowable print times with a named time An administrator SHALL associate allowable print times with a named time
period (by means outside IPP 1.0). An administrator is encouraged to period (by means outside IPP 1.0). An administrator is encouraged to
pick names that suggest the type of time period. 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 and shall not schedule the the job's "job-state-reasons" attribute and SHALL NOT schedule the
print-job for printing until the specified time-period arrives. When print-job for printing until the specified time-period arrives. When
the specified time period arrives, the Printer shall remove the 'job-
hold-until-specified' value from the job's "job-state-reason attribute"
June 3, 1997, Expires December 3, 1997 June 23, 1997, Expires December 23, 1997
and, if no other reasons remain, shall consider the job as a candidate the specified time period arrives, the Printer SHALL remove the 'job-
hold-until-specified' value from the job's "job-state-reason attribute"
and, if no other reasons remain, SHALL consider the job as a candidate
for processing. for processing.
If this job attribute value is the named value "'no-hold'", or the time If this job attribute value is the named value "'no-hold'", or the time
period has already started , the job shall be a candidate for processing period has already started , the job SHALL be a candidate for processing
immediately. immediately.
6.2.7 multiple-documents-are (type2 keyword) 6.2.7 multiple-documents-are (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, job-sheet placement, and
the order of documents when the copies attribute exceeds 1. the order of documents when the copies attribute exceeds 1.
ISSUE: Change name to "finishing-for-multiple-documents"??
Standard values are: Standard values are:
'single-document': If the files for the job are a and b, then files a 'single-document': If the files for the job are a and b, then files a
and b are treated as a single document for finishing operations. and b SHALL be treated as a single document for finishing
Also, there will be no slip sheets between files a and b. If more operations. Also, there SHALL be no slip sheets between files a and
than one copy is made, the ordering shall be a, b, a, b, .... b. If more than one copy is made, the ordering SHALL be a, b, a, b,
....
'separate-documents-uncollated-copies': If the files for the job are 'separate-documents-uncollated-copies': If the files for the job are
a and b, then each file is 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 sheet finishing operations. Also, a client may specify that a slip sheet
be placed between files a and b. If more than one copy is made, be placed between files a and b. If more than one copy is made,
the ordering shall be a, a, b, b, .... the ordering SHALL be a, a, b, b, ....
'separate-documents-collated-copies': If the files for the job are a 'separate-documents-collated-copies': If the files for the job are a
and b, then each file is treated as a single document for finishing and b, then each file SHALL be treated as a single document for
operations. Also, a client may specify that a slip sheet be placed finishing operations. Also, a client may specify that a slip sheet
between files a and b. If more than one copy is made, the ordering be placed between files a and b. If more than one copy is made, the
shall be a, b, a, b, .... ordering SHALL be a, b, a, b, ....
Both of the 'separate-xxx' values force each new document to start on a Both of the 'separate-xxx' values force each new document to start on a
new media sheet. new media sheet.
6.2.8 best-effort (type2 keyword) 6.2.8 best-effort (type2 keyword)
This attribute determines what to do if there is a conflict between what A client supplies Job Template attributes to affect the rendering,
a client requests and what a Printer supports. production and finishing of the documents in the job. Similar types of
instructions may also be contained in the document to be printed, that
is, within the Page Description Language (PDL) of the document data. If
there is a conflict between the value of one of these IPP Job Template
attributes, and a corresponding instruction in the document (either
implicit or explicit), it is desirable that the value of the attribute
Standard values for this attribute are: June 23, 1997, Expires December 23, 1997
SHALL take precedence over the document instruction. Until companies
that supply interpreters for PDLs, such as PostScript and PCL allow a
way to external attributes (such as IPP attributes) to take precedence
over internal job production instructions, a Printer might not be able
to support the semantics that IPP attributes override (take on a higher
precedence) the embedded PDL instructions. Therefore, this attribute
gives the end user some ability to influence, or at least understand,
how a particular Printer implementation handles these conflicts.
This attribute takes on the following values:
- 'shall-honor-ipp-attributes': If a Printer supports this value and - 'shall-honor-ipp-attributes': If a Printer supports this value and
a client requests this value, the Printer guarantees that all IPP a client requests this value, the Printer guarantees that all IPP
attribute values take precedence over embedded instructions in the attribute values take precedence over embedded instructions in the
job data (the PDL of the job's documents). job data (the PDL of the job's documents).
- 'should-honor-ipp-attributes': If a Printer supports this value, - 'should-honor-ipp-attributes': If a Printer supports this value,
and a client requests this value, the Printer should try to make and a client requests this value, the Printer SHOULD try to make
June 3, 1997, Expires December 3, 1997
sure that IPP attribute values take precedence over embedded PDL sure that IPP attribute values take precedence over embedded PDL
instructions, however there is no guarantee instructions, however there is no guarantee
The client supplies Job Template attributes in the create request to ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should-
affect the rendering, production and finishing of the documents in the honor-attribute-prcedence'?
job. Similar types of instructions may also be contained in the
document to be printed, that is, within the Page Description Language
(PDL) of the document data. If there is a conflict between the value of
one of these attributes, and a corresponding instruction in the document
(either implicit or explicit), it is desireable that the value of the
attribute shall take precedence over the document instruction. Many of
these job template attributes provides a client with a way to request
some feature at print time that might not have been embedded within the
document data when the document was created. Job template attribute
also provides a client with a way to override a feature at print time
that was embedded within the document data when the document was
created. Note: until companies that supply interpreters for PDLs, such
as PostScript and PCL allow a way to specify overrides for internal job
production instructions, a Printer might not be able to implement these
attributes for some PDLs.
In order to solve this problem, the IPP Printer implements the MANDATORY
best-effort-supported" attribute. If the value of this attribute is
'shall-honor-ipp-attributes', the implementation MUST guarantee that the
IPP attribute values take precedence over any related job processing
instructions in the PDL Job's document data. This can be done by
modifying the interpreter within the output device itself to understand
IPP attributes, or by mergeing theses Job Template attributes directly
into the document data, or in any other implementation specific manner.
In any case, the semantics of 'shall-honor-ipp-attributes' MUST be
preserved.
Note: Since 'should-honor-ipp-attributes' does not offer any type of A Printer SHALL implement the "best-effort-supported" attribute. Notice
that since 'should-honor-ipp-attributes' does not offer any type of
guarantee, a Printer may not do a very "good" job of implementing the guarantee, a Printer may not do a very "good" job of implementing the
semantics of "should", but it would still be a conforming semantics of "should", but it would still be a conforming
implementation. implementation.
This "best-effort" attribute has nothing to do with conflict between If there is ever a conflict between what a Printer supports and what an
what a Printer supports and what an IPP client requests. If there is IPP client requests, the Printer SHALL reject the print request. A
such a conflict, the Printer shall reject the create request. A client client SHOULD query the printer to find out what is supported before
SHOULD query the printer to find out what is supported before supplying making a request. This ensures that all requested attribute values are
specific values in a create request. supported.
ISSUE: Should this be called "effort-level" rather than "best-effort"?
If the value of this attribute is 'shall-honor-ipp-attributes', the
implementation MUST guarantee that the IPP attribute values take
precedence over any related job processing instructions in the PDL Job's
document data. This can be done by modifying the interpreter within the
output device itself to understand IPP attributes, or by merging theses
Job Template attributes directly into the document data, or in any other
implementation specific manner. In any case, the semantics of 'shall-
honor-ipp-attributes' MUST be preserved.
June 23, 1997, Expires December 23, 1997
Note: Since 'should-honor-ipp-attributes' does not offer any type of
guarantee, a Printer may not do a very "good" job of implementing the
semantics of 'should', but it would still be a conforming
implementation.
6.2.9 media (type4 keyword) 6.2.9 media (type4 keyword)
This job attribute identifies the medium that the Printer shall use for This job attribute identifies the medium that the Printer SHALL use for
all pages of the document regardless of what media are specified within all pages of the document regardless of what media are specified within
the document. the document.
June 3, 1997, Expires December 3, 1997 The values for "media" include medium-names, medium-sizes, input-trays
The values for medium 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 specify contains the specified medium. If a printer allows a client to specify
a medium size as the value of this attribute, such a medium size a medium size as the value of this attribute, such a medium size
implicitly selects a medium name which in turn implicitly selects an implicitly selects a medium name which in turn implicitly selects an
input-tray that contains the medium with the specified size. If a 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
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-
freed input-trays. If a printer allows a client to specify an feed input-trays. If a printer allows a client to specify an electronic
electronic form as the value of this attribute, such an electronic form form as the value of this attribute, such an electronic form implicitly
implicitly selects a medium-name which in turn implicitly selects an selects a medium-name which in turn implicitly selects an input-tray
input-tray that contains the medium specified by the electronic form. that contains the medium specified by the electronic form. The
The electronic form also implicitly selects an image that the Printer electronic form also implicitly selects an image that the Printer SHALL
shall merge with the data from the document as its prints each page. merge with the data from the document as its prints each page.
Standard values are (taken from ISO DPA and the Printer MIB):
default: Standard values are (taken from ISO DPA and the Printer MIB) and are
iso-a4-white: listed in section 14.
...
6.2.10 number-up (type3 keyword) 6.2.10 number-up (type3 keyword)
This job attribute specifies the number of source page-images to impose This job attribute specifies the number of source page-images to impose
upon a single side of an instance of a selected medium. 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 but is allowed to add an instance of the selected medium (MAY add some sort of
embellishments or some sort of translation, scaling, or rotation. translation, scaling, or rotation).
'two':
'four': June 23, 1997, Expires December 23, 1997
'two': The Printer SHALL place two logical page on a single side of
an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation).
'four': The Printer SHALL place four logical page on a single side of
an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation).
This attribute primarily controls the translation, scaling and rotation This attribute primarily controls the translation, scaling and rotation
of page images, but a site may choose to add embellishments, such as of page images, but a site may choose to add embellishments, such as
borders to each logical page. borders to each logical page.
6.2.11 sides (type2 keyword) 6.2.11 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.
June 3, 1997, Expires December 3, 1997
The standard values are: The standard values are:
'one-sided': imposes each consecutive source page-image upon the same 'one-sided': imposes each consecutive source page-image upon the same
side of consecutive media sheets. side of consecutive media sheets.
'two-sided-long-edge': imposes each consecutive pair of source page- 'two-sided-long-edge': imposes each consecutive pair of source page-
image upon front and back sides of consecutive media sheets, such image upon front and back sides of consecutive media sheets, such
that the orientation of each pair of source-pages on the medium that the orientation of each pair of source-pages on the medium
would be correct for the reader as if for binding on the long edge. would be correct for the reader as if for binding on the long edge.
This imposition is sometimes called "duplex". This imposition is sometimes called 'duplex'.
'two-sided-short-edge': imposes each consecutive pair of source page- 'two-sided-short-edge': imposes each consecutive pair of source page-
image upon front and back sides of consecutive media sheets, such image upon front and back sides of consecutive media sheets, such
that the orientation of each pair of source-pages on the medium that the orientation of each pair of source-pages on the medium
would be correct for the reader as if for binding on the short would be correct for the reader as if for binding on the short
edge. This imposition is sometimes called "tumble" or "head-to- edge. This imposition is sometimes called 'tumble' or 'head-to-
toe". toe'.
'two-sided-long-edge' and 'two-sided-short-edge' work the same for 'two-sided-long-edge', 'two-sided-short-edge', 'tumble'. 'duplex', and
portrait or landscape. That is, "head-to-toe" is "tumble" in portrait 'head-to-toe' all work the same for portrait or landscape, that is,
but "duplex" in landscape. "head-to-head" also switches between 'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape. 'head-
"duplex" and "tumble" when using portrait and landscape modes. to-head' also switches between 'duplex' and 'tumble' when using portrait
and landscape modes.
6.2.12 printer-resolution (type2 keyword) 6.2.12 printer-resolution (type2 keyword)
This job attribute specifies the resolution that the Printer should use. This job attribute specifies the resolution that the Printer SHOULD use.
The values are type2 keywords which represent single integers or pair of The values are type2 keywords which represent single integers or pair of
integers. The latter are to specify the resolution when the x and y integers. The latter are to specify the resolution when the x and y
dimensions differ. When two integers are specified, the first is in the dimensions differ. When two integers are specified, the first is in the
x direction, i.e., in the direction of the shortest dimension of the x direction, i.e., in the direction of the shortest dimension of the
medium, so that the value is independent of whether the printer feeds medium, so that the value is independent of whether the printer feeds
long edge or short edge first. long edge or short edge first.
June 23, 1997, Expires December 23, 1997
The standard values are: The standard values are:
normal: ISSUE: TBD normal: res-100: res-300x300: ...
res-100:
res-300x300: 'normal':
... 'res-100':
'res-200':
'res-240':
'res-300':
'res-600':
'res-800':
'res-1200':
'res-1800':
'res-100x200':
'res-300x600':
'res-600x300':
'res-400x800':
'res-800x400':
'res-600x1200':
'res-1200x600':
'res-1800x600':
6.2.13 print-quality (type2 keyword) 6.2.13 print-quality (type2 keyword)
This job attribute specifies the print quality that the Printer should This job attribute specifies the print quality that the Printer SHOULD
use. use.
The standard values are: The standard values are:
draft: lowest quality available on the printer draft: lowest quality available on the printer
June 3, 1997, Expires December 3, 1997
normal: normal or intermediate quality on the printer normal: normal or intermediate quality on the printer
high: highest quality available on the printer high: highest quality available on the printer
6.2.14 copies (integer(1:2**31 - 1)) 6.2.14 copies (integer(1:2**31 - 1))
This job attribute specifies the number of copies of the job to be This job attribute specifies the number of copies of the job to be
printed. Note: The effect of this attribute on jobs and documents is printed.
controlled by the multiple-files-are job attribute.
6.2.15 finishings (1setOf type2 keyword) Note: The effect of this attribute on jobs and documents is controlled
by the "multiple-documents-are" job attribute (section 6.2.7).
This job attribute identifies the finishing operation that the Printer 6.2.15 finishing (1setOf type2 keyword)
should apply to each copy of each printed document in the job where the
This job attribute identifies the finishing operations that the Printer
SHOULD apply to each copy of each printed document in the job where the
June 23, 1997, Expires December 23, 1997
definition of a copy is controlled by the "multiple-documents-are" Job definition of a copy is controlled by the "multiple-documents-are" Job
attributes. attributes.
Standard values are: Standard values are:
none: none:
staple: staple:
... ...
6.2.16 document-format (type2 keyword)
6.2.16 compression (type3 keyword) This optional attribute defines the document format for each Document in
a Job. The standard values for this attribute are keywords. Since the
complete list is rather long, the full enumeration of standard values is
found in section 13 APPENDIX B - "document-format" Values.
6.2.17 compression (type3 keyword)
This attribute identifies compression algorithms used for compressed This attribute identifies compression algorithms used for compressed
document data. document data.
Standard values for this attribute are: Standard values for this attribute are:
'none': 'none': no compression is used.
'zip': 'zip':ZIP compression technology
'tar': 'tar': UNIX TAR compression technology
...
6.2.17 job-k-octets (integer(0:2**31 - 1)) 6.2.18 job-k-octets (integer(0:2**31 - 1))
This Job attribute specifies the total size of the job in K octets, This Job 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 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 1K, 1025 to job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to
2048 shall be 2, etc. This attribute is not intended to be a counter as 2048 SHALL be 2, etc. This attribute is not intended to be a counter as
in the Job Monitoring MIB; it is intended to be useful routing and in the Job Monitoring MIB; it is intended to be useful routing and
scheduling information if known. The Printer might not be able to scheduling information if known. If the client does not supply this
attribute in the create request, the Printer might not be able to
June 3, 1997, Expires December 3, 1997 compute this value at the time the Job is created.
compute this value (if not supplied by the client in the request) at the
time the Job is created. If not, the Printer may implement this
attribute at any later time as it is able to compute the total size of
the Job.
6.2.18 job-impressions (integer(0:2**31 - 1)) 6.2.19 job-impressions (integer(0:2**31 - 1))
This job attribute specifies the total size of the job in impressions. This job attribute specifies the total size of the job in impressions.
This attribute is not intended to be a counter as in the Job Monitoring This attribute is not intended to be a counter as in the Job Monitoring
MIB; it is intended to be useful routing and scheduling information if MIB; it is intended to be useful routing and scheduling information if
known. The Printer shall try to compute the value if it is not supplied known. The Printer SHALL try to compute the value if it is not supplied
in the create request. The Printer might not be able to compute this in the create request. The Printer might not be able to compute this
value (if not supplied by the client in the request) at the time the Job value (if not supplied by the client in the request) at the time the Job
is created. If not, the Printer may implement this attribute at any is created. If not, the Printer may support this attribute at any later
later time as it is able to compute the total size of the Job. time as it is able to compute the total size of the Job.
6.2.19 job- media-sheets (integer(0:2**31 - 1)) June 23, 1997, Expires December 23, 1997
6.2.20 job- media-sheets (integer(0:2**31 - 1))
This job attribute specifies the total size of the job in media-sheets. This job attribute specifies the total size of the job in media-sheets.
This attribute is not intended to be a counter as in the Job Monitoring This attribute is not intended to be a counter as in the Job Monitoring
MIB; it is intended to be useful routing and scheduling information if MIB; it is intended to be useful routing and scheduling information if
known. The Printer shall try to compute the value if it is not supplied known. The Printer SHALL try to compute the value if it is not supplied
in the Create-Job Request. The Printer might not be able to compute in the creaet request. The Printer might not be able to compute this
this value (if not supplied by the client in the request) at the time value (if not supplied by the client in the request) at the time the Job
the Job is created. If not, the Printer may implement this attribute at is created. If not, the Printer may support this attribute at any later
any later time as it is able to compute the total size of the Job. time as it is able to compute the total size of the Job.
6.3 Job Attributes
The attributes in this section are associated with a Job.
6.3.1 Job Template Attributes
The Job Template attributes which apply specifically to a Job object are
described in section 6.2 Job Template Attributes. These Job specific
attributes form the attribute group called "job-template".
6.3.2 Job Description Attributes
These attributes form the attribute group called "job-description".
Attribute Man
?
June 3, 1997, Expires December 3, 1997
job-URI Man
(uri)
job-originating- Man
user
(name)
job-originating-
host
(name)
user-locale
(type2 keyword)
job-state Man
(type1 keyword)
job-state-reasons Man
(1setOf type2
keyword)
job-state-message
(text)
output-device-
assigned
(name)
time-since- Man
submission
(milliseconds)
number-of- Man
intervening-jobs
(int)
job-message-from- 6.3 Job Description Attributes
operator
(text)
time-since- Man The attributes in this section form the attribute group called "job-
completion description". The following table summarizes these attributes. The
(milliseconds) third column indicates whether the attribute is a MANDATORY attribute.
If it is not MANDATORY, then it is OPTIONAL.
job-k-octets- June 23, 1997, Expires December 23, 1997
completed +----------------------------+----------------------+----------------+
(int) | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+
| job-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+
| job-uri-user | uri | |
+----------------------------+----------------------+----------------+
| job-originating-user | name | MANDATORY |
+----------------------------+----------------------+----------------+
| job-originating-host | name | |
+----------------------------+----------------------+----------------+
| user-locale | locale | |
+----------------------------+----------------------+----------------+
| job-state | type1 keyword | MANDATORY |
+----------------------------+----------------------+----------------+
| job-state-reasons | 1setOf type2 keyword | |
+----------------------------+----------------------+----------------+
| job-state-message | text | |
+----------------------------+----------------------+----------------+
| output-device-assigned | name | |
+----------------------------+----------------------+----------------+
| time-since-pending | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+
| time-since-processing | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+
| time-since-completed | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+
| number-of-intervening-jobs | integer | MANDATORY |
+----------------------------+----------------------+----------------+
| job-message-from-operator | text | |
+----------------------------+----------------------+----------------+
| job-k-octets-completed | integer | |
+----------------------------+----------------------+----------------+
| job-impressions-completed | integer | |
+----------------------------+----------------------+----------------+
| job-media-sheets-completed | integer | |
+----------------------------+----------------------+----------------+
June 3, 1997, Expires December 3, 1997 6.3.1 job-uri (uri)
job-impressions-
completed
(int)
job-media-sheets- This attribute contains the URI for the job. The Printer, on receipt of
completed a new job, SHALL generate a URI which identifies the job on the Printer.
(int) The Printer, SHALL return the value of the "job-uri" attribute as part
of the response to a create request. The precise format of a job URI
SHALL be implementation dependent.
6.3.2.1 job-URI (uri) June 23, 1997, Expires December 23, 1997
6.3.2 job-uri-user (uri)
This attribute contains the URI for the job. The Printer, on receipt of Similar to "job-uri", this attribute contains the URI referencing an
a new job, shall generate a URI which identifies the job on the Printer. HTML page containing information about the Job.
The Printer, shall return the value of the URI job attribute as part of
the PrintResult in the Print operation. The precise format of a job URI
shall be implementation dependent.
6.3.2.2 job-originating-user (name) 6.3.3 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 authentic print job. The Printer SHALL set this attribute to the most authentic
name that it can obtain from the protocol over which the operation was name that it can obtain from the protocol over which the operation was
received from the client. received from the client.
6.3.2.3 job-originating-host (name) 6.3.4 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 authentic host name it can obtain SHALL set this attribute to the most authentic host name it can obtain
from the protocol over which the operation was received from the from the protocol over which the operation was received from the
client. client.
6.3.2.4 user-locale (type3 keyword) 6.3.5 user-locale (type3 keyword)
This attribute identifies the locale of the job, i.e, the country, This attribute identifies the locale of the job, i.e, the country,
language, and coded character set. The Printer sets this attribute to language, and coded character set. The Printer sets this attribute to
the most authentic value it can obtain from the protocol over which the the most authentic value it can obtain from the protocol over which the
Print operation was received from the client. Print operation was received from the client.
The Printer shall use this attribute to determine the locale for The Printer SHALL use this attribute to determine the locale for
notification messages that it sends. notification messages that it sends.
6.3.2.5 job-state (type1 keyword) 6.3.6 job-state (type1 keyword)
This attribute identifies the current state of the job.
June 3, 1997, Expires December 3, 1997
The Printer may provide additional information about each state value by
supplying one or more values of the job's companion "job-state-reasons"
attribute depending on implementation. While the job states cannot be
added to without impacting deployed clients that take actions upon
receiving job state values, it is the intent that additional "job-state-
reasons" values can be defined without impacting such deployed clients.
In other words, the "job-state-reasons" attribute is intended to be
extensible.
Standard values are:
unknown The job state is not known, or its
state is indeterminate.
pending The job is a candidate to start
processing, but is not yet
processing..
pending- The job is not a candidate for
stopped processing for any number of reasons
and will resume pending as soon as the
reasons are no longer present. The
job's "job-state-reason" attribute
shall indicate why the job is no
longer a candidate for processing.
June 3, 1997, Expires December 3, 1997
processing Either:
1. the job is using, or is attempting
to use, one or more document
transforms which include (1) purely
software processes that are
interpreting a PDL, and (2) hardware
devices that are interpreting a PDL,
making marks on a medium, and/or
performing finishing, such as stapling
OR
2. 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.
ISSUE: The "job-state-reasons"
specification is that the job is in
'pending' state not 'processing'
state.
When the job is in the 'processing'
state, the entire job state includes
the detailed status represented in the
printer's "printer-state", "printer-
state-reasons", and "printer-state-
message attributes.
Implementations may include additional
values in the job's "job-state-
reasons" attribute to indicate the
progress of the job, such as adding
the 'job-printing' value to indicate
when the output device is actually
making marks on paper. Most
implementations won't bother with this
nuance.
June 3, 1997, Expires December 3, 1997
processing The job has stopped while processing
-stopped for any number of reasons and will
continue processing as soon as the
reasons are no longer present. The
job's "job-state-reason" attribute
shall indicate why the job has stopped
processing.
If the output device is stopped, the
'printer-stopped' value shall be
included in the job's "job-state-
reasons" attribute. When the output
device is stopped, the device usually
indicates its condition in human
readable form locally at the device.
A client can obtain more complete
device status remotely by querying the
printer's "printer-state-reasons"
attribute.
canceled The job has been canceled by a Cancel-
Job operation and is either (1) in the
process of terminating or (2) has
completed terminating. The job's
"job-state-reasons" attribute shall
contain either the 'canceled-by-user'
or 'canceled-by-operator' value.
aborted The job has been aborted by the
system, usually while the job was in
the 'processing' state.
completed The job has completed successfully or
with warnings or errors and all of the
job media sheets have been properly
stacked in the appropriate output tray
or bin. The job's "job-state-reasons"
attribute shall contain one of:
'completed-successfully', 'completed-
with-warnings', or 'completed-with-
errors'.
The length of time that jobs remain in the 'canceled', 'aborted', and
'completed' states depends on implementation.
The following figure shows the normal job state transitions. Other
transitions are unlikely, but are not forbidden.
June 3, 1997, Expires December 3, 1997
+--> canceled
/
+----> pending --------> processing --+----> aborted
| ^ ^ \
----+ | | +--> completed
| v v
+----> pending-stopped processing-stopped
Figure 1 - Normal job state transitions
Normally a job progresses only from left to right through three states.
Even though the IPP protocol defines seven values for job states,
Printers SHALL only implement those states which are appropriate for the
particular implementation.
6.3.2.6 job-state-reasons (1setOf type2 keyword)
This attribute identifies the reason or reasons that the job is in the
state that it is in (e.g., 'pending', 'processing', 'completed', etc.).
The Printer shall indicate the particular reason(s) by setting the value
of the job's "job-state-reasons" attribute.
The following standard values are defined for use with the job states
indicated as applicable.
NOTE - For easy of understanding the order of the reasons is presented
in the normal order of job state progression:
none Mandatory: There are no reasons
for the job's current state.
Applicable job states:
'pending', 'processing',
'aborted'.
job-incoming Mandatory. The PrintJob or
CreateJob operation has been
accepted by the Printer, but the
Printer is waiting for additional
SendDocument operations and/or
the transfer of the remainder of
the job or document data.
Applicable job states: 'pending-
stopped'
job-outgoing Optional. The Printer is
transmitting the job to the
output device.
Applicable job states: 'pending'
June 3, 1997, Expires December 3, 1997
job-hold-until- Conditionally mandatory.
specified Mandatory if the "job-hold-until"
job attribute is implemented.
The value of the job's "job-hold-
until" attribute has specified a
time period that has not yet
arrived, so that the Printer
shall not consider the job as a
candidate for processing.
Applicable job states: 'pending-
stopped'.
job-hold-until- Optional. At least one of the
resources-are- resources needed by the job, such
ready as media, fonts, resource
objects, etc., is not ready on
any of the physical printer's for
which the job is a candidate.
Usually such a condition is
detected while the job is in the
'pending' state. If a job starts
processing and encounters a
resource that is not ready, there
are two possible implementations:
(1) the device is stopped and no
jobs can run until the
resource(s) are made ready, in
which case the Printer shall keep
the job in the 'processing' state
and shall add the 'printer-
stopped' reason to the job's
"job-state-reasons" attribute
(not the 'job-hold-until-
resources-are-ready' value) OR
(2) another job is found to use
the device while the current job
goes back to waiting for its turn
and for the resources to be made
ready, in which case the Printer
shall change the job's "job-
state" attribute to 'pending' and
add the 'job-hold-until-
resources-are-ready' value to the
job's "job-state-reasons"
attribute.
Applicable job states: 'pending-
stopped'.
June 3, 1997, Expires December 3, 1997
printer-stopped- Optional. This reason appears in
partly all jobs in the 'pending' state
when the value of the Printer's
"printer-state-reasons" attribute
contains the value 'stopped-
partly'.
Applicable job states: 'pending'
printer-stopped Mandatory. The output device is
stopped. This reason appears in
all jobs in the 'pending' and
'processing' states when the
value of the Printer's "printer-
state" attribute is 'stopped'.
Applicable job states: 'pending-
stopped', 'processing-stopped'
job-printing Optional. The output device is
marking media. This value is
useful for Printers which spend a
great deal of time processing
when no marking is happening and
then want to show that marking is
now happening.
Applicable job states:
'processing', 'processing-
stopped'
job-cancelled-by- Level 2 Mandatory. The job was
user cancelled by the user using the
CancelJob request.
Applicable job states:
'canceled'.
job-cancelled-by- Level 2 Mandatory. The job was
operator cancelled by the operator using
the CancelJob request.
Applicable job states:
'canceled'.
logfile-pending Optional. The job's logfile is
pending file transfer.
Applicable job states:
'canceled', 'aborted', and
'completed'.
logfile- Optional. The job's logfile is
transferring being transferred.
Applicable job states:
'canceled', 'aborted', and
'completed'.
June 3, 1997, Expires December 3, 1997 6.3.7 job-state-reasons (1setOf type2 keyword)
job-completed- Mandatory. The job completed
successfully successfully.
Applicable job states:
'completed'.
job-completed- Mandatory. The job completed
with-warnings with warnings.
Applicable job states:
'completed'.
job-completed- Mandatory. The job completed
with-errors with errors (and possibly
warnings too).
Applicable job states:
'completed'.
6.3.2.7 job-state-message (text) 6.3.8 job-state-message (text)
This attributes specifies suplimental information about the Job State in This attributes specifies supplemental information about the Job State
human readable text. It SHALL be set by the Printer. in human readable text. It SHALL be set by the Printer.
6.3.2.8 output-device-assigned (uri) 6.3.9 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
June 23, 1997, Expires December 23, 1997
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.
ISSUE: Why is this a uri? 6.3.10 time-since-pending (milliseconds)
6.3.2.9 time-since-submission (milliseconds)
This attribute indicates the amount of time that has passed since the This attribute indicates the amount of time that has passed since the
Job was first created. Job was first put into the pending state..
6.3.2.10 time-since-processing (milliseconds) 6.3.11 time-since-processing (milliseconds)
This attribute indicates the amount of time that has passed since the This attribute indicates the amount of time that has passed since the
Job first entered the processing state. Job first entered the processing state.
6.3.2.11 number-of-intervening-jobs (integer(0:2**31 - 1)) 6.3.12 time-since-completed (milliseconds)
This attribute indicates the amount of time that has passed since the
Job was completed.
6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1))
This attribute indicates the number of jobs that are "ahead" of this job This attribute indicates the number of jobs that are "ahead" of this job
in the current scheduled order. For efficiency, it is only necessary to in the current scheduled order. For efficiency, it is only necessary to
calculate this value when an operation if performed that requests this calculate this value when an operation is performed that requests this
attribute. attribute.
June 3, 1997, Expires December 3, 1997
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.
6.3.2.12 job-message-from-operator (text) 6.3.14 job-message-from-operator (text)
This attribute provides a message from an operator, system administrator This attribute provides a message from an operator, system administrator
or "intelligent" process to indicate to the end user the reasons for or "intelligent" process to indicate to the end user the reasons for
modification or other management action taken on a job. modification or other management action taken on a job.
6.3.2.13 time-since-completion (milliseconds) 6.3.15 job-k-octets-completed (integer(0:2**31 - 1))
This attribute indicates the amount of time that has passed since the
Job was first created.
6.3.2.14 job-k-octets-completed (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 a 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 1K, 1025 to job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to
2048 shall be 2, etc. This attribute is intended to be a counter as in 2048 SHALL be 2, etc. This attribute is intended to be a counter as in
the Job Monitoring MIB. the Job Monitoring MIB.
6.3.2.15 job-impressions-completed (integer(0:2**31 - 1)) June 23, 1997, Expires December 23, 1997
6.3.16 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.
6.3.2.16 job-media-sheets-completed (integer(0:2**31 - 1)) 6.3.17 job-media-sheets-completed (integer(0:2**31 - 1))
This job attribute specifies the media-sheets completed. This attribute This job attribute specifies the media-sheets completed. This attribute
is intended to be a counter as in the Job Monitoring MIB. is intended to be a counter as in the Job Monitoring MIB.
6.4 Document Attributes ISSUE: Should the above three attributes be regularly named as job-size-
in-xxx-yyy where xxx is k-octets, impressions and media sheets and where
This group of attributes describes the document data for the job. They yyy is a job state pending, processing and completed. So job-impressions
are supplied in the Send-Document request. becomes job-size-in-impressions-pending and job-impressions-completed is
job-size-in-impressions-processing while printing and job-size-in-
June 3, 1997, Expires December 3, 1997 impressions-completed when the job completed. Thus job-impressions-
Attribute Man completed doesn't serve two functions.
?
document-name Man 6.4 Document Attributes
(name)
document-format This group of attributes describes the document data for the job. For
(type2 keyword single-Document Jobs, they are supplied in the Print-Job or Print-URI
requests. For multi-Document Jobs, they are supplied in each Send-
Document or Send-URI request.
document-URI +----------------------------+----------------------+----------------+
(uri) | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+
| document-name | name | MANDATORY |
+----------------------------+----------------------+----------------+
| document-format | type 2 keyword | |
+----------------------------+----------------------+----------------+
| document-uri | uri | |
+----------------------------+----------------------+----------------+
6.4.1 document-name(name, Mandatory) 6.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, i.e. initially identify the document. When a client prints by reference, i.e.
includes the document-URI attribute and no document content, this includes the document-URI attribute and no document content, this
attribute shall be absent. When a document's contents are spread across attribute SHALL be absent.
multiple Send Document operations "document-name" is ignored by the
Printer in all but the first Send-Document operation.
6.4.2 document-format (type2 keyword) 6.4.2 document-format (type2 keyword)
This attribute defines the document format of this document. When a See section 6.2.16 which describes "document-format" as a Job Template
client prints by reference, i.e. includes the document-URI attribute and attribute.
no document content, this attribute shall be absent. When a document's
contents are spread across multiple Send-Document operations, document-
format is ignored by the Printer in all but the first Send Document
operation for that document.
This attribute identifies the document format of this document. One
possible supported and default value is 'auto-sense'. However, 'auto-
sense' shall not be sent in the Send-Document Request.
The following standard values have been reviewed with the Printer
Working Group and are registered with IANA as part of the IETF Printer
MIB project. The standard value assigned by the PWG starts with the
four letters: "lang", in order to follow SNMP ASN.1 rules that all enum
symbols shall start with a lower case letter. The keyword values in IPP
shall be the same as the PWG standard values registered with IANA with
the "lang" removed. The MIB (integer) value is included here for
June 3, 1997, Expires December 3, 1997
reference only, the MIB integer value shall not be used in IPP; the
keyword value shall be used instead:
Note: In the protocol specification [22], these keywords will be
encoded as MIME types.
6.4.3 document-URI (uri) June 23, 1997, Expires December 23, 1997
6.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-number content is not included in the Send Document operation. Document-number
is the only other attribute allowed when a document-URI attribute is is the only other attribute allowed when a document-URI attribute is
present in a Send Document operation. present in a Send Document operation.
6.5 Printer Attributes ISSUE: Now that we have Print-URI and Send-URI, do we still need this?
Do we allow for the query of this attribute via Get-Attributes?
The attributes in this section are associated with a Printer object.
6.5.1 Printer Job Template Attributes
The Job Template attributes which apply specifically to a Printer object
are described in section 6.2 Job Template Attributes.
These Printer attributes form the attribute group named "printer-job-
template".
6.5.2 Printer Description Attributes 6.5 Printer Description Attributes
These attributes form the attribute group called "printer-description". These attributes form the attribute group called "printer-description".
A Printer object may be realized in either a print server or output A Printer object may be realized in either a print server or output
device. Note: How these attributes are set by an Administrator is device. Note: How these attributes are set by an Administrator is
outside the scope of this specification. outside the scope of this specification. The following table summarizes
these attributes, their syntax, and whether or not they are MANDATORY.
Attribute Man? If they are not MANDATORY, they are OPTIONAL.
printer-URI Man
(uri)
printer-name Man
(name)
June 3, 1997, Expires December 3, 1997
printer-location
(text)
printer-description
(text)
printer-more-info-
site
(uri)
printer-driver-
installer
(uri)
printer-make-and-
model
(text)
maximum-printer-
speed
(integerUnits)
printer-more-info-
manf
(uri)
printer-state Man
(type1 keyword)
printer-state- Man
reasons
(type2 keyword)
printer-is- Man
accepting-job
(boolean)s
printer-state-
message
(text)
queued-job-count
(int)
printer-message-
from-operator
June 3, 1997, Expires December 3, 1997
(text)
printer-locale Man June 23, 1997, Expires December 23, 1997
(locale) +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+
| printer-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+
| printer-uri-user | uri | |
+----------------------------+----------------------+----------------+
| printer-name | name | MANDATORY |
+----------------------------+----------------------+----------------+
| printer-location | text | |
+----------------------------+----------------------+----------------+
| printer-description | text | |
+----------------------------+----------------------+----------------+
| printer-more-info-site | uri | |
+----------------------------+----------------------+----------------+
| printer-driver-installer | uri | |
+----------------------------+----------------------+----------------+
| printer-make-and-model | text | |
+----------------------------+----------------------+----------------+
| printer-more-info- | uri | |
| manufacturer | uri | |
+----------------------------+----------------------+----------------+
| printer-state | type1 keyword | MANDATORY |
+----------------------------+----------------------+----------------+
| printer-state-reasons | type2 keyword | |
+----------------------------+----------------------+----------------+
| printer-state-message | text | |
+----------------------------+----------------------+----------------+
| printer-is-accepting-jobs | boolean | MANDATORY |
+----------------------------+----------------------+----------------+
| queued-job-count | integer | |
+----------------------------+----------------------+----------------+
| printer-message-from- | text | |
| operator | | |
+----------------------------+----------------------+----------------+
| printer-locale | locale | MANDATORY |
+----------------------------+----------------------+----------------+
| printer-locales-supported | 1setOf locale | MANDATORY |
+----------------------------+----------------------+----------------+
| color-supported | boolean | |
+----------------------------+----------------------+----------------+
printer-locales- Man 6.5.1 printer-uri (uri)
supported
(1setOf locale)
multiple-documents- This attribute contains the URI for the printer. An administrator SHALL
are-supported determine a printer's URI and SHALL set this attribute to that URI. The
(boolean) precise format of a printer URI SHALL be implementation dependent.
6.5.2.1 printer-URI (uri) June 23, 1997, Expires December 23, 1997
6.5.2 printer-uri-user (uri)
This attribute contains the URI for the printer. An administrator shall Similar to "printer-uri", this attribute contains the URI for an HTML
determine a printer's URI and shall set this attribute to that URI. The page with more information about this printer.
precise format of a printer URI shall be implementation dependent.
6.5.2.2 printer-name (name) 6.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 SHALL
determine a printer's name and shall set this attribute to that name. determine a printer's name and SHALL set this attribute to that name.
This name may be the last part of the printer's URI or it may be This name may be the last part of the printer's URI or it may be
unrelated. In non-US-English locales, a name may contain characters that unrelated. In non-US-English locales, a name may contain characters that
are not allowed in a URI. are not allowed in a URI.
6.5.2.3 printer-location (text) 6.5.4 printer-location (text)
This attribute identifies the location of this printer. This attribute identifies the location of this printer.
6.5.2.4 printer-description (text) 6.5.5 printer-description (text)
This attribute identifies the descriptive information about the this This attribute identifies the descriptive information about the this
Printer. This could include things like: "This printer can be used for Printer. This could include things like: "This printer can be used for
printing color transparencies for HR presentations", or "Out of courtesy printing color transparencies for HR presentations", or "Out of courtesy
for others, please print only small (1-5 page) jobs at this printer", or for others, please print only small (1-5 page) jobs at this printer", or
even "This printer is going away on July 1, 1997, please find a new even "This printer is going away on July 1, 1997, please find a new
printer". printer".
June 3, 1997, Expires December 3, 1997 6.5.6 printer-more-info-site (uri)
6.5.2.5 printer-more-info-site (uri)
This attribute contains a URI used to obtain more information about this This attribute contains a URI used to obtain more information about this
specific printer. The information obtained from this URI is intended specific printer. The information obtained from this URI is intended
for end user consumption. Features outside the scope of IPP can be for end user consumption. Features outside the scope of IPP can be
accessed from this URI. The information is intended to be specific to accessed from this URI. The information is intended to be specific to
this printer instance and site services (e.g. job pricing, services this printer instance and site services (e.g. job pricing, services
offered, end user assistance). The manufacturer may initially populate offered, end user assistance). The printer manufacturer may initially
this attribute. populate this attribute.
6.5.2.6 printer-driver-installer (uri) 6.5.7 printer-driver-installer (uri)
This attribute contains a URI to use to locate the driver installer for This attribute contains a URI to use to locate the driver installer for
this printer. This attribute is intended for consumption by automata. this printer. This attribute is intended for consumption by automata.
The mechanics of print driver installation is outside the scope of IPP. The mechanics of print driver installation is outside the scope of IPP.
The manufacturer may initially populate this attribute. The printer manufacturer may initially populate this attribute.
6.5.2.7 printer-make-and-model (text) 6.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.
ISSUE: Several comments that we should break this up into two June 23, 1997, Expires December 23, 1997
attributes. It is just a text string, so it could really be anything. 6.5.9 printer-more-info-manufacturer (uri)
6.5.2.8 maximum-printer-speed (integerUnits)
This attribute indicates the maximum printer speed of the Printer in
units of pages per minute, impressions per minute, lines per minute, and
characters per second. A job cannot control a Printer's speed, but a
Printer Browser can use printer speed as a criteria.
The standard units are a type2 setOf keyword : ppm, ipm, spm, lpm, and
cps. These mean pages per minute, impressions per minutes, sides per
minutes, lines per minute, and characters-per-second, respectively.
6.5.2.9 printer-more-info-manf (uri)
This attribute contains a URI used to obtain more information about this This attribute contains a URI used to obtain more information about this
type of printer. The information obtained from this URI is intended for type of printer. The information obtained from this URI is intended for
end user consumption. Features outside the scope of IPP can be accessed end user consumption. Features outside the scope of IPP can be accessed
from this URI (e.g., latest firmware, upgrades, print drivers, optional from this URI (e.g., latest firmware, upgrades, print drivers, optional
features available). The information is intended to be germane to this features available). The information is intended to be germane to this
printer without regard to site specific modifications or services. printer without regard to site specific modifications or services.
June 3, 1997, Expires December 3, 1997 6.5.10 printer-state (type1 keyword)
6.5.2.10 printer-state (type1 keyword)
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 attribute to "printer-state reasons" attribute augments the "printer-state" attribute
give more detailed information about the Printer is in the given printer to give more detailed information about the Printer in the given printer
state. state.
The protocol shall support all values for printer states. A Printer A Printer SHALL continually keep this attribute set to the value in the
shall continually keep this attribute set to the value in the table table below which most accurately reflects the state of the Printer. A
below which most accurately reflects the state of the Printer. 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 The Printer state is not known, or is 'unknown': The Printer state is not known, or is indeterminate. A
indeterminate. A Printer shall use Printer SHALL use this state only if it cannot determine its actual
this state only if it cannot state.
determine its actual state.
idle If a Printer receives a job (whose
required resources are ready) while
in this state, such a job shall
transit into the processing state
immediately.
If the printer-state-reasons
attribute contains any reasons, they
shall be reasons that would not
prevent a job from transiting into
the processing state immediately,
e.g., toner-low.
Note: if a Printer controls more than
one output device, the above
definition implies that a Printer is
idle if at least one output device is
idle.
June 3, 1997, Expires December 3, 1997
processing If a Printer receives a job (whose
required resources are ready) while
in this state, 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 complete printing.
If the printer-state-reasons
attribute contains any reasons, they
shall be reasons that do not prevent
the current job from printing, e.g.
toner-low.
Note: if a Printer controls more than
one output device, the above
definition implies that a Printer is
processing if at least one output
device is processing, and none is
idle.
stopped If a Printer receives a job (whose 'idle': If a Printer receives a job (whose required resources are
required resources are ready) while ready) while in this state, such a job SHALL transit into the
in this state, such a job shall processing state immediately. If the printer-state-reasons
transit into the pending state attribute contains any reasons, they SHALL be reasons that would
immediately. Such a job shall transit not prevent a job from transiting into the processing state
into the processing state only after immediately, e.g., toner-low. Note: if a Printer controls more than
some human fixes the problem that one output device, the above definition implies that a Printer is
stopped the printer and after jobs idle if at least one output device is idle.
ahead of it complete printing.
The printer-state-reasons attribute 'processing': If a Printer receives a job (whose required resources
shall contain at least one reason, are ready) while in this state, such a job SHALL transit into the
e.g. paper-jam, which prevents it pending state immediately. Such a job SHALL transit into the
from either processing the current processing state only after jobs ahead of it complete. If the
job or transiting a pending job to printer-state-reasons attribute contains any reasons, they SHALL be
the processing state. reasons that do not prevent the current job from printing, e.g.
toner-low. Note: if a Printer controls more than one output
device, the above definition implies that a Printer is processing
if at least one output device is processing, and none is idle.
Note: if a Printer controls more than 'stopped': If a Printer receives a job (whose required resources are
one output device, the above ready) while in this state, such a job SHALL transit into the
definition implies that a Printer is
stopped only if all output devices
are stopped.
Note: In the case where a Printer controls more than one output device, June 23, 1997, Expires December 23, 1997
it is tempting to define stopped as when a sufficient number of output pending state immediately. Such a job SHALL transit into the
devices are stopped and leave it to an implementation to define the processing state only after some human fixes the problem that
stopped the printer and after jobs ahead of it complete printing.
The "printer-state-reasons" attribute SHALL contain at least one
reason, e.g. paper-jam, which prevents it from either processing
the current job or transiting a pending job to the processing
state.
June 3, 1997, Expires December 3, 1997 Note: if a Printer controls more than one output device, the above
sufficient number. But such a rule complicates the definition of definition implies that a Printer is stopped only if all output
stopped and processing. For example, with this alternate definition of devices are stopped. Also, it is tempting to define stopped as
stopped, a job can move from idle to processing without human when a sufficient number of output devices are stopped and leave it
intervention, even though the Printer is stopped. to an implementation to define the sufficient number. But such a
rule complicates the definition of stopped and processing. For
example, with this alternate definition of stopped, a job can move
from idle to processing without human intervention, even though the
Printer is stopped.
6.5.2.11 printer-state-reasons (1setOf type2 keyword) 6.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 value shall have an adornment to indicate its level of severity. Each MAY have an adornment to indicate its level of severity. The three
The three levels are: report (least severe), warning and error (most levels are: report (least severe), warning, and error (most severe).
severe).
- 'report': it has the adornment of "report". An implementation may - 'report': it has the adornment of "report". An implementation may
choose to omit some or all reports. Some reports specify finer choose to omit some or all reports. Some reports specify finer
granularity about the printer state; others serve as a precursor to granularity about the printer state; others serve as a precursor to
a warning. A report shall contain nothing that could affect the a warning. A report SHALL contain nothing that could affect the
printed output. printed output.
- 'warning': it has the adornment of "warning". An implementation may - 'warning': it has the adornment of "warning". An implementation may
choose to omit some or all warnings. Warnings serve as a precursor choose to omit some or all warnings. Warnings serve as a precursor
to an error. A warning shall contain nothing that prevents a job to an error. A warning SHALL contain nothing that prevents a job
from completing, though in some cases the output may be of lower from completing, though in some cases the output may be of lower
quality. quality.
- 'error': it has no adornment. An implementation shall include all - 'error': it has no adornment. An implementation SHALL include all
errors. If this attribute contains one or more errors, printer errors. If this attribute contains one or more errors, printer
shall be in the stopped state. SHALL be in the stopped state.
ISSUE: How do we indicate report, warning, or error without adornments?
Proposal add a parallel attribute to print-state-reasons and name it
"printer-state-reasons-severity-level". The ith element of the reasons
attribute has the severity level of the ith element of the severity
level attribute. Another proposal: an implementation may add 'error-',
'warning-', or 'report-' to any of the reasons to indicate the level of
severity.
ISSUE: Toner-low should be a warning because it allows printing to An implementation may add 'error-', 'warning-', or 'report-' to any of
proceed, but in some printers, toner-low may also produce degraded the reasons below to indicate the level of severity.
output. Do we want a fourth category, perhaps severe-warning which
allows a job to continue printing but with reduced quality?
If a Printer controls more than one output device, each value of this If a Printer controls more than one output device, each value of this
attribute shall apply to one more of the output devices. An error on one attribute SHALL apply to one or more of the output devices. An error on
output device that does not stop the Printer as a whole appears as a one output device that does not stop the Printer as a whole appears as a
warning in the Printer's printer-state-reasons attribute. Such a warning in the Printer's printer-state-reasons attribute. Such a
Printer's printer-state value may be stopped even with no printer-state- Printer's printer-state value may be stopped even with no printer-state-
reasons that are errors. reasons that are errors.
June 23, 1997, Expires December 23, 1997
The following standard values are defined: The following standard values are defined:
June 3, 1997, Expires December 3, 1997 'media-needed': A tray has run out of media.
stopped-partly When a Printer controls more than 'media-jam': The printer has a media jam.
one output device, this reason 'paused': Someone has paused the Printer. In this state, a Printer
indicates that one or more output SHALL not produce printed output, but it SHALL perform other
devices are stopped. If the operations requested by a client. If a Printer had been printing a
reason is a report, fewer than job when the Printer was paused, the Printer SHALL resume printing
half of the output devices are that job when the Printer is no longer paused and leave no evidence
stopped. If the reason is a in the printed output of such a pause.
warning, fewer than all of the 'shutdown': Someone has removed a Printer from service, and it may be
output devices are stopped. powered down or physical removed. In this state, a Printer SHALL
media-needed A tray has run out of media not produce printed output, and unless the Printer is realized by a
paper-jam The printer has a paper jam. print server that is still active, the Printer SHALL perform no
paused Someone has paused the Printer. other operations requested by a client, including returning this
In this state, a Printer shall value. If a Printer had been printing a job when it was shutdown,
not produce printed output, but the Printer need not resume printing that job when the Printer is
it shall perform other operations no longer shutdown. If the Printer resumes printing such a job, it
requested by a client. If a may leave evidence in the printed output of such a shutdown, e.g.
Printer had been printing a job the part printed before the shutdown may be printed a second time
when the Printer was paused, the after the shutdown.
Printer shall resume printing
that job when the Printer is no
longer paused and leave no
evidence in the printed output of
such a pause .
shutdown Someone has removed a Printer
from service, and it may be
powered down or physical removed.
In this state, a Printer shall
not produce printed output, and
unless the Printer is realized by
a print server that is still
active, the Printer shall perform
no other operations requested by
a client, including returning
this value. If a Printer had been
printing a job when it was
shutdown, the Printer need not
resume printing that job when the
Printer is no longer shutdown. If
the Printer resumes printing such
a job, it may leave evidence in
the printed output of such a
shutdown, e.g. the part printed
before the shutdown may be
printed a second time after the
shutdown..
June 3, 1997, Expires December 3, 1997 ISSUE: Bob suggests: From an English point of view the suffixes
connecting-to- The server has scheduled a job on should be -partly and -mostly rather than -report and -warning with
printer the Printer and is in the process all being -warnings. For example, paused-partly-warning or media-
of connecting to a shared network needed-mostly-warning
output device (and might not be
able to actually start printing
the job for an arbitrarily long
time depending on the usage of
the output device by other
servers on the network).
timed-out The server was able to connect to
the output device (or is always
connected), but was unable to get
a response from the output device
in the time specified by the
printer's printer-timeout-period
attribute.
stopping The printer will be stopping in a
while and will change its reason
to printer-stopped. This reason
is a non-critical, even for a
Printer with a single output
device. When an output-device
ceases accepting jobs, the
Printer will have this state
while the output device completes
printing.
6.5.2.12 printer-is-accepting-jobs (boolean) 'connecting-to-device': The server has scheduled a job on the Printer
and is in the process of connecting to a shared network output
device (and might not be able to actually start printing the job
for an arbitrarily long time depending on the usage of the output
device by other servers on the network).
'timed-out': The server was able to connect to the output device (or
is always connected), but was unable to get a response from the
output device.
'stopping': The printer will be stopping in a while and will change
its reason to printer-stopped. This reason is a non-critical, even
for a Printer with a single output device. When an output-device
ceases accepting jobs, the Printer will have this state while the
output device completes printing.
'stopped-partly': When a Printer controls more than one output
device, this reason indicates that one or more output devices are
stopped. If the reason is a report, fewer than half of the output
devices are stopped. If the reason is a warning, fewer than all of
the output devices are stopped.
'toner-low': The Printer is low on toner.
June 23, 1997, Expires December 23, 1997
6.5.12 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 value job. If the value is true, the printer is accepting jobs. If the value
is false, the printer is currently rejecting any jobs submitted to it. is false, the printer is currently rejecting any jobs submitted to it.
Note: This value is independent of the printer state and printer-state- Note: This value is independent of the printer state and printer-state-
reasons because its value does not affect the current job; rather it reasons because its value does not affect the current job; rather it
affects future jobs. This attribute may cause the Printer to reject jobs affects future jobs. This attribute may cause the Printer to reject jobs
when the printer-state is idle or it may cause the Printer to accepts when the printer-state is idle or it may cause the Printer to accepts
jobs when the printer-state is stopped. jobs when the printer-state is stopped.
6.5.2.13 printer-state-message (text) 6.5.13 printer-state-message (text)
This attribute specifies the additional informaion about the printer This attribute specifies the additional information about the printer
state in human readable text and it shall be set by the Printer (or the state in human readable text and it SHALL be set by the Printer (or the
Administrator by some mechanism outside the scope of IPP). When a Administrator by some mechanism outside the scope of IPP). When a
Printer returns the value of this attribute to a client, the Printer Printer returns the value of this attribute to a client, the Printer
SHALL localize the value of this attribute to be in the locale of the
June 3, 1997, Expires December 3, 1997
shall localize the value of this attribute to be in the locale of the
user, as specified by the Get-Attributes or Get-Jobs operation. user, as specified by the Get-Attributes or Get-Jobs operation.
6.5.2.14 queued-job-count (integer(0:2**31 - 1)) 6.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 SHALL be set by the Printer.
6.5.2.15 printer-message-from-the-operator (text) 6.5.15 printer-message-from-the-operator (text)
This attribute provides a message from an operator, system administrator This attribute provides a message from an operator, system administrator
or "intelligent" process to indicate to the end user information or or "intelligent" process to indicate to the end user information or
status of the printer, such as why it is unavailable or when it is status of the printer, such as why it is unavailable or when it is
expected to be available. expected to be available.
6.5.2.16 printer-locale (locale) 6.5.16 printer-locale (locale)
This attribute specifies the current locale that the Printer is This attribute specifies the current locale that the Printer is
operating in. operating in.
6.5.2.17 printer-locales-supported (1setOf locale) 6.5.17 printer-locales-supported (1setOf locale)
This attribute specifies the locales that the Printer operates in. This attribute specifies the locales that the Printer operates in.
6.5.18 color-supported (boolean)
This attribute identifies whether the Printer is capable of any type of
color printing at all. All document instructions having to do with
color are embedded within the document PDL (none are external IPP
attributes).
June 23, 1997, Expires December 23, 1997
7. Conformance 7. 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 attributes, and attribute values. These conformance sections describe
describe the conformance requirements which apply to these model the conformance requirements which apply to these model entities.
entities.
7.1 Conditionally Mandatory 7.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 implement the attribute if the attribute implementation need not support the attribute if the attribute controls
controls a feature that the output device does not implement or a feature that the output device does not implement or expose. For
expose. For example, for an output device that can only print on one example, for an output device that can only print on one side, a Printer
side, a Printer need not implement the "sides" attribute. For an need not support the "sides" attribute. For an output device that does
output device that does not support any of the finishing attribute not support any of the finishing attribute values, a Printer need not
values, a Printer need not implement the "finishing" attribute. An support the "finishing" attribute.
implementation that does not allow for 'not-ready' supported values
in addition to 'ready' values, need not implement the corresponding
"xxx-availability" Printer attribute. For an output device with only
a single input tray with only one media type in that tray, a Printer
need not implement the "media" attribute.
June 3, 1997, Expires December 3, 1997
7.2 Client Conformance Requirements 7.2 Client Conformance Requirements
There are no conformance requirements placed on the user interfaces There are no conformance requirements placed on the user interfaces
provided by IPP clients or their applications. For example, one provided by IPP clients or their applications. For example, one
application might not allow an end user to submit multiple documents application might not allow an end user to submit multiple documents per
per job, while another does. One application might first query a job, while another does. One application might first query a Printer
Printer object in order to supply a graphical user interface (GUI) object in order to supply a graphical user interface (GUI) dialogue box
dialogue box with supported and default values whereas a different with supported and default values whereas a different implementation
application might not. might not.
When sending a Get-Attributes or Create-Job request, an IPP client
need not supply any attributes.
A client shall be able to accept any of the attribute syntaxes When sending a Get-Attributes or create request, an IPP client need not
defined in Section 0 that may be returned to it in a response from a supply any attributes.
Printer
ISSUE: Are there any attributes that are mandatory for a client to A client SHALL be able to accept any of the attribute syntaxes defined
set in a Print request? in Section 6.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 attributes and values that the client does
does not implement or expect. Therefore, a client implementation not expect. Therefore, a client implementation MUST gracefully handle
must gracefully handle such responses and not refuse to interoperate such responses and not refuse to interoperate with a conforming Printer
with a conforming Printer that is returning extended registered or that is returning extended registered or private attributes and/or
private attributes and/or attribute values that conform to Section 8. attribute values that conform to Section 8. Clients may choose to
IANA Considerations, Registered Extensions, Private ignore any attributes that it does not understand.
Extensions. Some clients may choose to ignore any attributes that it
does not implement.
7.3 Printer Object Conformance Requirements 7.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
and attributes. attributes.
June 23, 1997, Expires December 23, 1997
7.3.1 Objects 7.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 0 4.1 Printer Object Section 4.1 Printer Object
Section 0 4.2 Job Object Section 4.2 Job Object
Section 0 4.3 Document Object Section 4.3 Document Object
7.3.2 Operations 7.3.2 Operations
Conforming Printer implementations shall implement all of the model Conforming Printer implementations SHALL implement all of the MANDATORY
operations, including mandatory responses, as defined in this model operations, including mandatory responses, as defined in this
specification in the indicated sections: specification in the indicated sections:
June 3, 1997, Expires December 3, 1997 For a Printer object:
Section 0 Get-Operations (section 5.1.1) MANDATORY
Section Job 0 5.1.4 Cancel Job Operation Print-Job (section 5.1.2) MANDATORY
Section 0 5.1.5 Get-Attributes Operation Print-URI (section 5.1.3) OPTIONAL
Section 0 5.1.6 Get-Jobs Operation Validate-Job (section 5.1.4) OPTIONAL
Create-Job (section 5.1.5) OPTIONAL
Get-Jobs (section 5.1.8) OPTIONAL
Get-Attributes (section 5.1.9) OPTIONAL
For a Job object:
Send-Document (section 5.1.6) OPTIONAL
Send-URI (section 5.1.7) OPTIONAL
Cancel-Job (section 5.1.8) MANDATORY
Get-Attributes (section 5.1.9) OPTIONAL
7.3.3 Attributes 7.3.3 Attributes
ISSUE: Some Printer attributes are purely software, so that ISSUE: Some Printer attributes are purely software, so that
Conditionally Mandatory doesn't apply, such as Printer Description Conditionally Mandatory doesn't apply, such as Printer Description
Attributes. For example, what does it mean for the "printer- Attributes. For example, what does it mean for the "printer-location"
location" to be Conditionally Mandatory? Should we add a "OPTIONAL" to be Conditionally Mandatory? Should we add a "OPTIONAL" in the header
in the header of the few attributes for which Conditionally Mandatory of the few attributes for which Conditionally Mandatory doesn't make
doesn't make sense? sense?
Conforming Printer implementations shall implement all of the
mandatory attributes, as defined in this specification in the
indicated sections. Mandatory attributes are indicated as
"MANDATORY" in the header of each sub-section of Section 0 that
specifies the attribute which is copied into the Table of Contents:
ISSUE: What if this list differs from the headers, which wins? Conforming Printer implementations SHALL support all of the MANDATORY
Wouldn't it be safer and more compact to replace the above list with attributes, as defined in this specification in the indicated sections.
a reference to section 6 attributes that are flagged as MANDATORY in
the header line (and automatically copied to the Table of Contents)?
Conforming Printer implementations shall implement all conditionally Conforming Printer implementations SHALL support all CONDITIONALLY
mandatory attributes in Section 0, i.e., the additional Job and MANDATORY attributes as defined in this specification in the indicated
Printer attributes that represent features that the output device sections that represent features and behaviors that the actual output
implements. device implements.
It is not required that a conforming Printer implement or support all June 23, 1997, Expires December 23, 1997
values of all implemented attributes. For example, if a Printer It is not required that a conforming Printer support all values of all
supports some of the "finishing" attribute values in this document, supported attributes. For example, if a Printer supports some of the
it is not required that a Printer implement or support all finishing "finishing" attribute values in this document, it is not required that a
methods indicated by all the values of the "finishing" attribute Printer implement or support all finishing methods indicated by all the
contained in this document. values of the "finishing" attribute contained in this document.
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.
7.3.4 Default Value 7.3.4 Printer extensions
If the output device itself does not support the concept of a default
value or the output device's default value is unpredictable, or
unknown, the implementation of the Printer shall always supply its
default value to the physical device each time the Printer submits
June 3, 1997, Expires December 3, 1997
the job to the output device. The default value specified by a
Printer shall not be 'unknown'.
7.3.5 Availability
Conforming implementation need not implement the "xxx-available"
attributes since if an "xxx-supported" printer attribute does not
have have an associated "xxx-available" Printer attribute, all
supported values shall be 'ready'.
7.3.6 Printer extensions
A conforming Printer may implement registered extensions and private A conforming Printer may support registered extensions and private
extensions, as long as they meet the requirements specified in extensions, as long as they meet the requirements specified in Section
Section 8. IANA Considerations, Registered Extensions, Private 8.
Extensions.
7.3.7 Attribute Syntaxes 7.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
defined in Section 0 in any operation in which a client may supply in Section 6.1 in any operation in which a client may supply attributes.
attributes. Furthermore, a Printer shall return attributes to the Furthermore, a Printer SHALL return attributes to the client in
client in operation responses that conform to the syntax specified in operation responses that conform to the syntax specified in Section 6.1.
Section 0.
7.4 Security Conformance Requirements 7.4 Security Conformance Requirements
The security mechanisms being considered for IPP fall outside the The security mechanisms being considered for IPP fall outside the scope
scope of the application layer protocol itself. There are two of the application layer protocol itself. There are two mechanisms used
mechanisms used to begin secure communications using IPP: to begin secure communications using IPP:
1. Information in the directory entry for an IPP Printer (or from 1. Information in the directory entry for an IPP Printer (or from
additional information at a Web site hosting the IPP Priner) indicate additional information at a Web site hosting the IPP Printer)
which, if any, security protocols are used in conjunction with IPP. indicate which, if any, security protocols are used in conjunction
with IPP.
2. The URI for the IPP Printer contains the security protocol 2. The URI for the IPP Printer contains the security protocol
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
which allows for the negotiation of security features. IPP is then allows for the negotiation of security features. IPP is then run as an
run as an application protocol on top of the security protocols. One application protocol on top of the security protocols. One cannot
cannot "bootstrap" the security features from IPP itself. "bootstrap" the security features from IPP itself.
8. IANA Considerations, Registered Extensions, Private Extensions ISSUE: The above is not quite correct. Waiting for better description
from the security document [22].
IPP is explicitly designed to be extensible. Additional attributes June 23, 1997, Expires December 23, 1997
can be proposed to be registered by going through the type 2 or type 8. IANA Considerations, Registered Extensions, Private Extensions
3 keyword process which will register their specification after
June 3, 1997, Expires December 3, 1997 IPP is explicitly designed to be extensible. Additional attributes can
approval with IANA. In addition specific implementation instances be proposed to be registered by going through the type 2 or type 3
may support not only the basic protocol as defined in this keyword process which will register their specification after approval
specification, but may add vendor-specific private extensions by with IANA. In addition specific implementation instances may support
prefixing attribute-names with their company name registered with not only the basic protocol as defined in this specification, but may
IANA for use in domains. See attribute syntax section. However, add vendor-specific private extensions by prefixing attribute-names with
such private extensions shall not duplicate attribute semantics their company name registered with IANA for use in domains. See
already in this specification. attribute syntax section. However, such private extensions SHALL not
duplicate attribute semantics already in this specification.
9. Security Considerations 9. Security Considerations
There is another Internet-Draft called "Internet Printing There is another Internet-Draft called "Internet Printing Protocol/1.0:
Protocol/1.0: Security" [22]. That document is being drafted and Security" [22]. That document is being drafted and reviewed in parallel
reviewed in parallel with this document. The mapping of IPP on top with this document. The mapping of IPP on top of appropriate security
of appropriate security protocols will be described in that document. protocols will be described in that document. IPP does not introduce
IPP does not introduce any new, general purpose security mechanisms any new, general purpose security mechanisms for authentication and
for authentication and encryption. encryption.
A Printer may choose, for security reasons, not to return all A Printer may choose, for security reasons, not to return all attributes
attributes that a client requests. It may even return none of the