draft-ietf-ipp-model-02.txt   draft-ietf-ipp-model-03.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 23, 1997 July 14, 1997
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
draft-ietf-ipp-model-02.txt draft-ietf-ipp-model-03.txt
Status of this Memo Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas,
its working groups. Note that other groups may also distribute working and its working groups. Note that other groups may also distribute
documents as Internet-Drafts. working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference material time. It is inappropriate to use Internet-Drafts as reference
or to cite them other than as "work in progress". material or to cite them other than as "work in progress".
To learn the current status of any Internet-Draft, please check the To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe), Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast). ftp.isi.edu (US West Coast).
Abstract Abstract
This document is one of a set of documents, which together describe all This document is one of a set of documents, which together describe
aspects of a new Internet Printing Protocol (IPP). IPP is an all aspects of a new Internet Printing Protocol (IPP). IPP is an
application level protocol that can be used for distributed printing application level protocol that can be used for distributed printing
using Internet tools and technology. The protocol is heavily influenced using Internet tools and technology. The protocol is heavily
by the printing model introduced in the Document Printing Application influenced by the printing model introduced in the Document Printing
(ISO/IEC 10175 DPA) standard. Although DPA specifies both end user and Application (ISO/IEC 10175 DPA) standard. Although DPA specifies both
administrative features, IPP version 1.0 is focused only on end user end user and administrative features, IPP version 1.0 is focused only
functionality. on end user functionality.
The full set of IPP documents includes: The full set of IPP documents includes:
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
Internet Printing Protocol: Requirements Internet Printing Protocol: Requirements
Internet Printing Protocol/1.0: Model and Semantics Internet Printing Protocol/1.0: Model and Semantics
Internet Printing Protocol/1.0: Security Internet Printing Protocol/1.0: Security
Internet Printing Protocol/1.0: Protocol Specification Internet Printing Protocol/1.0: Protocol Specification
Internet Printing Protocol/1.0: Directory Schema Internet Printing Protocol/1.0: Directory Schema
The requirements document takes a broad look at distributed printing The requirements document takes a broad look at distributed printing
functionality, and it enumerates real-life scenarios that help to functionality, and it enumerates real-life scenarios that help to
clarify the features that need to be included in a printing protocol for clarify the features that need to be included in a printing protocol
the Internet. It identifies requirements for three types of users: end for the Internet. It identifies requirements for three types of
users, operators, and administrators. The requirements document calls users: end users, operators, and administrators. The requirements
out a subset of end user requirements that MUST be satisfied in the document calls out a subset of end user requirements that MUST be
first version of IPP. Operator and administrator requirements are out satisfied in the first version of IPP. Operator and administrator
of scope for v1.0. The model and semantics document describes a requirements are out of scope for v1.0. The model and semantics
simplified model with abstract objects, their attributes, and their document describes a simplified model with abstract objects, their
operations. The model introduces a Printer object and a Job object. The attributes, and their operations. The model introduces a Printer
Job object supports multiple documents per job. The security document object and a Job object. The Job object supports multiple documents
covers potential threats and proposed counters to those threats. The per job. The security document covers potential threats and proposed
protocol specification is formal document which incorporates the ideas counters to those threats. The protocol specification is formal
in all the other documents into a concrete mapping using clearly defined document which incorporates the ideas in all the other documents into
data representations and transport protocol mappings that real a concrete mapping using clearly defined data representations and
implementers can use to develop interoperable client and server side transport protocol mappings that real implementers can use to develop
components. Finally, the directory schema document shows a generic interoperable client and server side components. Finally, the
schema for directory service entries that represent instances of IPP directory schema document shows a generic schema for directory service
Printers. entries that represent instances of IPP Printers.
This document is the "Internet Printing Protocol/1.0: Model and This document is the "Internet Printing Protocol/1.0: Model and
Semantics" document. Semantics" document.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
Table of Contents Table of Contents
1. Introduction.......................................................7 1. Simplified Printing Model......................................7
2. Terminology........................................................7 2. IPP Objects....................................................9
2.1 Conformance Terminology ......................................8 2.1 Printer Object................................................10
2.1.1 MUST......................................................8 2.2 Job Object....................................................12
2.1.2 MUST NOT..................................................8 2.3 Document Object...............................................13
2.1.3 SHOULD....................................................8 2.4 Object Relationships..........................................14
2.1.4 SHOULD NOT................................................8 2.5 Object Identity...............................................14
2.1.5 MAY.......................................................8 3. IPP Operations................................................15
2.1.6 CONDITIONALLY MANDATORY...................................9 3.1 Operation Semantics...........................................16
2.1.7 NEED NOT..................................................9 3.1.1 Get-Operations Operation.................................17
2.2 Model Terminology ...........................................10 3.1.1.1 Get-Operations Request..............................17
2.2.1 Keyword..................................................10 3.1.1.2 Get-Operations Response.............................17
2.2.2 Parameters...............................................10 3.1.2 Print-Job Operation......................................17
2.2.2.1 Parameter Name ....................................10 3.1.2.1 Print-Job Request...................................18
2.2.2.2 Parameter Value ...................................10 3.1.2.2 Print-Job Response..................................20
2.2.2.3 Parameter Syntax ..................................10 3.1.3 Print-URI Operation......................................20
2.2.3 Attributes...............................................11 3.1.3.1 Print-URI Request...................................20
2.2.3.1 Attribute Name ....................................11 3.1.3.2 Print-URI Response..................................21
2.2.3.2 Attribute Group Name ..............................11 3.1.4 Validate-Job Operation...................................21
2.2.3.3 Attribute Value ...................................11 3.1.4.1 Validate-Job Request................................21
2.2.3.4 Attribute Syntax ..................................11 3.1.4.2 Validate-Job Response...............................21
2.2.4 Supports.................................................12 3.1.5 Create-Job Operation.....................................22
3. Simplified Printing Model.........................................12 3.1.5.1 Create-Job Request..................................22
4. IPP Objects.......................................................15 3.1.5.2 Create Job Response.................................22
4.1 Printer Object ..............................................15 3.1.6 Send-Document Operation..................................23
4.2 Job Object ..................................................17 3.1.6.1 Send-Document Request...............................23
4.3 Document Object .............................................18 3.1.6.2 Send-Document Response..............................23
4.4 Object Relationships ........................................19 3.1.7 Send-URI Operation.......................................23
4.5 Object Attributes ...........................................19 3.1.7.1 Send-URI Request....................................24
4.5.1 Job Template Attribute Overview..........................19 3.1.7.2 Send-URI Response...................................24
4.5.2 The "best-effort" Job Attribute Overview.................20 3.1.8 Cancel Job Operation.....................................24
4.6 Object Identity .............................................20 3.1.8.1 Cancel-Job Request..................................24
5. IPP Operations....................................................21 3.1.8.2 Cancel-Job Response.................................25
5.1 Operation Semantics .........................................22 3.1.9 Get-Attributes Operation.................................25
5.1.1 Get-Operations Operation.................................22 3.1.9.1 Get-Attributes Request..............................25
5.1.1.1 Get-Operations Request ............................23 3.1.9.2 Get-Attributes Response.............................27
5.1.1.2 Get-Operations Response ...........................23 3.1.10 Get-Jobs Operation.......................................27
5.1.2 Print-Job Operation......................................23 3.1.10.1 Get-Jobs Request....................................27
5.1.2.1 Print-Job Request .................................23 3.1.10.2 Get-Jobs Response...................................28
5.1.2.2 Print-Job Response ................................25 3.2 Operation Status Codes and Messages...........................28
5.1.3 Print-URI Operation......................................26 4. Object Attributes.............................................29
5.1.3.1 Print-URI Request .................................26 4.1 Attribute Syntaxes............................................29
5.1.3.2 Print-URI Response ................................26 4.1.1 Attribute Extensibility..................................31
5.1.4 Validate-Job Operation...................................27 4.2 Job Template Attributes.......................................33
5.1.4.1 Validate-Job Request ..............................27 4.2.1 job-name (name)..........................................37
5.1.4.2 Validate-Job Response .............................27 4.2.2 job-sheets (type4 keyword)...............................38
June 23, 1997, Expires December 23, 1997
5.1.5 Create-Job Operation.....................................28
5.1.5.1 Create-Job Request ................................28
5.1.5.2 Create Job Response ...............................28
5.1.6 Send-Document Operation..................................29
5.1.6.1 Send-Document Request .............................29
5.1.6.2 Send-Document Response ............................29
5.1.7 Send-URI Operation.......................................30
5.1.7.1 Send-URI Request ..................................30
5.1.7.2 Send-URI Response .................................30
5.1.8 Cancel Job Operation.....................................30
5.1.8.1 Cancel-Job Request ................................31
5.1.8.2 Cancel-Job Response ...............................31
5.1.9 Get-Attributes Operation.................................31
5.1.9.1 Get-Attributes Request ............................31
5.1.9.2 Get-Attributes Response ...........................33
5.1.10 Get-Jobs Operation .....................................34
5.1.10.1 Get-Jobs Request ..................................34
5.1.10.2 Get-Jobs Response .................................34
5.2 Operation Status Codes and Messages .........................35
6. Object Attributes.................................................35
6.1 Attribute Syntaxes ..........................................36
6.1.1 Attribute Extensibility..................................37
6.2 Job Template Attributes .....................................38
6.2.1 job-name (name)..........................................42
6.2.2 job-sheets (type4 keyword)...............................43
6.2.3 notify-events (1setOf type2 keyword).....................43
6.2.4 notify-addresses (1setOf uri)............................43
6.2.5 job-priority (integer(1:100))............................44
6.2.6 job-hold-until (type4 keyword)...........................44
6.2.7 multiple-documents-are (type2 keyword)...................45
6.2.8 best-effort (type2 keyword)..............................45
6.2.9 media (type4 keyword)....................................47
6.2.10 number-up (type3 keyword) ..............................47
6.2.11 sides (type2 keyword) ..................................48
6.2.12 printer-resolution (type2 keyword) .....................48
6.2.13 print-quality (type2 keyword) ..........................49
6.2.14 copies (integer(1:2**31 - 1)) ..........................49
6.2.15 finishing (1setOf type2 keyword) .......................49
6.2.16 document-format (type2 keyword) ........................50
6.2.17 compression (type3 keyword) ............................50
6.2.18 job-k-octets (integer(0:2**31 - 1)) ....................50
6.2.19 job-impressions (integer(0:2**31 - 1)) .................50
6.2.20 job- media-sheets (integer(0:2**31 - 1)) ...............51
6.3 Job Description Attributes ..................................51
6.3.1 job-uri (uri)............................................52
6.3.2 job-uri-user (uri).......................................53
6.3.3 job-originating-user (name)..............................53
6.3.4 job-originating-host (name)..............................53
June 23, 1997, Expires December 23, 1997
6.3.5 user-locale (type3 keyword)..............................53
6.3.6 job-state (type1 keyword)................................53
6.3.7 job-state-reasons (1setOf type2 keyword)................53
6.3.8 job-state-message (text).................................53
6.3.9 output-device-assigned (name)............................53
6.3.10 time-since-pending (milliseconds) ......................54
6.3.11 time-since-processing (milliseconds) ...................54
6.3.12 time-since-completed (milliseconds) ....................54
6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) ......54
6.3.14 job-message-from-operator (text) .......................54
6.3.15 job-k-octets-completed (integer(0:2**31 - 1)) ..........54
6.3.16 job-impressions-completed (integer(0:2**31 - 1)) ......55
6.3.17 job-media-sheets-completed (integer(0:2**31 - 1)) ......55
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
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 23, 1997, Expires December 23, 1997
1. Introduction
The Internet Printing Protocol (IPP) is an application level protocol
that can be used for distributed printing on the Internet. The protocol
is heavily influenced by the printing model introduced in the Document
Printing Application (ISO/IEC 10175 DPA) standard. Although DPA
identifies both end user and administrative features, the first version
of IPP is focused only on end user functionality.
Section 2 introduces the terminology used within this document.
Section 3 introduces the simplified IPP model. The IPP model is made
simple by exposing only the objects, attributes, and operations that are
essential for end user access and control of the print system. When
future versions of IPP include features which satisfy operator and
administrator requirements, the model can be extended to support the
appropriate objects, attributes, and operations.
Section 4 introduces the full semantics of the Printer, Job, and
Document objects in the IPP model. It covers how instances of these
objects are identified, named, and related to each other.
Section 5 covers the operations that are part of the IPP model. These
operations include: the Create-Job, Send-Document, Print-Job, Cancel,
Get-Attributes, and Get-Jobs operations.
Section 6 describes the attributes, their syntaxes, and semantics which
are part of the IPP model. Each object's attributes are described, and
the attributes are grouped into logical groups to help clarify their
relationships and meaning. These groups are also used to simplify
queries that request multiple attributes.
Section 7 is a review of conformance issues and clarifies requirements
that apply to client side and server side implementations.
Sections 8-11 cover extensibility, security, technical references, and
author information.
2. Terminology
This specification uses the terminology defined in this section.
June 23, 1997, Expires December 23, 1997
2.1 Conformance Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [25].
2.1.1 MUST
This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", mean that
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
This phrase, or the phrase "SHALL NOT", mean that the definition is an
absolute prohibition of the specification.
2.1.3 SHOULD
This word, or the adjective "RECOMMENDED", mean that there may exist
valid reasons in particular circumstances to ignore a particular item,
but the full implications must be understood and carefully weighed
before choosing a different course.
2.1.4 SHOULD NOT
This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist
valid reasons in particular circumstances when the particular behavior
is acceptable or even useful, but the full implications should be
understood and the case carefully weighed before implementing any
behavior described with this label.
2.1.5 MAY
This word, or the adjective "OPTIONAL", mean that an item is truly
optional. One vendor may choose to include the item because a
particular marketplace requires it or because the vendor feels that it
enhances the product while another vendor may omit the same item. An
implementation which does not include a particular option MUST be
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
an implementation which does include a particular option MUST be
prepared to interoperate with another implementation which does not
include the option (except, of course, for the feature the option
provides.)
2.1.6 CONDITIONALLY MANDATORY
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 is capable of realizing. It is also true, that a
conforming implementation is not required to implement the items that
correspond to features or behaviors that the implementation is not
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
The verb "NEED NOT" indicates an action that the subject of the sentence
does not have to implement in order to claim conformance to the
standard. The verb "NEED NOT" is used instead of "MAY NOT" since "MAY
NOT" sounds like a prohibition.
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.1 Keyword
Keywords are used within this document as identifiers of semantic
entities within the abstract model. Attribute names, attribute values,
attribute syntaxes, and attribute groups are represented as keywords. In
this document, a keyword is a sequence of characters (length of 1 to
255) which consists of the following ASCII characters: lower-case
letters, digits, hyphen ("-"), and underscore ("_"). A keyword MUST
start with a lower-case letter. In the actual protocol, these keywords
will be represented using an appropriate protocol encoding (strings,
enumerated values, constants, operation codes, identifiers, etc.).
2.2.2 Parameters
A parameter is an item of information supplied in an operation
consisting of a parameter name and parameter value(s) using a specific
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
"OPTIONAL".
2.2.3.1 Attribute Name
Each attribute is uniquely identified in this document by its attribute
name which is a keyword. The keyword attribute name is given in the
section header describing that attribute. In running text in this
document, attribute names are indicated inside double quotation marks
(").
2.2.3.2 Attribute Group Name
Related attributes are grouped into named attribute groups. The name of
the group is a keyword. It MAY be used as the value of an input
parameter in place of naming all the attributes in the group explicitly.
Attribute groups are defined in section 6.
2.2.3.3 Attribute Value
Each attribute has one or more values. Attribute values are represented
in the syntax type specified for that attribute. In running text in this
document, attribute values are indicated inside single quotation marks
('), whether their attribute syntax is keyword, integer, text, etc.
2.2.3.4 Attribute Syntax
Each attribute is defined using an explicit attribute syntax. In this
document, each attribute syntax is defined as a keyword with specific
meaning. The protocol specification document [23] indicates the actual
representation for each attribute syntax that SHALL be used for the
actual protocol. Attribute syntaxes are defined in section 6.1.
June 23, 1997, Expires December 23, 1997
2.2.4 Supports
By definition, a job processing behavior or selectable feature is Expires January 14, 1998
supported by a Printer only if that Printer responds with the 4.2.3 notify-events (1setOf type2 keyword).....................38
corresponding attribute and the associated value in a response to a 4.2.4 notify-addresses (1setOf uri)............................38
query for that attribute. A given implementation may exhibit a behavior 4.2.5 job-priority (integer(1:100))............................39
that corresponds to the value of some supported attribute, but if the 4.2.6 job-hold-until (type4 keyword)...........................39
implementation, when queried for that attribute, doesn't respond with 4.2.7 multiple-documenthandling (type2 keyword)................40
the supported attribute populated with that specific value, then as far 4.2.8 best-effort (boolean)....................................40
as IPP is concerned, that Printer does not support that feature. A 4.2.9 media (type4 keyword)....................................42
conforming implementation SHALL support all MANDATORY attributes and all 4.2.10 number-up (type3 keyword)................................42
CONDITIONALLY MANDATORY attributes whose possible values correspond to 4.2.11 sides (type2 keyword)....................................43
the behaviors that the implementation is capable of realizing. Therefore 4.2.12 printer-resolution (type2 enum)..........................43
conformance to IPP does not mandate that all implementations support all 4.2.13 print-quality (type2 enum)...............................44
possible values representing all possible job processing behaviors and 4.2.14 copies (integer(1:2**31 - 1))............................45
features. 4.2.15 finishing (1setOf type2 enum)............................45
4.2.16 document-format (type2 keyword)..........................46
4.2.17 compression (type3 keyword)..............................46
4.2.18 job-k-octets (integer(0:2**31 - 1))......................46
4.2.19 job-impressions (integer(0:2**31 - 1))...................46
4.2.20 job-media-sheets (integer(0:2**31 - 1))..................47
4.3 Job Description Attributes....................................47
4.3.1 job-uri (uri)............................................48
4.3.2 job-uri-user (uri).......................................49
4.3.3 job-originating-user (name)..............................49
4.3.4 job-originating-host (name)..............................49
4.3.5 user-locale (locale).....................................49
4.3.6 job-state (type1 enum)...................................49
4.3.7 job-state-reasons (1setOf type2 keyword)................51
4.3.8 job-state-message (text).................................53
4.3.9 output-device-assigned (name)............................53
4.3.10 time-since-pending (milliseconds)........................53
4.3.11 time-since-processing (milliseconds).....................53
4.3.12 time-since-completed (milliseconds)......................53
4.3.13 number-of-intervening-jobs (integer(0:2**31 - 1))........53
4.3.14 job-message-from-operator (text).........................53
4.3.15 job-k-octets-processed (integer(0:2**31 - 1))............54
4.3.16 job-impressions-completed (integer(0:2**31 - 1))........54
4.3.17 job-media-sheets-completed (integer(0:2**31 - 1))........54
4.4 Document Attributes...........................................54
4.4.1 document-name (name).....................................54
4.4.2 document-format (type2 enum).............................55
4.4.3 document-uri (uri).......................................55
4.5 Printer Description Attributes................................55
4.5.1 printer-uri (uri)........................................56
4.5.2 printer-uri-user (uri)...................................57
4.5.3 printer-name (name)......................................57
4.5.4 printer-location (text)..................................57
4.5.5 printer-description (text)...............................57
4.5.6 printer-more-info-site (uri).............................57
4.5.7 printer-driver-installer (uri)...........................57
For example, if a given instance of a Printer supports only certain Expires January 14, 1998
document formats, then that Printer SHALL respond with the "document- 4.5.8 printer-make-and-model (text)............................57
format-supported" attribute populated with a set of values, possibly 4.5.9 printer-more-info-manufacturer (uri).....................58
only one, taken from the entire set of possible values defined in this 4.5.10 printer-state (type1 keyword)............................58
model document. This set of values represent the Printer's set of 4.5.11 printer-state-reasons (1setOf type2 keyword).............59
supported document formats. Another example is the "finishings- 4.5.12 printer-is-accepting-jobs (boolean)......................61
supported" attribute. If a Printer is not physically capable of 4.5.13 printer-state-message (text).............................61
stapling (there is no stapler in the output device itself), the 4.5.14 queued-job-count (integer(0:2**31 - 1))..................61
"finishings-supported" attribute MUST NOT be populated with the value of 4.5.15 printer-message-from-the-operator (text).................61
'staple'. 4.5.16 printer-locale (locale)..................................61
4.5.17 printer-locales-supported (1setOf locale)................61
4.5.18 color-supported (boolean)................................61
4.5.19 pdl-override (type2 keyword).............................62
4.5.20 Security Related Attributes..............................63
4.5.20.1 message-protection-supported (keyword)..............63
4.5.20.2 authentication-authorization-supported (keyword)....63
5. Conformance...................................................64
5.1 Conditionally Mandatory.......................................64
5.2 Client Conformance Requirements...............................64
5.3 Printer Object Conformance Requirements.......................65
5.3.1 Objects..................................................65
5.3.2 Operations...............................................65
5.3.3 Attributes...............................................65
5.3.4 Printer extensions.......................................66
5.3.5 Attribute Syntaxes.......................................66
5.4 Security Conformance Requirements.............................66
6. IANA Considerations (registered and private extensions).......66
6.1 Typed Extensions..............................................67
6.1.1 Type1....................................................67
6.1.2 Type2....................................................67
6.1.3 Type3....................................................68
6.1.4 Type4....................................................68
6.2 Registration of MIME types/sub-types for document-formats.....68
7. Security Considerations.......................................69
8. References....................................................69
9. Author's Address..............................................70
10. APPENDIX A: Terminology.......................................73
10.1 Conformance Terminology.......................................73
10.1.1 MUST.....................................................73
10.1.2 MUST NOT.................................................73
10.1.3 SHOULD...................................................73
10.1.4 SHOULD NOT...............................................73
10.1.5 MAY......................................................73
10.1.6 CONDITIONALLY MANDATORY..................................74
10.1.7 NEED NOT.................................................74
10.2 Model Terminology.............................................74
10.2.1 Keyword..................................................74
10.2.2 Parameters...............................................74
10.2.2.1 Parameter Name......................................74
Note: The supported attributes are set (populated) by some Expires January 14, 1998
administrative process or automatic sensing mechanism which is outside 10.2.2.2 Parameter Value.....................................75
the scope of IPP. 10.2.2.3 Parameter Syntax....................................75
10.2.3 Attributes...............................................75
10.2.3.1 Attribute Name......................................75
10.2.3.2 Attribute Group Name................................76
10.2.3.3 Attribute Value.....................................76
10.2.3.4 Attribute Syntax....................................76
10.2.4 Supports.................................................76
11. APPENDIX B: Status Codes.....................................77
11.1 Status Codes (type2 keyword)..................................78
11.1.1 Informational............................................78
11.1.2 Successful Status Codes..................................78
11.1.2.1 successful-ok.......................................78
11.1.3 Redirection Status Codes.................................78
11.1.4 Client Error Status Codes................................79
11.1.4.1 client-error-bad-request............................79
11.1.4.2 client-error-forbidden..............................79
11.1.4.3 client-error-not-authenticated......................79
11.1.4.4 client-error-not-authorized.........................79
11.1.4.5 client-error-not-possible...........................80
11.1.4.6 client-error-timeout................................80
11.1.4.7 client-error-not-found..............................80
11.1.4.8 client-error-gone...................................80
11.1.4.9 client-error-request-entity-too-large...............81
11.1.4.10 client-error-request-URI-too-long...................81
11.1.4.11 client-error-unsupported-document-format............81
11.1.4.12 client-error-attribute- not-supported...............81
11.1.5 Server Error Status Codes................................82
11.1.5.1 server-error-internal- error........................82
11.1.5.2 server-error-operation-not-supported................82
11.1.5.3 server-error-service-unavailable....................82
11.1.5.4 server-error- version-not-supported.................82
11.1.5.5 server-error-device-error...........................83
11.1.5.6 server-error-temporary-error........................83
11.2 Status Keywords for IPP Operations............................84
12. APPENDIX C: "document-format" enum values.....................84
13. APPENDIX D: "media" keyword values...........................87
3. Simplified Printing Model Expires January 14, 1998
1. 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
for the Internet, IPP is based on a simplified printing model which protocol for the Internet, the Internet Printing Protocol (IPP) is
abstracts the many (often complex) components of real world printing based on a simplified printing model which abstracts the many (often
solutions. Many of these systems include features, interfaces, and complex) components of real world printing solutions. Many of these
relationships that are beyond the scope of IPP. IPP has to run in a systems include features, interfaces, and relationships that are
distributed computing environment where requesters of print services beyond the scope of IPP. IPP has to run in a distributed computing
(clients, applications, PC drivers, etc.) cooperate and interact with environment where requesters of print services (clients,
print service providers. Although the underlying configuration may be a applications, PC drivers, etc.) cooperate and interact with 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
for printing. The IPP model encapsulates these important elements into required for printing. The IPP model encapsulates these important
three simple objects: elements into three simple object types:
June 23, 1997, Expires December 23, 1997
Printer (Section 4.1)
Job (Section 4.2)
Document (Section 4.3)
Each of these objects has a set of operations associated with it. These
include:
Printer: Printer (Section 2.1)
Get-Operations (Section 5.1.1) Job (Section 2.2)
Print-Job (Section 5.1.2) Document (Section 2.3)
Print-URI (Section 5.1.3)
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
Send-Document(Section 5.1.6)
Send-URI (Section 5.1.7)
Cancel-Job (Section 5.1.8)
Get-Attributes (Section 5.1.9)
There are no operations defined for a Document object. All document Each object type has an associated set of operations (see section 3)
information is accessed through a Job object and its operations. and attributes (see section 4)
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
in the IPP model. The following figure illustrates where IPP fits with defined in the IPP model. The following figure illustrates where IPP
respect to these other components. fits with respect to these other components.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
+--------------+ +--------------+
| Application | | Application |
o +. . . . . . . | o +. . . . . . . |
\|/ | Spooler | \|/ | Spooler |
/ \ +. . . . . . . | +---------+ / \ +. . . . . . . | +---------+
End-User | Print Driver |---| File | End-User | Print Driver |---| File |
+-----------+ +-----+ +------+-------+ +----+----+ +-----------+ +-----+ +------+-------+ +----+----+
| Browser | | GUI | | | | Browser | | GUI | | |
+-----+-----+ +--+--+ | | +-----+-----+ +--+--+ | |
| | | | | | | |
skipping to change at page 14, line 36 skipping to change at page 8, line 36
I +--------+--------+ | I +--------+--------+ |
O | | O | |
N +-----------------+ | IPP Printer N +-----------------+ | IPP Printer
| Print Service | | | Print Service | |
+-----------------+ | +-----------------+ |
| --+ | --+
+-----------------+ +-----------------+
| Output Device(s)| | Output Device(s)|
+-----------------+ +-----------------+
IPP Printers encapsulate the functions normally associated with physical IPP Printers encapsulate the functions normally associated with
output devices along with the spooling, scheduling and multiple device physical output devices along with the spooling, scheduling and
management functions associated with a print server. Printers may be multiple device management functions associated with a print server.
registered as entries in a directory where end users find and select Printers may be registered as entries in a directory where end users
them based on some sort of filtered and context based searching. The find and select them based on some sort of filtered and context based
directory is used to store relatively static information about the searching. The directory is used to store relatively static
Printer, allowing end users to search for and find Printers that match information about the Printer, allowing end users to search for and
their search criteria (name, context, printer capabilities, etc.). find Printers that match 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. The 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 IPP Printer may be embedded in an output device or may be implemented
host on the network that communicates with the output device. All on a host on the network that communicates with the output device.
information about the Printer, both static and dynamic information, can
Expires January 14, 1998
All information about the Printer, both static and dynamic
information, can be accessed directly from the Printer itself. The
more dynamic information associated with a Printer includes state,
currently loaded and ready media, number of jobs on the Printer,
errors, warnings, etc. The Printer is optionally represented by an
entry in a directory service. The more static information (name, URI,
location, etc.) are stored with along with the entry in the directory
service to enable filtered directory queries.
June 23, 1997, Expires December 23, 1997
be accessed directly from the Printer itself. The more dynamic
information associated with a Printer includes state, currently loaded
and ready media, number of jobs on the Printer, errors, warnings, etc.
When a job is submitted to the Printer, the Printer SHALL create a Job When a job is submitted to the Printer, the Printer SHALL create a Job
object. The end user then interacts with this new Job to query its object. The end user then interacts with this new Job to query its
status and monitor the progress of the job. End users may also cancel status and monitor the progress of the job. End users may also cancel
the Job. The end user is able to register to receive certain events the Job. The end user is able to register to receive certain events
which are then routed using the notification service(s). which are then routed using the notification service(s).
4. IPP Objects 2. IPP Objects
An IPP object is defined as set of attributes that can be potentially The IPP model introduces objects of type Printer, Job, and Document.
supported by each instance of the object. The attributes for each Each object type is defined as a set of possible attributes that may
object type are identified as MANDATORY, CONDITIONALLY MANDATORY, or be supported by each instance of an object of that type. The
OPTIONAL (see section 2). Each instance of an IPP object supports an attributes (and values) supported by each object instance describe the
appropriate set of attributes (with values for each of the attributes) implementation (that is the realizable features, functions, and
that describe that instance. That is, an IPP Printer object is defined characteristics either in software or hardware) for that object
as set of attributes that can potentially be implemented by some entity instance. For example, the object type "Printer" is defined as set of
claiming to be an IPP Printer. In the same manner, a Job object is attributes that each instance of a Printer object might potentially
defined as a set of attributes that are potentially associated with each support. In the same manner, the object type "Job" is defined as a
instance of a Job object. set of attributes that are potentially supported by each instance of a
Job object.
4.1 Printer Object Each attribute included in the set of attributes defining an object
type labeled as:
"MANDATORY": each object instance MUST support the attribute.
"OPTIONAL": each object instance MAY support the attribute.
"CONDITIONALLY MANDATORY": whether or not the object instance
supports the attribute is determined by a semantic condition.
For example, if the implementation behind a given instance of a
Printer object knows about and is able to support multiple levels
of job priorities, that instance MUST support the "job-priority-
supported" attribute. An administrator may set the values to be
somewhat more restrictive that what a given implementation might
allow, however the attribute MUST still be supported.
Expires January 14, 1998
2.1 Printer Object
A major component of the IPP model is the Printer object.The A major component of the IPP model is the Printer object.The
capabilities and state of an IPP Printer are described by its capabilities and state of an IPP Printer are described by its
attributes. Printer attributes are grouped as follows: attributes. Printer attributes are grouped as follows:
"job-template" attributes (section 6.2) "job-template" attributes (section 4.2)
"printer-description" attributes (section 6.5) "printer-description" attributes (section 4.5)
Operations which are invoked on a printer include: Operations which are invoked on a printer include:
Get-Operations (Section 5.1.1) Get-Operations (Section 3.1.1)
Print-Job (section 5.1.2) Print-Job (section 3.1.2)
Print-URI (Section 5.1.3) Print-URI (Section 3.1.3)
Validate-Job (Section 5.1.4) Validate-Job (Section 3.1.4)
Create-Job (section 5.1.5) Create-Job (section 3.1.5)
Get-Attributes (section 5.1.9) Get-Attributes (section 3.1.9)
Get-Jobs (section 5.1.10) Get-Jobs (section 3.1.10)
An instance of a Printer object implements IPP. Using the protocol, end
users may query the attributes of the Printer, submit jobs to the
Printer, determine subsequent states of submitted and queued jobs, and
cancel their own print jobs. The realization of a Printer object may
take on different forms for any given configuration of real components.
June 23, 1997, Expires December 23, 1997 An instance of a Printer object implements the IPP protocol. Using
However, the details of the configuration of real components are the protocol, end users may query the attributes of the Printer,
transparent to the end user. submit jobs to the Printer, determine subsequent states of submitted
and queued jobs, and cancel their own print jobs. The actual
implementation components behind the Printer object abstraction may
take on different forms and different configurations, however, the
details of the configuration of real components are transparent to the
end user.
Since a Printer object is an abstraction of a generic document output Since a Printer object is an abstraction of a generic document output
device or print service provider, an IPP Printer object could be used to device and print service provider, an IPP Printer object could be used
represent any real or virtual device with semantics consistent with the to represent any real or virtual device with semantics consistent with
Printer object. For example, an instance of a Printer object could be the Printer object. For example, an instance of a Printer object could
used to front end a fax-out device, any kind of imager, or even a CD be used to front end a fax-out device, any kind of imager, or even a
writer. CD writer.
Some examples of configurations supporting a Printer object include: Some examples of configurations supporting a Printer object include:
1) An output device, with no spooling capabilities 1) An output device, with no spooling capabilities
2) An output device, with a built-in spooler 2) An output device, with a built-in spooler
3) A print server supporting IPP with one or more associated output 3) A print server supporting IPP with one or more associated output
devices devices
3a) The associated output devices might or might not be capable of 3a) The associated output devices might or might not be capable
spooling jobs of spooling jobs
3b) The associated output devices might or might not support IPP 3b) The associated output devices might or might not support IPP
See the following figures for some examples on how to view Printer See the following figures for some examples on how to view Printer
objects on top of several print system configurations. The embedded objects on top of several print system configurations. The embedded
Expires January 14, 1998
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 23, 1997, Expires December 23, 1997 Expires January 14, 1998
Legend: Legend:
##### indicates a Printer object which is ##### indicates a Printer object which is
either embedded in an output device or is either embedded in an output device or is
hosted in a server. The implementation hosted in a server. The implementation
might or might not be capable of queuing/spooling. might or might not be capable of queuing/spooling.
any indicates any network protocol or direct any indicates any network protocol or direct
connect, including IPP connect, including IPP
skipping to change at page 17, line 44 skipping to change at page 12, line 44
+-->| output device | +-->| output device |
any/ | | any/ | |
O +--------+ ########### / +---------------+ O +--------+ ########### / +---------------+
/|\ | client |-IPP-># Printer #--* /|\ | client |-IPP-># Printer #--*
/ \ +--------+ # Object # \ +---------------+ / \ +--------+ # Object # \ +---------------+
########### any\ | | ########### any\ | |
+-->| output device | +-->| output device |
| | | |
+---------------+ +---------------+
4.2 Job Object 2.2 Job Object
A Job object is used to model a job. A job can contain one or more A Job object is used to model a job. A job can contain one or more
documents. The information required to create a Job object is sent in a documents. The information required to create a Job object is sent in
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
create request from the end user via an IPP client to a Printer. A a create request from the end user via an IPP client to a Printer. A
create request can be either a Print-Job Request, a Print-URI request, create request can be either a Print-Job Request, a Print-URI Request,
or a Create-Job Request. The Printer MUST perform validation checks to or a Create-Job Request. The Printer MUST perform validation checks
verify that the job may indeed be processed. A client MAY send a to verify that the job may indeed be processed. A client MAY send a
Validate-Job Request (with no document data) so that the Printer Validate-Job Request (with no document data) so that the Printer
performs all validation checks without the overhead of transferring all performs all validation checks without the overhead of transferring
of the document data. As an example of some of the validation checks all of the document data. As an example of some of the validation
that are performed, the create request may specify that the documents checks that are performed, the create request may specify that the
within the job are to be printed duplex (on both sides of the media). documents within the job are to be printed duplex (on both sides of
However, the Printer might not support such a feature. Once the Printer the media). However, the Printer might not support such a feature.
validates the submitted information, a Job object is created. The Once the Printer validates the submitted information, a Job object is
instance of the Job object is initialized with information from the created. The instance of the Job object is initialized with
create request. If a Create-Job operation is used to create the Job information from the create request. If a Create-Job operation is
object, subsequent Send-Document operations are used to transfer the used to create the Job object, subsequent Send-Document operations are
document data from the client to the IPP Printer. 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 is done when:
- optional attributes are missing - optional attributes are missing
- there are conflicts between what is supported and what is requested - there are conflicts between what is supported and what is
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 grouped as follows: Job attributes are grouped as follows:
"job-template" attributes (optionally supplied by the client/end "job-template" attributes (optionally supplied by the client/end
user, section 6.2) user, section 4.2)
"job-description" attributes (set by the Printer, section 6.3) "job-description" attributes (set by the Printer, section 4.3)
The following operations can be invoked on Jobs: The following operations can be invoked on Jobs:
Send-Document (section 5.1.6) Send-Document (section 3.1.6)
Send-URI (Section 5.1.7)Cancel Job (section 5.1.8) Send-URI (Section 3.1.7)
Get-Attributes (section 5.1.9) Cancel Job (section 3.1.8)
Get-Attributes (section 3.1.9)
4.3 Document Object
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 23, 1997, Expires December 23, 1997
4.4 Object Relationships
Instances of objects within the system have relationships that MUST be
maintained persistently along with the persistent storage of the object
attributes. A Printer can represent one or more output devices. An
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
in exactly one Printer object. A Job object contains one or more
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
or even in different Jobs. If the Document is not just a reference, but
an actual stream of print data, the stream SHALL contain only one
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
Each object type is defined by a set of possible attributes which
describe the realization of each instance of an object. That is, a
Printer object is defined as set of attributes which each instance of a
Printer object might potentially support. In the same manner, a Job
object is defined as a set of attributes that are associated with each
instance of a Job object. Some attributes are OPTIONAL, some are
MANDATORY, and some are CONDITIONALLY MANDATORY (see section 2). Object
attributes are defined in section 6 of this document.
4.5.1 Job Template Attribute Overview
Attributes that a client may optionally include in a create request are
called Job Template attributes. These are described in detail in
section 6.2. The Printer object has associated attributes which define
supported and default values for the Printer.
- When a Job Template attribute is supplied by a client in a create
request, the attribute and its value describe the desired job
processing behavior.
- The Printer object's supported attribute describes what behaviors 2.3 Document Object
are possible.
- The Printer object's default value attribute describes what will be A Document object consists of either printable data or a reference
done when no other job processing information is supplied by the (URI) to printable data and a set of Document Attributes (see section
client. 4.4). These Document Attributes only describe the data to be printed;
they do not include any specialized document processing instructions
that apply to only this one Document. All Job Template attributes,
that isthose attributes that describe desired job processing behavior,
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
4.5.2 The "best-effort" Job Attribute Overview are defined as part of the Job object, therefore, they apply equally
to all Documents within a Job.
Client supplied Job Template attributes affect the rendering, Currently there are no operations defined for Document objects.
production, and finishing of the documents in a job. Similar types of
instructions may also be contained within the Page Description Language
(PDL) of the document to be printed. The "best-effort" attribute,
described in detail in section 6.2.8 is provided to help manage the
conflicts between values supplied in IPP Job Template attributes and
corresponding instructions contained within the body of the document
itself. The "best-effort" attribute SHALL take one of the following
values:
- 'shall-honor-ipp-attributes': If a Printer supports this value and 2.4 Object Relationships
a client requests this value, the Printer guarantees that all IPP
attribute values take precedence over embedded instructions in the
job data (the PDL of the job's documents).
- 'should-honor-ipp-attributes': If a Printer supports this value,
and a client requests this value, the Printer SHOULD try to make
sure that IPP attribute values take precedence over embedded PDL
instructions, however there is no guarantee
This "best-effort" attribute has nothing to do with conflict between Instances of objects within the system have relationships that MUST be
what a Printer supports and what an IPP client requests. If there is maintained persistently along with the persistent storage of the
such a conflict, the Printer SHALL reject the create request. A client object attributes. An instance of a Printer object usually represents
SHOULD query the printer to find out what is supported before supplying one or more output devices. A Printer object may represent a logical
specific values in a create request. device which "processes" jobs but never actually uses a physical
output device to put marks on paper (for example a Web page publisher
or an interface into an online document archive or repository). A
Printer can contain zero or more Job objects. An instance of a Job
object is contained in exactly one Printer object (the same document
data could be sent to a the same or a different Printer, but the
corresponding Job object would be an identical, but different Job
object). A Job object contains one or more 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 or even in
different Jobs. If the Document is not just a reference, but an
actual stream of print data, the stream is contained in only one
Document, although there can be copies of the same document data in
other Documents in the same or different Jobs.
4.6 Object Identity 2.5 Object Identity
All instances of Printer and Job objects have an identifier attribute All instances of Printer and Job objects have a URI so that they can
whose value is globally unique so that they can persistently and persistently and unambiguously referenced. The IPP model requires
unambiguously referenced. The IPP model requires that these values be that these values be URIs as defined by RFC 1738 [11] and RFC 1808.
URIs as defined by RFC 1738 and RFC 1808. In addition to an identifier In addition to an identifier attribute, instances of Printer and Job
attribute, instances of Printer and Job objects may have a name. An objects may have a name. An object name need not be unique across all
object name need not be unique across all instances of all objects. The instances of all objects. The Printer name is chosen and set by an
Printer name is chosen and set by an administrator. If not supplied by administrator. If not supplied by the client, the Printer creates the
the client, tthe Job name is created by the Printer. In all cases, the Job name. In all cases, the name only has local meaning, and it is
name only has local meaning, and is not constrained to be unique. not constrained to be unique.
To summarize, each instance of Printer and Job objects will have two To summarize, each instance of Printer and Job objects will have two
identifying attributes: identifying attributes:
- "xxx-uri": The globally unique identifier for this object instance - "xxx-uri": The unique identifier for this object instance
- "xxx-name": The non unique name for this object instance - "xxx-name": The non unique name for this object instance
June 23, 1997, Expires December 23, 1997 Document objects sent to an IPP Printer only have names, no
Document objects sent to an IPP Printer only have names, no identifiers. identifiers. The "document-name" attribute is used to store the name
The "document-name" attribute is used to store the name of the Document.
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. Expires January 14, 1998
of the Document. This name is just of interest within the context of
a Job; it need not be unique.
5. IPP Operations If Documents are printed by reference, the corresponding document
object contains a "document-uri" attribute, but the value of this
attribute is a reference to the document data to be printed; it is not
the unique identifier of the Document object itself.
Jobs and Printers each have a set of associated operations. End users or 3. IPP Operations
programs invoke these operations using an IPP client. The operations
are: Jobs and Printers each have a set of associated operations. End users
or programs invoke these operations using an IPP client. The
operations are:
For a Printer object: For a Printer object:
Get-Operations (section 5.1.1) MANDATORY Get-Operations (section 3.1.1) Print-Job (section 3.1.2) Print-
Print-Job (section 5.1.2) MANDATORY URI (section 3.1.3)
Print-URI (section 5.1.3) OPTIONAL Validate-Job (section 3.1.4)
Validate-Job (section 5.1.4) OPTIONAL Create-Job (section 3.1.5)
Create-Job (section 5.1.5) OPTIONAL Get-Jobs (section 3.1.8)
Get-Jobs (section 5.1.8) OPTIONAL Get-Attributes (section 3.1.9)
Get-Attributes (section 5.1.9) OPTIONAL
For a Job object: For a Job object:
Send-Document (section 5.1.6) OPTIONAL Send-Document (section 3.1.6)
Send-URI (section 5.1.7) OPTIONAL Send-URI (section 3.1.7)
Cancel-Job (section 5.1.8) MANDATORY Cancel-Job (section 3.1.8)
Get-Attributes (section 5.1.9) OPTIONAL Get-Attributes (section 3.1.9)
When a client communicates with a remote IPP object, it sends an When a client communicates with a remote IPP object, it sends an
operation request to the URI for that object. Each request carries operation request to the URI for that object. Each request carries
along with it the input parameters and data required to perform the along with it the input parameters and data required to perform the
specified operation. Each request requires a response from the object specified operation. Each request requires a response from the object
indicating success or failure of the operation including response data indicating success or failure of the operation including output
and/or error messages. The representation and encoding of the IPP parameters, status codes, and/or status messages. The representation
protocol are contained in "Internet Printing Protocol: Protocol and encoding of the IPP protocol are contained in "Internet Printing
Specification."[23] 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
service which end users and programs can interrogate. "Internet Printing directory service which end users and programs can interrogate.
Protocol: Directory Schema"[24] defines the attributes to be associated "Internet Printing Protocol: Directory Schema"[24] defines the
with a Printer entry in a directory service. attributes to be associated with a Printer entry in a directory
service.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
5.1 Operation Semantics 3.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 for
each operation.
In order to create a new Job object, a client MAY use one of three In order to create a new Job object, a client uses one of three
operations: operations:
- The Print-Job operation: This operation is used if the client - The Print-Job operation: This operation is used if the client
wants to create a Job with only a single Document and the document wants to create a Job with only a single Document and the
data is included in the request. In this case, the client "pushes" document data is included in the request. In this case, the
the document data to the Printer. client "pushes" the document data to the Printer.
- The Print-URI operation: This operation is used if the client wants - The Print-URI operation: This operation is used if the client
to create a Job with only a single Document and only a URI 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 reference to the document data (not the document data itself) is
included in the request. In this case, the Printer "pulls" the included in the request. In this case, the Printer "pulls" the
document data from the location identified by the URI. document data from the location identified by the URI.
- The Create-Job operation: This operation is used if the client - The Create-Job operation: This operation is used if the client
wants to create a Job with one or more Documents. This operation wants to create a Job with one or more Documents. This operation
is followed by an arbitrary number of Send-Document or Send-URI is followed by an arbitrary number of Send-Document or Send-URI
operations (each creating another Document for this Job). The operations (each creating another Document for this Job). The
Send-Document operation includes the document data with the Send-Document operation includes the document data with the
operation request (client "pushes" the document data to the operation request (client "pushes" the document data to the
printer), and the Send-URI operation includes only a reference (a printer), and the Send-URI operation includes only a reference (a
URI) to the document data (the Printer "pulls" the document data URI) to the document data (the Printer "pulls" the document data
from the referenced location). from the referenced location).
A Create-Job operation followed by a only one Send-Document operation is A Create-Job operation followed by a only one Send-Document operation
semantically equivalent to a Print-Job operation, however, for is semantically equivalent to a Print-Job operation, however, for
performance reasons, the client SHOULD use the Print-Job operation for performance reasons, the client SHOULD use the Print-Job operation for
all single Document Jobs. Throughout this model specification, the term all single Document Jobs. Throughout this model specification, the
"create request" is used to refer to any of the three operation requests term "create request" is used to refer to any of these three operation
that creates a new job object (a Print-Job request, a Print-URI request, requests.
or a Create-Job request).
5.1.1 Get-Operations Operation Every operation response returns a MANDATORY status code and an
OPTIONAL status message (see Section 10). In most cases, if the
status code indicates an error (the code belongs to either the
"client-error" or the "server-error" group), there are additional
output parameters returned that are not returned in the successful
case.
In many of these operations, a client supplies a list of attributes to
be returned in the response. A Printer may be configured, for
security reasons, not to return all attributes that a client requests.
It may even return none of the requested attributes. In such cases,
Expires January 14, 1998
the status returned is the same as if the Printer had returned all
requested attributes. The client cannot tell by such a response
whether the requested attribute was present or absent on the Printer.
3.1.1 Get-Operations Operation
Since some of the IPP operations defined in this specification are Since some of the IPP operations defined in this specification are
OPTIONAL and therefore some implementations MAY choose to not implement OPTIONAL and therefore some implementations may choose to not
support them, this operation, Get-Operations, is a simple, MANDATORY implement support them, this operation is a simple, MANDATORY
operation that all implementations MUST support. The client uses this operation that all implementations MUST support. The client uses this
operation to query a specific implementation for a list of supported operation to query a specific implementation for a list of supported
OPTIONAL operations. operations.
June 23, 1997, Expires December 23, 1997 3.1.1.1 Get-Operations Request
5.1.1.1 Get-Operations Request
The Get-Operations Request has no parameters. The Get-Operations Request has no input parameters.
5.1.1.2 Get-Operations Response 3.1.1.2 Get-Operations Response
The Printer SHALL return to the client the following output parameters The Printer returns the following output parameters as part of the
as part of the Get-Operations Response: Get-Operations Response:
Supported Operations: Supported Operations ("supported-operations"):
A list of the OPTIONAL operations that this implementation A list of the operations that this implementation supports
supports. This set of OPTIONAL operations are 'Create-Job', (including all MANDATORY operations). The values are taken
'Print-URI', 'Submit-Document', 'Submit-URI', 'Get-Jobs', and 'Get- from the following set: 'Get-Operations', 'Print-Job', 'Print-
Attributes'. URI', 'Validate-Job', 'Create-Job', 'Get-Jobs', 'Get-
Attributes', 'Send-Document', 'Send-URI', and 'Cancel-Job'.
Status Note: Since this list contains all MANDATORY operations ('Get-
Status information including error status Operations', 'Print-Job', 'Validate-Job', 'Get-Jobs', 'Get-
Attributes', and 'Cancel-Job'), this output parameter will never
be empty.
5.1.2 Print-Job Operation 3.1.2 Print-Job Operation
When an end user desires to submit a print job with only one Document, When an end user desires to submit a print job with only one Document,
the client sends a Print-Job Request to a Printer and receives a Print- the client sends a Print-Job Request to a Printer and receives a
Job Response from that Printer. The information in a Print-Job Request Print-Job Response from that Printer. The information in a Print-Job
(along with any default information associated with the Printer) is Request (along with any default information associated with the
sufficient for the Printer to create a Job object and then process that Printer) is sufficient for the Printer to create a Job object and then
Job. A Print-Job operation differs from a Print-URI operation in that a process that Job. A Print-Job operation differs from a Print-URI
Print-Job operation contains the document data to be printed and a operation in that a Print-Job operation contains the document data to
Print-URI operation only contains a reference to the document data. be printed and a Print-URI operation only contains a reference to the
document data.
5.1.2.1 Print-Job Request Expires January 14, 1998
3.1.2.1 Print-Job Request
The following elements are part of the Print-Job Request: The following input parameters 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. If the client supplies no Job Template attributes in the 4.2. If the client supplies no Job Template attributes in the
Create-Job Request, the Printer uses its default value attributes Create-Job Request, the Printer uses its default value attributes
when processing the job. Since a Print-Job operation is used for a when processing the job. Since a Print-Job operation is used for
Job with only one Document, the Document attributes "document-name" a Job with only one Document, the Document attributes "document-
and "document-format" are also supplied by the client. "document- name" and "document-format" are also supplied by the client.
name" is MANDATORY; "document-format" is OPTIONAL. "document-name" is MANDATORY; "document-format" is OPTIONAL.
Document Content Document Content:
The client supplies the document data. The client supplies the document data to be processed.
June 23, 1997, Expires December 23, 1997 The simplest Print-Job Request consists of just the Document Content
The simplest Print-Job Request consists of just the Document Content and and nothing else. In this case, the Printer creates a new Job object
nothing else. This means that the Printer SHALL create a new Job object with no associated Job Template attributes and the job contains a
with no Job Template attributes and a single contained Document. single Document.
When a Printer receives a Print-Job Request, the Printer SHALL either When a Printer receives a Print-Job Request, the Printer either
accept or reject the request. The Printer SHALL accept the Print-Job accepts or rejects the request. The Printer accepts the Print-Job
Request and SHALL create a Job object if it is able to accept all Request and creates a Job object if it is able to accept all Job
attributes in the request. The Printer SHALL reject the request and Template attributes in the request. The Printer rejects the request
SHALL NOT create a Job object if the Printer rejects any attribute in and does not create a Job object if the Printer rejects any Job
the request. There are six cases to consider when accepting or Template attribute in the request. There are six cases to consider
rejectingJob and Document attributes: when accepting or rejecting Job Template attributes:
1. The client supplies a Job Template attribute named "xxx" and the 1. The client supplies a Job Template attribute named "xxx" and the
value supplied by the client is among the values supported by the value supplied by the client is among the values supported by the
Printer (i.e., is among the values of the Printer's "xxx-supported" Printer (i.e., is among the values of the Printer's "xxx-
attribute): The "xxx" Job Template attribute is accepted. If the supported" attribute): The "xxx" Job Template attribute is
"best-effort-supported" attribute contains the value 'shall-honor- accepted. The Printer creates the Job object and associates the
ipp-attributes' the Printer SHALL guarantee the behavior "xxx" attribute with the new Job object using the value supplied
represented by the value in the "xxx" attribute (i.e., the IPP by the client.
attribute has precedence over any other embedded job instruction).
If the value of the "best-effort-supported" is 'should-honor-ipp-
attributes' then the Printer SHOULD try to realize the behavior
requested by the client, but NEED NOT guarantee the behavior. The
Printer creates the Job object and associates the "xxx" attribute
with the new Job object using the value supplied by the client.
2. The client supplies a Job Template attribute but the attribute is 2. The client supplies a Job Template attribute but the attribute
syntactically bad: The Printer SHALL reject the job and return the is syntactically bad: The Printer SHALL reject the job and return
'attribute-unsupported' error code and the name of the badly formed name of the badly formed attribute (if known) in the
attribute (if known) in the "unsupported-attributes" response "unsupported-attributes" response parameter.
parameter.
3. The client supplies a Job Template attribute and the attribute 3. The client supplies a Job Template attribute and the attribute
value is not among the values supported by the Printer: The value is not among the values supported by the Printer: This
Printer SHALL reject the Job and return the 'attribute--value- case depending on the value of the "best-effort' attribute (see
unsupported' error code and the name of the unsupported attribute Section 4.2.8), tIf the client supplies a "best-effort" of
in the "unsupported-attribute-values" response parameter. 'false' (or supplies no "best-effort" attribute and the Printer's
default behavior attribute is set to 'false') the Printer SHALL
4. The client supplies a Job Template attribute and the Printer does Expires January 14, 1998
not support the attribute: The Printer rejects the attribute. The reject the Job and return the 'client-error-attribute-
Printer returns the 'attribute-unsupported' error code and the name unsupported" error code and the unsupported attribute in the
of the rejected attribute in the "unsupported-attributes" response "unsupported-attributes " output parameter. If the client
parameter. supplies a "best-effort" of 'true' (or supplies no "best-effort"
attribute and the Printer's default behavior attribute is set to
'true') the Printer SHALL accept the Job and substitute supported
values for all unsupported values supplied by the client. In
this case, if everything else is ok, the Printer returns a
"successful-ok" status code. The client must query the newly
create Job object to find out if any of the requested values have
been modified.
5. The client does not supply a Job Template attribute, but the 4. The client supplies a Job Template attribute and the Printer
Printer supports the attribute: The attribute is accepted and when does not support the attribute: The Printer rejects the
the Printer creates the Job object, the Printer SHALL NOT associate attribute. The Printer returns the 'client-error-attribute-
unsupported' error code and the rejected attribute in the
"unsupported-attributes" output parameter.
June 23, 1997, Expires December 23, 1997 5. The client does not supply a Job Template attribute, but the
the attribute with the new Job object. When the Printer processes Printer supports the attribute: The attribute is accepted and
that Job, the Printer SHOULD attempt to use the behavior implied by when the Printer creates the Job object, the Printer SHALL NOT
the default value Printer attribute as set at the time of Job associate the attribute with the new Job object using Printer's
processing (not Job creation). In other words, these rules allow default value attribute. When the Printer processes that Job,
for a Job object to be created without implementing some of the Job the Printer uses the behavior implied by the default value
Template attributes. As the Printer processes the Job, if the Printer attribute as set at the time of Job processing (not Job
Printer supports a corresponding default value attribute for the creation). In other words, these rules allow for a Job object to
missing Job Template attribute, the Printer uses the default value. be created without implementing some of the Job Template
Depending on the value of the Printer's "best-effort" attribute, attributes. As the Printer processes the Job, if the Printer
the Printer either guarantees the behavior corresponding to the supports a corresponding default value attribute for the missing
default value or it does its best to realize the behavior of the Job Template attribute, the Printer uses the default value.
default value. The results of processing a Job are undefined if
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
support the attribute: The Printer accepts the Job but how the Job not support the attribute: The Printer accepts the Job. However,
is finally processed (with respect to the missing Job Template as far as IPP is concerned, the result of processing that Job
attributes) is undefined. (with respect to the missing attributes) is undefined. In many
cases though, this case represents a legacy environment, and even
without IPP attributes, the job will be processed successfully.
For example, the document data might have been generated by a
device-specific printer driver that formats the job and emits a
data stream (a stream of PDL) that is finely tuned for the
intended output device and its internal interpreter. But, both
the output device and the printer driver are unaware of the IPP
protocol, and an intermediate process (which is IPP aware) is
able to submit the job and make sure that it is delivered to the
output device, yet not be aware of all the Job Template
attributes that might possibly be supported.
5.1.2.2 Print-Job Response Expires January 14, 1998
3.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 ("job-uri"):
A URI which the client SHALL use for all other operations on this A URI which the client SHALL use for all other operations on this
Job Job
Job Status: Job Status Attributes:
The following Job attributes: job-name, job-state, and job-state- This includes the following Job attributes: "job-name", "job-
reasons. The value of each attribute SHALL be from a snapshot state", and "job-state-reasons". The value of each attribute is
taken sometime after the time the Printer receives the print taken from a "snapshot" of the new Job object sometime after the
request. The "job-state-message" attribute is OPTIONAL. time the Printer receives the print request until just prior to
returning the response to the client. Since the "job-state-
message" attribute is OPTIONAL, it MAY be included in the
response, but it is NOT REQUIRED.
Note: Since any printer state information which affects a job's Note: Since any printer state information which affects a job's
state is reflected in the "job-state" and "job-state-reasons" state is reflected in the "job-state" and "job-state-reasons"
attributes, it is sufficient to return only these attributes and no attributes, it is sufficient to return only these attributes and
specific printer status attributes. no specific printer status attributes.
ISSUE: Randy suggest that the following are optional returns in a
response: job-originating-user job-originating-host user-locale job-
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 23, 1997, Expires December 23, 1997
Unsupported Attributes: Unsupported Attributes:
A list of attribute names which are unsupported. The existence of If there is an error, this output parameter contains a set of
any attribute name in this list implies that the Job was rejected. attributes that are unsupported. This output parameter is not
used if the status code indicates that there were no errors.
Unsupported Attribute Values:
A list of attribute names whose client supplied values are
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 information including error status
The simplest response SHALL consist of the job identifier, the Job The simplest response consists of the just the job identifier ("job-
Status attributes, and an operation status that is either an "ok" status uri") and Job Status attributes output parameters with a status code
or an "error" status. of "successful-ok".
5.1.3 Print-URI Operation 3.1.3 Print-URI Operation
This operation is identical to the Print-Job operation (section 5.1.2) This operation is identical to the Print-Job operation (section 3.1.2)
except that a client supplies a reference (a URI) to the document data 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 to be printed rather than the document data itself. It is up to the
server to interpret the URI and subsequently "pull" the document from IPP server to interpret the URI and subsequently "pull" the document
the source referenced by the URI string. from the source referenced by the URI string.
5.1.3.1 Print-URI Request 3.1.3.1 Print-URI Request
The following elements are part of the Print-URI Request: The following elements are part of the Print-URI Request:
Expires January 14, 1998
Job Template Attributes: Job Template Attributes:
(see section 5.1.2.1) (see section 3.1.2.1)
Document Reference: Document URI ("document-uri"):
The client supplies the a URI reference to the document data. The client supplies a URI reference to the document data rather
than the document data itself.
5.1.3.2 Print-URI Response 3.1.3.2 Print-URI 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-URI Response: as part of the Print-URI Response:
Job Identifier: Job Identifier ("job-uri"):
(see section 3.1.2.2)
June 23, 1997, Expires December 23, 1997
(see section 5.1.2.2)
Job Status: Job Status:
(see section 5.1.2.2) (see section 3.1.2.2)
Unsupported Attributes: Unsupported Attributes:
(see section 5.1.2.2) (see section 3.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 3.1.4 Validate-Job Operation
This operation is identical to the Print-Job operation (section 5.1.2) This operation is identical to the Print-Job operation (section 3.1.2)
except that a client supplies no document data or any reference to 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 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 object) to process the job. The VALIDATE request is only used to
capabilities of a printer object against whatever input parameters are verify capabilities of a printer object against whatever input
supplied in the Validate-Job request. parameters are supplied in the Validate-Job request.
5.1.4.1 Validate-Job Request 3.1.4.1 Validate-Job Request
The following elements are part of the Validate-Job Request: The following elements are part of the Validate-Job Request:
Job Template Attributes: Job Template Attributes:
(see section 5.1.2.1) (see section 3.1.2.1)
5.1.4.2 Validate-Job Response 3.1.4.2 Validate-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 Validate-Job Response: as part of the Validate-Job Response:
Job Identifier: Expires January 14, 1998
(see section 5.1.2.2)
Job Status:
(see section 5.1.2.2)
Unsupported Attributes: Unsupported Attributes:
(see section 5.1.2.2) (see section 3.1.2.2)
June 23, 1997, Expires December 23, 1997
Unsupported Attribute Values:
(see section 5.1.2.2)
Status Note: In this case, no "job-uri" or Job Status output parameters are
(see section 5.1.2.2) returned.
5.1.5 Create-Job Operation 3.1.5 Create-Job Operation
This operation is similar to the Print-Job operation (section 5.1.2) This operation is similar to the Print-Job operation (section 3.1.2)
except that a client supplies no document data or any reference to except that a client supplies no document data or any reference to
document data in the Create-Job request. This operation is followed by document data in the Create-Job request. This operation is followed
one or more Send-Document or Send-URI operations. It is possible for a by one or more Send-Document or Send-URI operations. It is possible
given implementation to only support either Send-Document or Send-URI for a given implementation to only support either Send-Document or
but not both. In that case, a client SHOULD NOT use an unsupported Send-URI but not both. In that case, a client SHOULD NOT use an
operation. If a Printer supports the Create-Job operation, it MUST also unsupported operation. If a Printer supports the Create-Job
support one of the Send-Document or Send-URI operations or both. operation, it MUST also support one of the Send-Document or Send-URI
operations or both.
5.1.5.1 Create-Job Request 3.1.5.1 Create-Job Request
The following elements are part of the Create-Job Request: The following elements are part of the Create-Job Request:
Job Template Attributes: Job Template Attributes:
(see section 5.1.2.1) (see section 3.1.2.1)
5.1.5.2 Create Job Response 3.1.5.2 Create Job Response
The Printer SHALL return to the client the following output parameters The Printer returns to the client the following output parameters as
as part of the Create-Job Response: part of the Create-Job Response:
Job Identifier: Job Identifier ("job-uri"):
(see section 5.1.2.2) (see section 3.1.2.2)
Job Status: Job Status:
(see section 5.1.2.2) (see section 3.1.2.2)
Unsupported Attributes: Unsupported Attributes:
(see section 5.1.2.2) (see section 3.1.2.2)
Unsupported Attribute Values:
(see section 5.1.2.2)
June 23, 1997, Expires December 23, 1997
Status
(see section 5.1.2.2)
(see section 5.1.2.2)
5.1.6 Send-Document Operation Expires January 14, 1998
3.1.6 Send-Document Operation
Once a Job object has been created using a Create-Job operation Once a Job object has been created using a Create-Job operation
(returning a "job-uri"), a client directs a Send-Document operation to (returning a "job-uri"), a client directs a Send-Document operation to
the newly create Job object (identified by the returned "job-uri"). The the newly create Job object. The operation adds a new Document to the
operation adds a new Document to the Job object. An entire document MUST Job object. An entire document MUST be sent in a single Send-Document
be sent in a single Send-Document operation.SEND-DOCUMENT requests are operation.
directed towards the job object referenced by the "job_URI" string
returned in a successful CREATE-JOB-RESP message.
5.1.6.1 Send-Document Request 3.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:
A set of Document Description attributes (section 6.4). A set of Document Description attributes (section 4.4).
Last Document Flag
This is a boolean flag that is set if this is the last Document for Last Document Flag ("last-document"):
the Job. This is a boolean flag that is set to 'true' if this is the last
Document for the Job.
Document Content: Document Content:
The client supplies the document data. The client supplies the document data.
5.1.6.2 Send-Document Response 3.1.6.2 Send-Document Response
The following output parameters are part of the Send-Document Response: The following output parameters are part of the Send-Document
Response:
Job Status: Job Status:
(see section 5.1.2.2) (see section 3.1.2.2)
Unsupported Attributes: Unsupported Attributes:
(see section 5.1.2.2) (see section 3.1.2.2)
Unsupported Attribute Values:
(see section 5.1.2.2)
Status:
(see section 5.1.2.2)
June 23, 1997, Expires December 23, 1997 3.1.7 Send-URI Operation
5.1.7 Send-URI Operation
This operation is identical to the Send-Document operation (see section This operation is identical to the Send-Document operation (see
5.1.6) except that a client supplies a reference (a URI) to the document section 3.1.6) except that a client supplies a reference (a URI) to
data to be printed rather than the document data itself. It is up to the document data to be printed rather than the document data itself.
the IPP server to interpret the URI and subsequently "pull" the document It is up to the IPP server to interpret the URI and subsequently
from the source referenced by the URI string. "pull" the document from the source referenced by the URI string.
5.1.7.1 Send-URI Request Expires January 14, 1998
3.1.7.1 Send-URI 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-URI Request: The following abstract data types are part of the Send-URI Request:
Document Attributes: Document Attributes:
(see section 5.1.6.1) (see section 3.1.6.1)
Last Document Flag Last Document Flag ("last-document"):
(see section 5.1.6.1) (see section 3.1.6.1)
Document Reference: Document Reference ("document-uri"):
The client supplies a URI reference to the document data. The client supplies a URI reference to the document data.
5.1.7.2 Send-URI Response 3.1.7.2 Send-URI Response
The following output parameters are part of the Send-URI Response: The following output parameters are part of the Send-URI Response:
Job Status: Job Status:
(see section 5.1.6.2) (see section 3.1.6.2)
Unsupported Attributes: Unsupported Attributes:
(see section 5.1.6.2) (see section 3.1.6.2)
Unsupported Attribute Values:
(see section 5.1.6.2)
Status:
(see section 5.1.6.2)
5.1.8 Cancel Job Operation 3.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
be printed before a job is terminated if printing has already started may be printed before a job is terminated if printing has already
when the Cancel Job operation is received. Only the end user who is started when the Cancel Job operation is received. Only the end user
also the job originator ("job-originating-user" Job attribute) can who is also the job originator ("job-originating-user" Job attribute)
cancel the job using IPP 1.0. can cancel the job using IPP 1.0.
June 23, 1997, Expires December 23, 1997 3.1.8.1 Cancel-Job Request
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 ("message"):
Optional message to the operator Optional message to the operator
5.1.8.2 Cancel-Job Response Expires January 14, 1998
3.1.8.2 Cancel-Job Response
The following information is part of the Cancel Job Response:
Status:
Status information including error status
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
5.1.9 Get-Attributes Operation
The Get-Attributes operation allows a client to obtain information from
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
filled in for each attribute (explicitly named or implicitly included in
an attribute group) that the client supplied in the request.
ISSUE: Should this be broken up into two sections - one for Printer one
for Job?
5.1.9.1 Get-Attributes Request
The client SHALL submit the Get-Attributes request to a Job URI or
Printer URI.
The following input parameters SHALL be part of the Get-Attributes There are no output parameters other Cancel Job Response other than
Request: the Status Code and optional Status Message.
Document Format: 3.1.9 Get-Attributes Operation
June 23, 1997, Expires December 23, 1997 The Get-Attributes operation allows a client to obtain information
The client SHALL supply this input parameter only when requesting from a Printer or Job object. The client supplies as an operation
attributes of the Printer object. The Printer SHALL reject this parameter the set of attribute names and/or attribute group names that
request, if this input parameter is supplied for a Job object. the requester is interested in. The Printer returns a corresponding
attribute set in the response with the appropriate attribute values
filled in for each requested attribute (either explicitly named in the
request or implicitly included by naming an attribute group).
This input parameter conditions the Printer attributes and values 3.1.9.1 Get-Attributes Request
that might depend on the document format. The Printer SHALL return
only (1) those attributes that are supported and (2) the attribute
values that are supported for the specified document format. By
specifying the document format, the client can eliminate the
attributes and values that are not supported.
If the client omits this input parameter, the effect SHALL be the When querying a Printer object, the client submits the Get-Attributes
same as if the value of the Printer's default value document format request to a Printer URI. When querying a Job object, the client
attribute were supplied. It is recommended that the client always submits the Get-Attributes request to a Job URI.The following input
supply a value for document-format, since the Printer's default parameters are part of the Get-Attributes Request whether or not the
value for document-format may be 'auto-sense', in which case the request is to a Printer URI or a Job URI:
returned attributes and values are for the union of the document
formats that the Printer supports in its 'auto-sense' support."
Requested Attributes: 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 Printer SHALL respond as
if the "all" attribute group were supplied. if this input parameter had been supplied with a value of 'all'.
Attributes may be requested by name or by group name. For Jobs, the Attributes may be requested by name or by group name. For Jobs,
attribute groups include: the attribute groups include:
- 'job-template': all of the Job Template attributes that apply to a - 'job-template': all of the Job Template attributes that apply
Job object (the first column of the table in Section 6.2). to a Job object (the first column of the table in Section
- 'job-description': the Job Description attributes in Section 6.3. 4.2).
- 'job-description': the Job Description attributes in Section
4.3.
For Printers, the attribute groups include: For Printers, the attribute groups include:
- 'job-template': all of the Job Template attributes that apply to a - 'job-template': all of the Job Template attributes that apply
Printer object (the last two columns of the table in Section 6.2). to a Printer object (the last two columns of the table in
- 'printer-description': the attributes specified in Section 6.5. Section 4.2).
- 'printer-description': the attributes specified in Section 4.5.
Expires January 14, 1998
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. '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
Get-Attributes operation. the Get-Attributes operation.
- 'all': all attributes of the specified object - 'all': all supported attributes
June 23, 1997, Expires December 23, 1997 It is NOT REQUIRED that a Printer support ALL attributes
5.1.9.2 Get-Attributes Response belonging to a group, however it is MANDATORY that a Printer
implementation understand these group names.
The Printer SHALL return the following response parameters as part of Document Attributes ("document-name", "document-format", and
the Get-Attributes Response: "document-uri", see Section 4.4) may also be requested either
individually or as a group named 'document-attributes'. If any
or all of these attributes are requested, in the response, they
are treated as multi-valued attributes (one value for each
Document in the Job). If there are 5 Documents in the Job, then
each returned Document attribute MUST have 5 values: the set of
first values from each attribute correspond to the first
Document, the set of second values correspond to the second
Document, and so on. In order to maintain the same number of
values in each returned attribute, if there is no value for the
"document-format" attribute for one of the Documents, the value
'other' is returned in its place, and if there is no value for
the "document-uri" attribute for one of the Documents, the
special URI 'none' is returned in its place. For example if all
Document attributes are requested, and there are 3 Documents is a
Job, the returned attributes might look like:
Result Attributes: document-name = 'Document 1', 'Document 2', Document 3'
The requested attributes of the object with their current document-format = 'langPS', 'other', 'langPCL'
valuesSHALL document-uri = ' ftp://some.domain.com/file1.ps', 'none', 'none'
The following input parameters are part of the Get-Attributes Request
only when querying a Printer:
Unknown Attributes: Document Format ("document-format") :
A list of attribute names included in the Get-Attributes request
which are unknown by the Printer.
Status: This input parameter conditions the Printer attributes and values
Status information including error status that might depend on the document format. The Printer SHALL
return only (1) those attributes that are supported and (2) the
attribute values that are supported for the specified document
format. By specifying the document format, the client can
eliminate the attributes and values that are not supported for a
specific document format. For example, a Printer might have
multiple interpreters to support both 'langPS' (for PostScript)
and 'langPCL' (for PCL) documents. However, for only one of
those interpreters might the Printer be able to support "number-
up" with values of 'one', 'two', and 'four'. For the other
A Printer MAY be configured, for security reasons, not to return all Expires January 14, 1998
attributes that a client requests. It may even return none of the interpreter it might be able to only support "number-up" with a
requested attributes. In such cases, the status returned is the same as value of 'one'.
if the Printer had returned all requested attributes. The client cannot
tell by such a response whether the requested attribute was present or
absent on the Printer.
In response to a "Get-Attributes" (or a "Get-Jobs") operation the If the client omits this input parameter, the Printer SHALL
following requirements apply to the Printer: respond as if the input parameter had been set to the value of
the Printer's default value "document-format" attribute were
supplied. It is recommended that the client always supply a
value for document-format, since the Printer's default value for
document-format may be 'langAutomatic', in which case the
returned attributes and values are for the union of the document
formats that the Printer can automatically sense.
1. If the client supplies an attribute name in the Requested If this input parameter is sent in a Get-Attribute Request sent
Attribute input parameter and that attribute is supported by the to a Job URI, the request is rejected with a status code of
Printer, the printer SHALL respond with all current values for that 'client-error-not-possible'.
attribute.
2. If the client supplies an attribute name in the Requested 3.1.9.2 Get-Attributes Response
Attributes input parameter and that attribute is not supported by
the Printer, the Printer SHALL respond with the attribute name in
the "unsupported attributes" response parameter.
3. If the client supplies an attribute group that is supported by the The Printer returns the following response parameters as part of the
Printer, the Printer SHALL respond with all current values for each Get-Attributes Response:
supported attribute in the group. It SHALL not respond for
unsupported attributes in the group.
4. If the client supplies an attribute group keyword that is not Requested Attributes:
unsupported, the Printer assumes that it is an unknown attribute This is a the set of requested attributes and their current
and responds group name in the "unknown attribute list" response values. The Printer ignores (does not respond with) any
parameter. requested attribute which is not supported.
June 23, 1997, Expires December 23, 1997 3.1.10 Get-Jobs Operation
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 list of Jobs
and a list of print jobs belonging to the target Printer object. A list belonging to the target Printer object. The client may also supply a
of Job attribute names or attribute group names that the client is list of Job attribute names or attribute group names. These Job
interested in seeing may be included in the request. attributes will be returned for each Job that is returned.
This operation is like Get-Attributes, except that Get-Jobs operation This operation is like Get-Attributes, except that Get-Jobs operation
returns attributes from more than one object. returns attributes from more than one object.
5.1.10.1 Get-Jobs Request 3.1.10.1 Get-Jobs Request
The client SHALL submit the Get-Jobs request to a Printer URI. The client submits the Get-Jobs request to a Printer URI.
The following input parameters are part of the Get-Jobs Request: The following input parameters are part of the Get-Jobs Request:
Limit Expires January 14, 1998
This is an integer value which indicates a limit to the number of Limit ("limit"):
This is an integer value that indicates a limit to the number of
Jobs returned. The limit is a "stateless limit" in that if the Jobs returned. The limit is a "stateless limit" in that if the
limit is n then only the first n jobs are returned in the Get-Jobs limit is n then only the first n jobs are returned in the Get-
Response; there is no mechanism to allow for the "next" n jobs. Jobs Response; there is no mechanism to allow for the "next" n
The limit applies across all Job States requested. For example, if jobs. The limit applies across all Job States requested. For
the limit if 50, and there are 75 jobs in the 'completed' state and example, if the limit if 50, and there are 75 jobs in the
25 in the 'pending state' and the client requests first 'completed 'completed' state and 25 in the 'pending state' and the client
jobs' and then 'pending' jobs, only the oldest 50 'completed' jobs requests first 'completed jobs' and then 'pending' jobs, only the
are returned. The other 25 'completed' jobs are not returned and oldest 50 'completed' jobs are returned. The other 25
neither are any of the 'pending' jobs returned. 'completed' jobs are not returned and neither are any of the
'pending' jobs returned.
Requested Job Attributes:
A optional set of attribute names (without values) or attribute
groups names in whose values the requester is interested from each
of the jobs on the specified Printer. The attribute group names
are the same as for the Get-Attributes operation for the Job
object. If the client omits this input parameter, the effect SHALL
be the same as if the "job-uri" attribute were supplied.
5.1.10.2 Get-Jobs Response
The Printer SHALL return the following output parameters as part of the
Get-Jobs Response:
Result Attributes:
The result includes zero or more objects each with zero or more
attributes. Each Job is returned in chronological order. This
order is explicitly defined to be: oldest to newest with respect to
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
June 23, 1997, Expires December 23, 1997
from 'pending-held' to 'pending' as seeming to jump ahead in the
queue).
If the client did not supply any Job attributes, the Printer SHALL Requested Job Attributes ("requested-attributes"):
assume that the client is implicitly requesting the "job-uri" An optional set of Job attribute names or attribute groups names
attribute (that is no other Job attributes are returned, but the in whose values the requester is interested. This set of
Job URI for each Job). attributes is returned for each Job that is returned.. The
attribute group names are the same as for the Get-Attributes
operation for the Job object. If the client omits this input
parameter, the Printer SHALL respond as if this input parameter
had been supplied with a value of " 'job-uri'.
Status 3.1.10.2 Get-Jobs Response
Status information including error status
A Printer MAY be configured, for security reasons, not to return all The Printer SHALL return the following output parameters as part of
attributes that a client requests. It may even return none of the the Get-Jobs Response:
requested attributes. In such cases, the status returned is the same as
if the Printer had returned all requested attributes. The client cannot
tell by such a response whether the requested attribute was present or
absent on the Printer.
ISSUE: Some people still have complaints about this security statement. Req uested Attributes:
The result includes zero or more Job objects each with zero or
more attributes. Jobs are returned in the following order: First
all active Jobs (Jobs in the 'pending', 'processing', 'pending-
held', and 'processing-stopped' states) are returned oldest to
newest (with respect to expected completion time) followed by all
completed Jobs (Jobs in the 'completed', 'aborted', or 'canceled'
states) newest to oldest (with respect to actual completion
time). Jobs that are in the 'pending-held' state SHALL appear in
their position as if they were 'pending' (otherwise, a user might
be confused by Jobs that move from 'pending-held' to 'pending' as
seeming to jump ahead in the queue).
5.2 Operation Status Codes and Messages 3.2 Operation Status Codes and Messages
An operation status code provides information on the processing of a An operation status code provides information on the processing of a
request. A message provides a short textual description of the Status. 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 Expires January 14, 1998
of the operation. The status code is intended for use by automata and
a status message is intended for the human user. An IPP application
(i.e. a browser, GUI, print driver or gateway) is not required to
examine or display the message. Status codes and suggested
corresponding status messages are described in section 11..
This section describes the attributes with their corresponding syntaxes 4. Object Attributes
and values that are part of the IPP model. The sections below show the
objects and their associated attributes which are included within the
scope of this protocol. Many of these attributes are derived from other
relevant specifications:
- ISO/IEC 10175 DPA (Final, June 1996) This section describes the attributes with their corresponding
- RFC 1759 Printer MIB (Proposed Standard, May 1995) syntaxes and values that are part of the IPP model. The sections below
- Internet-Draft: Printer MIB (Draft Standard in progress, December show the objects and their associated attributes which are included
1996) within the scope of this protocol. Many of these attributes are
- Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997) derived from other relevant specifications:
Each attribute is uniquely identified in this document using a "keyword" - ISO/IEC 10175 DPA (Final, June 1996) [5]
(see section 2.2.1). The keyword in included in the section header - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1]
- Internet-Draft: Printer MIB (Draft Standard in progress, July
1997) [29]
- Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997)
[27]
June 23, 1997, Expires December 23, 1997 Each attribute is uniquely identified in this document using a
describing that attribute. Not only are attributes uniquely identified "keyword" (see section 10.2.1). The keyword is included in the
with keywords, some attributes take on a syntax which is a set of section header describing that attribute. Not only are attributes
keywords. uniquely identified with keywords, some attributes are defined to have
a syntax which is a set of keywords.
6.1 Attribute Syntaxes 4.1 Attribute Syntaxes
The following table shows the basic syntax types that a client and The following table shows the basic syntax types that a client and
server SHALL be able to handle. server SHALL be able to handle.
text: a sequence of characters, length: 0 to 4095, any characters. text: a sequence of characters, length: 0 to 4095, UTF8
This syntax type is used for free form human readable text intended characters. This syntax type is used for free form human
for human consumption. readable text intended for human consumption.
name: a sequence of characters, length: 1 to 255, any characters. name: a sequence of characters, length: 1 to 255, UTF8 characters.
This syntax type is used for referencing some object or entity via This syntax type is used for referencing some object or entity
a user-friendly string, such as a Printer name, a document name, a via a user-friendly string, such as a Printer name, a document
user name, or a host name. name, a user name, or a host name.
fileName: a sequence of characters, length: 1 to 1024, any fileName: a sequence of characters, length: 1 to 1024, UTF8
characters. This syntax type is used for referencing some file. characters. This syntax type is used for referencing some file.
The limit is the same as in POSIX and Microsoft NT. The limit is the same as in POSIX and Microsoft NT.
keyword: a sequence of characters, length: 1 to 255, containing only Expires January 14, 1998
the characters ASCII letters, ASCII digits, hyphen ("-"), keyword: a sequence of characters, length: 1 to 255, containing
underscore ("_"). The first character MUST be an ASCII letter. only the characters ASCII lowercase letters ("a" - "z"), ASCII
This syntax type is used for enumerating semantic identifiers of digits ("0" - "9"), hyphen ("-"), and underscore ("_"). The
entities in the abstract protocol (specified in this document). first character MUST be an ASCII lowercase letter. This syntax
These entities can be attribute names or values of attributes. type is used for enumerating semantic identifiers of entities in
When a keyword is used to represent an attribute (its name), it the abstract protocol (specified in this document). These
MUST be unique within the full scope of IPP objects and attributes. entities can be attribute names or values of attributes. When a
When a keyword is used to represent a value of an attribute, it keyword is used to represent an attribute (its name), it MUST be
MUST be unique just within the scope of that attribute. That is, unique within the full scope of IPP objects and attributes. When
the same keyword can not be used for two different values within a keyword is used to represent a value of an attribute, it MUST
the same attribute to mean two different semantic ideas. However, 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, the same keyword can be used across two or more attributes,
representing different semantic ideas for each attribute. representing different semantic ideas for each attribute.
enum: an enumerated integer value that is in the range from -2**31
to 2**31 - 1. Each value has an associated keyword name. Each
attribute (whose syntax is enum) enumerates the values that are
defined for the attribute. The enum type is used for attributes
for which there are enum values assigned by other standards, such
as SNMP MIBs. A number of attribute enum values in this
specification are also used for corresponding attributes in the
IETF Printer MIB [1] and the Job Monitoring MIB [27]. Enums are
not used for attributes to which the system administrator may
assign values. Values in the range 2**30 to 2**31 - 1 are
reserved for private or experimental use. Implementers are
warned that use of such values may conflict with other
implementations. Implementers are encouraged to request
registration of enum values following the procedures in Section
6.
uri: a sequence of characters as defined in rfc1738 and rfc1808. uri: a sequence of characters as defined in rfc1738 and rfc1808.
This syntax type is used for carrying Universal Resource This syntax type is used for carrying Universal Resource
Identifiers. Identifiers.
uriScheme: a sequence of characters representing the URI Scheme. uriScheme: a sequence of characters representing the URI Scheme.
These include 'http' for HTTP schemed URIs (e.g., http://...), and These include 'http' for HTTP schemed URIs (e.g., http://...),
'ftp' for FTP schemed URIs (e.g., ftp://...). and 'ftp' for FTP schemed URIs (e.g., ftp://...).
locale: a standard identifier for country and language. The values locale: a standard identifier for human language and optionally a
for this syntax type are taken from RFC 1766 [26]. country. The values for this syntax type are taken from RFC 1766
[26]. RFC 1766 does not have provision for expressing the coded
character set component of a locale. The coded character set
used in the IPP protocol SHALL be UTF-8 [28].
ISSUE: The term 'locale' usually includes country, language, and
coded character set. But our data type and RFC 1766 do not
Expires January 14, 1998
include coded character set. Should we change the name from
'locale' to 'human-language' and the corresponding attributes
from "user-locale" to "user-language", and "printer-locale" to
"printer-language" (though printer language is what IANA
registers for our document formats)?
June 23, 1997, Expires December 23, 1997
octetString: a sequence of octets. This syntax type is used for octetString: a sequence of octets. This syntax type is used for
opaque data, such as the document-content. opaque data, such as the document-content.
boolean: two values of 'true' and 'false'. This syntax type is like boolean: two values of 'true' and 'false'. This syntax type is
a keywordSet, but there are only two values. Note: An application like a keywordSet, but there are only two values. Note: An
might use a checkbox for an attribute with this syntax type. application might use a checkbox for an attribute with this
syntax type.
integer: an integer value that is in the range from -2**31 to 2**31 integer: an integer value that is in the range from -2**31 to
- 1. Each attribute specifies the range constraint explicitly if 2**31 - 1. Each attribute specifies the range constraint
the range is different from the full range of possible integer explicitly if the range is different from the full range of
values (e.g., 0 - 100 for the "job-priority" attribute). possible integer values (e.g., 0 - 100 for the "job-priority"
attribute).
dateTime: a standard, fixed length representation of date and time dateTime: a standard, fixed length representation of date and time
(to the nearest second) as defined in RFC 1123 [27]. For example, (to the nearest second) as defined in RFC 1123 [27]. For
Sun, 06 Nov 1994 08:49:37 GMT. This is a fixed-length subset of example, Sun, 06 Nov 1994 08:49:37 GMT. This is a fixed-length
that defined by RFC 1123 (an update to RFC 822). All values MUST subset of that defined by RFC 1123 (an update to RFC 822). All
be represented in Greenwich Mean Time (GMT). This is indicated by values MUST be represented in Greenwich Mean Time (GMT). This is
the inclusion of "GMT" as the three-letter abbreviation for time. indicated by the inclusion of "GMT" as the three-letter
abbreviation for time.
seconds: a non-negative integer with implicit units of seconds. seconds: a non-negative integer with implicit units of seconds.
This is used for relative time. This is used for relative time.
milliseconds: a non-negative integer with implicit units of milliseconds: a non-negative integer with implicit units of
milliseconds. This is used for relative time. milliseconds. This is used for relative time.
1setOf X: 1 or more values of type X. This syntax type is used for 1setOf X: 1 or more values of type X. This syntax type is used
multi-valued attributes, whose value is a set of values. Note: for multi-valued attributes, whose value is a set of values.
The syntax type is called "1setOf" to indicate that set of values Note: The syntax type is called "1setOf" to indicate that set of
SHALL NOT be empty (a set of size 0). values SHALL NOT be empty (a set of size 0).
rangeOf X: a range of value of type X. This syntax type is used rangeOf X: a range of value of type X. This syntax type is used
for ordered values (numeric, lexical, etc.) such as integers. for ordered values (numeric, lexical, etc.) such as integers.
6.1.1 Attribute Extensibility 4.1.1 Attribute Extensibility
This document uses prefixes to the "keyword" basic syntax type in This document uses prefixes to the "keyword" and "enum" basic
order to communicate extra information to the reader through its syntax type in order to communicate extra information to the reader
name. This extra information need not be represented in an through its name. This extra information need not be represented in
implementation because it is unimportant to a client or Printer. The
table below describes the prefixes and their meaning.
"type1": The editor MUST revise the IPP standard to add a new name. Expires January 14, 1998
No private names are allowed. an implementation because it is unimportant to a client or Printer.
The table below describes the prefixes and their meaning.
"type2": Implementers can, at any time, add new values by proposing "type1": The IPP standard must be revised to add a new keyword or
them to the PWG for registration (or an IANA-appointed registry a new enum. No private keywords or enums are allowed.
June 23, 1997, Expires December 23, 1997 "type2": Implementers can, at any time, add new keyword or enum
advisor after the PWG is no longer certified) where they are values by proposing them to the IPP working group for
reviewed for approval. IANA keeps the registry. Implementers can registration (or an IANA-appointed registry advisor after the IPP
support private (unregistered) with a suitable distinguishing working group is no longer certified) where they are reviewed for
prefix, such as "-xxx-" where xxx is the company name registered approval. IANA keeps the registry.
with IANA for use in domain names.
"type3": Implementers can, at any time, add new values by submitting "type3": Implementers can, at any time, add new keyword and enum
a registration request directly to IANA, no PWG or IANA-appointed values by submitting a registration request directly to IANA, no
registry advisor review is required. Implementers can support IPP working group or IANA-appointed registry advisor review is
private (unregistered) names with a suitable distinguishing prefix, required.
such as "-xxx-" where xxx is the company name registered with IANA
for use in domain names.
"type4": Anyone (system administrators, system integrators, site "type4": Anyone (system administrators, system integrators, site
managers, etc.) can, at any time, add new installation-defined managers, etc.) can, at any time, add new installation-defined
names to a local system. Care SHOULD be taken by the implementers values (keywords or new enum values) to a local system. Care
to see that keywords do not conflict with other keywords defined by SHOULD be taken by the implementers to see that keywords do not
the standard or as defined by the implementing product. There is no conflict with other keywords defined by the standard or as
registration or approval procedure for type 4 keywords. defined by the implementing product. There is no registration or
approval procedure for type 4 keywords.
Each of the four types above assert some sort of registry or review Each of the four types above assert some sort of registry or review
process in order to be valid. "type1" values are only valid if the process in order to be valid extensions. "type1" extensions are only
specification is updated, "type2" values are only valid if the PWG or an valid if the specification is updated, "type2" extensions are only
IANA approved review process approves them, "type3" values are only valid if the IPP working group or an IANA approved review process
valid if IANA registers the value with no review process required, and approves them, "type3" extensions are only valid if IANA registers the
"type4" values are always valid (there is no review or registration value with no review process required, and "type4" extensions are
process required). Any typeN value MAY be registered using a process always valid (there is no review or registration process required).
for some typeM where M is less than N, however such registration is NOT Any typeN value MAY be registered using a process for some typeM where
REQUIRED. For example, a type4 value MAY be registered in a type 1 M is less than N, however such registration is NOT REQUIRED. For
manner (by being included in a future version of an IPP specification) example, a type4 value MAY be registered in a type 1 manner (by being
however it is NOT REQUIRED. included in a future version of an IPP specification) however it is
NOT REQUIRED.
Note: This specification defines keyword values for all of the above This specification defines keyword and enum values for all of the
types, including type4 keywords. above types, including type4 keywords.
6.2 Job Template Attributes For private (unregistered) keyword extensions, implementers SHOULD use
keywords with a suitable distinguishing prefix, such as "xxx-" where
xxx is the (lowercase) company name registered with IANA for use in
domain names [30].
Note: RFC 1035 [30] indicates that while upper and lower case letters
are allowed in domain names, no significance is attached to the case.
Expires January 14, 1998
That is, two names with the same spelling but different case are to be
treated as if identical. Also, he labels in a domain name must follow
the rules for ARPANET host names: They must start with a letter, end
with a letter or digit, and have as interior characters only letters,
digits, and hyphen. Labels must be 63 characters or less.
ISSUE: Since "." is allowed in fully qualified domain names we must
state that "." gets mapped to "_" for keywords or we must allow for
"." in keywords. Also, why do we not allow uppercase in keywords?
Should we make keyword be much more broad (all printable ASCII) now
that we have binary delimeters?
For private (unregistered) enum extension, implementers SHOULD values
in the reserved integer range (see "enum").
4.2 Job Template Attributes
Job Template attributes describe job processing behavior. Take for Job Template attributes describe job processing behavior. Take for
example, a generic Job Template attribute called "xxx": example, a generic Job Template attribute called "xxx":
1. "xxx" is optionally supplied by the client in a create request. 1. "xxx" is optionally supplied by the client in a create request.
If "xxx" is supplied, the client is specifying that the Printer If "xxx" is supplied, the client is specifying that the Printer
will apply a specific job processing behavior to this job while SHALL apply a specific job processing behavior to this job while
processing the Job. When "xxx" is not supplied, the client expects processing the Job. When "xxx" is not supplied by the client,
the Printer will apply the default job processing behavior. the the Printer applies thedefault job processing behavior.
June 23, 1997, Expires December 23, 1997
2. "xxx-supported" is a Printer attribute that describes which 2. "xxx-supported" is a Printer attribute that describes which
behaviors are supported by a Printer. "xxx-supported" is a behaviors are supported by a Printer. "xxx-supported" is a
CONDITIONALLY MANDATORY attribute which means that the Printer CONDITIONALLY MANDATORY attribute, that is the "xxx-supported"
only supports the attribute if it is capable of realizing one or attribute is MANDATORY if the Printer is capable of realizing one
more of the behaviors associated with the attribute and its values. or more of the behaviors associated with the attribute and its
A client can query the Printer and find out what behaviors are values. A client can query the Printer and find out what
supported by inspecting at the values in the "xxx-supported" behaviors are supported by inspecting the values of the "xxx-
attribute. supported" attribute.
3. The Printer also supports a default value attribute named "xxx". 3. The Printer also supports a default value attribute named "xxx".
This default value attribute describes what will be done when no This default value attribute describes what will be done when no
other job processing information is supplied by the client (either other job processing information is supplied by the client
explicitly as an IPP attribute in the create request or implicitly (either explicitly as an IPP attribute in the create request or
as an embedded instruction within the job data). Along with the implicitly as an embedded instruction within the job data).
supported attribute, the default value attribute is also Along with the supported attribute, the default value attribute
CONDITIONALLY MANDATORY. However, if the Printer supports the is also CONDITIONALLY MANDATORY. However, if the Printer
"xxx-supported" attribute, the Printer MUST support the supports either the "xxx" default value attribute or the "xxx-
corresponding default value attribute and vice versa. supported" attribute, the Printer MUST support the other and vice
versa.
4. If a client application wishes to present an end user with a list Expires January 14, 1998
of supported and default values from which to choose, the client 4. If a client application wishes to present an end user with a
program SHOULD query the supported and default value attributes. list of supported and default values from which to choose, the
The values that the client then supplies in the create request will client program SHOULD query the Printer for the supported and
all fall within the supported values at the Printer. When querying default value attributes. The values that the client then
the Printer, the client MAY enumerate each attribute by name in the supplies in the create request will all fall within the supported
Get-Attributes Request, or the client MAY just name the "printer- values of the Printer. When querying the Printer, the client MAY
job-template" group in order to get the complete set of supported enumerate each attribute by name in the Get-Attributes Request,
and default value attributes which are supported. or the client MAY just name the "printer-job-template" group in
order to get the complete set of supported and default value
attributes which are supported.
The "job-priority" attribute is an example of a Job Template attribute. The "job-priority" attribute is an example of a Job Template
It is an integer in the range from 1 to 100. A client can query the attribute. It is an integer in the range from 1 to 100. A client can
Printer for the "job-priority-supported" attribute and the "job- query the Printer for the "job-priority-supported" attribute and the
priority" default value attribute. The supported attribute contains a "job-priority" default value attribute. The supported attribute
set of supported priority values (a range). The default value attribute contains a range of supported priority values. The default value
contains the job priority value that will be used for a new job if the attribute contains the job priority value that will be used for a new
client does not supply one in the create request. If the client does job if the client does not supply one in the create request. If the
supply the "job-priority" attribute, the Printer validates the value to client does supply the "job-priority" attribute, the Printer validates
make sure that it falls within the range of supported values. If the the value to make sure that it falls within the range of supported
client-supplied value is supported, the Job object is created and the values. If the client-supplied value is supported, the Job object is
"job-priority" attribute is populated with that value. The Job object, created and the "job-priority" attribute is populated with that value.
when queried, returns the value supplied by the client. If the client The Job object, when queried, returns the value supplied by the
does not supply a "job-priority" value in the create request, the Job client. If the client does not supply a "job-priority" value in the
object is created, but no "job-priority" attribute is associated with create request, the Job object is created, but no "job-priority"
the Job. The client queries the Printer's default value "job-priority" attribute is associated with the Job. The client queries the
value to find out at what priority the job will be processed. Printer's default value "job-priority" value to find out at what
priority the job will be processed.
June 23, 1997, Expires December 23, 1997 The table below summarizes 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 ("xxx-supported")
are CONDITIONALLY MANDATORY.
3. All Printer default value attributes ("xxx") are CONDITIONALLY
MANDATORY. MANDATORY.
3. All Printer default value attributes are CONDITIONALLY MANDATORY. Note: If the Printer implements either the default value attribute
However, if the Printer implements that "supported" attribute then or the supported values attribute, the Printer MUST also
the Printer MUST also implement the default value attribute as implement the other and vice versa.
well. and vice versa.
The table only shows exceptions to the above rules. The first column The table only shows exceptions to the above rules. The first column
of the table (Job) shows the name and syntax for each Job Template of the table (Job) shows the name and syntax for each Job Template
Expires January 14, 1998
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). Section All of the attributes in the first column make syntax is used). All of the attributes in the first column make up the
up the groupThe last two columns show the name and syntax for each Job "job-template" group. The last two columns show the name and syntax
Template attribute in the Printer object (the default value attribute for each Job Template attribute in the Printer object (the default
and the supported attribute). A "No" in the table means the Printer value attribute and the supported attribute). A "No" in the table
SHALL NOT support the attribute. A "MAN" indicates that the attribute means the Printer SHALL NOT support the attribute. A "MAN" indicates
is MANDATORY. that the attribute is MANDATORY.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| Job |Printer: Default Value| Printer: Supported | | Job |Printer: Default Value| Printer: Supported |
+----------------------+----------------------+----------------------+ +===================+======================+======================+
| job-name | No | No | | job-name | No | No |
| (name, MAN) | | | | (name, MAN) | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-sheets | job-sheets |job-sheets-supported | | job-sheets | job-sheets |job-sheets-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| notify-events | notify-events | notify-events- | | notify-events | notify-events | notify-events- |
|(1setOf type2 keyword)|(1setOf type2 keyword)| supported | |(1setOf |(1setOf type2 keyword)| supported |
| | |(1setOf type2 keyword)| | type2 keyword) | |(1setOf type2 keyword)|
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
|notify-addresses |No |notify-addresses | |notify-addresses |No |notify-addresses |
|(1setOf uri) | |-supported | |(1setOf uri) | |-supported |
| | |(1setOf uri scheme) | | | |(1setOf uri scheme) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-priority | job-priority |job-priority-supported| | job-priority | job-priority |job-priority-supported|
| (integer 1-100) | (integer 1-100) |(rangeOf integer | | (integer 1-100) | (integer 1-100) |(rangeOf integer |
| | | 1-100) | | | | 1-100) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-hold-until | job-hold-until | job-hold-until- | | job-hold-until | job-hold-until | job-hold-until- |
| (type4 keyword) | (type4 keyword) | supported | | (type4 keyword) | (type4 keyword) | supported |
| | |(1setOf type4 keyword)| | | |(1setOf type4 keyword)|
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
|multiple-documents-are|multiple-documents-are|multiple-documents-are| |multiple-document- |multiple-document- |multiple-document- |
| (type2 keyword) | (type2 keyword) |-supported | | handling | handling |handling-supported |
| | |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| best-effort | best-effort | best-effort-supported| | best-effort | best-effort | best-effort-supported|
| (type2 keyword) | (type2 keyword, MAN) |(1setOf type2 keyword,| | (boolean) | (boolean, MAN) |(boolean, MAN) |
| | |MAN) | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| media | media | media-supported | | media | media | media-supported |
| (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)| | (type4 keyword) | (type4 keyword) |(1setOf type4 keyword)|
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| number-up | number-up | number-up-supported | | number-up | number-up | number-up-supported |
| (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)| | (type3 keyword) | (type3 keyword) |(1setOf type3 keyword)|
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| sides | sides | sides-supported | | sides | sides | sides-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| resolution | resolution | resolution-supported | | printer-resolution| printer-resolution | printer-resolution- |
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 enum) | (type2 enum) | supported |
| | | | | | |(1setOf type2 enum) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| quality | quality | quality-supported | | print-quality | print-quality | print-quality- |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 enum) | (type2 enum) | supported |
| | | | | | |(1setOf type2 enum) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| finishings | finishings | finishings-supported | | finishings | finishings | finishings-supported |
|(1setOf type2 keyword)|(1setOf type2 keyword)|(1setOf type2 keyword)| |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) |
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| copies | copies | copies-supported | | copies | copies | copies-supported |
| (integer: 0 - MAX) | (integer: 0 - MAX) | (rangeOf integer | | (integer: 1 - MAX)| (integer: 1 - MAX) | (rangeOf integer |
| | | 0- MAX) | | | | 1- MAX) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| document-format | document-format | document-format- | | document-format | document-format | document-format- |
| (type2 keyword) | (type2 keyword) | supported | | (type2 enum) | (type2 enum) | supported |
| | |(1setOf type3 keyword)| | | |(1setOf type2 enum) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| compression | No | compression-supported| | compression | No | compression-supported|
| (type3 keyword) | |(1setOf type3 keyword)| | (type3 keyword) | |(1setOf type3 keyword)|
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-k-octets | No |job-k-octets-supported| | job-k-octets | No |job-k-octets-supported|
| (integer) | | (rangeOf integer) | | (integer) | | (rangeOf integer) |
| | | | | | | |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-impressions | No | job-impressions- | | job-impressions | No | job-impressions- |
| (integer) | | supported | | (integer) | | supported |
| | | (rangeOf integer) | | | | (rangeOf integer) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-media-sheets | No | job-media-sheets- | | job-media-sheets | No | job-media-sheets- |
| (integer) | | supported | | (integer) | | supported |
| | | (rangeOf integer) | | | | (rangeOf integer) |
+----------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
6.2.1 job-name (name) 4.2.1 job-name (name)
This attribute is the name of the job. It is a name that is more user This attribute is the name of the job. It is a name that is more user
friendly than the "job-uri" attribute value. It does not need to be friendly than the "job-uri" attribute value. It does not need to be
unique. unique.
If "job-name" is not supplied in the create request, the Printer, on If "job-name" is not supplied in the create request, the Printer, on
creation of the Job, SHALL generate a name. The name MAY be generated creation of the Job, SHALL generate a name. The name MAY be generated
using the name of the first Document in the Job ((the "document-name" using the name of the first Document in the Job (the "document-name"
attribute).. If "job-name" is supplied in the create request, the attribute). If "job-name" is supplied in the create request, the
Printer SHALL use its value as the name of the created Job. Printer SHALL use its value as the name of the created Job.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
6.2.2 job-sheets (type4 keyword) 4.2.2 job-sheets (type4 keyword)
This attribute determines which if any banner page(s) SHALL be printed This attribute determines which if any banner page(s) SHALL be printed
with a job. with a job.
Standard values are: Standard values are:
'none': no job sheet is printed 'none': no job sheet is printed
'standard': a site specific standard job sheet is printed 'standard': a site specific standard job sheet (start only) or
sheets (start and end) is printed
To force no job sheets, the system administrator SHALL set the supported To force no job sheets, the system administrator SHALL set the
value to only 'none'. To force the use of banner pages, the supported supported value to only 'none'. To force the use of banner pages, the
values SHALL not include 'none'. If a client requests 'none' in the supported values SHALL not include 'none'. In this case, if a client
create request, the request is rejected. requests 'none', the create request is rejected.
6.2.3 notify-events (1setOf type2 keyword) 4.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
sort of notification. The "notify-addresses" attribute is used to some sort of notification. The "notify-addresses" attribute is used
describe the destination addresses for these events. to describe the destination addresses for these events.
Standard values are: Standard values are:
'none': the Printer SHALL not notify. 'none': the Printer SHALL not notify.
'all': the Printer SHALL notify when any of event occurs. 'all': the Printer SHALL notify when any of the events occur.
'job-completion': the Printer SHALL notify when the job containing 'job-completion': the Printer SHALL notify when the job containing
this attribute completes with or without errors. this value completes (i.e., enters the 'completed', 'canceled',
'job-canceled': the Printer SHALL notify when the job containing or 'aborted' state) with or without errors.
this attribute is canceled by the end-user or by the operator, or 'job-problems': the Printer SHALL notify when this job has a
aborts before completion. problem while this job is processing (i.e., when the Job moves
'job-problems': the Printer SHALL notify when this job has a problem from the 'processing' to the 'processing-stopped' state).
while this job is printing. Problems include any of the "job-state- Problems include any of the "job-state-reasons" or "printer-
reasons" or "printer-state-reason" values. state-reason" values.
'printer-problems': the Printer SHALL notify when any job, including 'printer-problems': the Printer SHALL notify when this job is
this job, is affected by a Printer problem (the printer has moved affected by a Printer problem. This happens when the printer
to the stopped state and there is a reason in the printer-state- enters the 'stopped' state while this job is in the 'pending',
reasons attribute) while this job is waiting to print or printing. 'pending-held', 'processing', or 'processing-stopped' state. If
Problems include any of the "job-state-reasons" or "printer-state- the Printer enters the 'stopped' state the reason in the
reason" values. "printer-state-reasons" attribute.
ISSUE: Should these correspond with Job states job-completed, job-
completed-aborted, job-completed-canceled?
6.2.4 notify-addresses (1setOf uri) 4.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
for delivery ) events are to be delivered. The Printer SHALL use this mechanism for delivery ) events are to be delivered. The Printer SHALL
use this attribute as the set of addresses and methods for sending
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
attribute as the set of addresses and methods for sending messages when messages when an event occurs that the end user (job submitter) has
an event occurs that the end user (job submitter) has registered an registered an interest in.
interest in.
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
file. text file.
6.2.5 job-priority (integer(1:100)) 4.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. Among those jobs that are ready indicate the highest possible priority. Among those jobs that are
to print, a Printer SHALL print all jobs with a priority value of n ready to print, a Printer SHALL print all jobs with a priority value
before printing those with a priority value of n-1 for all n. The 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) 4.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
print job SHALL become a candidate for printing. Job print job SHALL become a candidate for printing.
Standard values for named time periods are: Standard values for named time periods are:
'no-hold': immediately, if there are not other reasons to hold the 'no-hold': immediately, if there are not other reasons to hold the
job. job.
'day-time': during the day. 'day-time': during the day.
'evening': evening 'evening': evening
'night': night 'night': night
'weekend': weekend '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
period (by means outside IPP 1.0). An administrator is encouraged to time period (by means outside IPP 1.0). An administrator is
pick names that suggest the type of time period. encouraged to pick names that suggest the type of time period.
If the value of this attribute specifies a time period that is in the If the value of this attribute specifies a time period that is in the
future, the Printer SHALL add the 'job-hold-until-specified' value to future, the Printer SHALL add the 'job-hold-until-specified' value to
the job's "job-state-reasons" attribute and SHALL NOT schedule the the job's "job-state-reasons" attribute, move the job to the 'pending-
print-job for printing until the specified time-period arrives. When held' state, and SHALL NOT schedule the job for printing until the
specified time-period arrives. When the specified time period
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
the specified time period arrives, the Printer SHALL remove the 'job- arrives, the Printer SHALL remove the 'job-hold-until-specified' value
hold-until-specified' value from the job's "job-state-reason attribute" from the job's "job-state-reason attribute" and, if no other job
and, if no other reasons remain, SHALL consider the job as a candidate reasons remain, SHALL consider the job as a candidate for processing
for processing. by moving the job to the 'pending' state.
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
immediately. processing immediately.
6.2.7 multiple-documents-are (type2 keyword) 4.2.7 multiple-documenthandling (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
and b SHALL be treated as a single document for finishing a and b SHALL be treated as a single document for finishing
operations. Also, there SHALL be no slip sheets between files a and operations. Also, there SHALL be no slip sheets between files a
b. If more than one copy is made, the ordering SHALL be a, b, a, b, and b and the Printer SHALL NOT force each document to start on a
.... new page or new media sheet. If more than one copy is made, the
'separate-documents-uncollated-copies': If the files for the job are ordering SHALL be a, b, a, b, ...., and the Printer SHALL force
each copy to start on a new sheet.
'separate-documents-uncollated-copies': If the files for the job
are a and b, then each file SHALL be treated as a single document
for finishing operations. Also, a client may specify that a slip
sheet be placed between files a and b and the Printer shall force
each document copy to start on a new sheet. If more than one
copy is made, the ordering SHALL be a, a, b, b, ....
'separate-documents-collated-copies': If the files for the job are
a and b, then each file SHALL be treated as a single document for a and b, then each file SHALL be treated as a single document for
finishing operations. Also, a client may specify that a slip sheet finishing operations. Also, a client may specify that a slip
be placed between files a and b. If more than one copy is made, sheet be placed between files a and b. If more than one copy is
the ordering SHALL be a, a, b, b, .... made, the ordering SHALL be a, b, a, b, ...., and the Printer
'separate-documents-collated-copies': If the files for the job are a shall force each document copy to start on a new sheet
and b, then each file SHALL be treated as a single document for
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, the
ordering SHALL be a, b, a, b, ....
Both of the 'separate-xxx' values force each new document to start on a
new media sheet.
6.2.8 best-effort (type2 keyword)
A client supplies Job Template attributes to affect the rendering,
production and finishing of the documents in the job. Similar types of
instructions may also be contained in the document to be printed, that
is, within the Page Description Language (PDL) of the document data. If
there is a conflict between the value of one of these IPP Job Template
attributes, and a corresponding instruction in the document (either
implicit or explicit), it is desirable that the value of the attribute
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 4.2.8 best-effort (boolean)
a client requests this value, the Printer guarantees that all IPP
attribute values take precedence over embedded instructions in the
job data (the PDL of the job's documents).
- 'should-honor-ipp-attributes': If a Printer supports this value,
and a client requests this value, the Printer SHOULD try to make
sure that IPP attribute values take precedence over embedded PDL
instructions, however there is no guarantee
ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should- This attribute determines how to control a conflict between what a
honor-attribute-prcedence'? client requests in a create request and what a Printer supports. The
value 'true' means that a best effort attempt to print the Job is
possible (or acceptable). In order to achieve this, the Printer might
have to substitute some supported value for a requested value which is
unsupported. The value 'false' means that total fidelity is required;
A Printer SHALL implement the "best-effort-supported" attribute. Notice Expires January 14, 1998
that since 'should-honor-ipp-attributes' does not offer any type of a best effort attempt to print the Job is not possible (or not
guarantee, a Printer may not do a very "good" job of implementing the acceptable). In other words, the job must be printed exactly as
semantics of "should", but it would still be a conforming specified in the create request. If one or more of the client-
implementation. supplied values in the create request is not supported by the Printer,
the Printer rejects the create request.
If there is ever a conflict between what a Printer supports and what an There are two cases to consider:
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"? - The Printer's "best-effort-supported" attribute is set to 'true':
This indicates that the Printer is capable of best effort
printing. In this case either the "best-effort" Job Template
attribute in the create request or the Printer's "best-effort"
(the default value attribute) can be set to either 'true' or
'false'. If "best-effort" is set to 'false' the Printer ensures
full fidelity of the other IPP attributes in the create request.
That is, if any other attribute in the create-request is set to a
value that is not supported, the Printer rejects the create
request. If "best-effort" attribute is set to 'true', the the
Printer makes whatever substitutions are necessary to ensure that
the job is printed. For example, if a client supplies a
"finishings" Job Template attribute set to 'staple' but the
printer does not support stapling (not a feature or it is
temporarily out of staples) then if the "best-effort" attribute
is set to 'true' the job can still be printed but it is not
stapled. If "best-effort" is set to 'false', the create request
is rejected since the Printer can not guarantee that the job will
be stapled.
If the value of this attribute is 'shall-honor-ipp-attributes', the - The Printer's "best-effort-supported" attribute is set to
implementation MUST guarantee that the IPP attribute values take 'false': This indicates that the Printer is not capable of (or
precedence over any related job processing instructions in the PDL Job's will not support) best effort printing. The Job Template
document data. This can be done by modifying the interpreter within the attributes supplied by the client in the create request must
output device itself to understand IPP attributes, or by merging theses match all of the Printer's supported values, or else the Printer
Job Template attributes directly into the document data, or in any other rejects the create request. In this case Printer's "best-effort"
implementation specific manner. In any case, the semantics of 'shall- attribute (the default value attribute) MUST also be set to
honor-ipp-attributes' MUST be preserved. 'false'. If the client supplies the "best-effort" Job Template
create request, it too MUST be set to 'false'. If it is set to
'true', the Printer rejects the create request.
June 23, 1997, Expires December 23, 1997 Note: that the "best-effort" attribute in a create request is unlikely
Note: Since 'should-honor-ipp-attributes' does not offer any type of to be used much. Many clients will submit a job with no attributes,
guarantee, a Printer may not do a very "good" job of implementing the and the Printer will use default values. Other clients will submit a
semantics of 'should', but it would still be a conforming job via a GUI that limits the attribute values to values which are
implementation. supported. Best-effort is useful in the GUI context only if a user
expects the job to be moved to another printer and prefers a sub-
optimal result to nothing at all. Best-effort is most useful in the
case where an end-user uses a command line interface to request
attributes that might not be supported.
6.2.9 media (type4 keyword) Expires January 14, 1998
4.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 uses for all
all pages of the document regardless of what media are specified within pages of the Job.
the document.
The values for "media" include medium-names, medium-sizes, input-trays The values for "media" include medium-names, medium-sizes, input-trays
and electronic forms so that one attribute specifies the media. If a and electronic forms so that one attribute specifies the media. If a
printer allows a client to specify a medium name as the value of this printer allows a client to specify a medium name as the value of this
attribute, such a medium name implicitly selects an input-tray that attribute, such a medium name implicitly selects an input-tray that
contains the specified medium. If a printer allows a client to specify contains the specified medium. If a printer allows a client to
a medium size as the value of this attribute, such a medium size specify a medium size as the value of this attribute, such a medium
implicitly selects a medium name which in turn implicitly selects an size implicitly selects a medium name which in turn implicitly selects
input-tray that contains the medium with the specified size. If a an input-tray that contains the medium with the specified size. If a
printer allows a client to specify an input-tray as the value of this printer allows a client to specify an input-tray as the value of this
attribute, such an input-tray implicitly selects the medium that is in attribute, such an input-tray implicitly selects the medium that is in
that input-tray at the time the job prints. This case includes manual- that input-tray at the time the job prints. This case includes manual-
feed input-trays. If a printer allows a client to specify an electronic feed input-trays. If a printer allows a client to specify an
form as the value of this attribute, such an electronic form implicitly electronic form as the value of this attribute, such an electronic
selects a medium-name which in turn implicitly selects an input-tray form implicitly selects a medium-name which in turn implicitly selects
that contains the medium specified by the electronic form. The an input-tray that contains the medium specified by the electronic
electronic form also implicitly selects an image that the Printer SHALL form. The electronic form also implicitly selects an image that the
merge with the data from the document as its prints each page. Printer SHALL merge with the data from the document as its prints each
page.
Standard values are (taken from ISO DPA and the Printer MIB) and are Standard values are (taken from ISO DPA and the Printer MIB) and are
listed in section 14. listed in section 13.
4.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
upon a single side of an instance of a selected medium. impose upon a single side of an instance of a selected medium.
Standard values are: Standard values are:
'none': The Printer SHALL not include any embellishments and SHALL 'none': The Printer SHALL not include any embellishments and SHALL
place one logical page on a single side of an instance of the place one logical page on a single side of an instance of the
selected medium without any translation, scaling, or rotation. selected medium without any translation, scaling, or rotation.
'one': The Printer SHALL place one logical page on a single side of 'one': The Printer SHALL place one logical page on a single side of
an instance of the selected medium (MAY add some sort of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
June 23, 1997, Expires December 23, 1997
'two': The Printer SHALL place two logical page on a single side of 'two': The Printer SHALL place two logical page on a single side of
an instance of the selected medium (MAY add some sort of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
'four': The Printer SHALL place four logical page on a single side of 'four': The Printer SHALL place four logical page on a single side
an instance of the selected medium (MAY add some sort of of an instance of the selected medium (MAY add some sort of
translation, scaling, or rotation). translation, scaling, or rotation).
This attribute primarily controls the translation, scaling and rotation Expires January 14, 1998
of page images, but a site may choose to add embellishments, such as This attribute primarily controls the translation, scaling and
borders to each logical page. rotation of page images, but a site may choose to add embellishments,
such as borders to each logical page.
6.2.11 sides (type2 keyword) 4.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.
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
side of consecutive media sheets. same 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
image upon front and back sides of consecutive media sheets, such page-image upon front and back sides of consecutive media sheets,
that the orientation of each pair of source-pages on the medium such that the orientation of each pair of source-pages on the
would be correct for the reader as if for binding on the long edge. medium would be correct for the reader as if for binding on the
This imposition is sometimes called 'duplex'. long edge. 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
image upon front and back sides of consecutive media sheets, such page-image upon front and back sides of consecutive media sheets,
that the orientation of each pair of source-pages on the medium such that the orientation of each pair of source-pages on the
would be correct for the reader as if for binding on the short medium would be correct for the reader as if for binding on the
edge. This imposition is sometimes called 'tumble' or 'head-to- short edge. This imposition is sometimes called 'tumble' or
toe'. 'head-to-toe'.
'two-sided-long-edge', 'two-sided-short-edge', 'tumble'. 'duplex', and 'two-sided-long-edge', 'two-sided-short-edge', 'tumble'. 'duplex', and
'head-to-toe' all work the same for portrait or landscape, that is, 'head-to-toe' all work the same for portrait or landscape, that is,
'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape. 'head- 'head-to-toe' is 'tumble' in portrait but 'duplex' in landscape.
to-head' also switches between 'duplex' and 'tumble' when using portrait 'head-to-head' also switches between 'duplex' and 'tumble' when using
and landscape modes. portrait and landscape modes.
6.2.12 printer-resolution (type2 keyword) 4.2.12 printer-resolution (type2 enum)
This job attribute specifies the resolution that the Printer SHOULD use. This attribute identifies the resolution that Printer uses for a
certain Job.
The values are type2 keywords which represent single integers or pair of The values are type2 enums 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
x direction, i.e., in the direction of the shortest dimension of the the x direction, i.e., in the direction of the shortest dimension of
medium, so that the value is independent of whether the printer feeds the medium, so that the value is independent of whether the printer
long edge or short edge first. feeds long edge or short edge first.
June 23, 1997, Expires December 23, 1997
The standard values are: The standard values are:
ISSUE: TBD normal: res-100: res-300x300: ... 'normal'(3):
'normal': Expires January 14, 1998
'res-100': 'res-100'(4): 100 x 100 dpi
'res-200': 'res-200'(5): 200 x 200 dpi
'res-240': 'res-240'(6): 240 x 240 dpi
'res-300': 'res-300'(7): 300 x 300 dpi
'res-600': 'res-360'(8): 360 x 360 dpi
'res-800': 'res-400'(9): 400 x 400 dpi
'res-1200': 'res-600'(10): 600 x 600 dpi
'res-1800': 'res-720'(11): 720 x 720 dpi
'res-100x200': 'res-800'(12): 800 x 800 dpi
'res-300x600': 'res-1200'(13): 1200 x 1200 dpi
'res-600x300': 'res-1440'(14): 1440 x 1440 dpi
'res-400x800': 'res-1600'(15): 1600 x 1600 dpi
'res-800x400': 'res-1800'(16): 1800 x 1800 dpi
'res-600x1200': 'res-100x200'(100): 100 x 200 dpi
'res-1200x600': 'res-200x100'(101): 200 x 100 dpi
'res-1800x600': 'res-300x600'(102): 300 x 600 dpi
'res-600x300'(103): 600 x 300 dpi
'res-360x720'(104): 360 x 260 dpi
'res-720x360'(105): 720 x 360 dpi
'res-400x800'(106): 400 x 800 dpi
'res-800x400'(107): 800 x 400 dpi
'res-600x1200'(108): 600 x 1200 dpi
'res-1200x600'(109): 1200 x 600 dpi
'res-720x1440'(110): 720 x 1440 dpi
'res-1440x720'(111): 1440 x 720 dpi
'res-1800x600'(112): 1800 x 600 dpi
6.2.13 print-quality (type2 keyword) ISSUE: Should we add metric enums? Such as
This job attribute specifies the print quality that the Printer SHOULD 'res-8x3.85'(200): 8 lines per 3.85 mm (fax)
use. 'res-8x7.7'(201): 8 lines per 7.7 mm (fax)
'res-8x15.4'(202): 8 lines per 15.4 mm (fax)
'res-16x15.4'(203): 16 lines per 15.4 mm (fax)
4.2.13 print-quality (type2 enum)
This attribute specifies the print quality that the Printeruses for a
certain Job.
The standard values are: The standard values are:
draft: lowest quality available on the printer 'draft'(3): lowest quality available on the printer
normal: normal or intermediate quality on the printer 'normal'(4): normal or intermediate quality on the printer
high: highest quality available on the printer 'high'(5): highest quality available on the printer
6.2.14 copies (integer(1:2**31 - 1)) Expires January 14, 1998
4.2.14 copies (integer(1:2**31 - 1))
This job attribute specifies the number of copies of the job to be This attribute specifies the number of copies of the job to be
printed. printed.
Note: The effect of this attribute on jobs and documents is controlled Note: The effect of this attribute on job with multiple documents is
by the "multiple-documents-are" job attribute (section 6.2.7). controlled by the "multiple-document-handling" job attribute (section
4.2.7).
6.2.15 finishing (1setOf type2 keyword)
This job attribute identifies the finishing operations that the Printer 4.2.15 finishing (1setOf type2 enum)
SHOULD apply to each copy of each printed document in the job where the
June 23, 1997, Expires December 23, 1997 This attribute identifies the finishing operations that the Printer
definition of a copy is controlled by the "multiple-documents-are" Job uses for each copy of each printed document in a particular Job. The
attributes. definition of a copy for Jobs with multiple documents is controlled by
the "multiple-document-handling" attribute.
Standard values are: Standard values are:
none: 'none'(3): Perform no finishing
staple: 'staple'(4): Bind the document(s) with one or more staples. The
... exact number and placement of the staples is site-defined.
6.2.16 document-format (type2 keyword) 'staple-top-left'(5): Place one or more staples on the top left
corner of the document(s).
'staple-bottom-left'(6): Place one or more staples on the bottom
left corner of the document(s).
'staple-top-right'(7): Place one or more staples on the top right
corner of the document(s).
'staple-bottom-right'(8): Place one or more staples on the bottom
right corner of the document(s).
'saddle-stitch'(9): Bind the document(s) with one or more staples
(wire stitches) along the middle fold. The exact number and
placement of the stitches is site-defined.
'edge-stitch'(10): Bind the document(s) with one or more staples
(wire stitches) along one edge. The exact number and placement
of the staples is site-defined.
'punch'(11): This value indicates that holes are required in the
finished document. The exact number and placement of the holes is
site-defined The punch specification MAY be satisfied (in a
site- and implementation-specific manner) either by
drilling/punching, or by substituting pre-drilled media.
'cover'(12): This value is specified when it is desired to select
a non-printed (or pre-printed) cover for the document. This does
not supplant the specification of a printed cover (on cover stock
medium) by the document itself.
This optional attribute defines the document format for each Document in Expires January 14, 1998
a Job. The standard values for this attribute are keywords. Since the 'bind'(13): This value indicates that a binding is to be applied
complete list is rather long, the full enumeration of standard values is to the document; the type and placement of the binding is site-
found in section 13 APPENDIX B - "document-format" Values. defined."
4.2.16 document-format (type2 keyword)
6.2.17 compression (type3 keyword) This attribute defines the document format for each Document in a Job.
The standard values for this attribute are enums. Since the complete
list is rather long, the full enumeration of standard values is found
in section 12 APPENDIX C: "document-format" enum values.
If the "document-format" is unknown for a certain document, the client
SHALL NOT supply the attribute in the create request or the Send-
Document Request.
4.2.17 compression (type3 keyword)
This attribute identifies compression algorithms used for compressed This attribute identifies compression algorithms used for compressed
document data. document data.
Standard values for this attribute are: Standard values for this attribute are:
'none': no compression is used. 'none': no compression is used.
'zip':ZIP compression technology 'zip':ZIP compression technology
'tar': UNIX TAR compression technology 'tar': UNIX TAR compression technology
6.2.18 job-k-octets (integer(0:2**31 - 1)) 4.2.18 job-k-octets (integer(0:2**31 - 1))
This Job attribute specifies the total size of the job in K octets, This attribute specifies the total size of the job in K octets, i.e.,
i.e., in units of 1024 octets. The value SHALL be rounded up, so that a in units of 1024 octets. The value SHALL be rounded up, so that a job
job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048
2048 SHALL be 2, etc. This attribute is not intended to be a counter as SHALL be 2, etc.
in the Job Monitoring MIB; it is intended to be useful routing and
scheduling information if known. If the client does not supply this
attribute in the create request, the Printer might not be able to
compute this value at the time the Job is created.
6.2.19 job-impressions (integer(0:2**31 - 1)) Note: This attribute and the following two attributes ("job-
impressions" and "job-media-sheets") are not intended to be counters;
they are intended to be useful routing and scheduling information if
known. The Printer tries to compute the value if it is not supplied in
the create request. The Printer, however, might not be able to
compute this value at the time the Job is created. If not, the
Printer may support this attribute at any later time as it is able to
compute value.
This job attribute specifies the total size of the job in impressions. 4.2.19 job-impressions (integer(0:2**31 - 1))
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
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
value (if not supplied by the client in the request) at the time the Job
is created. If not, the Printer may support this attribute at any later
time as it is able to compute the total size of the Job.
June 23, 1997, Expires December 23, 1997 This attribute specifies the total size of the job in impressions.
6.2.20 job- media-sheets (integer(0:2**31 - 1))
This job attribute specifies the total size of the job in media-sheets. Expires January 14, 1998
This attribute is not intended to be a counter as in the Job Monitoring 4.2.20 job-media-sheets (integer(0:2**31 - 1))
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
in the creaet 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
is created. If not, the Printer may support this attribute at any later
time as it is able to compute the total size of the Job.
6.3 Job Description Attributes This attribute specifies the total size of the job in media-sheets.
4.3 Job Description Attributes
The attributes in this section form the attribute group called "job- The attributes in this section form the attribute group called "job-
description". The following table summarizes these attributes. The description". The following table summarizes these attributes. The
third column indicates whether the attribute is a MANDATORY attribute. third column indicates whether the attribute is a MANDATORY attribute.
If it is not MANDATORY, then it is OPTIONAL. If it is not MANDATORY, then it is OPTIONAL.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri | uri | MANDATORY | | job-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri-user | uri | | | job-uri-user | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-user | name | MANDATORY | | job-originating-user | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-host | name | | | job-originating-host | name | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| user-locale | locale | | | user-locale | locale | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state | type1 keyword | MANDATORY | | job-state | type1 enum | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-reasons | 1setOf type2 keyword | | | job-state-reasons | 1setOf type2 keyword | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-message | text | | | job-state-message | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| output-device-assigned | name | | | output-device-assigned | name | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-pending | milliseconds | MANDATORY | | time-since-pending | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-processing | milliseconds | MANDATORY | | time-since-processing | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-since-completed | milliseconds | MANDATORY | | time-since-completed | milliseconds | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| number-of-intervening-jobs | integer | MANDATORY | | number-of-intervening-jobs | integer | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-message-from-operator | text | | | job-message-from-operator | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-k-octets-completed | integer | | | job-k-octets-processed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-impressions-completed | integer | | | job-impressions-completed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-media-sheets-completed | integer | | | job-media-sheets-completed | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
6.3.1 job-uri (uri) 4.3.1 job-uri (uri)
This attribute contains the URI for the job. The Printer, on receipt of This attribute contains the URI for the job. The Printer, on receipt
a new job, SHALL generate a URI which identifies the job on the Printer. of a new job, generates a URI which identifies the new Job on that
The Printer, SHALL return the value of the "job-uri" attribute as part Printer. The Printer returns the value of the "job-uri" attribute as
of the response to a create request. The precise format of a job URI part of the response to a create request. The precise format of a
SHALL be implementation dependent. job URI is implementation dependent.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
6.3.2 job-uri-user (uri) 4.3.2 job-uri-user (uri)
Similar to "job-uri", this attribute contains the URI referencing an Similar to "job-uri", this attribute contains the URI referencing an
HTML page containing information about the Job. HTML page containing information about the Job.
6.3.3 job-originating-user (name) 4.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
name that it can obtain from the protocol over which the operation was authenticated name that it can obtain from the protocol over which the
received from the client. operation was received from the client.
6.3.4 job-originating-host (name) 4.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 authenticated host name it can
from the protocol over which the operation was received from the obtain from the protocol over which the operation was received from
client. the client.
6.3.5 user-locale (type3 keyword) 4.3.5 user-locale (locale)
This attribute identifies the locale of the job, i.e, the country, This attribute identifies the human language and optional the country
language, and coded character set. The Printer sets this attribute to of the end user. The Printer sets this attribute to the most reliable
the most authentic value it can obtain from the protocol over which the value it can obtain from the protocol over which the Print operation
Print operation was received from the client. was received from the client.
The Printer SHALL use this attribute to determine the locale for The Printer uses this attribute to determine the locale it SHOULD use
notification messages that it sends. for localizing any text strings that it sends back to the end user.
These include status messages, text attributes, and notification
messages.
6.3.6 job-state (type1 keyword) 4.3.6 job-state (type1 enum)
6.3.7 job-state-reasons (1setOf type2 keyword) This attribute identifies the current state of the job. Even though
the IPP protocol defines eight values for job states, implementations
only need to support those states which are appropriate for the
particular implementation. In other words, a Printer supports only
those job states implemented by the output device and available to the
Printer object implementation.
6.3.8 job-state-message (text) Standard values are:
'unknown'(2): The job state is not known, or its state is
indeterminate.
'pending'(3): The job is a candidate to start processing, but is
not yet processing.
'pending-held'(4): The job is not a candidate for processing for
any number of reasons but will return to the 'pending' state as
Expires January 14, 1998
soon as the reasons are no longer present. The job's "job-state-
reason" attribute SHALL indicate why the job is no longer a
candidate for processing.
'processing'(5): 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.
When the job is in the 'processing' state, the entire job state
includes the detailed status represented in the printer's
"printer-state", "printer-state-reasons", and "printer-state-
message" attributes.
Implementations MAY include additional values in the job's "job-
state-reasons" attribute to indicate the progress of the job,
such as adding the 'job-printing' value to indicate when the
output device is actually making marks on paper. Most
implementations won't bother with this nuance.
'processing-stopped'(6): The job has stopped while processing for
any number of reasons and will return to the 'processing' state
as soon as the reasons are no longer present.
The job's "job-state-reason" attribute MAY indicate why the job
has stopped processing. For example, if the output device is
stopped, the 'printer-stopped' value MAY be included in the job's
"job-state-reasons" attribute. For example, if the output device
is stopped, the 'printer-stopped' value MAY be included in the
job's "job-state-reasons" attribute.
NOTE - When an output device is stopped, the device usually
indicates its condition in human readable form locally at the
device. A client can obtain more complete device status remotely
by querying the printer's "printer-state", "printer-state-
reasons" and "printer-state-message" attributes.
'canceled'(7): 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
SHOULD contain either the 'canceled-by-user' or 'canceled-by-
operator' value.
'aborted'(8): The job has been aborted by the system, usually
while the job was in the 'processing' or 'processing-stopped'
state.
'completed'(9): The job has completed successfully or with
warnings or errors after processing and all of the job media
sheets have been successfully stacked in the appropriate output
Expires January 14, 1998
bin(s). The job's "job-state-reasons" attribute SHOULD contain
one of: 'completed-successfully', 'completed-with-warnings', or
'completed-with-errors' values.
The final value for this attribute SHALL be one of: 'completed',
'canceled', or 'aborted' before the Printer removes the job
altogether. The length of time that jobs remain in the 'canceled',
'aborted', and 'completed' states depends on implementation.
The following figure shows the normal job state transitions.
+----> canceled
/
+----> pending --------> processing ---------+------> completed
| ^ ^ \
--->+ | | +----> aborted
| v v /
+----> pending-held processing-stopped ----+
Normally a job progresses from left to right. Other state transitions
are unlikely, but are not forbidden. Not shown are the transitions to
the 'canceled' state from the 'pending', 'pending-held', 'processing',
and 'processing-stopped' states.
4.3.7 job-state-reasons (1setOf type2 keyword)
This attribute provides additional information about the job's current
state, i.e., information that augments the value of the job's "job-
state" attribute.
Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT
implement them, even if (1) the output device supports the
functionality represented by the reason and (2) is available to the
Printer object implementation. These values MAY be used with any job
state or states for which the reason makes sense. Furthermore, when
implemented, the Printer SHALL return these values when the reason
applies and SHALL NOT return them when the reason no longer applies
whether the value of the job's "job-state" attribute changed or not.
When the job does not have any reasons for being in its current state,
the Printer shall set the value of the job's "job-state-reasons"
attribute to 'none'.
NOTE - While values cannot be added to the 'job-state' attribute
without impacting deployed clients that take actions upon receiving
"job-state"values, it is the intent that additional "job-state-
reasons" values can be defined and registered without impacting such
Expires January 14, 1998
deployed clients. In other words, the "job-state-reasons" attribute
is intended to be extensible.
The following standard values are defined:
NOTE - For easy of understanding the order of the reasons is presented
in the order in which the reason is most likely to occur:
'none': There are no reasons for the job's current state.
'job-incoming': The CreateJob operation has been accepted by the
Printer, but the Printer is expecting additional SendDocument
operations and/or is accessing/accepting document data.
'job-outgoing': The Printer is transmitting the job to the output
device.
'job-hold-until-specified': The value of the job's "job-hold-
until" attribute specifies a time period that is still in the
future. The job SHALL NOT be a candidate for processing until
this reason is removed and there are no other reasons to hold the
job.
'resources-are-not-ready': At least one of the resources needed by
the job, such as media, fonts, resource objects, etc., is not
ready on any of the physical printer's for which the job is a
candidate. This condition MAY be detected when the job is
accepted, or subsequently while the job is pending or processing,
depending on implementation.
'printer-stopped-partly': The value of the Printer's "printer-
state-reasons" attribute contains the value 'stopped-partly'.
'printer-stopped': The value of the Printer's "printer-state"
attribute is 'stopped'.
'job-printing': 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.
'job-cancelled-by-user': The job was cancelled by the user using
the CancelJob request, i.e., by a user whose name is the same as
the value of the job's "job-originating-user" attribute.
'job-cancelled-by-operator': The job was cancelled by the operator
using the CancelJob request, i.e., by a user whose name is
different than the value of the job's "job-originating-user"
attribute.
'job-completed-successfully': The job completed successfully.
'job-completed-with-warnings': The job completed with warnings.
'job-completed-with-errors': The job completed with errors (and
possibly warnings too).
'logfile-pending ': The job's logfile is pending file transfer.
'logfile-transferring': The job's logfile is being transferred.
Expires January 14, 1998
4.3.8 job-state-message (text)
This attributes specifies supplemental information about the Job State This attributes specifies supplemental information about the Job State
in human readable text. It SHALL be set by the Printer. in human readable text.
6.3.9 output-device-assigned (name) 4.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.
6.3.10 time-since-pending (milliseconds) 4.3.10 time-since-pending (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 put into the pending state.. Job was first put into the pending state..
6.3.11 time-since-processing (milliseconds) 4.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.12 time-since-completed (milliseconds) 4.3.12 time-since-completed (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 completed. Job was completed.
6.3.13 number-of-intervening-jobs (integer(0:2**31 - 1)) 4.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
in the current scheduled order. For efficiency, it is only necessary to job in the current scheduled order. For efficiency, it is only
calculate this value when an operation is performed that requests this necessary to calculate this value when an operation is performed that
attribute. requests this attribute.
Note: This attribute is necessary since an end user may request just Note: This attribute is necessary since an end user may request just
their own jobs and they need some relative position indicator if there their own jobs and they need some relative position indicator if there
are other jobs interspersed in the waiting list which are not returned are other jobs interspersed in the waiting list which are not returned
in the response or cannot be because of site security policy in the response or cannot be because of site security policy
restrictions. restrictions.
6.3.14 job-message-from-operator (text) 4.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
or "intelligent" process to indicate to the end user the reasons for administrator or "intelligent" process to indicate to the end user the
modification or other management action taken on a job. reasons for modification or other management action taken on a job.
6.3.15 job-k-octets-completed (integer(0:2**31 - 1)) Expires January 14, 1998
4.3.15 job-k-octets-processed (integer(0:2**31 - 1))
This attribute specifies the number of octets completed in K octets, This attribute specifies the number of octets completed in K octets,
i.e., in units of 1024 octets. The value SHALL be rounded up, so that a i.e., in units of 1024 octets. The value SHALL be rounded up, so that
job between 1 and 1024 octets SHALL be indicated as being 1K, 1025 to a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to
2048 SHALL be 2, etc. This attribute is intended to be a counter as in 2048 SHALL be 2, etc.
the Job Monitoring MIB.
June 23, 1997, Expires December 23, 1997 Note: This attribute and the following two attributes ("job-
6.3.16 job-impressions-completed (integer(0:2**31 - 1)) impressions-completed" and "job-sheets-completed") are intended to be
counters as in the Job Monitoring MIB [27].
4.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.17 job-media-sheets-completed (integer(0:2**31 - 1)) 4.3.17 job-media-sheets-completed (integer(0:2**31 - 1))
This job attribute specifies the media-sheets completed. This attribute
is intended to be a counter as in the Job Monitoring MIB.
ISSUE: Should the above three attributes be regularly named as job-size- This job attribute specifies the media-sheets completed. This
in-xxx-yyy where xxx is k-octets, impressions and media sheets and where attribute is intended to be a counter as in the Job Monitoring MIB.
yyy is a job state pending, processing and completed. So job-impressions
becomes job-size-in-impressions-pending and job-impressions-completed is
job-size-in-impressions-processing while printing and job-size-in-
impressions-completed when the job completed. Thus job-impressions-
completed doesn't serve two functions.
6.4 Document Attributes 4.4 Document Attributes
This group of attributes describes the document data for the job. For This group of attributes describes the document data for the job. For
single-Document Jobs, they are supplied in the Print-Job or Print-URI single-Document Jobs, they are supplied in the Print-Job or Print-URI
requests. For multi-Document Jobs, they are supplied in each Send- requests. For multi-Document Jobs, they are supplied in each Send-
Document or Send-URI request. Document or Send-URI request.
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-name | name | MANDATORY | | document-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-format | type 2 keyword | | | document-format | type 2 enum | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| document-uri | uri | | | document-uri | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
6.4.1 document-name (name) 4.4.1 document-name (name)
This attribute contains the name of the document used by the client to This attribute contains the name of the document used by the client to
initially identify the document. When a client prints by reference, i.e. initially identify the document. When a client prints by reference,
includes the document-URI attribute and no document content, this i.e. includes the document-URI attribute and no document content, this
attribute SHALL be absent. attribute SHALL be absent.
6.4.2 document-format (type2 keyword) Expires January 14, 1998
4.4.2 document-format (type2 enum)
See section 6.2.16 which describes "document-format" as a Job Template See section 4.2.16 that describes the "document-format" Job Template
attribute. attribute.
June 23, 1997, Expires December 23, 1997 4.4.3 document-uri (uri)
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-
is the only other attribute allowed when a document-URI attribute is number is the only other attribute allowed when a document-URI
present in a Send Document operation. attribute is present in a Send Document operation.
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?
6.5 Printer Description Attributes 4.5 Printer Description Attributes
These attributes form the attribute group called "printer-description". These attributes form the attribute group called "printer-
A Printer object may be realized in either a print server or output description". A Printer object may be realized in either a print
device. Note: How these attributes are set by an Administrator is server or output device. Note: How these attributes are set by an
outside the scope of this specification. The following table summarizes Administrator is outside the scope of this specification. The
these attributes, their syntax, and whether or not they are MANDATORY. following table summarizes these attributes, their syntax, and whether
If they are not MANDATORY, they are OPTIONAL. or not they are MANDATORY. If they are not MANDATORY, they are
OPTIONAL.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | MANDATORY? | | Attribute | Syntax | MANDATORY? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri | uri | MANDATORY | | printer-uri | uri | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-uri-user | uri | | | printer-uri-user | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-name | name | MANDATORY | | printer-name | name | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-location | text | | | printer-location | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-description | text | | | printer-description | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-more-info-site | uri | | | printer-more-info-site | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-driver-installer | uri | | | printer-driver-installer | uri | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-make-and-model | text | | | printer-make-and-model | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-more-info- | uri | | | printer-more-info- | uri | |
| manufacturer | uri | | | manufacturer | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state | type1 keyword | MANDATORY | | printer-state | type1 enum | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state-reasons | type2 keyword | | | printer-state-reasons | type2 keyword | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-state-message | text | | | printer-state-message | text | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-is-accepting-jobs | boolean | MANDATORY | | printer-is-accepting-jobs | boolean | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| queued-job-count | integer | | | queued-job-count | integer | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-message-from- | text | | | printer-message-from- | text | |
| operator | | | | operator | | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-locale | locale | MANDATORY | | printer-locale | locale | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| printer-locales-supported | 1setOf locale | MANDATORY | | printer-locales-supported | 1setOf locale | MANDATORY |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| color-supported | boolean | | | color-supported | boolean | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
6.5.1 printer-uri (uri) 4.5.1 printer-uri (uri)
This attribute contains the URI for the printer. An administrator SHALL This attribute contains the URI for the printer. An administrator
determine a printer's URI and SHALL set this attribute to that URI. The SHALL determine a printer's URI and SHALL set this attribute to that
precise format of a printer URI SHALL be implementation dependent. URI. The precise format of a printer URI SHALL be implementation
dependent.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
6.5.2 printer-uri-user (uri) 4.5.2 printer-uri-user (uri)
Similar to "printer-uri", this attribute contains the URI for an HTML Similar to "printer-uri", this attribute contains the URI for an HTML
page with more information about this printer. page with more information about this printer.
6.5.3 printer-name (name) 4.5.3 printer-name (name)
This attribute contains the name of the printer. It is a name that is This attribute contains the name of the printer. It is a name that is
more user friendly than the printer-URI. An administrator SHALL more user friendly than the printer-URI. An administrator 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
are not allowed in a URI. that are not allowed in a URI.
6.5.4 printer-location (text) 4.5.4 printer-location (text)
This attribute identifies the location of this printer. This attribute identifies the location of this printer.
6.5.5 printer-description (text) 4.5.5 printer-description (text)
This attribute identifies the descriptive information about the this This attribute identifies the descriptive information about 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
printing color transparencies for HR presentations", or "Out of courtesy for printing color transparencies for HR presentations", or "Out of
for others, please print only small (1-5 page) jobs at this printer", or courtesy for others, please print only small (1-5 page) jobs at this
even "This printer is going away on July 1, 1997, please find a new printer", or even "This printer is going away on July 1, 1997, please
printer". find a new printer".
6.5.6 printer-more-info-site (uri) 4.5.6 printer-more-info-site (uri)
This attribute contains a URI used to obtain more information about this This attribute contains a URI used to obtain more information about
specific printer. The information obtained from this URI is intended this specific printer. The information obtained from this URI is
for end user consumption. Features outside the scope of IPP can be intended for end user consumption. Features outside the scope of IPP
accessed from this URI. The information is intended to be specific to can be accessed from this URI. The information is intended to be
this printer instance and site services (e.g. job pricing, services specific to this printer instance and site services (e.g. job pricing,
offered, end user assistance). The printer manufacturer may initially services offered, end user assistance). The printer manufacturer may
populate this attribute. initially populate this attribute.
6.5.7 printer-driver-installer (uri) 4.5.7 printer-driver-installer (uri)
This attribute contains a URI to use to locate the driver installer for This attribute contains a URI to use to locate the driver installer
this printer. This attribute is intended for consumption by automata. for this printer. This attribute is intended for consumption by
The mechanics of print driver installation is outside the scope of IPP. automata. The mechanics of print driver installation is outside the
The printer manufacturer may initially populate this attribute. scope of IPP. The printer manufacturer may initially populate this
attribute.
6.5.8 printer-make-and-model (text) 4.5.8 printer-make-and-model (text)
This attribute identifies the make and model of the printer. This attribute identifies the make and model of the printer.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
6.5.9 printer-more-info-manufacturer (uri) 4.5.9 printer-more-info-manufacturer (uri)
This attribute contains a URI used to obtain more information about this This attribute contains a URI used to obtain more information about
type of printer. The information obtained from this URI is intended for this type of printer. The information obtained from this URI is
end user consumption. Features outside the scope of IPP can be accessed intended for end user consumption. Features outside the scope of IPP
from this URI (e.g., latest firmware, upgrades, print drivers, optional can be accessed from this URI (e.g., latest firmware, upgrades, print
features available). The information is intended to be germane to this drivers, optional features available). The information is intended to
printer without regard to site specific modifications or services. be germane to this printer without regard to site specific
modifications or services.
6.5.10 printer-state (type1 keyword) 4.5.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 "printer-state reasons" attribute augments the "printer-state"
to give more detailed information about the Printer in the given printer attribute to give more detailed information about the Printer in the
state. given printer state.
A Printer SHALL continually keep this attribute set to the value in the A Printer SHALL continually keep this attribute set to the value in
table below which most accurately reflects the state of the Printer. A the table below which most accurately reflects the state of the
Printer NEED NOT implement all values if they are not applicable to a Printer. A Printer NEED NOT implement all values if they are not
given implementation. 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 indeterminate. A 'unknown'(2): The Printer state is not known, or is indeterminate.
Printer SHALL use this state only if it cannot determine its actual A Printer SHALL use this state only if it cannot determine its
state. actual state.
'idle': If a Printer receives a job (whose required resources are 'idle'(3): If a Printer receives a job (whose required resources
ready) while in this state, such a job SHALL transit into the are ready) while in this state, such a job SHALL transit into the
processing state immediately. If the printer-state-reasons processing state immediately. If the printer-state-reasons
attribute contains any reasons, they SHALL be reasons that would attribute contains any reasons, they SHALL be reasons that would
not prevent a job from transiting into the processing state not prevent a job from transiting into the processing state
immediately, e.g., toner-low. Note: if a Printer controls more than immediately, e.g., toner-low. Note: if a Printer controls more
one output device, the above definition implies that a Printer is than one output device, the above definition implies that a
idle if at least one output device is idle. Printer is idle if at least one output device is idle.
'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. 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 required resources are 'processing'(4): If a Printer receives a job (whose required
ready) while in this state, such a job SHALL transit into the 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. 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.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
pending state immediately. Such a job SHALL transit into the 'stopped'(5): If a Printer receives a job (whose required
processing state only after some human fixes the problem that resources are ready) while in this state, such a job SHALL
stopped the printer and after jobs ahead of it complete printing. transit into the pending state immediately. Such a job SHALL
The "printer-state-reasons" attribute SHALL contain at least one transit into the processing state only after some human fixes the
reason, e.g. paper-jam, which prevents it from either processing problem that stopped the printer and after jobs ahead of it
the current job or transiting a pending job to the processing complete printing. The "printer-state-reasons" attribute SHALL
state. contain at least one reason, e.g. media-jam, which prevents it
from either processing the current job or transiting a pending
job to the processing state.
Note: if a Printer controls more than one output device, the above Note: if a Printer controls more than one output device, the
definition implies that a Printer is stopped only if all output above definition implies that a Printer is stopped only if all
devices are stopped. Also, it is tempting to define stopped as output devices are stopped. Also, it is tempting to define
when a sufficient number of output devices are stopped and leave it stopped as when a sufficient number of output devices are stopped
to an implementation to define the sufficient number. But such a and leave it to an implementation to define the sufficient
rule complicates the definition of stopped and processing. For number. But such a rule complicates the definition of stopped
example, with this alternate definition of stopped, a job can move and processing. For example, with this alternate definition of
from idle to processing without human intervention, even though the stopped, a job can move from idle to processing without human
Printer is stopped. intervention, even though the Printer is stopped.
6.5.11 printer-state-reasons (1setOf type2 keyword) 4.5.11 printer-state-reasons (1setOf type2 keyword)
This attribute supplies additional detail about the printer's state. This attribute supplies additional detail about the printer's state.
Each MAY have an adornment to indicate its level of severity. The three Each MAY have asuffix to indicate its level of severity. The three
levels are: report (least severe), warning, and error (most severe). levels are: report (least severe), warning, and error (most severe).
- 'report': it has the adornment of "report". An implementation may - '-report': This suffix indicates that the reason is a "report".
choose to omit some or all reports. Some reports specify finer An implementation may choose to omit some or all reports. Some
granularity about the printer state; others serve as a precursor to reports specify finer granularity about the printer state; others
a warning. A report SHALL contain nothing that could affect the serve as a precursor to a warning. A report SHALL contain nothing
printed output. that could affect the printed output.
- 'warning': it has the adornment of "warning". An implementation may - '-warning': This suffix indicates that the reason is a "warning".
choose to omit some or all warnings. Warnings serve as a precursor An implementation may choose to omit some or all warnings.
to an error. A warning SHALL contain nothing that prevents a job Warnings serve as a precursor to an error. A warning SHALL
from completing, though in some cases the output may be of lower contain nothing that prevents a job from completing, though in
quality. some cases the output may be of lower quality.
- 'error': it has no adornment. An implementation SHALL include all - '-error': This suffix indicates that the reason is an "error". .
errors. If this attribute contains one or more errors, printer An implementation SHALL include all errors. If this attribute
SHALL be in the stopped state. contains one or more errors, printer SHALL be in the stopped
state.
An implementation may add 'error-', 'warning-', or 'report-' to any of If the implementation does not add any one of the three suffixes, all
the reasons below to indicate the level of severity. parties SHALL assume that the reason is an "error".
If a Printer controls more than one output device, each value of this If a logical Printer controls more than one output device, each value
attribute SHALL apply to one or more of the output devices. An error on of this attribute MAY apply to one or more of the output devices. An
one output device that does not stop the Printer as a whole appears as a error on one output device that does not stop the logical Printer as 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- Expires January 14, 1998
reasons that are errors. whole MAY appear as a warning in the Printer's "printer-state-reasons
attribute". The "printer-state" for such a Printer may have a value
of 'stopped' even though there are with no "printer-state-reasons"
values that are "errors".
June 23, 1997, Expires December 23, 1997
The following standard values are defined: The following standard values are defined:
'media-needed': A tray has run out of media. 'media-needed': A tray has run out of media.
'media-jam': The printer has a media jam. 'media-jam': The printer has a media jam.
'paused': Someone has paused the Printer. In this state, a Printer 'paused': Someone has paused the Printer. In this state, a Printer
SHALL not produce printed output, but it SHALL perform other SHALL not produce printed output, but it SHALL perform other
operations requested by a client. If a Printer had been printing a operations requested by a client. If a Printer had been printing
job when the Printer was paused, the Printer SHALL resume printing a job when the Printer was paused, the Printer SHALL resume
that job when the Printer is no longer paused and leave no evidence printing that job when the Printer is no longer paused and leave
in the printed output of such a pause. no evidence in the printed output of such a pause.
'shutdown': Someone has removed a Printer from service, and it may be 'shutdown': Someone has removed a Printer from service, and it may
powered down or physical removed. In this state, a Printer SHALL be powered down or physical removed. In this state, a Printer
not produce printed output, and unless the Printer is realized by a SHALL not produce printed output, and unless the Printer is
print server that is still active, the Printer SHALL perform no realized by a print server that is still active, the Printer
other operations requested by a client, including returning this SHALL perform no other operations requested by a client,
value. If a Printer had been printing a job when it was shutdown, including returning this value. If a Printer had been printing a
the Printer need not resume printing that job when the Printer is job when it was shutdown, the Printer need not resume printing
no longer shutdown. If the Printer resumes printing such a job, it that job when the Printer is no longer shutdown. If the Printer
may leave evidence in the printed output of such a shutdown, e.g. resumes printing such a job, it may leave evidence in the printed
the part printed before the shutdown may be printed a second time output of such a shutdown, e.g. the part printed before the
after the shutdown. shutdown may be printed a second time after the shutdown.
'connecting-to-device': The server has scheduled a job on the
ISSUE: Bob suggests: From an English point of view the suffixes Printer and is in the process of connecting to a shared network
should be -partly and -mostly rather than -report and -warning with output device (and might not be able to actually start printing
all being -warnings. For example, paused-partly-warning or media- the job for an arbitrarily long time depending on the usage of
needed-mostly-warning the output device by other servers on the network).
'timed-out': The server was able to connect to the output device
'connecting-to-device': The server has scheduled a job on the Printer (or is always connected), but was unable to get a response from
and is in the process of connecting to a shared network output the output device.
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 'stopping': The printer will be stopping in a while and will change
its reason to printer-stopped. This reason is a non-critical, even its reason to printer-stopped. This reason is a non-critical,
for a Printer with a single output device. When an output-device even for a Printer with a single output device. When an output-
ceases accepting jobs, the Printer will have this state while the device ceases accepting jobs, the Printer will have this state
output device completes printing. while the output device completes printing.
'stopped-partly': When a Printer controls more than one output 'stopped-partly': When a Printer controls more than one output
device, this reason indicates that one or more output devices are device, this reason indicates that one or more output devices are
stopped. If the reason is a report, fewer than half of the output stopped. If the reason is a report, fewer than half of the output
devices are stopped. If the reason is a warning, fewer than all of devices are stopped. If the reason is a warning, fewer than all
the output devices are stopped. of the output devices are stopped.
'toner-low': The Printer is low on toner. 'toner-low': The Printer is low on toner.
'spool-area-full': The limit of persistent storage allocated for
spooling has been reached.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
6.5.12 printer-is-accepting-jobs (boolean) 4.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
is false, the printer is currently rejecting any jobs submitted to it. value 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-
reasons because its value does not affect the current job; rather it state-reasons because its value does not affect the current job;
affects future jobs. This attribute may cause the Printer to reject jobs rather it affects future jobs. This attribute may cause the Printer to
when the printer-state is idle or it may cause the Printer to accepts reject jobs when the printer-state is idle or it may cause the Printer
jobs when the printer-state is stopped. to accepts jobs when the printer-state is stopped.
6.5.13 printer-state-message (text) 4.5.13 printer-state-message (text)
This attribute specifies the additional information about the printer This attribute specifies the additional information about the printer
state in human readable text and it SHALL be set by the Printer (or the state in human readable text and it SHALL be set by the Printer (or
Administrator by some mechanism outside the scope of IPP). When a the Administrator by some mechanism outside the scope of IPP).
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
user, as specified by the Get-Attributes or Get-Jobs operation.
6.5.14 queued-job-count (integer(0:2**31 - 1)) 4.5.14 queued-job-count (integer(0:2**31 - 1))
This attribute contains a count of the number of jobs that are either This attribute contains a count of the number of jobs that are either
pending and/or processing and SHALL be set by the Printer. pending and/or processing and SHALL be set by the Printer.
6.5.15 printer-message-from-the-operator (text) 4.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
or "intelligent" process to indicate to the end user information or administrator or "intelligent" process to indicate to the end user
status of the printer, such as why it is unavailable or when it is information or status of the printer, such as why it is unavailable or
expected to be available. when it is expected to be available.
6.5.16 printer-locale (locale) 4.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.17 printer-locales-supported (1setOf locale) 4.5.17 printer-locales-supported (1setOf locale)
This attribute specifies the locales that the Printer operates in. This attribute specifies the supported locales that the Printer
operates in.
6.5.18 color-supported (boolean) 4.5.18 color-supported (boolean)
This attribute identifies whether the Printer is capable of any type of This attribute identifies whether the Printer is capable of any type
color printing at all. All document instructions having to do with of color printing at all. All document instructions having to do with
color are embedded within the document PDL (none are external IPP color are embedded within the document PDL (none are external IPP
attributes). attributes).
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
7. Conformance 4.5.19 pdl-override (type2 keyword)
A client supplies Job Template attributes to affect the rendering,
production and finishing of the documents in the job. Similar types
of instructions may also be contained in the document to be printed,
that is, within the Page Description Language (PDL) of the document
data. If there is a conflict between the value of one of these IPP
Job Template attributes, and a corresponding instruction in the
document (either implicit or explicit), it is desirable that the value
of the IPP attribute take precedence over the document instruction.
Until companies that supply interpreters for PDLs, such as PostScript
and PCL allow a way for external attributes (such as IPP attributes)
to take precedence over internal job production instructions, a
Printer might not be able to support the semantics that IPP attributes
override (take on a higher precedence) the embedded PDL instructions.
This attribute expresses how a particular Printer implementation
handles these conflicts.
This attribute takes on the following values:
- 'guaranteed': This value indicates that the Printer guarantees
that all IPP attribute values take precedence over embedded PDL
instructions.
- 'attempted': This value indicates that the Printer attempts to
make sure that IPP attribute values take precedence over embedded
PDL instructions, however there is no guarantee.
- 'ignored': This value indicates that the Printer ignores all IPP
Job Template attributes and it makes no attempts to ensure that
IPP attribute values take precedence over embedded PDL
instructions.
This is a MANDATORY attribute.
Note: Since 'attempted' does not offer any type of guarantee, a given
implementation might not do a very "good" job of attempting to ensure
that IPP attributes take a higher precedence over PDL instructions
embedded in the document data, but it would still be a conforming
implementation.
If the value of this attribute is 'guaranteed', the implementation
MUST guarantee that the IPP attribute values take precedence over any
related job processing instructions in the PDL Job's document data.
This can be done by modifying the interpreter within the output device
itself to understand IPP attributes, or by merging theses Job Template
attributes directly into the document data, or in any other
implementation specific manner. In any case, the semantics of
'guaranteed' MUST be preserved.
Expires January 14, 1998
4.5.20 Security Related Attributes
The security document [22] describes four common usage scenarios:
- no security
- message protection
- client authentication and authorization
- mutual authentication, authorization, and message protection
In order to let an end user know what to expect in terms of security,
there are two attributes described below. Since by definition an end
user, because of security reasons, might not be allowed to query these
two attributes, therefore, it is important that if these two
attributes are supported, then they are also populated in the
directory entry (see [24]).
These attributes allow for minimal client/server negotiation regarding
security features. If the Printer requires the feature, the client
can decide whether or not to participate. If the client does not
support the feature, and the Printer requires it, then the client
knows before hand that such an interaction would fail.
Standard values for these two attributes include:
'supported' - means that the Printer is capable of supporting the
security feature (somehow), but it is does not require the client
to use it.
'required' - means that the Printer is capable of supporting the
security feature (somehow) and the client is required to use it.
'none' - means that the Printer is not capable of supporting
message protection at all.
Note: This is a single-valued attribute, not a multi-valued
attribute, i.e., an implementation can not support 'none' and
'required' or any other combination of values.
4.5.20.1 message-protection-supported (keyword)
This attribute is used to determine whether or not a printer supports
or requires message protection (whether it be through encryption or
some other privacy mechanism).
4.5.20.2 authentication-authorization-supported (keyword)
This attribute is used to determine whether or not a printer supports
or requires authentication and authorization.
Expires January 14, 1998
5. Conformance
This section describes conformance issues and requirements. This This section describes conformance issues and requirements. This
document introduces model entities such as objects, operations, document introduces model entities such as objects, operations,
attributes, and attribute values. These conformance sections describe attributes, and attribute values. These conformance sections describe
the conformance requirements which apply to these model entities. the conformance requirements which apply to these model entities.
7.1 Conditionally Mandatory 5.1 Conditionally Mandatory
For example, a conditionally mandatory attribute means that a Printer For example, a conditionally mandatory attribute means that a Printer
implementation need not support the attribute if the attribute controls implementation need not support the attribute if the attribute
a feature that the output device does not implement or expose. For controls a feature that the output device does not implement or
example, for an output device that can only print on one side, a Printer expose. For example, for an output device that can only print on one
need not support the "sides" attribute. For an output device that does side, a Printer need not support the "sides" attribute. For an output
not support any of the finishing attribute values, a Printer need not device that does not support any of the finishing attribute values, a
support the "finishing" attribute. Printer need not support the "finishing" attribute.
7.2 Client Conformance Requirements 5.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 per application might not allow an end user to submit multiple documents
job, while another does. One application might first query a Printer per job, while another does. One application might first query a
object in order to supply a graphical user interface (GUI) dialogue box Printer object in order to supply a graphical user interface (GUI)
with supported and default values whereas a different implementation dialogue box with supported and default values whereas a different
might not. implementation might not.
When sending a Get-Attributes or create request, an IPP client need not When sending a Get-Attributes or create request, an IPP client need
supply any attributes. not supply any attributes.
A client SHALL be able to accept any of the attribute syntaxes defined A client SHALL be able to accept any of the attribute syntaxes defined
in Section 6.1 that may be returned to it in a response from a Printer in Section 4.1 that may be returned to it in a response from a Printer
A query response may contain attributes and values that the client does A query response may contain attributes and values that the client
not expect. Therefore, a client implementation MUST gracefully handle does not expect. Therefore, a client implementation MUST gracefully
such responses and not refuse to interoperate with a conforming Printer handle such responses and not refuse to interoperate with a conforming
that is returning extended registered or private attributes and/or Printer that is returning extended registered or private attributes
attribute values that conform to Section 8. Clients may choose to and/or attribute values that conform to Section 6. Clients may choose
ignore any attributes that it does not understand. to ignore any attributes that it does not understand.
7.3 Printer Object Conformance Requirements Expires January 14, 1998
5.3 Printer Object Conformance Requirements
This section specifies the conformance requirements for conforming This section specifies the conformance requirements for conforming
Printer object implementations with respect to objects, operations, and Printer object implementations with respect to objects, operations,
attributes. and attributes.
June 23, 1997, Expires December 23, 1997 5.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 4.1 Printer Object Section 2.1 Printer Object
Section 4.2 Job Object Section 2.2 Job Object
Section 4.3 Document Object Section 2.3 Document Object
7.3.2 Operations 5.3.2 Operations
Conforming Printer implementations SHALL implement all of the MANDATORY Conforming Printer implementations SHALL implement all of the
model operations, including mandatory responses, as defined in this MANDATORY model operations, including mandatory responses, as defined
specification in the indicated sections: in this specification in the indicated sections:
For a Printer object: For a Printer object:
Get-Operations (section 5.1.1) MANDATORY Get-Operations (section 3.1.1) MANDATORY
Print-Job (section 5.1.2) MANDATORY Print-Job (section 3.1.2) MANDATORY
Print-URI (section 5.1.3) OPTIONAL Print-URI (section 3.1.3) OPTIONAL
Validate-Job (section 5.1.4) OPTIONAL Validate-Job (section 3.1.4) MANDATORY
Create-Job (section 5.1.5) OPTIONAL Create-Job (section 3.1.5) OPTIONAL
Get-Jobs (section 5.1.8) OPTIONAL Get-Jobs (section 3.1.8) MANDATORY
Get-Attributes (section 5.1.9) OPTIONAL Get-Attributes (section 3.1.9) MANDATORY
For a Job object: For a Job object:
Send-Document (section 5.1.6) OPTIONAL Send-Document (section 3.1.6) OPTIONAL
Send-URI (section 5.1.7) OPTIONAL Send-URI (section 3.1.7) OPTIONAL
Cancel-Job (section 5.1.8) MANDATORY Cancel-Job (section 3.1.8) MANDATORY
Get-Attributes (section 5.1.9) OPTIONAL Get-Attributes (section 3.1.9) MANDATORY
7.3.3 Attributes
ISSUE: Some Printer attributes are purely software, so that 5.3.3 Attributes
Conditionally Mandatory doesn't apply, such as Printer Description
Attributes. For example, what does it mean for the "printer-location"
to be Conditionally Mandatory? Should we add a "OPTIONAL" in the header
of the few attributes for which Conditionally Mandatory doesn't make
sense?
Conforming Printer implementations SHALL support all of the MANDATORY Conforming Printer implementations SHALL support all of the MANDATORY
attributes, as defined in this specification in the indicated sections. attributes, as defined in this specification in the indicated
sections.
Conforming Printer implementations SHALL support all CONDITIONALLY Conforming Printer implementations SHALL support all CONDITIONALLY
MANDATORY attributes as defined in this specification in the indicated MANDATORY attributes as defined in this specification (in the
sections that represent features and behaviors that the actual output indicated sections) if in the implementation the condition us true.
device implements.
June 23, 1997, Expires December 23, 1997
It is not required that a conforming Printer support all values of all
supported attributes. For example, if a Printer supports some of the
"finishing" attribute values in this document, it is not required that a
Printer implement or support all finishing methods indicated by all the
values of the "finishing" attribute contained in this document.
Expires January 14, 1998
If a Printer implements a "xxx-supported" attribute it MUST implement If a Printer implements a "xxx-supported" attribute it MUST implement
the corresponding "xxx" default value attribute and vice versa. the corresponding "xxx" default value attribute and vice versa.
7.3.4 Printer extensions 5.3.4 Printer extensions
A conforming Printer may support registered extensions and private A conforming Printer may support registered extensions and private
extensions, as long as they meet the requirements specified in Section extensions, as long as they meet the requirements specified in Section
8. 6.
7.3.5 Attribute Syntaxes 5.3.5 Attribute Syntaxes
A Printer SHALL be able to accept any of the attribute syntaxes defined A Printer SHALL be able to accept any of the attribute syntaxes
in Section 6.1 in any operation in which a client may supply attributes. defined in Section 4.1 in any operation in which a client may supply
Furthermore, a Printer SHALL return attributes to the client in attributes or parameters. Furthermore, a Printer SHALL return
operation responses that conform to the syntax specified in Section 6.1. attributes to the client in operation responses that conform to the
syntax specified in Section 4.1.
7.4 Security Conformance Requirements 5.4 Security Conformance Requirements
The security mechanisms being considered for IPP fall outside the scope The security mechanisms being considered for IPP fall outside the
of the application layer protocol itself. There are two mechanisms used scope of the application layer protocol itself. There are two
to begin secure communications using IPP: mechanisms used 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 Printer) additional information at a Web site hosting the IPP Printer)
indicate which, if any, security protocols are used in conjunction indicate which, if any, security protocols are used in
with IPP. 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 which In either case, the security protocol (if any) is initiated first
allows for the negotiation of security features. IPP is then run as an which allows for the negotiation of security features. IPP is then
application protocol on top of the security protocols. One cannot run as an application protocol on top of the security protocols. One
"bootstrap" the security features from IPP itself. cannot "bootstrap" the security features from IPP itself.
ISSUE: The above is not quite correct. Waiting for better description ISSUE: The above is not quite correct. Waiting for better description
from the security document [22]. from the security document [22].
June 23, 1997, Expires December 23, 1997 6. IANA Considerations (registered and private extensions)
8. IANA Considerations, Registered Extensions, Private Extensions
IPP is explicitly designed to be extensible. Additional attributes can During the development of this standard, the IPP working group
be proposed to be registered by going through the type 2 or type 3 (working with IANA) will register additional keywords and enums while
keyword process which will register their specification after approval the standard is in the proposed and draft states according to the
with IANA. In addition specific implementation instances may support
not only the basic protocol as defined in this specification, but may
add vendor-specific private extensions by prefixing attribute-names with
their company name registered with IANA for use in domains. See
attribute syntax section. However, such private extensions SHALL not
duplicate attribute semantics already in this specification.
9. Security Considerations Expires January 14, 1998
procedures described in this section. IANA will handle registration
of additional enums after this standard is approved in cooperation
with an IANA-appointed registration editor from the IPP working group
according to the procedures described in this section.
There is another Internet-Draft called "Internet Printing Protocol/1.0: 6.1 Typed Extensions
Security" [22]. That document is being drafted and reviewed in parallel
with this document. The mapping of IPP on top of appropriate security
protocols will be described in that document. IPP does not introduce
any new, general purpose security mechanisms for authentication and
encryption.
A Printer may choose, for security reasons, not to return all attributes This document identifies both keywords and enum values. Throughout
that a client requests. It may even return none of the requested this document, references to "typeN enum" or "typeN keyword" can be
attributes. In such cases, the status returned is the same as if the found (where N can be 1, 2, 3 or 4). The typeN extension has more
Printer had returned all requested attributes. The client cannot tell by registration controls than a typeM extension where M is greater than
such a response whether the requested attribute was present or absent on N. That is, there are more controls in place to extend a type1 value
the Printer. over a type 2 value. However, any typeN value MAY be registered using
a process for some typeM where M is less than N, however such
registration is NOT REQUIRED. For example, a type4 value MAY be
registered in a type1 manner (i.e., by being included in a future
version of an IPP specification). For private (unregistered) keyword
extensions, implementers SHOULD use keywords with a suitable
distinguishing prefix, such as "xxx-" where xxx is the (lowercase)
company name registered with IANA for use in domain names. For
private (unregistered) enum extension, implementers SHOULD support
values in the reserved integer range (see "enum").
10. References The definitions of these various types are as follows.
6.1.1 Type1
The IPP standard must be revised to add a new keyword or a new enum.
No private keywords or enums are allowed.
This draft contains the following type1 keywords:
- <fill in>
This draft contains the following type1 enums:
- <fill in>
6.1.2 Type2
Implementers can, at any time, add new keyword or enum values by
proposing them to the IPP working group for registration (or an IANA-
appointed registry advisor after the IPP working group is no longer
certified) where they are reviewed for approval. IANA keeps the
registry.
This draft contains the following type2 keywords:
Expires January 14, 1998
- <fill in>
This draft contains the following type2 enums:
- <fill in>
6.1.3 Type3
Implementers can, at any time, add new keyword and enum values by
submitting a registration request directly to IANA, no IPP working
group or IANA-appointed registry advisor review is required.
This draft contains the following type3 keywords:
- <fill in>
This draft contains the following type3 enums:
- <fill in>
6.1.4 Type4
Anyone (system administrators, system integrators, site managers,
etc.) can, at any time, add new installation-defined values (keywords
or new enum values) to a local system. Care SHOULD be taken by the
implementers to see that keywords do not conflict with other keywords
defined by the standard or as defined by the implementing product.
There is no registration or approval procedure for type4 values.
This draft contains the following type4 keywords:
- <fill in>
This draft contains the following type4 enums:
- <fill in>
6.2 Registration of MIME types/sub-types for document-formats
The "document-format" attribute has MIME type/sub-type values for
indicating document formats which IANA registers as "media type"
names.
Expires January 14, 1998
7. Security Considerations
There is another Internet-Draft called "Internet Printing
Protocol/1.0: Security" [22]. That document is being drafted and
reviewed in parallel with this document. The mapping of IPP on top of
appropriate security protocols will be described in that document.
IPP does not introduce any new, general purpose security mechanisms
for authentication and encryption.
A Printer may choose, for security reasons, not to return all
attributes that a client requests. It may even return none of the
requested attributes. In such cases, the status returned is the same
as if the Printer had returned all requested attributes. The client
cannot tell by such a response whether the requested attribute was
present or absent on the Printer.
8. References
[1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog, [1] Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog,
J., "Printer MIB", RFC 1759, March 1995. J., "Printer MIB", RFC 1759, March 1995.
[2] Berners-Lee, T, Fielding, R., and Nielsen, H., "Hypertext Transfer [2] R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC
Protocol - HTTP/1.0", RFC 1945, August 1995. 2068, January 1997
[3] Crocker, D., "Standard for the Format of ARPA Internet Text [3] Crocker, D., "Standard for the Format of ARPA Internet Text
Messages", RFC 822, August 1982. Messages", RFC 822, August 1982.
[4] Postel, J., "Instructions to RFC Authors", RFC 1543, October 1993. [4] Postel, J., "Instructions to RFC Authors", RFC 1543, October
1993.
[5] ISO/IEC 10175 Document Printing Application (DPA), June 1996. [5] ISO/IEC 10175 Document Printing Application (DPA), June 1996.
[6] Herriot, R. (editor), X/Open A Printing System Interoperability [6] Herriot, R. (editor), X/Open A Printing System Interoperability
Specification (PSIS), August 1995. Specification (PSIS), August 1995.
June 23, 1997, Expires December 23, 1997
[7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing [7] Kirk, M. (editor), POSIX System Administration - Part 4: Printing
Interfaces, POSIX 1387.4 D8, 1994. Interfaces, POSIX 1387.4 D8, 1994.
[8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail [8] Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail
Extensions) Part One: Mechanism for Specifying and Describing the Extensions) Part One: Mechanism for Specifying and Describing the
Format of Internet Message Bodies", RFC 1521, September, 1993. Format of Internet Message Bodies", RFC 1521, September, 1993.
[9] Braden, S., "Requirements for Internet Hosts - Application and [9] Braden, S., "Requirements for Internet Hosts - Application and
Support", RFC 1123, October, 1989, Support", RFC 1123, October, 1989,
[10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC
1179, August 1990. 1179, August 1990.
Expires January 14, 1998
[11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource
Locators (URL)", RFC 1738, December, 1994. Locators (URL)", RFC 1738, December, 1994.
[20] Internet Printing Protocol: Requirements [20] Internet Printing Protocol: Requirements
[21] Internet Printing Protocol/1.0: Model and Semantics (This document) [21] Internet Printing Protocol/1.0: Model and Semantics (This
document)
[22] Internet Printing Protocol/1.0: Security [22] Internet Printing Protocol/1.0: Security
[23] Internet Printing Protocol/1.0: Protocol Specification [23] Internet Printing Protocol/1.0: Protocol Specification
[24] Internet Printing Protocol/1.0: Directory Schema [24] Internet Printing Protocol/1.0: Directory Schema
[25] S. Bradner, "Key words for use in RFCs to Indicate Requirement [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119 , March 1997 Levels", RFC 2119 , March 1997
[26] H. Alvestrand, " Tags for the Identification of Languages", RFC [26] H. Alvestrand, " Tags for the Identification of Languages", RFC
1766, March 1995. 1766, March 1995.
11. Author's Address [27] T. Hastings, "Job Monitoring MIB", <draft-ietf-print-mib-
monitoring-01.txt>, June 1997.
Scott A. Isaacson [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO
10646, RFC 2044, October 1996.
[29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt,
July 8, 1997. This I-D is an update to RFC 1759, March 1995 [1].
[30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND
SPECIFICATION", RFC 1035, November 1987.
9. Author's Address
Scott A. Isaacson (Editor)
Novell, Inc. Novell, Inc.
122 E 1700 S 122 E 1700 S
Provo, UT 84606 Provo, UT 84606
Phone: 801-861-7366 Phone: 801-861-7366
Fax: 801-861-4025 Fax: 801-861-4025
EMail: scott_isaacson@novell.com EMail: scott_isaacson@novell.com
Tom Hastings Tom Hastings
Xerox Corporation Xerox Corporation
June 23, 1997, Expires December 23, 1997
701 S. Aviation Blvd. 701 S. Aviation Blvd.
El Segundo, CA 90245 El Segundo, CA 90245
Expires January 14, 1998
Phone: 310-333-6413 Phone: 310-333-6413
Fax: 310-333-5514 Fax: 310-333-5514
EMail: hastings@cp10.es.xerox.com EMail: hastings@cp10.es.xerox.com
Robert Herriot Robert Herriot
Sun Microsystems Inc. Sun Microsystems Inc.
2550 Garcia Ave., MPK-17 2550 Garcia Ave., MPK-17
Mountain View, CA 94043 Mountain View, CA 94043
Phone: 415-786-8995 Phone: 415-786-8995
skipping to change at page 69, line 4 skipping to change at page 71, line 51
Other Participants: Other Participants:
Chuck Adams - Tektronix Chuck Adams - Tektronix
Jeff Barnett - IBM Jeff Barnett - IBM
Ron Bergman - Data Products Ron Bergman - Data Products
Keith Carter, IBM Corporation Keith Carter, IBM Corporation
Jeff Copeland - QMS Jeff Copeland - QMS
Andy Davidson - Tektronix Andy Davidson - Tektronix
Mabry Dozier - QMS Mabry Dozier - QMS
June 23, 1997, Expires December 23, 1997
Lee Farrell - Canon Information Systems Lee Farrell - Canon Information Systems
Steve Gebert - IBM Steve Gebert - IBM
Expires January 14, 1998
David Kellerman - Northlake Software David Kellerman - Northlake Software
Rick Landau - Digital Rick Landau - Digital
Harry Lewis - IBM Harry Lewis - IBM
Pete Loya - HP Pete Loya - HP
Ray Lutz - Cognisys Ray Lutz - Cognisys
Mike MacKay, Novell, Inc. Mike MacKay, Novell, Inc.
Carl-Uno Manros, Xerox, Corp. Carl-Uno Manros, Xerox, Corp.
Jay Martin - Underscore Jay Martin - Underscore
Stan McConnell - Xerox Stan McConnell - Xerox
Pat Nogay - IBM Pat Nogay - IBM
skipping to change at page 70, line 5 skipping to change at page 73, line 5
Randy Turner - Sharp Randy Turner - Sharp
Atsushi Yuki - Kyocera Atsushi Yuki - Kyocera
Lloyd Young - Lexmark Lloyd Young - Lexmark
Bill Wagner - DPI Bill Wagner - DPI
Jim Walker - DAZEL Jim Walker - DAZEL
Chris Wellens - Interworking Labs Chris Wellens - Interworking Labs
Rob Whittle - Novell Rob Whittle - Novell
Don Wright - Lexmark Don Wright - Lexmark
Peter Zehler, Xerox, Corp. Peter Zehler, Xerox, Corp.
June 23, 1997, Expires December 23, 1997 Expires January 14, 1998
12. APPENDIX A - Status Codes 10. APPENDIX A: Terminology
The Status keyword provides information on the results of a request. The This specification uses the terminology defined in this section.
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.
The prefix of the Status keyword defines the class of response as 10.1 Conformance Terminology
follows:
informational - Request received, continuing process The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [25].
successful - The action was successfully received, understood, and 10.1.1 MUST
accepted
redirection - Further action must be taken in order to complete the This word, or the terms "REQUIRED", "SHALL" or "MANDATORY", means
request that the definition is an absolute requirement of the specification.
client-error - The request contains bad syntax or cannot be fulfilled 10.1.2 MUST NOT
server-error - The server failed to fulfill an apparently valid This phrase, or the phrase "SHALL NOT", means that the definition is
an absolute prohibition of the specification.
10.1.3 SHOULD
This word, or the adjective "RECOMMENDED", means that there may exist
valid reasons in particular circumstances to ignore a particular item,
but the full implications must be understood and carefully weighed
before choosing a different course.
10.1.4 SHOULD NOT
This phrase, or the phrase "NOT RECOMMENDED" means that there may
exist valid reasons in particular circumstances when the particular
behavior is acceptable or even useful, but the full implications
should be understood and the case carefully weighed before
implementing any behavior described with this label.
10.1.5 MAY
This word, or the adjective "OPTIONAL", means that an item is truly
optional. One vendor may choose to include the item because a
particular marketplace requires it or because the vendor feels that it
enhances the product while another vendor may omit the same item. An
implementation which does not include a particular option MUST be
prepared to interoperate with another implementation which does
include the option, though perhaps with reduced functionality. In the
same vein an implementation which does include a particular option
MUST be prepared to interoperate with another implementation which
Expires January 14, 1998
does not include the option (except, of course, for the feature the
option provides.)
10.1.6 CONDITIONALLY MANDATORY
This term means that an item MUST be implemented in a conforming
implementation if the specified condition is true. Conversely, a
conforming implementation NEED NOT implement the item if the specified
condition is false.
10.1.7 NEED NOT
The verb "NEED NOT" indicates an action that the subject of the
sentence does not have to implement in order to claim conformance to