I've posted the Internet-Drafts of the IPP/1.1 Model and Semantics and
IPP/1.1 Encoding and Transport in various forms. The draft-ietf-ipp-xxx.txt
has been sent to the IETF as Internet-Drafts. These versions incorporate
all of the Bake Off 2 Issue resolutions and the discussion since then,
including the WG Last Call Comments.
The .txt and .doc with no revision marks has the list of Contributors
updated. The others versions have an older list. There are no technical
changes between the versions.
"diff-with-1.0" has revision marks that show all of the changes since
IPP/1.0 November 1998 documents.
"-rev" show revisions since the last Internet-Draft (May 10, 1999).
"with-issue-nos" have no revision marks, but contain the issue numbers
highlighted in yellow.
The IPP/1.1 Model and Semantics document is posted as:
The IPP/1.1 Encoding and Transport document is posted as:
The IPP/1.1 Model and Semantics differences from IPP/1.0 (copied from the
1. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and
This Appendix is divided into two lists that summarize the differences
between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. The section numbers
refer to the numbers in this document which in some cases have changed from
RFC 2566. When a change affects multiple sections, the item is listed once
in the order of the first section affected and the remaining affected
section numbers are indicated.
The first list contains extensions and clarifications and the second list
contains changes in semantics or conformance. However, client and IPP
object implementations of IPP/1.0 MAY implement any of the extensions and
clarifications in this document.
The following extensions and clarifications have been incorporated into this
1. Section 2.1 - clarified that the term "client" can be either
contained in software controlled by an end user or a part of a print server
that controls devices.
2. Section 2 - clarified that the term "IPP object" and
"Printer object" can either be embedded in a device object or part of a
print server that accepts IPP requests.
3. Section 2.4 - added the description of the new
"uri-authentication-supported" Printer Description attribute.
4. Section 3.1.3, 3.1.6, 220.127.116.11, and 18.104.22.168 - clarified the
error handling for operation attributes that have their own status code.
5. Section 3.1.6 - reorganized this section into sub-sections
to separately describe "status-code", "status-message",
"detailed-status-message", and "document-access-error" attributes.
6. Section 22.214.171.124 - clarified the error status codes and their
relationship to operation attributes.
7. Section 126.96.36.199 - Added the OPTIONAL
"detailed-status-message (text(MAX))" operation attribute to provide
additional more detailed information about a response.
8. Section 188.8.131.52 and 3.2.2 - Added the OPTIONAL
"document-access-error (text(MAX))" operation attribute for use with
Print-URI and Send-URI responses.
9. Sections 3.1.7 - Added this new section to clarify returning
Unsupported Attributes for all operations, including only returning
attributes that were in the request. Moved the text from section 184.108.40.206
Unsupported Attributes to this section.
10. Sections 3.1.7 and 4.1 - clarified the encoding of the
"out-of-band" 'unsupported' and 'unknown' values.
11. Section 3.1.8 - clarified that only the version number
parameter will be carried forward into future major or minor versions of the
12. Section 3.1.8 - relaxed the requirements to increment the
major version number in future versions of the Model and Semantics document.
13. Section 3.1.9, and 3.2.5 - added the 'processing' state to
the list of job states that a job can be in after a Create-Job operation.
14. Section 3.1.9 - clarified that a non-spooling Printer MAY
accept zero or more subsequent jobs while processing a job and flow control
them down. Subsequent create requests are rejected with the
'server-error-busy' error status.
15. Section 220.127.116.11 - clarified the validation of the
"compression" operation attribute and its relationship to the validation of
the "document-format" attribute and returning Unsupported Attributes.
16. Sections 18.104.22.168, 4.3.8, 22.214.171.124, and 126.96.36.199 - added
'client-error-compression-error' status codes and the
'unsupported-compression' and 'compression-error' job-state-reasons.
17. Sections 188.8.131.52 and 4.3.8 - added
'unsupported-document-format' and 'document-format-error' job-state-reasons.
18. Sections 3.2.2, 4.3.8 and 184.108.40.206 - added
'client-error-document-access-error' status code and 'document-access-error'
job state reason.
19. Section 220.127.116.11 and 18.104.22.168 - clarified that the Unsupported
Attributes group MUST NOT include attributes not requested in the
20. Section 3.2.6 - clarified that "limit" takes precedence over
"which-jobs" and "my-jobs'.
21. Section 22.214.171.124 - clarified that Get-Jobs returns
'successful-ok' when no jobs to return.
22. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL
Pause-Printer, Resume-Printer, and Purge-Jobs operations
23. Section 3.3.1 - clarified that the authorization required
for a Send-Document request MUST be the same user as the Create-Job or an
24. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL
Hold-Job, Release-Job, and Restart-Job operations.
25. Section 4.1 - clarified that the encoding of the out-of-band
values are specified in the Encoding and Transport" document.
26. Section 126.96.36.199 - clarified that 'application/octet-stream'
auto-sensing can happen at create request time and/or job/document
27. Section 4.1.14 - clarified that the localization of dateTime
by the client includes the time zone.
28. Section 4.2 - clarified that xxx-supported have multiple
keywords and/or names by adding parentheses to the table to give: (1setOf
(type3 keyword | name))
29. Section 4.2.2 - added the 'indefinite' keyword value to the
"job-hold-until" attribute for use with the create operations and Hold-Job
and Restart-Job operations.
30. Section 4.2.6 - added more enum values to the "finishings"
Job Template attribute.
31. Section 4.3.7 - added that a forwarding server that cannot
get any job state MAY return the job's state as 'completed', provided that
it also return the new 'queued-in-device' job state reason.
32. Section 188.8.131.52 - added the Partitioning of Job States
section to clarify the concepts of Job Retention, Job History, and Job
33. Section 4.3.8 - added 'job-data-insufficient' job state
reason to indicate whether sufficient data has arrived for the document to
start to be processed.
34. Section 4.3.8 - added 'document-access-error' job state
reason to indicate an access error of any kind.
35. Section 4.3.8 - added 'job-queued-for-marker' job state
reason to indicate whether the job has completed some processing and is
waiting for the marker.
36. Section 4.3.8 - added 'unsupported-compression' and
'compression-error' job state reasons to indicate compression not supported
or compression processing error after the create has been accepted.
37. Section 4.3.8 - added 'unsupported-document-format' and
'document-format-error' job state reasons to indicate document not supported
or document format processing error after the create has been accepted.
38. Section 4.3.8 - added 'queued-in-device' job state reason to
indicate that a job as been forwarded to a print system or device that does
not provide any job status.
39. Section 4.3.10 - added "job-detailed-status-messages (1setOf
text(MAX)) for returning detailed error messages.
40. Section 4.3.11 - added the "job-document-access-errors
41. Section 184.108.40.206 - clarified that the time recorded is the
first time processing since the create operation or the Restart-Job
42. Section 220.127.116.11 and 18.104.22.168 - clarified that the
out-of-band value 'no-value' is returned if the job has not started
processing or has not completed, respectively.
43. Section 4.3.14 - Added the OPTIONAL "date-time-at-creation",
"date-time-at-processing", and "date-time-at-completed" Event Time Job
44. Section 4.4.3 - added the 'tls' value to
45. Section 4.4.3 - clarified "uri-security-supported" is
orthogonal to Client Authentication so that 'none' does not exclude Client
46. Section 4.4.11 - simplified the "printer-state" descriptions
while generalizing to allow high end devices that interpret one or more jobs
while marking another. Indicated that 'spool-area-full' and
'stopped-partly' "printer-state-reasons" may be used to provide further
47. Section 4.4.12 - added the 'moving-to-paused' keyword value
to the "printer-state-reasons" attribute for use with the Pause-Job
48. Section 4.4.12 - replaced the duplicate 'marker-supply-low'
keyword with the missing 'toner-empty' keyword for the
"printer-state-reasons" attribute. (This correction was also made before
RFC 2566 was published).
49. Section 4.4.12 - clarified 'spool-area-full'
"printer-state-reasons" to include non-spooling printers to indicate when it
can and cannot accept another job.
50. Section 4.4.15 - added the enum values to the
"operations-supported" attribute for the new operations. Clarified that the
values of this attribute are encoded as any enum, namely 32-bit values.
51. Section 4.4.30 - clarified that the dateTime value of
"printer-current-time" is on a "best efforts basis". If a proper date-time
cannot be obtained, the implementation returns the 'no-value' out-of-band
value. Also clarified that the time zone NEED NOT be the time zone that the
people near the device use and that the client SHOULD display the dateTime
attributes in the user's local time.
52. Sections 4.4.36 and 4.4.37 - added the OPTIONAL
"pages-per-minute" and "pages-per-minute-color" Printer Description
53. Section 5.1 - clarified that the client conformance
requirements apply to clients controlled by an end user and clients in
54. Section 5.1 - clarified that any response MAY contain
additional attribute groups, attributes, attribute syntaxes, or attribute
55. Section 5.1 - clarified that a client SHOULD do its best to
prevent a channel from being closed by a lower layer when the channel is
flow controlled off by the IPP Printer.
56. Section 5.2 - clarified that the IPP object requirements
apply to objects embedded in devices or that are parts of servers.
57. Section 5.2.2 - clarified that IPP objects MAY return
operation responses that contain attribute groups, attribute names,
attribute syntaxes, attribute values, and status codes that are extensions
to this standard.
58. Section 8.3 - clarified the use of URIs for each Client
59. Section 8.5 - added the security discussion around the new
60. Section 22.214.171.124 - added
61. Section 126.96.36.199 - added client-error-compression-error
62. Section 188.8.131.52 - added client-error-document-format-error
63. Section 184.108.40.206 - added client-error-document-access-error
64. Section 220.127.116.11 - added
65. Section 14 - added 'a-white', 'b-white', 'c-white',
'd-white', and 'e-white' and clarified that the existing 'a', 'b', 'c', 'd',
and 'e' values are size values.
66. Section 16 - added the OPTIONAL "pages-per-minute" and
"pages-per-minute-color" Printer attributes to the Directory schema.
67. Section 16 - added OPTIONAL
"multiple-document-jobs-supported" to the Directory schema.
68. Section 16 - added RECOMMENDED
"uri-authentication-supported", "ipp-versions-supported", and
"compression-supported" to the Directory schema.
The following changes in semantics and/or conformance have been incorporated
into this document:
1. Section 3.1.8, 5.2.4, and 18.104.22.168 - Clients and IPP objects MUST
support version 1.1 conformance requirements and SHOULD support version 1.0
conformance requirements. Also clarified that IPP Printers MUST accept
'1.1' requests and SHOULD accept '1.x' requests.
2. Section 22.214.171.124 and section 4.4.32 - changed the "compression"
operation and the "compression-supported" Printer Description attribute from
OPTIONAL to REQUIRED.
3. Sections 126.96.36.199 and 4.3.8 - changed "job-state-reasons" from
RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be returned in
create operation responses.
4. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed
Create-Job/Send-Document so that they MAY be implemented while only
supporting one document jobs. Added the "multiple-document-jobs-supported"
boolean Printer Description attribute to indicate whether
Create-Job/Send-Document support multiple document jobs or not. Added to
the Directory schema.
5. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', since
binary is not legal with the 'text' type.
6. Section 4.2.4 - indicated that the "multiple-document-handling" Job
Template attribute MUST be supported with at least one value if the Printer
supports multiple documents per job
7. Section 188.8.131.52 - indicated that the 'job-restartable' job state
reason SHOULD be supported if the Restart-Job operation is supported.
8. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED to
9. Section 4.3.8 - clarified the conformance of the values of the
"job-state-reasons" attribute by copying conformance requirements from other
sections of the document so that it is clear from reading the definition of
"job-state-reasons" which values MUST or SHOULD be supported. The 'none',
'unsupported-compression', and 'unsupported-document-format' values MUST be
supported. The ''job-hold-until-specified' SHOULD be specified if the
"job-hold-until" Job Template is supported. The following values SHOULD be
supported: 'job-canceled-by-user', 'aborted-by-system', and
'job-completed-successfully'. The 'job-canceled-by-operator' SHOULD be
supported if the implementation permits canceling by other than the job
owner. The 'job-canceled-at-device' SHOULD be supported if the device
supports canceling jobs at the console. The 'job-completed-with-warnings'
SHOULD be supported, if the implementation detects warnings. The
'job-completed-with-errors' SHOULD be supported if the implementation
detects errors. The 'job-restartable' SHOULD be supported if the
Restart-Job operation is supported.
10. Section 4.3.14 - changed the "time-at-creation",
"time-at-processing", and "time-at-completed" Event Time Job Description
attributes from OPTIONAL to REQUIRED.
11. Section 184.108.40.206 - added the REQUIRED "job-printer-up-time
(integer(1:MAX))" Job Description attribute as an alias for
"printer-up-time" to reduce number of operations to get job times.
12. Section 4.4.2 - added the REQUIRED "uri-authentication-supported
(1setOf type2 keyword)" Printer Description attribute to describe the Client
Authentication used by each Printer URI.
13. Section 4.4.12 - changed "printer-state-reasons" Printer Description
attribute from OPTIONAL to REQUIRED.
14. Section 4.4.12 - changed 'paused' value of "printer-state-reasons"
to MUST if Pause-Printer operation is supported.
15. Section 4.4.14 - added the REQUIRED "ipp-versions-supported (1setOf
keyword)" Printer Description attribute, since IPP/1.1 Printers do not have
to support version '1.0' conformance requirements. Section 4.4.16 - added
the "multiple-document-jobs-supported (boolean)" Printer Description
attribute so that a client can tell whether a Printer that supports
Create-Job/Send-Document supports multiple document jobs or not. This
attribute is REQUIRED if the Create-Job operation is supported.
16. Section 4.4.24 - changed the "queued-job-count" Printer Description
attribute from RECOMMENDED to REQUIRED.
17. Section 4.4.32 - changed "compression-supported (1setOf type3
keyword)" Printer Description attribute from OPTIONAL to REQUIRED.
18. Section 5.1 - changed the client security requirements from
RECOMMENDED non-standards track SSL3 to MUST support Client Authentication
as defined in the IPP/1.1 Encoding and Transport document [IPP-PRO]. A
client SHOULD support Operation Privacy and Server Authentication as defined
in the IPP/1.1 Encoding and Transport document [IPP-PRO].
19. Section 5.2.7 - changed the IPP object security requirements from
OPTIONAL non-standards track SSL3 to SHOULD contain support for Client
Authentication as defined in the IPP/1.1 Encoding and Transport document
[IPP-PRO]. A Printer implementation MAY allow an administrator to configure
the Printer so that all, some, or none of the users are authenticated. An
IPP Printer implementation SHOULD contain support for Operation Privacy and
Server Authentication as defined in the IPP/1.1 Encoding and Transport
document [IPP-PRO]. A Printer implementation MAY allow an administrator to
configure the degree of support for Operation Privacy and Server
Authentication. Security MUST NOT be compromised when the client supplies a
lower version-number in a request.
The IPP/1.1 Encoding and Transport difference from IPP/1.0 (RFC 2565)
(copied from the Appendix) is:
13. Appendix D: Changes from IPP/1.0
IPP/1.1 is identical to IPP/1.0 [RFC2565] with the follow changes:
1. Attributes values that identify a printer or job object use a new
'ipp' scheme. The 'http' and 'https' schemes are supported only for
backward compatibility. See section 5.
2. Clients MUST support of Digest Authentication, IPP Printers SHOULD
support Digest Authentication. See Section 6.1.1
3. TLS is recommended for channel security. In addition, SSL3 may be
supported for backward compatibility. See Section 6.1.2
4. For interoperability with IPP/1.0, IPP/1.1 Clients SHOULD support
IPP/1.0 conformance requirements. IPP/1.1 Printers SHOULD support IPP/1.0
conformance requirements. See section 7.1.
5. IPP/1.1 objects SHOULD accept any request with major version number
'1'. See section 7.1.
6. IPP objects SHOULD return the URL scheme requested for
"job-printer-uri" and "job-uri" Job Attributes, rather than the URL scheme
used to create the job. See section 7.2