summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3196.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3196.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3196.txt')
-rw-r--r--doc/rfc/rfc3196.txt5379
1 files changed, 5379 insertions, 0 deletions
diff --git a/doc/rfc/rfc3196.txt b/doc/rfc/rfc3196.txt
new file mode 100644
index 0000000..50b7c2d
--- /dev/null
+++ b/doc/rfc/rfc3196.txt
@@ -0,0 +1,5379 @@
+
+
+
+
+
+
+Network Working Group T. Hastings
+Request for Comments: 3196 C. Manros
+Obsoletes: 2639 P. Zehler
+Category: Informational Xerox Corporation
+ C. Kugler
+ IBM Printing Systems Co
+ H. Holst
+ i-data Printing Systems
+ November 2001
+
+
+ Internet Printing Protocol/1.1: Implementor's Guide
+
+Status of this Memo
+
+ This memo provides information for the Internet community. It does
+ not specify an Internet standard of any kind. Distribution of this
+ memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+Abstract
+
+ This document is one of a set of documents, which together describe
+ all aspects of a new Internet Printing Protocol (IPP).
+
+Table of Contents
+
+ 1 Introduction................................................... 4
+ 1.1 Conformance language........................................ 5
+ 1.2 Other terminology........................................... 6
+ 1.3 Issues Raised from Interoperability Testing Events.......... 6
+ 2 IPP Objects.................................................... 6
+ 3 IPP Operations................................................. 7
+ 3.1 Common Semantics............................................ 7
+ 3.1.1 Summary of Operation Attributes............................ 8
+ 3.1.2 Suggested Operation Processing Steps for IPP Objects....... 16
+ 3.1.2.1 Suggested Operation Processing Steps for all Operations. 17
+ 3.1.2.1.1 Validate version number............................... 18
+ 3.1.2.1.2 Validate operation identifier......................... 20
+ 3.1.2.1.3 Validate the request identifier....................... 20
+ 3.1.2.1.4 Validate attribute group and attribute presence and
+ order................................................. 20
+ 3.1.2.1.4.1 Validate the presence and order of attribute groups. 20
+ 3.1.2.1.4.2 Ignore unknown attribute groups in the expected
+ position............................................ 21
+
+
+
+Hastings, et al. Informational [Page 1]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ 3.1.2.1.4.3 Validate the presence of a single occurrence of
+ required Operation attributes....................... 21
+ 3.1.2.1.5 Validate the values of the REQUIRED Operation
+ attributes............................................ 29
+ 3.1.2.1.6 Validate the values of the OPTIONAL Operation
+ attributes............................................ 33
+ 3.1.2.2 Suggested Additional Processing Steps for Operations
+ that Create/Validate Jobs and Add Documents............. 37
+ 3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied...... 37
+ 3.1.2.2.2 Check that the Printer object is accepting jobs....... 38
+ 3.1.2.2.3 Validate the values of the Job Template attributes.... 38
+ 3.1.2.3 Algorithm for job validation............................ 39
+ 3.1.2.3.1 Check for conflicting Job Template attributes values.. 45
+ 3.1.2.3.2 Decide whether to REJECT the request.................. 46
+ 3.1.2.3.3 For the Validate-Job operation, RETURN one of the
+ success status codes.................................. 48
+ 3.1.2.3.4 Create the Job object with attributes to support...... 48
+ 3.1.2.3.5 Return one of the success status codes................ 50
+ 3.1.2.3.6 Accept appended Document Content...................... 50
+ 3.1.2.3.7 Scheduling and Starting to Process the Job............ 50
+ 3.1.2.3.8 Completing the Job.................................... 50
+ 3.1.2.3.9 Destroying the Job after completion................... 51
+ 3.1.2.3.10 Interaction with "ipp-attribute-fidelity"............. 51
+ 3.1.2.3.11 Character set code conversion support................. 51
+ 3.1.2.3.12 What charset to return when an unsupported charset is
+ requested (Issue 1.19)?....... ....................... 52
+ 3.1.2.3.13 Natural Language Override (NLO)....................... 53
+ 3.1.3 Status codes returned by operation......................... 55
+ 3.1.3.1 Printer Operations...................................... 55
+ 3.1.3.1.1 Print-Job............................................. 55
+ 3.1.3.1.2 Print-URI............................................. 58
+ 3.1.3.1.3 Validate-Job.......................................... 58
+ 3.1.3.1.4 Create-Job............................................ 58
+ 3.1.3.1.5 Get-Printer-Attributes................................ 59
+ 3.1.3.1.6 Get-Jobs.............................................. 60
+ 3.1.3.1.7 Pause-Printer......................................... 61
+ 3.1.3.1.8 Resume-Printer........................................ 62
+ 3.1.3.1.8.1 What about Printers unable to change state due to
+ an error condition?................................. 63
+ 3.1.3.1.8.2 How is "printer-state" handled on Resume-Printer?... 63
+ 3.1.3.1.9 Purge-Printer......................................... 63
+ 3.1.3.2 Job Operations.......................................... 64
+ 3.1.3.2.1 Send-Document......................................... 64
+ 3.1.3.2.2 Send-URI.............................................. 65
+ 3.1.3.2.3 Cancel-Job............................................ 65
+ 3.1.3.2.4 Get-Job-Attributes.................................... 67
+ 3.1.3.2.5 Hold-Job.............................................. 68
+ 3.1.3.2.6 Release-Job........................................... 69
+
+
+
+Hastings, et al. Informational [Page 2]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ 3.1.3.2.7 Restart-Job........................................... 69
+ 3.1.3.2.7.1 Can documents be added to a restarted job?.......... 69
+ 3.1.4 Returning unsupported attributes in Get-Xxxx responses
+ (Issue 1.18)............................................... 70
+ 3.1.5 Sending empty attribute groups............................. 70
+ 3.2 Printer Operations.......................................... 71
+ 3.2.1 Print-Job operation........................................ 71
+ 3.2.1.1 Flow controlling the data portion of a Print-Job
+ request (Issue 1.22).................................... 71
+ 3.2.1.2 Returning job-state in Print-Job response (Issue 1.30).. 71
+ 3.2.2 Get-Printer-Attributes operation........................... 72
+ 3.2.3 Get-Jobs operation......................................... 72
+ 3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name'
+ (Issue 1.39)?.......................................... 72
+ 3.2.3.2 Why is there a "limit" attribute in the Get-Jobs
+ operation?.............................................. 73
+ 3.2.4 Create-Job operation....................................... 73
+ 3.3 Job Operations.............................................. 74
+ 3.3.1 Validate-Job............................................... 74
+ 3.3.2 Restart-Job................................................ 74
+ 4 Object Attributes.............................................. 74
+ 4.1 Attribute Syntax's.......................................... 74
+ 4.1.1 The 'none' value for empty sets (Issue 1.37)............... 74
+ 4.1.2 Multi-valued attributes (Issue 1.31)....................... 75
+ 4.1.3 Case Sensitivity in URIs (issue 1.6)....................... 75
+ 4.1.4 Maximum length for xxxWithLanguage and xxxWithoutLanguage.. 76
+ 4.2 Job Template Attributes..................................... 76
+ 4.2.1 multiple-document-handling(type2 keyword).................. 76
+ 4.2.1.1 Support of multiple document jobs....................... 76
+ 4.3 Job Description Attributes.................................. 76
+ 4.3.1 Getting the date and time of day........................... 76
+ 4.4 Printer Description Attributes.............................. 77
+ 4.4.1 queued-job-count (integer(0:MAX)).......................... 77
+ 4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)?..... 77
+ 4.4.1.2 Is "queued-job-count" a good measure of how busy a
+ printer is (Issue 1.15)?................................ 77
+ 4.4.2 printer-current-time (dateTime)............................ 78
+ 4.4.3 Printer-uri................................................ 78
+ 4.5 Empty Jobs.................................................. 79
+ 5 Directory Considerations....................................... 79
+ 5.1 General Directory Schema Considerations..................... 79
+ 5.2 IPP Printer with a DNS name................................. 79
+ 6 Security Considerations........................................ 80
+ 6.1 Querying jobs with IPP that were submitted using other job
+ submission protocols (Issue 1.32)........................... 80
+ 7 Encoding and Transport......................................... 81
+ 7.1 General Headers............................................. 83
+ 7.2 Request Headers............................................ 84
+
+
+
+Hastings, et al. Informational [Page 3]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ 7.3 Response Headers............................................ 86
+ 7.4 Entity Headers............................................. 87
+ 7.5 Optional support for HTTP/1.0............................... 88
+ 7.6 HTTP/1.1 Chunking........................................... 88
+ 7.6.1 Disabling IPP Server Response Chunking..................... 88
+ 7.6.2 Warning About the Support of Chunked Requests.............. 88
+ 8 References..................................................... 89
+ 9 Authors' Addresses............................................. 91
+ 10 Description of the Base IPP Documents.......................... 94
+ 11 Full Copyright Statement....................................... 96
+
+Tables
+
+ Table 1 - Summary of Printer operation attributes that sender MUST
+ supply ................................................. 8
+ Table 2 - Summary of Printer operation attributes that sender MAY
+ supply ................................................. 10
+ Table 3 - Summary of Job operation attributes that sender MUST
+ supply.................................................. 12
+ Table 4 - Summary of Job operation attributes that sender MAY
+ supply.................................................. 14
+ Table 5 - Printer operation response attributes................... 16
+ Table 6 - Examples of validating IPP version...................... 19
+ Table 7 - Rules for validating single values X against Z.......... 40
+
+1. Introduction
+
+ IPP is an application level protocol that can be used for distributed
+ printing using Internet tools and technologies. This document
+ contains information that supplements the IPP Model and Semantics
+ [RFC2911] and the IPP Transport and Encoding [RFC2910] documents. It
+ is intended to help implementers understand IPP/1.1, as well as
+ IPP/1.0 [RFC2565, RFC2566], and some of the considerations that may
+ assist them in the design of their client and/or IPP object
+ implementation. For example, a typical order of processing requests
+ is given, including error checking. Motivation for some of the
+ specification decisions is also included.
+
+ This document obsoletes RFC 2639 which was the Implementor's Guide
+ for IPP/1.0. The IPP Implementor's Guide (IIG) (this document)
+ contains information that supplements the IPP Model and Semantics
+ [RFC2911] and the IPP Transport and Encoding [RFC2910] documents.
+ This document is just one of a suite of documents that fully define
+ IPP. The base set of IPP documents includes:
+
+ Design Goals for an Internet Printing Protocol [RFC2567]
+ Rationale for the Structure and Model and Protocol for the
+ Internet Printing Protocol [RFC2568]
+
+
+
+Hastings, et al. Informational [Page 4]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
+ Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
+ Internet Printing Protocol/1.1: Implementor's Guide (this
+ document)
+ Mapping between LPD and IPP Protocols [RFC2569]
+
+ See section 10 for a description of these base IPP documents. Anyone
+ reading these documents for the first time is strongly encouraged to
+ read the IPP documents in the above order.
+
+ As such the information in this document is not part of the formal
+ specification of IPP/1.1. Instead information is presented to help
+ implementers understand IPP/1.1, as well as IPP/1.0 [RFC2565,
+ RFC2566], including some of the motivation for decisions taken by the
+ committee in developing the specification. Some of the
+ implementation considerations are intended to help implementers
+ design their client and/or IPP object implementations. If there are
+ any contradictions between this document and [RFC2911] or [RFC2910],
+ those documents take precedence over this document.
+
+ Platform-specific implementation considerations will be included in
+ this guide as they become known.
+
+ Note: In order to help the reader of the IIG and the IPP Model and
+ Semantics document, the sections in this document parallel the
+ corresponding sections in the Model document and are numbered the
+ same for ease of cross reference. The sections that correspond to
+ the IPP Transport and Encoding are correspondingly offset.
+
+1.1 Conformance language
+
+ Usually, this document does not contain the terminology MUST, MUST
+ NOT, MAY, NEED NOT, SHOULD, SHOULD NOT, REQUIRED, and OPTIONAL.
+ However, when those terms do appear in this document, their intent is
+ to repeat what the [RFC2911] and [RFC2910] documents require and
+ allow, rather than specifying additional conformance requirements.
+ These terms are defined in section 12 on conformance terminology in
+ [RFC2911], most of which is taken from RFC 2119 [RFC2119].
+
+ Implementers should read section 12 (APPENDIX A) in [RFC2911] in
+ order to understand these capitalized words. The words MUST, MUST
+ NOT, and REQUIRED indicate what implementations are required to
+ support in a client or IPP object in order to be conformant to
+ [RFC2911] and [RFC2910]. MAY, NEED NOT, and OPTIONAL indicate was is
+ merely allowed as an implementer option. The verbs SHOULD and SHOULD
+ NOT indicate suggested behavior, but which is not required or
+ disallowed, respectively, in order to conform to the specification.
+
+
+
+
+Hastings, et al. Informational [Page 5]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+1.2 Other terminology
+
+ This document uses other terms, such as "attributes", "operation",
+ and "Printer" as defined in [RFC2911] section 12. In addition, the
+ term "sender" refers to the client that sends a request or an IPP
+ object that returns a response. The term "receiver" refers to the
+ IPP object that receives a request and to a client that receives a
+ response.
+
+1.3 Issues Raised from Interoperability Testing Events
+
+ The IPP WG has conducted three open Interoperability Testing Events.
+ The first one was held in September 1998, the second one was held in
+ March 1999, and the third one was held in October 2000. See the
+ summary reports in:
+
+ ftp://ftp.pwg.org/pub/pwg/ipp/new_TES/
+
+ The issues raised from the first Interoperability Testing Event are
+ numbered 1.n in this document and have been incorporated into
+ "IPP/1.0 Model and Semantics" [RFC2566] and the "IPP/1.0 Encoding and
+ Transport" [RFC2565] documents. However, some of the discussion is
+ left here in the Implementor's Guide to help understanding.
+
+ The issues raised from the second Interoperability Testing Event are
+ numbered 2.n in this document have been incorporated into "IPP/1.1
+ Model and Semantics" [RFC2911] and the "IPP/1.1 Encoding and
+ Transport" [RFC2910] documents. However, some of the discussion is
+ left here in the Implementor's Guide to help understanding.
+
+ The issues raised from the third Interoperability Testing Event are
+ numbered 3.n in this document and are described in:
+
+ ftp://ftp.pwg.org/pub/pwg/ipp/Issues/Issues-raised-at-Bake-
+ Off3.pdf
+
+ ftp://ftp.pwg.org/pub/pwg/ipp/Issues/Issues-raised-at-Bake-
+ Off3.doc
+
+ ftp://ftp.pwg.org/pub/pwg/ipp/Issues/Issues-raised-at-Bake-
+ Off3.txt
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 6]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+2. IPP Objects
+
+ The term "client" in IPP is intended to mean any client that issues
+ IPP operation requests and accepts IPP operation responses, whether
+ it be a desktop or a server. In other words, the term "client" does
+ not just mean end-user clients, such as those associated with
+ desktops.
+
+ The term "IPP Printer" in IPP is intended to mean an object that
+ accepts IPP operation requests and returns IPP operation responses,
+ whether implemented in a server or a device. An IPP Printer object
+ MAY, if implemented in a server, turn around and forward received
+ jobs (and other requests) to other devices and print
+ servers/services, either using IPP or some other protocol.
+
+3 IPP Operations
+
+ This section corresponds to Section 3 "IPP Operations" in the
+ IPP/1.1 Model and Semantics document [RFC2911].
+
+3.1 Common Semantics
+
+ This section discusses semantics common to all operations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 7]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.1 Summary of Operation Attributes
+
+ Table 1 - Summary of Printer operation attributes that sender MUST
+ supply
+
+Printer Operations
+
+ Requests Responses
+ Operation PJ, PU CJ GPA GJ PP, All
+ Attributes VJ (O) (O) (R) (R) RP, Operations
+ (R) PP
+ (O+)
+
+ Operation parameters--REQUIRED to be supplied by the sender:
+
+ operation-id R R R R R R
+
+ status-code R
+
+ request-id R R R R R R R
+
+ version-number R R R R R R R
+
+ Operation attributes--REQUIRED to be supplied by the sender:
+
+ attributes- R R R R R R R
+ charset
+
+ attributes- R R R R R R R
+ natural-
+ language
+
+ document-uri R
+
+ job-id*
+
+ job-uri*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 8]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+Printer Operations
+
+ Requests Responses
+
+ Operation PJ, PU CJ GPA GJ PP, All
+ Attributes VJ (O) (O) (R) (R) RP, Operations
+ (R) PP
+ (O+)
+ last-document
+
+ printer-uri R R R R R R
+
+ Operation attributes--RECOMMENDED to be supplied by the
+ sender:
+
+ job-name R R R
+
+ requesting-user- R R R R R R
+ name
+
+ Legend:
+
+ PJ, VJ: Print-Job, Validate-Job
+ PU: Print-URI
+ CJ: Create-Job
+ GPA: Get-Printer-Attributes
+ GJ: Get-Jobs
+ PP, RP, PP: Pause-Printer, Resume-Printer, Purge-Printer
+ R indicates a REQUIRED operation that MUST be supported by the IPP
+ object (Printer or Job). For attributes, R indicates that the
+ attribute MUST be supported by the IPP object that supports the
+ associated operation.
+ O indicates an OPTIONAL operation or attribute that MAY be supported
+ by the IPP object (Printer or Job).
+ + indicates that this is not an IPP/1.0 feature, but is only a part
+ of IPP/1.1 and future versions of IPP.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 9]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Table 2 - Summary of Printer operation attributes that sender MAY
+ supply
+
+Printer Operations
+
+ Requests Respon-
+ ses
+ Operation Attributes PJ, PU CJ GPA GJ PP, All
+ VJ (O) (O) (R) (R) RP, Opera
+ (R) PP tions
+ (O+)
+
+ Operation attributes--OPTIONAL to be supplied by the sender:
+
+ status-message O
+
+ detailed-status- O
+ message
+
+ document-access- O**
+ error
+
+ compression R R
+
+ document-format R R R
+
+ document-name O O
+
+ document-natural- O O
+ language
+
+ ipp-attribute- R R R
+ fidelity
+
+ job-impressions O O O
+
+ job-k-octets O O O
+
+ job-media-sheets O O O
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 10]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+Printer Operations
+
+ Requests Respon-
+ ses
+ Operation Attributes PJ, PU CJ GPA GJ PP, All
+ VJ (O) (O) (R) (R) RP, Opera
+ (R) PP tions
+ (O+)
+
+ limit R
+
+ message
+
+ my-jobs R
+
+ requested-attributes R R
+
+ which-jobs R
+
+ Legend:
+
+ PJ, VJ: Print-Job, Validate-Job
+ PU: Print-URI
+ CJ: Create-Job
+ GPA: Get-Printer-Attributes
+ GJ: Get-Jobs
+ PP, RP, PP: Pause-Printer, Resume-Printer, Purge-Printer
+ R indicates a REQUIRED operation that MUST be supported by the IPP
+ object (Printer or Job). For attributes, R indicates that the
+ attribute MUST be supported by the IPP object that supports the
+ associated operation.
+ O indicates an OPTIONAL operation or attribute that MAY be supported
+ by the IPP object (Printer or Job).
+ + indicates that this is not an IPP/1.0 feature, but is only a part
+ of IPP/1.1 and future versions of IPP.
+ * "job-id" is REQUIRED only if used together with "printer-uri" to
+ identify the target job; otherwise, "job-uri" is REQUIRED.
+ ** "document-access-error" applies to the Print-URI response only.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 11]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Table 3 - Summary of Job operation attributes that sender MUST supply
+
+Job Operations
+
+ Requests Responses
+ Operation SD SU CJ GJA HJ All
+ Attributes (O) (O) (R) (R) RJ, RJ Opera-
+ (O+) tions
+
+ Operation parameters--REQUIRED to be supplied by the sender:
+
+ operation-id R R R R R
+
+ status-code R
+
+ request-id R R R R R R
+
+ version-number R R R R R R
+
+ Operation attributes--REQUIRED to be supplied by the sender:
+
+ attributes-charset R R R R R R
+
+ attributes-natural- R R R R R R
+ language
+
+ document-uri R
+
+ job-id* R R R R R
+
+ job-uri* R R R R R
+
+ last-document R R
+
+ printer-uri R R R R R
+
+ Operation attributes--RECOMMENDED to be supplied by the sender:
+
+ job-name
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 12]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+Job Operations
+
+ Requests Responses
+
+ Operation SD SU CJ GJA HJ All
+ Attributes (O) (O) (R) (R) RJ, RJ Opera-
+ (O+) tions
+
+ requesting-user- R R R R R
+ name
+
+ Legend:
+
+ SD: Send-Document
+ SU: Send-URI
+ CJ: Cancel-Job
+ GJA: Get-Job-Attributes
+ HJ, RJ, RJ: Hold-Job, Release-Job, Restart-Job
+ R indicates a REQUIRED operation that MUST be supported by the IPP
+ object (Printer or Job). For attributes, R indicates that the
+ attribute MUST be supported by the IPP object that supports the
+ associated operation.
+ O indicates an OPTIONAL operation or attribute that MAY be supported
+ by the IPP object (Printer or Job).
+ + indicates that this is not an IPP/1.0 feature, but is only a part
+ of IPP/1.1 and future versions of IPP.
+ * "job-id" is REQUIRED only if used together with "printer-uri" to
+ identify the target job; otherwise, "job-uri" is REQUIRED.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 13]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Table 4 - Summary of Job operation attributes that sender MAY supply
+
+Job Operations
+
+ Requests Responses
+
+ Operation SD SU CJ GJA HJ, SD All
+ Attributes (O) (O) (R) (R) RJ, (O) Opera-
+ RJ tions
+ (O+)
+
+ Operation attributes--OPTIONAL to be supplied by the sender:
+
+ status-message O
+
+ detailed-status- O
+ message
+
+ document-access- O**
+ error
+
+ compression R R
+
+ document-format R R
+
+ document-name O O
+
+ document-natural- O O
+ language
+
+ ipp-attribute-
+ fidelity
+
+ job-impressions
+
+ job-k-octets
+
+ job-media-sheets
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 14]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+Job Operations
+
+ Requests Responses
+
+ Operation SD SU CJ GJA HJ, SD All
+ Attributes (O) (O) (R) (R) RJ, (O) Opera-
+ RJ tions
+ (O+)
+
+ limit
+
+ message O O O
+
+ job-hold-until R
+
+ my-jobs
+
+ requested- R
+ attributes
+
+ which-jobs
+
+ Legend:
+
+ SD: Send-Document
+ SU: Send-URI
+ CJ: Cancel-Job
+ GJA: Get-Job-Attributes
+ HJ, RJ, RJ: Hold-Job, Release-Job, Restart-Job
+ R indicates a REQUIRED operation that MUST be supported by the IPP
+ object (Printer or Job). For attributes, R indicates that the
+ attribute MUST be supported by the IPP object that supports the
+ associated operation.
+ O indicates an OPTIONAL operation or attribute that MAY be supported
+ by the IPP object (Printer or Job).
+ + indicates that this is not an IPP/1.0 feature, but is only a part
+ of IPP/1.1 and future versions of IPP.
+ * "job-id" is REQUIRED only if used together with "printer-uri" to
+ identify the target job; otherwise, "job-uri" is REQUIRED.
+ ** "document-access-error" applies to the Send-URI operation only
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 15]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Table 5 - Printer operation response attributes
+
+Printer Operations
+
+ Response
+
+ Operation PJ (R) VJ (R) PU (O) CJ (O) GPA GJ (R) PP,
+ Attributes SD (O) SU (O) (R) RP, PP
+ (O+)
+
+ job-uri R R R
+
+ job-id R R R
+
+ job-state R R R
+
+ job-state- R+ R+ R+
+ reasons
+
+ number-of- O O O
+ intervening-
+ jobs
+
+ document- O
+ access-
+ error+
+
+ Legend:
+
+ PJ, SJ: Print-Job, Send-Document
+ VJ: Validate-Job
+ PU, SU: Print-URI, Send-URI
+ CJ: Create-Job
+ GPA: Get-Printer-Attributes
+ GJ: Get-Jobs
+ PP, RP, PP: Pause-Printer, Resume-Printer, Purge-Printer
+ R indicates a REQUIRED operation that MUST be supported by the IPP
+ object (Printer or Job). For attributes, R indicates that the
+ attribute MUST be supported by the IPP object that supports the
+ associated operation.
+ O indicates an OPTIONAL operation or attribute that MAY be supported
+ by the IPP object (Printer or Job).
+
+3.1.2 Suggested Operation Processing Steps for IPP Objects
+
+ This section suggests the steps and error checks that an IPP object
+ MAY perform when processing requests and returning responses. An IPP
+ object MAY perform some or all of the error checks. However, some
+
+
+
+Hastings, et al. Informational [Page 16]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ implementations MAY choose to be more forgiving than the error checks
+ shown here, in order to be able to accept requests from non-
+ conforming clients. Not performing all of these error checks is a
+ so-called "forgiving" implementation. On the other hand, clients
+ that successfully submit requests to IPP objects that do perform all
+ the error checks will be more likely to be able to interoperate with
+ other IPP object implementations. Thus an implementer of an IPP
+ object needs to decide whether to be a "forgiving" or a "strict"
+ implementation. Therefore, the error status codes returned may
+ differ between implementations. Consequentially, client SHOULD NOT
+ expect exactly the error code processing described in this section.
+
+ When an IPP object receives a request, the IPP object either accepts
+ or rejects the request. In order to determine whether or not to
+ accept or reject the request, the IPP object SHOULD execute the
+ following steps. The order of the steps may be rearranged and/or
+ combined, including making one or multiple passes over the request.
+
+ A client MUST supply requests that would pass all of the error checks
+ indicated here in order to be a conforming client. Therefore, a
+ client SHOULD supply requests that are conforming, in order to avoid
+ being rejected by some IPP object implementations and/or risking
+ different semantics by different implementations of forgiving
+ implementations. For example, a forgiving implementation that
+ accepts multiple occurrences of the same attribute, rather than
+ rejecting the request might use the first occurrences, while another
+ might use the last occurrence. Thus such a non-conforming client
+ would get different results from the two forgiving implementations.
+
+ In the following, processing continues step by step until a "RETURNS
+ the xxx status code ..." statement is encountered. Error returns are
+ indicated by the verb: "REJECTS". Since clients have difficulty
+ getting the status code before sending all of the document data in a
+ Print-Job request, clients SHOULD use the Validate-Job operation
+ before sending large documents to be printed, in order to validate
+ whether the IPP Printer will accept the job or not.
+
+ It is assumed that security authentication and authorization has
+ already taken place at a lower layer.
+
+3.1.2.1 Suggested Operation Processing Steps for all Operations
+
+ This section is intended to apply to all operations. The next
+ section contains the additional steps for the Print-Job, Validate-
+ Job, Print-URI, Create-Job, Send-Document, and Send-URI operations
+ that create jobs, adds documents, and validates jobs.
+
+
+
+
+
+Hastings, et al. Informational [Page 17]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IIG Sect # Flow IPP error status codes
+ ---------- ---- ----------------------
+ |
+ v err
+ 3.1.2.1.1 <Validate version> --> server-error-version-not-
+ supported
+ ok|
+ v err
+ 3.1.2.1.2 <Validate operation> --> server-error-operation-not-
+ supported
+ ok|
+ v err
+ 3.1.2.1.4.1- <Validate presence> --> client-error-bad-request
+ 3.1.2.1.4.2 <of attributes>
+ ok|
+ v err
+ 3.1.2.1.4.3 <Validate presence> --> client-error-bad-request
+ <of operation attr>
+ ok|
+ v err
+ 3.1.2.1.5 <Validate values of> --> client-error-bad-request
+ <operation attrs> client-error-request-value-
+ too-long
+ <(length, tag, range,>
+ <multi-value)>
+ ok|
+ v err
+ 3.1.2.1.5 <Validate values> --> client-error-bad-request
+ <with supported values> client-error-charset-not-
+ supported
+ ok| client-error-attributes-or-
+ values-
+ | not-supported
+ v err
+ 3.1.2.1.6 <Validate optionally> --> client-error-bad-request
+ <operation attr> client-error-natural-language-
+ not-supported
+ | client-error-request-value-
+ too-long
+ | client-error-attributes-or-
+ values-not-supported
+
+3.1.2.1.1 Validate version number
+
+ Every request and every response contains the "version-number"
+ attribute. The value of this attribute is the major and minor
+ version number of the syntax and semantics that the client and IPP
+ object is using, respectively. The "version-number" attribute
+
+
+
+Hastings, et al. Informational [Page 18]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ remains in a fixed position across all future versions so that all
+ clients and IPP object that support future versions can determine
+ which version is being used. The IPP object checks to see if the
+ major version number supplied in the request is supported. If not,
+ the Printer object REJECTS the request and RETURNS the 'server-
+ error-version-not-supported' status code in the response. The IPP
+ object returns in the "version-number" response attribute the major
+ and minor version for the error response. Thus the client can learn
+ at least one major and minor version that the IPP object supports.
+ The IPP object is encouraged to return the closest version number to
+ the one supplied by the client.
+
+ The checking of the minor version number is implementation dependent,
+ however if the client-supplied minor version is explicitly supported,
+ the IPP object MUST respond using that identical minor version
+ number. If the major version number matches, but the minor version
+ number does not, the Printer SHOULD accept and attempt to process the
+ request, or MAY reject the request and return the 'server-error-
+ version-not-supported' status code. In all cases, the Printer MUST
+ return the nearest version number that it supports. For example,
+ suppose that an IPP/1.2 Printer supports versions '1.1' and '1.2'.
+ The following responses are conforming:
+
+ Table 6 - Examples of validating IPP version
+
+ Client supplies Printer Accept Request? Printer returns
+
+
+ 1.0 yes (SHOULD) 1.1
+
+ 1.0 no (SHOULD NOT) 1.1
+
+ 1.1 yes (MUST) 1.1
+
+ 1.2 yes (MUST) 1.2
+
+ 1.3 yes (SHOULD) 1.2
+
+ 1.3 no (SHOULD NOT) 1.2
+
+ It is advantageous for Printers to support both IPP/1.1 and IPP/1.0,
+ so that they can interoperate with either client implementations.
+ Some implementations may allow an Administrator to explicitly disable
+ support for one or the other by setting the "ipp-versions-supported"
+ Printer description attribute.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 19]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Likewise, it is advantageous for clients to support both versions to
+ allow interoperability with new and legacy Printers.
+
+3.1.2.1.2 Validate operation identifier
+
+ The Printer object checks to see if the "operation-id" attribute
+ supplied by the client is supported as indicated in the Printer
+ object's "operations-supported" attribute. If not, the Printer
+ REJECTS the request and returns the 'server-error-operation-not-
+ supported' status code in the response.
+
+3.1.2.1.3 Validate the request identifier
+
+ The Printer object SHOULD NOT check to see if the "request-id"
+ attribute supplied by the client is in range: between 1 and 2**31 - 1
+ (inclusive), but copies all 32 bits.
+
+ Note: The "version-number", "operation-id", and the "request-id"
+ parameters are in fixed octet positions in the IPP/1.1 encoding. The
+ "version-number" parameter will be the same fixed octet position in
+ all versions of the protocol. These fields are validated before
+ proceeding with the rest of the validation.
+
+3.1.2.1.4 Validate attribute group and attribute presence and order
+
+ The order of the following validation steps depends on
+ implementation.
+
+3.1.2.1.4.1 Validate the presence and order of attribute groups
+
+ Client requests and IPP object responses contain attribute groups
+ that Section 3 requires to be present and in a specified order. An
+ IPP object verifies that the attribute groups are present and in the
+ correct order in requests supplied by clients (attribute groups
+ without an * in the following tables).
+
+ If an IPP object receives a request with (1) required attribute
+ groups missing, or (2) the attributes groups are out of order, or (3)
+ the groups are repeated, the IPP object REJECTS the request and
+ RETURNS the 'client-error-bad-request' status code. For example, it
+ is an error for the Job Template Attributes group to occur before the
+ Operation Attributes group, for the Operation Attributes group to be
+ omitted, or for an attribute group to occur more than once, except in
+ the Get-Jobs response.
+
+ Since this kind of attribute group error is most likely to be an
+ error detected by a client developer rather than by a customer, the
+ IPP object NEED NOT return an indication of which attribute group was
+
+
+
+Hastings, et al. Informational [Page 20]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ in error in either the Unsupported Attributes group or the Status
+ Message. Also, the IPP object NEED NOT find all attribute group
+ errors before returning this error.
+
+3.1.2.1.4.2 Ignore unknown attribute groups in the expected position
+
+ Future attribute groups may be added to the specification at the end
+ of requests just before the Document Content and at the end of
+ response, except for the Get-Jobs response, where it maybe there or
+ before the first job attributes returned. If an IPP object receives
+ an unknown attribute group in these positions, it ignores the entire
+ group, rather than returning an error, since that group may be a new
+ group in a later minor version of the protocol that can be ignored.
+ (If the new attribute group cannot be ignored without confusing the
+ client, the major version number would have been increased in the
+ protocol document and in the request). If the unknown group occurs
+ in a different position, the IPP object REJECTS the request and
+ RETURNS the 'client-error-bad-request' status code.
+
+ Clients also ignore unknown attribute groups returned in a response.
+
+ Note: By validating that requests are in the proper form, IPP
+ objects force clients to use the proper form which, in turn,
+ increases the chances that customers will be able to use such clients
+ from multiple vendors with IPP objects from other vendors.
+
+3.1.2.1.4.3 Validate the presence of a single occurrence of required
+ Operation attributes
+
+ Client requests and IPP object responses contain Operation attributes
+ that [RFC2911] Section 3 requires to be present. Attributes within a
+ group may be in any order, except for the ordering of target,
+ charset, and natural languages attributes. These attributes MUST be
+ first, and MUST be supplied in the following order: charset, natural
+ language, and then target. An IPP object verifies that the
+ attributes that Section 4 requires to be supplied by the client have
+ been supplied in the request (attributes without an * in the
+ following tables). An asterisk (*) indicates groups and Operation
+ attributes that the client may omit in a request or an IPP object may
+ omit in a response.
+
+ If an IPP object receives a request with required attributes missing
+ or repeated from a group or in the wrong position, the behavior of
+ the IPP object is IMPLEMENTATION DEPENDENT. Some of the possible
+ implementations are:
+
+ REJECTS the request and RETURNS the 'client-error-bad-request'
+ status code
+
+
+
+Hastings, et al. Informational [Page 21]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ accepts the request and uses the first occurrence of the attribute
+ no matter where it is
+
+ accepts the request and uses the last occurrence of the attribute
+ no matter where it is
+
+ accept the request and assume some default value for the missing
+ attribute
+
+ Therefore, client MUST send conforming requests, if they want to
+ receive the same behavior from all IPP object implementations. For
+ example, it is an error for the "attributes-charset" or "attributes-
+ natural-language" attribute to be omitted in any operation request,
+ or for an Operation attribute to be supplied in a Job Template group
+ or a Job Template attribute to be supplied in an Operation Attribute
+ group in a create request. It is also an error to supply the
+ "attributes-charset" attribute twice.
+
+ Since these kinds of attribute errors are most likely to be detected
+ by a client developer rather than by a customer, the IPP object NEED
+ NOT return an indication of which attribute was in error in either
+ the Unsupported Attributes group or the Status Message. Also, the
+ IPP object NEED NOT find all attribute errors before returning this
+ error.
+
+ The following tables list all the attributes for all the operations
+ by attribute group in each request and each response. The order of
+ the groups is the order that the client supplies the groups as
+ specified in [RFC2911] Section 3. The order of the attributes within
+ a group is arbitrary, except as noted for some of the special
+ operation attributes (charset, natural language, and target). The
+ tables below use the following notation:
+
+ R indicates a REQUIRED attribute or operation that an IPP
+ object MUST support
+ O indicates an OPTIONAL attribute or operation that an IPP
+ object NEED NOT support
+ * indicates that a client MAY omit the attribute in a request
+ and that an IPP object MAY omit the attribute in a response.
+ The absence of an * means that a client MUST supply the
+ attribute in a request and an IPP object MUST supply the
+ attribute in a response.
+ + indicates that this is not a IPP/1.0 operation, but is only
+ a part of IPP/1.1 and future versions of IPP.
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 22]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Operation Requests
+
+ The tables below show the attributes in their proper attribute groups
+ for operation requests:
+
+ Note: All operation requests contain "version-number", "operation-
+ id", and "request-id" parameters.
+
+ Print-Job Request (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ requesting-user-name (R*)
+ job-name (R*)
+ ipp-attribute-fidelity (R*)
+ document-name (R*)
+ document-format (R*)
+ document-natural-language (O*)
+ compression (R*)
+ job-k-octets (O*)
+ job-impressions (O*)
+ job-media-sheets (O*)
+ Group 2: Job Template Attributes (R*)
+ <Job Template attributes> (O*)
+ (see [RFC2911] Section 4.2)
+ Group 3: Document Content (R)
+ <document content>
+
+ Validate-Job Request (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ requesting-user-name (R*)
+ job-name (R*)
+ ipp-attribute-fidelity (R*)
+ document-name (R*)
+ document-format (R*)
+ document-natural-language (O*)
+ compression (R*)
+ job-k-octets (O*)
+ job-impressions (O*)
+ job-media-sheets (O*)
+ Group 2: Job Template Attributes (R*)
+ <Job Template attributes> (O*)
+ (see [RFC2911] Section 4.2)
+
+
+
+
+Hastings, et al. Informational [Page 23]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Print-URI Request (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ document-uri (R)
+ requesting-user-name (R*)
+ job-name (R*)
+ ipp-attribute-fidelity (R*)
+ document-name (R*)
+ document-format (R*)
+ document-natural-language (O*)
+ compression (R*)
+ job-k-octets (O*)
+ job-impressions (O*)
+ job-media-sheets (O*)
+ Group 2: Job Template Attributes (R*)
+ <Job Template attributes> (O*) (see
+ (see [RFC2911] Section 4.2)
+
+ Create-Job Request (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ requesting-user-name (R*)
+ job-name (R*)
+ ipp-attribute-fidelity (R*)
+ job-k-octets (O*)
+ job-impressions (O*)
+ job-media-sheets (O*)
+ Group 2: Job Template Attributes (R*)
+ <Job Template attributes> (O*) (see
+ (see [RFC2911] Section 4.2)
+
+ Get-Printer-Attributes Request (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ requesting-user-name (R*)
+ requested-attributes (R*)
+ document-format (R*)
+
+ Get-Jobs Request (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+
+
+
+Hastings, et al. Informational [Page 24]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ printer-uri (R)
+ requesting-user-name (R*)
+ limit (R*)
+ requested-attributes (R*)
+ which-jobs (R*)
+ my-jobs (R*)
+
+ Send-Document Request (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ (printer-uri & job-id) | job-uri (R)
+ last-document (R)
+ requesting-user-name (R*)
+ document-name (R*)
+ document-format (R*)
+ document-natural-language (O*)
+ compression (R*)
+ Group 2: Document Content (R*)
+ <document content>
+
+ Send-URI Request (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ (printer-uri & job-id) | job-uri (R)
+ last-document (R)
+ document-uri (R)
+ requesting-user-name (R*)
+ document-name (R*)
+ document-format (R*)
+ document-natural-language (O*)
+ compression (R*)
+
+ Cancel-Job Request (R):
+ Release-Job Request (O+):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ (printer-uri & job-id) | job-uri (R)
+ requesting-user-name (R*)
+ message (O*)
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 25]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Get-Job-Attributes Request (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ (printer-uri & job-id) | job-uri (R)
+ requesting-user-name (R*)
+ requested-attributes (R*)
+
+ Pause-Printer Request (O+):
+ Resume-Printer Request (O+):
+ Purge-Printer Request (O+):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ printer-uri (R)
+ requesting-user-name (R*)
+
+ Hold-Job Request (O+):
+ Restart-Job Request (O+):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ (printer-uri & job-id) | job-uri (R)
+ requesting-user-name (R*)
+ job-hold-until (R*)
+ message (O*)
+
+ Operation Responses
+
+ The tables below show the response attributes in their proper
+ attribute groups for responses.
+
+ Note: All operation responses contain "version-number", "status-
+ code", and "request-id" parameters.
+
+ Print-Job Response (R):
+ Create-Job Response (O):
+ Send-Document Response (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 3)
+ n <unsupported attributes> (R*)
+ Group 3: Job Object Attributes(R*) (see Note 2)
+ job-uri (R)
+ job-id (R)
+
+
+
+Hastings, et al. Informational [Page 26]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ job-state (R)
+ job-state-reasons (O* | R+)
+ job-state-message (O*)
+ number-of-intervening-jobs (O*)
+
+ Validate-Job Response (R):
+ Cancel-Job Response (R):
+ Hold-Job Response (O+):
+ Release-Job Response (O+):
+ Restart-Job Response (O+):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 3)
+ <unsupported attributes> (R*)
+
+ Print-URI Response (O):
+ Send-URI Response (O):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ document-access-error (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 3)
+ <unsupported attributes> (R*)
+ Group 3: Job Object Attributes(R*) (see Note 2)
+ job-uri (R)
+ job-id (R)
+ job-state (R)
+ job-state-reasons (O* | R+)
+ job-state-message (O*)
+ number-of-intervening-jobs (O*)
+
+ Get-Printer-Attributes Response (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 4)
+ <unsupported attributes> (R*)
+ Group 3: Printer Object Attributes(R*) (see Note 2)
+ <requested attributes> (R*)
+
+
+
+
+
+Hastings, et al. Informational [Page 27]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Get-Jobs Response (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 4)
+ <unsupported attributes> (R*)
+ Group 3: Job Object Attributes(R*) (see Note 2, 5)
+ <requested attributes> (R*)
+
+ Get-Job-Attributes Response (R):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 4)
+ <unsupported attributes> (R*)
+ Group 3: Job Object Attributes(R*) (see Note 2)
+ <requested attributes> (R*)
+
+ Pause-Printer Response (O+):
+ Resume-Printer Response (O+):
+ Purge-Printer Response (O+):
+ Group 1: Operation Attributes (R)
+ attributes-charset (R)
+ attributes-natural-language (R)
+ status-message (O*)
+ detailed-status-message (O*)
+ Group 2: Unsupported Attributes (R*) (see Note 4)
+ <unsupported attributes> (R*)
+
+ Note 2 - the Job Object Attributes and Printer Object Attributes are
+ returned only if the IPP object returns one of the success status
+ codes.
+
+ Note 3 - the Unsupported Attributes Group is present only if the
+ client included some Operation and/or Job Template attributes or
+ values that the Printer doesn't support whether a success or an error
+ return.
+
+ Note 4 - the Unsupported Attributes Group is present only if the
+ client included some Operation attributes that the Printer doesn't
+ support whether a success or an error return.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 28]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Note 5: for the Get-Jobs operation the response contains a separate
+ Job Object Attributes group 3 to N containing requested-attributes
+ for each job object in the response.
+
+3.1.2.1.5 Validate the values of the REQUIRED Operation attributes
+
+ An IPP object validates the values supplied by the client of the
+ REQUIRED Operation attribute that the IPP object MUST support. The
+ next section specifies the validation of the values of the OPTIONAL
+ Operation attributes that IPP objects MAY support.
+
+ The IPP object performs the following syntactic validation checks of
+ each Operation attribute value:
+
+ a) that the length of each Operation attribute value is correct
+ for the attribute syntax tag supplied by the client according
+ to [RFC2911] Section 4.1,
+
+ b) that the attribute syntax tag is correct for that Operation
+ attribute according to [RFC2911] Section 3,
+
+ c) that the value is in the range specified for that Operation
+ attribute according to [RFC2911] Section 3,
+
+ d) that multiple values are supplied by the client only for
+ operation attributes that are multi-valued, i.e., that are
+ 1setOf X according to [RFC2911] Section 3.
+
+ If any of these checks fail, the IPP object REJECTS the request and
+ RETURNS the 'client-error-bad-request' or the 'client-error-request-
+ value-too-long' status code. Since such an error is most likely to
+ be an error detected by a client developer, rather than by an end-
+ user, the IPP object NEED NOT return an indication of which attribute
+ had the error in either the Unsupported Attributes Group or the
+ Status Message. The description for each of these syntactic checks
+ is explicitly expressed in the first IF statement in the following
+ table.
+
+ In addition, the IPP object checks each Operation attribute value
+ against some Printer object attribute or some hard-coded value if
+ there is no "xxx-supported" Printer object attribute defined. If its
+ value is not among those supported or is not in the range supported,
+ then the IPP object REJECTS the request and RETURNS the error status
+ code indicated in the table by the second IF statement. If the value
+ of the Printer object's "xxx-supported" attribute is 'no-value'
+ (because the system administrator hasn't configured a value), the
+ check always fails.
+
+
+
+
+Hastings, et al. Informational [Page 29]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ -----------------------------------------------
+
+ attributes-charset (charset)
+
+ IF NOT a single non-empty 'charset' value, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 63 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "charset-supported" attribute,
+ REJECT/RETURN "client-error-charset-not-supported".
+
+ attributes-natural-language(naturalLanguage)
+
+ IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF the value length is greater than 63 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ ACCEPT the request even if not a member of the set in the Printer
+ object's "generated-natural-language-supported" attribute. If the
+ supplied value is not a member of the Printer object's
+ "generated-natural-language-supported" attribute, use the Printer
+ object's "natural-language- configured" value.
+
+ requesting-user-name
+
+ IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF the IPP object can obtain a better-authenticated name, use it
+ instead.
+
+ job-name(name)
+
+ IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT supplied by the client, the Printer object creates a name
+ from the document-name or document-uri.
+
+
+
+Hastings, et al. Informational [Page 30]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ document-name (name)
+
+ IF NOT a single 'name' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ ipp-attribute-fidelity (boolean)
+
+ IF NEITHER a single 'true' NOR a single 'false' 'boolean' value,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF the value length is NOT equal to 1 octet, REJECT/RETURN
+ 'client-error-request-value-too-long'
+
+ IF NOT supplied by the client, the IPP object assumes the value
+ 'false'.
+
+ document-format (mimeMediaType)
+
+ IF NOT a single non-empty 'mimeMediaType' value, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "document-format-supported"
+ attribute, REJECT/RETURN 'client-error-document-format-not-
+ supported'
+
+ IF NOT supplied by the client, the IPP object assumes the value of
+ the Printer object's "document-format-default" attribute.
+
+ document-uri (uri)
+
+ IF NOT a single non-empty 'uri' value, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 1023 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF the URI syntax is not valid, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ If the client-supplied URI scheme is not supported, i.e., the
+ value is not in the Printer object's referenced-uri-scheme-
+ supported" attribute, the Printer object MUST reject the request
+
+
+
+Hastings, et al. Informational [Page 31]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ and return the 'client-error-uri-scheme-not-supported' status
+ code. The Printer object MAY check to see if the document exists
+ and is accessible. If the document is not found or is not
+ accessible, REJECT/RETURN 'client-error-not found'.
+
+ last-document (boolean)
+
+ IF NEITHER a single 'true' NOR a single 'false' 'boolean' value,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF the value length is NOT equal to 1 octet, REJECT/RETURN
+ 'client-error-request-value-too-long'
+
+ job-id (integer(1:MAX))
+
+ IF NOT an single 'integer' value equal to 4 octets AND in the
+ range 1 to MAX, REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT a job-id of an existing Job object, REJECT/RETURN 'client-
+ error-not-found' or 'client-error-gone' status code, if keep track
+ of recently deleted jobs.
+
+ requested-attributes (1setOf keyword)
+
+ IF NOT one or more 'keyword' values, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ Ignore unsupported values, which are the keyword names of
+ unsupported attributes. Don't bother to copy such requested
+ (unsupported) attributes to the Unsupported Attribute response
+ group since the response will not return them.
+
+ which-jobs (type2 keyword)
+
+ IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NEITHER 'completed' NOR 'not-completed', copy the attribute and
+ the unsupported value to the Unsupported Attributes response group
+ and REJECT/RETURN 'client-error-attributes-or-values-not-
+ supported'.
+
+
+
+
+Hastings, et al. Informational [Page 32]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Note: a Printer still supports the 'completed' value even if it
+ keeps no completed/canceled/aborted jobs: by returning no jobs
+ when so queried.
+
+ IF NOT supplied by the client, the IPP object assumes the 'not-
+ completed' value.
+
+ my-jobs (boolean)
+
+ IF NEITHER a single 'true' NOR a single 'false' 'boolean' value,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF the value length is NOT equal to 1 octet, REJECT/RETURN
+ 'client-error-request-value-too-long'
+
+ IF NOT supplied by the client, the IPP object assumes the 'false'
+ value.
+
+ limit (integer(1:MAX))
+
+ IF NOT a single 'integer' value equal to 4 octets AND in the range
+ 1 to MAX, REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT supplied by the client, the IPP object returns all jobs, no
+ matter how many.
+
+ -----------------------------------------------
+
+3.1.2.1.6 Validate the values of the OPTIONAL Operation attributes
+
+ OPTIONAL Operation attributes are those that an IPP object MAY
+ support. An IPP object validates the values of the OPTIONAL
+ attributes supplied by the client. The IPP object performs the same
+ syntactic validation checks for each OPTIONAL attribute value as in
+ Section 3.1.2.1.5. As in Section 3.1.2.1.5, if any fail, the IPP
+ object REJECTS the request and RETURNS the 'client-error-bad-request'
+ or the 'client-error-request-value-too-long' status code.
+
+ In addition, the IPP object checks each Operation attribute value
+ against some Printer attribute or some hard-coded value if there is
+ no "xxx-supported" Printer attribute defined. If its value is not
+ among those supported or is not in the range supported, then the IPP
+ object REJECTS the request and RETURNS the error status code
+ indicated in the table. If the value of the Printer object's "xxx-
+ supported" attribute is 'no-value' (because the system administrator
+ hasn't configured a value), the check always fails.
+
+
+
+
+
+Hastings, et al. Informational [Page 33]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ If the IPP object doesn't recognize/support an attribute, the IPP
+ object treats the attribute as an unknown or unsupported attribute
+ (see the last row in the table below).
+
+ -----------------------------------------------
+
+ document-natural-language (naturalLanguage)
+
+ IF NOT a single non-empty 'naturalLanguage' value, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF the value length is greater than 63 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT a value that the Printer object supports in document
+ formats, (no corresponding "xxx-supported" Printer attribute),
+ REJECT/RETURN 'client-error-natural-language-not-supported'.
+
+ compression (type3 keyword)
+
+ IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "compression-supported" attribute,
+ REJECT/RETURN 'client-error-compression-not-supported'.
+
+ Note to IPP/1.0 implementers: Support for the "compression"
+ attribute was optional in IPP/1.0 and was changed to REQUIRED in
+ IPP/1.1. However, an IPP/1.0 object SHOULD at least check for the
+ "compression" attribute being present and reject the create
+ request, if they don't support "compression". Not checking is a
+ bug, since the data will be unintelligible.
+
+ job-k-octets (integer(0:MAX))
+
+ IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF NOT in the range of the Printer object's "job-k-octets-
+ supported" attribute, copy the attribute and the unsupported value
+ to the Unsupported Attributes response group and REJECT/RETURN
+ 'client-error-attributes-or-values-not-supported'.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 34]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ job-impressions (integer(0:MAX))
+
+ IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF NOT in the range of the Printer object's "job-impressions-
+ supported" attribute, copy the attribute and the unsupported value
+ to the Unsupported Attributes response group and REJECT/RETURN
+ 'client-error-attributes-or-values-not-supported'.
+
+ job-media-sheets (integer(0:MAX))
+
+ IF NOT a single 'integer' value equal to 4 octets, REJECT/RETURN
+ 'client-error-bad-request'.
+
+ IF NOT in the range of the Printer object's "job-media-sheets-
+ supported" attribute, copy the attribute and the unsupported value
+ to the Unsupported Attributes response group and REJECT/RETURN
+ 'client-error-attributes-or-values-not-supported'.
+
+ message (text(127))
+
+ IF NOT a single 'text' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 127 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ unknown or unsupported attribute
+
+ IF the attribute syntax supplied by the client is supported but
+ the length is not legal for that attribute syntax, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ ELSE copy the attribute and value to the Unsupported Attributes
+ response group and change the attribute value to the "out-of-band"
+ 'unsupported' value, but otherwise ignore the attribute.
+
+ Note: Future Operation attributes may be added to the protocol
+ specification that may occur anywhere in the specified group. When
+ the operation is otherwise successful, the IPP object returns the
+ 'successful-ok-ignored-or-substituted-attributes' status code.
+ Ignoring unsupported Operation attributes in all operations is
+ analogous to the handling of unsupported Job Template attributes in
+ the create and Validate-Job operations when the client supplies the
+ "ipp-attribute-fidelity" Operation attribute with the 'false' value.
+ This last rule is so that we can add OPTIONAL Operation attributes to
+ future versions of IPP so that older clients can inter-work with new
+
+
+
+Hastings, et al. Informational [Page 35]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IPP objects and newer clients can inter-work with older IPP objects.
+ (If the new attribute cannot be ignored without performing
+ unexpectedly, the major version number would have been increased in
+ the protocol document and in the request). This rule for Operation
+ attributes is independent of the value of the "ipp-attribute-
+ fidelity" attribute. For example, if an IPP object doesn't support
+ the OPTIONAL "job-k-octets" attribute', the IPP object treats "job-
+ k-octets" as an unknown attribute and only checks the length for the
+ 'integer' attribute syntax supplied by the client. If it is not four
+ octets, the IPP object REJECTS the request and RETURNS the 'client-
+ error-bad-request' status code, else the IPP object copies the
+ attribute to the Unsupported Attribute response group, setting the
+ value to the "out-of-band" 'unsupported' value, but otherwise ignores
+ the attribute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 36]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.2.2 Suggested Additional Processing Steps for Operations that
+ Create/Validate Jobs and Add Documents
+
+ This section in combination with the previous section recommends the
+ processing steps for the Print-Job, Validate-Job, Print-URI, Create-
+ Job, Send-Document, and Send-URI operations that IPP objects SHOULD
+ use. These are the operations that create jobs, validate a Print-Job
+ request, and add documents to a job.
+
+ IIG Sect # Flow IPP error status codes
+ ---------- ---- ----------------------
+ |
+ v No
+ 3.1.2.2.1 <ipp-attribute-fidelity> ------------------+
+ <supplied?> |
+ Yes| |
+ | ipp-attribute-fidelity = no |
+ |<------------------------------+
+ v No
+ 3.1.2.2.2 <Printer is> --> server-error-not-accepting-jobs
+ <accepting jobs?>
+ Yes|
+ v err
+ 3.1.2.3 <Validate values of> --> client-error-bad-request
+ <Job template attributes> client-error-request-value-too-
+ long
+ <(length, tag, range,>
+ <multi-value)>
+ ok|
+ v err
+ 3.1.2.3 <Validate values with> --> client-error-bad-request
+ <supported values> client-error-attributes-or-
+ | values-not-supported
+ v err
+ 3.1.2.3.1 <Any conflicting> --> client-error-conflicting-
+ attributes
+ <Job Template attr values> client-error-attributes-or-
+ values-not-supported
+ v
+
+3.1.2.2.1 Default "ipp-attribute-fidelity" if not supplied
+
+ The Printer object checks to see if the client supplied an "ipp-
+ attribute-fidelity" Operation attribute. If the attribute is not
+ supplied by the client, the IPP object assumes that the value is
+ 'false'.
+
+
+
+
+
+Hastings, et al. Informational [Page 37]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.2.2.2 Check that the Printer object is accepting jobs
+
+ If the value of the Printer objects "printer-is-accepting-jobs" is
+ 'false', the Printer object REJECTS the request and RETURNS the
+ 'server-error-not-accepting-jobs' status code.
+
+3.1.2.2.3 Validate the values of the Job Template attributes
+
+ An IPP object validates the values of all Job Template attribute
+ supplied by the client. The IPP object performs the analogous
+ syntactic validation checks of each Job Template attribute value that
+ it performs for Operation attributes (see Section 3.1.2.1.5.):
+
+ a) that the length of each value is correct for the attribute
+ syntax tag supplied by the client according to [RFC2911]
+ Section 4.1.
+
+ b) that the attribute syntax tag is correct for that attribute
+ according to [RFC2911] Sections 4.2 to 4.4.
+
+ c) that multiple values are supplied only for multi-valued
+ attributes, i.e., that are 1setOf X according to [RFC2911]
+ Sections 4.2 to 4.4.
+
+ As in Section 3.1.2.1.5, if any of these syntactic checks fail, the
+ IPP object REJECTS the request and RETURNS the 'client-error-bad-
+ request' or 'client-error-request-value-too-long' status code as
+ appropriate, independent of the value of the "ipp-attribute-
+ fidelity". Since such an error is most likely to be an error
+ detected by a client developer, rather than by an end-user, the IPP
+ object NEED NOT return an indication of which attribute had the error
+ in either the Unsupported Attributes Group or the Status Message.
+ The description for each of these syntactic checks is explicitly
+ expressed in the first IF statement in the following table.
+
+ Each Job Template attribute MUST occur no more than once. If an IPP
+ Printer receives a create request with multiple occurrences of a Job
+ Template attribute, it MAY:
+
+ 1. reject the operation and return the 'client-error-bad-request'
+ error status code
+
+ 2. accept the operation and use the first occurrence of the
+ attribute
+
+ 3. accept the operation and use the last occurrence of the
+ attribute
+
+
+
+
+Hastings, et al. Informational [Page 38]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ depending on implementation. Therefore, clients MUST NOT supply
+ multiple occurrences of the same Job Template attribute in the Job
+ Attributes group in the request.
+
+3.1.2.3 Algorithm for job validation
+
+ The process of validating a Job-Template attribute "xxx" against a
+ Printer attribute "xxx-supported" can use the following validation
+ algorithm (see section 3.2.1.2 in [RFC2911]).
+
+ To validate the value U of Job-Template attribute "xxx" against the
+ value V of Printer "xxx-supported", perform the following algorithm:
+
+ 1. If U is multi-valued, validate each value X of U by performing the
+ algorithm in Table 7 with each value X. Each validation is
+ separate from the standpoint of returning unsupported values.
+ Example: If U is "finishings" that the client supplies with
+ 'staple', 'bind' values, then X takes on the successive values:
+ 'staple', then 'bind'
+
+ 2. If V is multi-valued, validate X against each Z of V by performing
+ the algorithm in Table 7 with each value Z. If a value Z
+ validates, the validation for the attribute value X succeeds. If
+ it fails, the algorithm is applied to the next value Z of V. If
+ there are no more values Z of V, validation fails. Example" If V
+ is "sides-supported" with values: 'one- sided', 'two-sided-long',
+ and 'two-sided-short', then Z takes on the successive values:
+ 'one-sided', 'two-sided-long', and 'two-sided-short'. If the
+ client supplies "sides" with 'two-sided- long', the first
+ comparison fails ('one-sided' is not equal to 'two-sided-long'),
+ the second comparison succeeds ('two-sided-long' is equal to
+ 'two-sided-long"), and the third comparison ('two-sided-short'
+ with 'two-sided-long') is not even performed.
+
+ 3. If both U and V are single-valued, let X be U and Z be V and use
+ the validation rules in Table 7.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 39]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Table 7 - Rules for validating single values X against Z
+
+ Attribute syntax attribute syntax validated if:
+ of X of Z
+
+ integer rangeOfInteger X is within the range of Z
+
+ uri uriScheme the uri scheme in X is equal to
+ Z
+
+ any boolean the value of Z is TRUE
+
+ any any X and Z are of the same type
+ and are equal.
+
+ If the value of the Printer object's "xxx-supported" attribute is
+ 'no-value' (because the system administrator hasn't configured a
+ value), the check always fails. If the check fails, the IPP object
+ copies the attribute to the Unsupported Attributes response group
+ with its unsupported value. If the attribute contains more than one
+ value, each value is checked and each unsupported value is separately
+ copied, while supported values are not copied. If an IPP object
+ doesn't recognize/support a Job Template attribute, i.e., there is no
+ corresponding Printer object "xxx-supported" attribute, the IPP
+ object treats the attribute as an unknown or unsupported attribute
+ (see the last row in the table below).
+
+ If some Job Template attributes are supported for some document
+ formats and not for others or the values are different for different
+ document formats, the IPP object SHOULD take that into account in
+ this validation using the value of the "document-format" supplied by
+ the client (or defaulted to the value of the Printer's "document-
+ format-default" attribute, if not supplied by the client). For
+ example, if "number-up" is supported for the 'text/plain' document
+ format, but not for the 'application/postscript' document format, the
+ check SHOULD (though it NEED NOT) depend on the value of the
+ "document-format" operation attribute. See "document-format" in
+ [RFC2911] section 3.2.1.1 and 3.2.5.1.
+
+ Note: whether the request is accepted or rejected is determined by
+ the value of the "ipp-attribute-fidelity" attribute in a subsequent
+ step, so that all Job Template attribute supplied are examined and
+ all unsupported attributes and/or values are copied to the
+ Unsupported Attributes response group.
+
+ -----------------------------------------------
+
+
+
+
+
+Hastings, et al. Informational [Page 40]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ job-priority (integer(1:100))
+
+ IF NOT a single 'integer' value with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT supplied by the client, use the value of the Printer
+ object's "job-priority-default" attribute at job submission time.
+
+ IF NOT in the range 1 to 100, inclusive, copy the attribute and
+ the unsupported value to the Unsupported Attributes response
+ group.
+
+ Map the value to the nearest supported value in the range 1:100 as
+ specified by the number of discrete values indicated by the value
+ of the Printer's "job-priority-supported" attribute. See the
+ formula in [RFC2911] Section 4.2.1.
+
+ job-hold-until (type3 keyword | name)
+
+ IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT supplied by the client, use the value of the Printer
+ object's "job-hold-until" attribute at job submission time.
+
+ IF NOT in the Printer object's "job-hold-until-supported"
+ attribute, copy the attribute and the unsupported value to the
+ Unsupported Attributes response group.
+
+ job-sheets (type3 keyword | name)
+
+ IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "job-sheets-supported" attribute,
+ copy the attribute and the unsupported value to the Unsupported
+ Attributes response group.
+
+ multiple-document-handling (type2 keyword)
+
+ IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+
+
+Hastings, et al. Informational [Page 41]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "multiple-document-handling-
+ supported" attribute, copy the attribute and the unsupported value
+ to the Unsupported Attributes response group.
+
+ copies (integer(1:MAX))
+
+ IF NOT a single 'integer' value with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT in range of the Printer object's "copies-supported"
+ attribute
+
+ copy the attribute and the unsupported value to the Unsupported
+ Attributes response group.
+
+ finishings (1setOf type2 enum)
+
+ IF NOT an 'enum' value(s) each with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT in the Printer object's "finishings-supported" attribute,
+ copy the attribute and the unsupported value(s), but not any
+ supported values, to the Unsupported Attributes response group.
+
+ page-ranges (1setOf rangeOfInteger(1:MAX))
+
+ IF NOT a 'rangeOfInteger' value(s) each with a length equal to 8
+ octets, REJECT/RETURN 'client-error-bad-request'.
+
+ IF first value is greater than second value in any range, the
+ ranges are not in ascending order, or ranges overlap,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF the value of the Printer object's "page-ranges-supported"
+ attribute is 'false', copy the attribute to the Unsupported
+ Attributes response group and set the value to the "out-of-band"
+ 'unsupported' value.
+
+ sides (type2 keyword)
+
+ IF NOT a single 'keyword' value, REJECT/RETURN 'client-error-bad-
+ request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+
+
+Hastings, et al. Informational [Page 42]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IF NOT in the Printer object's "sides-supported" attribute, copy
+ the attribute and the unsupported value to the Unsupported
+ Attributes response group.
+
+ number-up (integer(1:MAX))
+
+ IF NOT a single 'integer' value with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT a value or in the range of one of the values of the Printer
+ object's "number-up-supported" attribute, copy the attribute and
+ value to the Unsupported Attribute response group.
+
+ orientation-requested (type2 enum)
+
+ IF NOT a single 'enum' value with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT in the Printer object's "orientation-requested-supported"
+ attribute, copy the attribute and the unsupported value to the
+ Unsupported Attributes response group.
+
+ media (type3 keyword | name)
+
+ IF NOT a single 'keyword' or 'name' value, REJECT/RETURN 'client-
+ error-bad-request'.
+
+ IF the value length is greater than 255 octets, REJECT/RETURN
+ 'client-error-request-value-too-long'.
+
+ IF NOT in the Printer object's "media-supported" attribute, copy
+ the attribute and the unsupported value to the Unsupported
+ Attributes response group.
+
+ printer-resolution (resolution)
+
+ IF NOT a single 'resolution' value with a length equal to 9
+ octets, REJECT/RETURN 'client-error-bad-request'.
+
+ IF NOT in the Printer object's "printer-resolution-supported"
+ attribute, copy the attribute and the unsupported value to the
+ Unsupported Attributes response group.
+
+ print-quality (type2 enum)
+
+ IF NOT a single 'enum' value with a length equal to 4 octets,
+ REJECT/RETURN 'client-error-bad-request'.
+
+
+
+
+Hastings, et al. Informational [Page 43]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IF NOT in the Printer object's "print-quality-supported"
+ attribute, copy the attribute and the unsupported value to the
+ Unsupported Attributes response group.
+
+ unknown or unsupported attribute (i.e., there is no corresponding
+ Printer object "xxx-supported" attribute)
+
+ IF the attribute syntax supplied by the client is supported but
+ the length is not legal for that attribute syntax,
+
+ REJECT/RETURN 'client-error-bad-request' if the length of the
+ attribute syntax is fixed or 'client-error-request-value-too-long'
+ if the length of the attribute syntax is variable.
+
+ ELSE copy the attribute and value to the Unsupported Attributes
+ response group and change the attribute value to the "out-of-band"
+ 'unsupported' value. Any remaining Job Template Attributes are
+ either unknown or unsupported Job Template attributes and are
+ validated algorithmically according to their attribute syntax for
+ proper length (see below).
+
+ -----------------------------------------------
+
+ If the attribute syntax is supported AND the length check fails,
+ the IPP object REJECTS the request and RETURNS the 'client-error-
+ bad-request' if the length of the attribute syntax is fixed or the
+ 'client-error-request-value-too-long' status code if the length of
+ the attribute syntax is variable. Otherwise, the IPP object copies
+ the unsupported Job Template attribute to the Unsupported
+ Attributes response group and changes the attribute value to the
+ "out-of-band" 'unsupported' value. The following table shows the
+ length checks for all attribute syntaxes. In the following table:
+ "<=" means less than or equal, "=" means equal to:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 44]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Name Octet length check for read-write attributes
+ ---------- ---------------------------------------------
+
+ 'textWithLanguage <= 1023 AND 'naturalLanguage' <= 63
+ 'textWithoutLanguage' <= 1023
+ 'nameWithLanguage' <= 255 AND 'naturalLanguage' <= 63
+ 'nameWithoutLanguage' <= 255
+ 'keyword' <= 255
+ 'enum' = 4
+ 'uri' <= 1023
+ 'uriScheme' <= 63
+ 'charset' <= 63
+ 'naturalLanguage' <= 63
+ 'mimeMediaType' <= 255
+ 'octetString' <= 1023
+ 'boolean' = 1
+ 'integer' = 4
+ 'rangeOfInteger' = 8
+ 'dateTime' = 11
+ 'resolution' = 9
+ '1setOf X'
+
+ Note: It's possible for a Printer to receive a zero length keyword
+ in a request. Since this is a keyword, its value needs to be
+ compared with the supported values. Assuming that the printer
+ doesn't have any values in its corresponding "xxx-supported"
+ attribute that are keywords of zero length, the comparison will fail.
+ Then the request will be accepted or rejected depending on the value
+ of "ipp-attributes-fidelity" being 'false' or 'true', respectively.
+ No special handling is required for
+
+3.1.2.3.1 Check for conflicting Job Template attributes values
+
+ Once all the Operation and Job Template attributes have been checked
+ individually, the Printer object SHOULD check for any conflicting
+ values among all the supported values supplied by the client. For
+ example, a Printer object might be able to staple and to print on
+ transparencies, however due to physical stapling constraints, the
+ Printer object might not be able to staple transparencies. The IPP
+ object copies the supported attributes and their conflicting
+ attribute values to the Unsupported Attributes response group. The
+ Printer object only copies over those attributes that the Printer
+ object either ignores or substitutes in order to resolve the
+ conflict, and it returns the original values which were supplied by
+ the client. For example suppose the client supplies "finishings"
+ equals 'staple' and "media" equals 'transparency', but the Printer
+ object does not support stapling transparencies. If the Printer
+ chooses to ignore the stapling request in order to resolve the
+
+
+
+Hastings, et al. Informational [Page 45]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ conflict, the Printer objects returns "finishings" equal to 'staple'
+ in the Unsupported Attributes response group. If any attributes are
+ multi-valued, only the conflicting values of the attributes are
+ copied.
+
+ Note: The decisions made to resolve the conflict (if there is a
+ choice) is implementation dependent.
+
+3.1.2.3.2 Decide whether to REJECT the request
+
+ If there were any unsupported Job Template attributes or
+ unsupported/conflicting Job Template attribute values and the client
+ supplied the "ipp-attribute-fidelity" attribute with the 'true'
+ value, the Printer object REJECTS the request and return the status
+ code:
+
+ 1.'client-error-conflicting-attributes' status code, if there were
+ any conflicts between attributes supplied by the client.
+
+ 2.'client-error-attributes-or-values-not-supported' status code,
+ otherwise.
+
+ Note: Unsupported Operation attributes or values that are returned
+ do not affect the status returned in this step. If the unsupported
+ Operation attribute was a serious error, the above already rejected
+ the request in a previous step. If control gets to this step with
+ unsupported Operation attributes being returned, they are not serious
+ errors.
+
+ In general, the final results of Job processing are unknown at Job
+ submission time. The client has to rely on notifications or polling
+ to find out what happens at Job processing time. However, there are
+ cases in which some Printers can determine at Job submission time
+ that Job processing is going to fail. As an optimization, we'd like
+ to have the Printer reject the Job in these cases.
+
+ There are three types of "processing" errors that might be detectable
+ at Job submission time:
+
+ 1. 'client-error-document-format-not-supported' : For the Print-
+ Job, Send-Document, Print-URI, and Send-URI operations, if all these
+ conditions are true:
+
+ - the Printer supports auto-sensing,
+ - the request "document-format" operation attribute is
+ 'application/octet-stream',
+ - the Printer receives document data before responding,
+ - the Printer auto-senses the document format before responding,
+
+
+
+Hastings, et al. Informational [Page 46]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ - the sensed document format is not supported by the Printer
+
+ then the Printer should respond with 'client-error-document-format-
+ not-supported' status.
+
+ 2. 'client-error-compression-error': For the Print-Job, Send-
+ Document, Print-URI, and Send-URI operations, if all these
+ conditions are true:
+
+ - the client supplies a supported value for the "compression"
+ operation attribute in the request
+ - the Printer receives document data before responding,
+ - the Printer attempts to decompress the document data before
+ responding,
+ - the document data cannot be decompressed using the algorithm
+ specified by the "compression" operation attribute
+
+ then the Printer should respond with 'client-error-compression-error'
+ status.
+
+ 3. 'client-error-document-access-error': For the Print-URI, and
+ Send-URI operations, if the Printer attempts and fails to pull the
+ referenced document data before responding, it should respond with
+ 'client-error-document-access-error' status.
+
+ Some Printers are not able to detect these errors until Job
+ processing time. In that case, the errors are recorded in the
+ corresponding job-state and job-state reason attributes. (There is
+ no standard way for a client to determine whether a Printer can
+ detect these errors at Job submission time.) For example, if auto-
+ sensing happens AFTER the job is accepted (as opposed to auto-sensing
+ at submit time before returning the response), the implementation
+ aborts the job, puts the job in the 'aborted' state and sets the
+ 'unsupported-document-format' value in the job's "job-state-reasons".
+
+ A client should always provide a valid "document-format" operation
+ attribute whenever practical. In the absence of other information, a
+ client itself may sniff the document data to determine document
+ format.
+
+ Auto sensing at Job submission time may be more difficult for the
+ Printer when combined with compression. For auto-sensed Jobs, a
+ client may be better off deferring compression to the transfer
+ protocol layer, e.g.; by using the HTTP Content-Encoding header.
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 47]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.2.3.3 For the Validate-Job operation, RETURN one of the success
+ status codes
+
+ If the requested operation is the Validate-Job operation, the Printer
+ object returns:
+
+ 1. the "successful-ok" status code, if there are no unsupported or
+ conflicting Job Template attributes or values.
+ 2. the "successful-ok-conflicting-attributes, if there are any
+ conflicting Job Template attribute or values.
+ 3. the "successful-ok-ignored-or-substituted-attributes, if there
+ are only unsupported Job Template attributes or values.
+
+ Note: Unsupported Operation attributes or values that are returned
+ do not affect the status returned in this step. If the unsupported
+ Operation attribute was a serious error, the above already rejected
+ the request in a previous step. If control gets to this step with
+ unsupported Operation attributes being returned, they are not serious
+ errors.
+
+3.1.2.3.4 Create the Job object with attributes to support
+
+ If "ipp-attribute-fidelity" is set to 'false' (or it was not supplied
+ by the client), the Printer object:
+
+ 1. creates a Job object, assigns a unique value to the job's
+ "job-uri" and "job-id" attributes, and initializes all of the
+ job's other supported Job Description attributes.
+ 2. removes all unsupported attributes from the Job object.
+ 3. for each unsupported value, removes either the unsupported
+ value or substitutes the unsupported attribute value with some
+ supported value. If an attribute has no values after removing
+ unsupported values from it, the attribute is removed from the
+ Job object (so that the normal default behavior at job
+ processing time will take place for that attribute).
+ 4. for each conflicting value, removes either the conflicting
+ value or substitutes the conflicting attribute value with some
+ other supported value. If an attribute has no values after
+ removing conflicting values from it, the attribute is removed
+ from the Job object (so that the normal default behavior at job
+ processing time will take place for that attribute).
+
+ If there were no attributes or values flagged as unsupported, or the
+ value of 'ipp-attribute-fidelity" was 'false', the Printer object is
+ able to accept the create request and create a new Job object. If
+ the "ipp-attribute-fidelity" attribute is set to 'true', the Job
+ Template attributes that populate the new Job object are necessarily
+ all the Job Template attributes supplied in the create request. If
+
+
+
+Hastings, et al. Informational [Page 48]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ the "ipp-attribute-fidelity" attribute is set to 'false', the Job
+ Template attributes that populate the new Job object are all the
+ client supplied Job Template attributes that are supported or that
+ have value substitution. Thus, some of the requested Job Template
+ attributes will not appear in the Job object because the Printer
+ object did not support those attributes. The attributes that
+ populate the Job object are persistently stored with the Job object
+ for that Job. A Get-Job-Attributes operation on that Job object will
+ return only those attributes that are persistently stored with the
+ Job object.
+
+ Note: All Job Template attributes that are persistently stored with
+ the Job object are intended to be "override values"; that is, they
+ that take precedence over whatever other embedded instructions might
+ be in the document data itself. However, it is not possible for all
+ Printer objects to realize the semantics of "override". End users
+ may query the Printer's "pdl-override-supported" attribute to
+ determine if the Printer either attempts or does not attempt to
+ override document data instructions with IPP attributes.
+
+ There are some cases, where a Printer supports a Job Template
+ attribute and has an associated default value set for that attribute.
+ In the case where a client does not supply the corresponding
+ attribute, the Printer does not use its default values to populate
+ Job attributes when creating the new Job object; only Job Template
+ attributes actually in the create request are used to populate the
+ Job object. The Printer's default values are only used later at Job
+ processing time if no other IPP attribute or instruction embedded in
+ the document data is present.
+
+ Note: If the default values associated with Job Template attributes
+ that the client did not supply were to be used to populate the Job
+ object, then these values would become "override values" rather than
+ defaults. If the Printer supports the 'attempted' value of the
+ "pdl-override-supported" attribute, then these override values could
+ replace values specified within the document data. This is not the
+ intent of the default value mechanism. A default value for an
+ attribute is used only if the create request did not specify that
+ attribute (or it was ignored when allowed by "ipp-attribute-fidelity"
+ being 'false') and no value was provided within the content of the
+ document data.
+
+ If the client does not supply a value for some Job Template
+ attribute, and the Printer does not support that attribute, as far as
+ IPP is concerned, the result of processing that Job (with respect to
+ the missing attribute) is undefined.
+
+
+
+
+
+Hastings, et al. Informational [Page 49]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.2.3.5 Return one of the success status codes
+
+ Once the Job object has been created, the Printer object accepts the
+ request and returns to the client:
+
+ 1. the 'successful-ok' status code, if there are no unsupported or
+ conflicting Job Template attributes or values.
+ 2. the 'successful-ok-conflicting-attributes' status code, if
+ there are any conflicting Job Template attribute or values.
+ 3. the 'successful-ok-ignored-or-substituted-attributes' status
+ code, if there are only unsupported Job Template attributes or
+ values.
+
+ Note: Unsupported Operation attributes or values that are returned
+ do not affect the status returned in this step. If the unsupported
+ Operation attribute was a serious error, the above already rejected
+ the request in a previous step. If control gets to this step with
+ unsupported Operation attributes being returned, they are not serious
+ errors.
+
+ The Printer object also returns Job status attributes that indicate
+ the initial state of the Job ('pending', 'pending-held',
+ 'processing', etc.), etc. See Print-Job Response, [RFC2911] section
+ 3.2.1.2.
+
+3.1.2.3.6 Accept appended Document Content
+
+ The Printer object accepts the appended Document Content data and
+ either starts it printing, or spools it for later processing.
+
+3.1.2.3.7 Scheduling and Starting to Process the Job
+
+ The Printer object uses its own configuration and implementation
+ specific algorithms for scheduling the Job in the correct processing
+ order. Once the Printer object begins processing the Job, the
+ Printer changes the Job's state to 'processing'. If the Printer
+ object supports PDL override (the "pdl-override-supported" attribute
+ set to 'attempted'), the implementation does its best to see that IPP
+ attributes take precedence over embedded instructions in the document
+ data.
+
+3.1.2.3.8 Completing the Job
+
+ The Printer object continues to process the Job until it can move the
+ Job into the 'completed' state. If an Cancel-Job operation is
+ received, the implementation eventually moves the Job into the
+ 'canceled' state. If the system encounters errors during processing
+ that do not allow it to progress the Job into a completed state, the
+
+
+
+Hastings, et al. Informational [Page 50]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ implementation halts all processing, cleans up any resources, and
+ moves the Job into the 'aborted' state.
+
+3.1.2.3.9 Destroying the Job after completion
+
+ Once the Job moves to the 'completed', 'aborted', or 'canceled'
+ state, it is an implementation decision as to when to destroy the Job
+ object and release all associated resources. Once the Job has been
+ destroyed, the Printer would return either the "client-error-not-
+ found" or "client-error-gone" status codes for operations directed at
+ that Job.
+
+ Note: the Printer object SHOULD NOT re-use a "job-uri" or "job-id"
+ value for a sufficiently long time after a job has been destroyed, so
+ that stale references kept by clients are less likely to access the
+ wrong (newer) job.
+
+3.1.2.3.10 Interaction with "ipp-attribute-fidelity"
+
+ Some Printer object implementations may support "ipp-attribute-
+ fidelity" set to 'true' and "pdl-override-supported" set to
+ 'attempted' and yet still not be able to realize exactly what the
+ client specifies in the create request. This is due to legacy
+ decisions and assumptions that have been made about the role of job
+ instructions embedded within the document data and external job
+ instructions that accompany the document data and how to handle
+ conflicts between such instructions. The inability to be 100%
+ precise about how a given implementation will behave is also
+ compounded by the fact that the two special attributes, "ipp-
+ attribute-fidelity" and "pdl-"override-supported", apply to the whole
+ job rather than specific values for each attribute. For example, some
+ implementations may be able to override almost all Job Template
+ attributes except for "number-up". Character Sets, natural
+ languages, and internationalization
+
+ This section discusses character set support, natural language
+ support and internationalization.
+
+3.1.2.3.11 Character set code conversion support
+
+ IPP clients and IPP objects are REQUIRED to support UTF-8. They MAY
+ support additional charsets. It is RECOMMENDED that an IPP object
+ also support US-ASCII, since many clients support US-ASCII, and
+ indicate that UTF-8 and US-ASCII are supported by populating the
+ Printer's "charset-supported" with 'utf-8' and 'us-ascii' values. An
+ IPP object is required to code covert with as little loss as possible
+ between the charsets that it supports, as indicated in the Printer's
+ "charsets-supported" attribute.
+
+
+
+Hastings, et al. Informational [Page 51]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ How should the server handle the situation where the "attributes-
+ charset" of the response itself is "us-ascii", but one or more
+ attributes in that response is in the "utf-8" format?
+
+ Example: Consider a case where a client sends a Print-Job request
+ with "utf-8" as the value of "attributes-charset" and with the "job-
+ name" attribute supplied. Later another client submits a Get-Job-
+ Attribute or Get-Jobs request. This second request contains the
+ "attributes-charset" with value "us-ascii" and "requested-attributes"
+ attribute with exactly one value "job-name".
+
+ According to the RFC2911 document (section 3.1.4.2), the value of the
+ "attributes-charset" for the response of the second request must be
+ "us-ascii" since that is the charset specified in the request. The
+ "job-name" value, however, is in "utf-8" format. Should the request
+ be rejected even though both "utf-8" and "us-ascii" charsets are
+ supported by the server? or should the "job-name" value be converted
+ to "us-ascii" and return "successful-ok-conflicting-attributes"
+ (0x0002) as the status code?
+
+ Answer: An IPP object that supports both utf-8 (REQUIRED) and us-
+ ascii, the second paragraph of section 3.1.4.2 applies so that the
+ IPP object MUST accept the request, perform code set conversion
+ between these two charsets with "the highest fidelity possible" and
+ return 'successful-ok', rather than a warning 'successful-ok-
+ conflicting-attributes, or an error. The printer will do the best it
+ can to convert between each of the character sets that it supports --
+ even if that means providing a string of question marks because none
+ of the characters are representable in US ASCII. If it can't perform
+ such conversion, it MUST NOT advertise us-ascii as a value of its
+ "attributes-charset-supported" and MUST reject any request that
+ requests 'us-ascii'.
+
+ One IPP object implementation strategy is to convert all request text
+ and name values to a Unicode internal representation. This is 16-bit
+ and virtually universal. Then convert to the specified operation
+ attributes-charset on output.
+
+ Also it would be smarter for a client to ask for 'utf-8', rather than
+ 'us-ascii' and throw away characters that it doesn't understand,
+ rather than depending on the code conversion of the IPP object.
+
+3.1.2.3.12 What charset to return when an unsupported charset is
+ requested (Issue 1.19)?
+
+ Section 3.1.4.1 Request Operation attributes was clarified in
+ November 1998 as follows:
+
+
+
+
+Hastings, et al. Informational [Page 52]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ All clients and IPP objects MUST support the 'utf-8' charset
+ [RFC2044] and MAY support additional charsets provided that they are
+ registered with IANA [IANA-CS]. If the Printer object does not
+ support the client supplied charset value, the Printer object MUST
+ reject the request, set the "attributes-charset" to 'utf-8' in the
+ response, and return the 'client-error-charset-not-supported' status
+ code and any 'text' or 'name' attributes using the 'utf-8' charset.
+
+ Since the client and IPP object MUST support UTF-8, returning any
+ text or name attributes in UTF-8 when the client requests a charset
+ that is not supported should allow the client to display the text or
+ name.
+
+ Since such an error is a client error, rather than a user error, the
+ client should check the status code first so that it can avoid
+ displaying any other returned 'text' and 'name' attributes that are
+ not in the charset requested.
+
+ Furthermore, [RFC2911] section 14.1.4.14 client-error-charset-not-
+ supported (0x040D) was clarified in November 1998 as follows:
+
+ For any operation, if the IPP Printer does not support the charset
+ supplied by the client in the "attributes-charset" operation
+ attribute, the Printer MUST reject the operation and return this
+ status and any 'text' or 'name' attributes using the 'utf-8' charset
+ (see Section 3.1.4.1).
+
+3.1.2.3.13 Natural Language Override (NLO)
+
+ The 'text' and 'name' attributes each have two forms. One has an
+ implicit natural language, and the other has an explicit natural
+ language. The 'textWithoutLanguage' and 'textWithLanguage' are the
+ two 'text' forms. The 'nameWithoutLanguage" and 'nameWithLanguage
+ are the two 'name' forms. If a receiver (IPP object or IPP client)
+ supports an attribute with attribute syntax 'text', it MUST support
+ both forms in a request and a response. A sender (IPP client or IPP
+ object) MAY send either form for any such attribute. When a sender
+ sends a WithoutLanguage form, the implicit natural language is
+ specified in the "attributes-natural-language" operation attribute,
+ which all senders MUST include in every request and response.
+
+ When a sender sends a WithLanguage form, it MAY be different from the
+ implicit natural language supplied by the sender or it MAY be the
+ same. The receiver MUST treat either form equivalently.
+
+ There is an implementation decision for senders, whether to always
+ send the WithLanguage forms or use the WithoutLanguage form when the
+ attribute's natural language is the same as the request or response.
+
+
+
+Hastings, et al. Informational [Page 53]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ The former approach makes the sender implementation simpler. The
+ latter approach is more efficient on the wire and allows inter-
+ working with non-conforming receivers that fail to support the
+ WithLanguage forms. As each approach have advantages, the choice is
+ completely up to the implementer of the sender.
+
+ Furthermore, when a client receives a 'text' or 'name' job attribute
+ that it had previously supplied, that client MUST NOT expect to see
+ the attribute in the same form, i.e., in the same WithoutLanguage or
+ WithLanguage form as the client supplied when it created the job.
+ The IPP object is free to transform the attribute from the
+ WithLanguage form to the WithoutLanguage form and vice versa, as long
+ as the natural language is preserved. However, in order to meet this
+ latter requirement, it is usually simpler for the IPP object
+ implementation to store the natural language explicitly with the
+ attribute value, i.e., to store using an internal representation that
+ resembles the WithLanguage form.
+
+ The IPP Printer MUST copy the natural language of a job, i.e., the
+ value of the "attributes-natural-language" operation attribute
+ supplied by the client in the create operation, to the Job object as
+ a Job Description attribute, so that a client is able to query it.
+ In returning a Get-Job-Attributes response, the IPP object MAY return
+ one of three natural language values in the responses "attributes-
+ natural-language" operation attribute: (1) that requested by the
+ requester, (2) the natural language of the job, or (3) the configured
+ natural language of the IPP Printer, if the requested language is not
+ supported by the IPP Printer.
+
+ This "attributes-natural-language" Job Description attribute is
+ useful for an IPP object implementation that prints start sheets in
+ the language of the user who submitted the job. This same Job
+ Description attribute is useful to a multi-lingual operator who has
+ to communicate with different job submitters in different natural
+ languages. This same Job Description attribute is expected to be
+ used in the future to generate notification messages in the natural
+ language of the job submitter.
+
+ Early drafts of [RFC2911] contained a job-level natural language
+ override (NLO) for the Get-Jobs response. A job-level (NLO) is an
+ (unrequested) Job Attribute which then specified the implicit natural
+ language for any other WithoutLanguage job attributes returned in the
+ response for that job. Interoperability testing of early
+ implementations showed that no one was implementing the job-level NLO
+ in Get-Job responses. So the job-level NLO was eliminated from the
+ Get-Jobs response. This simplification makes all requests and
+ responses consistent in that the implicit natural language for any
+
+
+
+
+Hastings, et al. Informational [Page 54]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ WithoutLanguage 'text' or 'name' form is always supplied in the
+ request's or response's "attributes-natural-language" operation
+ attribute.
+
+3.1.3 Status codes returned by operation
+
+ This section corresponds to [RFC2911] section 3.1.6 "Operation
+ Response Status Codes and Status Messages". This section lists all
+ status codes once in the first operation (Print-Job). Then it lists
+ the status codes that are different or specialized for subsequent
+ operations under each operation.
+
+3.1.3.1 Printer Operations
+
+3.1.3.1.1 Print-Job
+
+ The Printer object MUST return one of the following "status-code"
+ values for the indicated reason. Whether all of the document data
+ has been accepted or not before returning the success or error
+ response depends on implementation. See Section 13 in [RFC2911] for
+ a more complete description of each status code.
+
+ For the following success status codes, the Job object has been
+ created and the "job-id", and "job-uri" assigned and returned in the
+ response:
+
+ successful-ok: no request attributes were substituted or ignored.
+
+ successful-ok-ignored-or-substituted-attributes: some supplied
+ (1) attributes were ignored or (2) unsupported attribute syntaxes
+ or values were substituted with supported values or were ignored.
+ Unsupported attributes, attribute syntax's, or values MUST be
+ returned in the Unsupported Attributes group of the response.
+
+ successful-ok-conflicting-attributes: some supplied attribute
+ values conflicted with the values of other supplied attributes and
+ were either substituted or ignored. Attributes or values which
+ conflict with other attributes and have been substituted or
+ ignored MUST be returned in the Unsupported Attributes group of
+ the response as supplied by the client.
+
+ [RFC2911] section 3.1.6 Operation Status Codes and Messages states:
+
+ If the Printer object supports the "status-message" operation
+ attribute, it SHOULD use the REQUIRED 'utf-8' charset to return a
+ status message for the following error status codes (see section
+ 13 in [RFC2911]): 'client-error-bad-request', 'client-error-
+ charset-not-supported', 'server-error-internal-error', 'server-
+
+
+
+Hastings, et al. Informational [Page 55]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ error-operation-not-supported', and 'server-error-version-not-
+ supported'. In this case, it MUST set the value of the
+ "attributes-charset" operation attribute to 'utf-8' in the error
+ response.
+
+ For the following error status codes, no job is created and no
+ "job-id" or "job-uri" is returned:
+
+ client-error-bad-request: The request syntax does not conform
+ to the specification.
+
+ client-error-forbidden: The request is being refused for
+ authorization or authentication reasons. The implementation
+ security policy is to not reveal whether the failure is one of
+ authentication or authorization.
+
+ client-error-not-authenticated: Either the request requires
+ authentication information to be supplied or the authentication
+ information is not sufficient for authorization.
+
+ client-error-not-authorized: The requester is not authorized
+ to perform the request on the target object.
+
+ client-error-not-possible: The request cannot be carried out
+ because of the state of the system. See also 'server-error-
+ not-accepting-jobs' status code, which MUST take precedence if
+ the Printer object's "printer-accepting-jobs" attribute is
+ 'false'.
+
+ client-error-timeout: not applicable.
+
+ client-error-not-found: the target object does not exist.
+
+ client-error-gone: the target object no longer exists and no
+ forwarding address is known.
+
+ client-error-request-entity-too-large: the size of the request
+ and/or print data exceeds the capacity of the IPP Printer to
+ process it.
+
+ client-error-request-value-too-long: the size of request
+ variable length attribute values, such as 'text' and 'name'
+ attribute syntax's, exceed the maximum length specified in
+ [RFC2911] for the attribute and MUST be returned in the
+ Unsupported Attributes Group.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 56]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ supplied is not supported. The "document-format" attribute
+ with the unsupported value MUST be returned in the Unsupported
+ Attributes Group. This error SHOULD take precedence over any
+ other 'xxx-not-supported' error, except 'client-error-charset-
+ not-supported'.
+
+ client-error-attributes-or-values-not-supported: one or more
+ supplied attributes, attribute syntax's, or values are not
+ supported and the client supplied the "ipp-attributes-
+ fidelity" operation attribute with a 'true' value. They MUST
+ be returned in the Unsupported Attributes Group as explained
+ below.
+
+ client-error-uri-scheme-not-supported: not applicable.
+
+ client-error-charset-not-supported: the charset supplied in
+ the "attributes-charset" operation attribute is not supported.
+ The Printer's "configured-charset" MUST be returned in the
+ response as the value of the "attributes-charset" operation
+ attribute and used for any 'text' and 'name' attributes
+ returned in the error response. This error SHOULD take
+ precedence over any other error, unless the request syntax is
+ so bad that the client's supplied "attributes-charset" cannot
+ be determined.
+
+ client-error-conflicting-attributes: one or more supplied
+ attribute values conflicted with each other and the client
+ supplied the "ipp-attributes-fidelity" operation attribute with
+ a 'true' value. They MUST be returned in the Unsupported
+ Attributes Group as explained below.
+
+ server-error-internal-error: an unexpected condition prevents
+ the request from being fulfilled.
+
+ server-error-operation-not-supported: not applicable (since
+ Print-Job is REQUIRED).
+
+ server-error-service-unavailable: the service is temporarily
+ overloaded.
+
+ server-error-version-not-supported: the version in the request
+ is not supported. The "closest" version number supported MUST
+ be returned in the response.
+
+ server-error-device-error: a device error occurred while
+ receiving or spooling the request or document data or the IPP
+ Printer object can only accept one job at a time.
+
+
+
+
+Hastings, et al. Informational [Page 57]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ server-error-temporary-error: a temporary error such as a
+ buffer full write error, a memory overflow, or a disk full
+ condition occurred while receiving the request and/or the
+ document data.
+
+ server-error-not-accepting-jobs: the Printer object's
+ "printer-is-not-accepting-jobs" attribute is 'false'.
+
+ server-error-busy: the Printer is too busy processing jobs to
+ accept another job at this time.
+
+ server-error-job-canceled: the job has been canceled by an
+ operator or the system while the client was transmitting the
+ document data.
+
+3.1.3.1.2 Print-URI
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Print-URI with the following
+ specializations and differences. See Section 14 for a more complete
+ description of each status code.
+
+ client-error-uri-scheme-not-supported: the URI scheme supplied
+ in the "document-uri" operation attribute is not supported and
+ is returned in the Unsupported Attributes group.
+
+ server-error-operation-not-supported: the Print-URI operation
+ is not supported.
+
+3.1.3.1.3 Validate-Job
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Validate-Job. See Section 13 in
+ [RFC2911] for a more complete description of each status code.
+
+3.1.3.1.4 Create-Job
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Create-Job with the following
+ specializations and differences. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ server-error-operation-not-supported: the Create-Job operation
+ is not supported.
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 58]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ client-error-multiple-document-jobs-not-supported: while the
+ Create-Job and Send-Document operations are supported, this
+ implementation doesn't support more than one document with
+ data.
+
+3.1.3.1.5 Get-Printer-Attributes
+
+ All of the Print-Job status codes described in Section
+ 3.1.3.1.1 Print-Job Response are applicable to the Get-
+ Printer-Attributes operation with the following
+ specialization's and differences. See Section 13 in [RFC2911]
+ for a more complete description of each status code.
+
+ For the following success status codes, the requested
+ attributes are returned in Group 3 in the response:
+
+ successful-ok: no operation attributes or values were
+ substituted or ignored (same as Print-Job) and no requested
+ attributes were unsupported.
+
+ successful-ok-ignored-or-substituted-attributes: The
+ "requested-attributes" operation attribute MAY, but NEED NOT,
+ be returned with the unsupported values.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For the error status codes, Group 3 is returned containing no
+ attributes or is not returned at all:
+
+ client-error-not-possible: Same as Print-Job, in addition the
+ Printer object is not accepting any requests.
+
+ client-error-request-entity-too-large: same as Print-job,
+ except that no print data is involved.
+
+ client-error-attributes-or-values-not-supported: not
+ applicable, since unsupported operation attributes and/or
+ values MUST be ignored and an appropriate success code returned
+ (see above).
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that "ipp-attribute-fidelity" is not involved.
+
+ server-error-operation-not-supported: not applicable (since
+ Get-Printer-Attributes is REQUIRED).
+
+ server-error-device-error: same as Print-Job, except that no
+ document data is involved.
+
+
+
+Hastings, et al. Informational [Page 59]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ server-error-temporary-error: same as Print-Job, except that
+ no document data is involved.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-busy: same as Print-Job, except the IPP object is
+ too busy to accept even query requests.
+
+ server-error-job-canceled: not applicable.
+
+3.1.3.1.6 Get-Jobs
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to the Get-Jobs operation with the
+ following specialization's and differences. See Section 13 in
+ [RFC2911] for a more complete description of each status code.
+
+ For the following success status codes, the requested attributes are
+ returned in Group 3 in the response:
+
+ successful-ok: same as Get-Printer-Attributes (see section
+ 3.1.3.1.5).
+
+ successful-ok-ignored-or-substituted-attributes: same as Get-
+ Printer-Attributes (see section 3.1.3.1.5).
+
+ successful-ok-conflicting-attributes: same as Get-Printer-
+ Attributes (see section 3.1.3.1.5).
+
+ For any error status codes, Group 3 is returned containing no
+ attributes or is not returned at all. The following brief error
+ status code descriptions contain unique information for use with
+ Get-Jobs operation. See section 14 for the other error status codes
+ that apply uniformly to all operations:
+
+ client-error-not-possible: Same as Print-Job, in addition the
+ Printer object is not accepting any requests.
+
+ client-error-request-entity-too-large: same as Print-job,
+ except that no print data is involved.
+
+ client-error-document-format-not-supported: not applicable.
+
+ client-error-attributes-or-values-not-supported: not
+ applicable, since unsupported operation attributes and/or
+ values MUST be ignored and an appropriate success code returned
+ (see above).
+
+
+
+
+Hastings, et al. Informational [Page 60]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that "ipp-attribute-fidelity" is not involved.
+
+ server-error-operation-not-supported: not applicable (since
+ Get-Jobs is REQUIRED).
+
+ server-error-device-error: same as Print-Job, except that no
+ document data is involved.
+
+ server-error-temporary-error: same as Print-Job, except that
+ no document data is involved.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: not applicable.
+
+3.1.3.1.7 Pause-Printer
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Pause-Printer with the following
+ specializations and differences. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ For the following success status codes, the Printer object is being
+ stopped from scheduling jobs on all its devices.
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For any of the error status codes, the Printer object has not been
+ stopped from scheduling jobs on all its devices.
+
+ client-error-not-possible: not applicable.
+
+ client-error-not-found: the target Printer object does not
+ exist.
+
+ client-error-gone: the target Printer object no longer exists
+ and no forwarding address is known.
+
+ client-error-request-entity-too-large: same as Print-Job,
+ except no document data is involved.
+
+
+
+
+Hastings, et al. Informational [Page 61]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ client-error-document-format-not-supported: not applicable.
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that the Printer's "printer-is-accepting-jobs" attribute is not
+ involved.
+
+ server-error-operation-not-supported: the Pause-Printer
+ operation is not supported.
+
+ server-error-device-error: not applicable.
+
+ server-error-temporary-error: same as Print-Job, except no
+ document data is involved.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: not applicable.
+
+3.1.3.1.8 Resume-Printer
+
+ All of the Print-Job status code descriptions in Section 3.1.3.1.1
+ Print-Job Response with the specialization's described for Pause-
+ Printer are applicable to Resume-Printer. See Section 13 in
+ [RFC2911] for a more complete description of each status code.
+
+ For the following success status codes, the Printer object resumes
+ scheduling jobs on all its devices.
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For any of the error status codes, the Printer object does not resume
+ scheduling jobs.
+
+ server-error-operation-not-supported: the Resume-Printer
+ operation is not supported.
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 62]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.3.1.8.1 What about Printers unable to change state due to an error
+ condition?
+
+ If, in case, the IPP printer is unable to change its state due to
+ some problem with the actual printer device (say, it is shut down or
+ there is a media-jam as indicated in [RFC2911]), what should be the
+ result of the "Resume-Printer" operation? Should it still change the
+ 'printer-state-reasons' and return success or should it fail ?
+
+ The Resume-Printer operation must clear the 'paused' or 'moving-to-
+ paused' 'printer-state-message'. The operation must return a
+ 'successful-ok' status code.
+
+3.1.3.1.8.2 How is "printer-state" handled on Resume-Printer?
+
+ If the Resume-Printer operation succeeds, what should be the value of
+ "printer-state" and who should take care of the "printer-state"
+ attribute value later on ?
+
+ The Resume-Printer operation may change the "printer-state-reasons"
+ value.
+
+ The "printer-state" will change to one of three states:
+
+ 1. 'idle' - no additional jobs and no error conditions present
+
+ 2. 'processing' - job available and no error conditions present
+
+ 3. current state (i.e. no change) an error condition is present
+ (e.g. media jam)
+
+ In the third case the "printer-state-reason" will be cleared by
+ automata when it detects the error condition no longer exists. The
+ "printer-state" will move to 'idle' or 'processing' when conditions
+ permit. (i.e. no more error conditions)
+
+3.1.3.1.9 Purge-Printer
+
+ All of the Print-Job status code descriptions in Section 3.1.3.1.1
+ Print-Job Response with the specialization's described for Pause-
+ Printer are applicable to Purge-Printer. See Section 13 in [RFC2911]
+ for a more complete description of each status code.
+
+ For the following success status codes, the Printer object purges all
+ it's jobs.
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+
+
+Hastings, et al. Informational [Page 63]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For any of the error status codes, the Printer object does not purge
+ any jobs.
+
+ server-error-operation-not-supported: the Purge-Printer
+ operation is not supported.
+
+3.1.3.2 Job Operations
+
+3.1.3.2.1 Send-Document
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to the Get-Printer-Attributes
+ operation with the following specialization's and differences. See
+ Section 13 in [RFC2911] for a more complete description of each
+ status code.
+
+ For the following success status codes, the document has been added
+ to the specified Job object and the job's "number-of-documents"
+ attribute has been incremented:
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For the error status codes, no document has been added to the Job
+ object and the job's "number-of-documents" attribute has not been
+ incremented:
+
+ client-error-not-possible: Same as Print-Job, except that the
+ Printer's "printer-is-accepting-jobs" attribute is not
+ involved, so that the client is able to finish submitting a job
+ that was created with a Create-Job operation after this
+ attribute has been set to 'true'. Another condition is that
+ the state of the job precludes Send-Document, i.e., the job has
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 64]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ already been closed out by the client. However, if the IPP
+ Printer closed out the job due to timeout, the 'client-error-
+ timeout' error status SHOULD be returned instead.
+
+ client-error-timeout: This request was sent after the Printer
+ closed the job, because it has not received a Send-Document or
+ Send-URI operation within the Printer's "multiple-operation-
+ time-out" period .
+
+ client-error-request-entity-too-large: same as Print-Job.
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that "ipp-attributes-fidelity" operation attribute is not
+ involved..
+
+ server-error-operation-not-supported: the Send-Document
+ request is not supported.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: the job has been canceled by an
+ operator or the system while the client was transmitting the
+ data.
+
+3.1.3.2.2 Send-URI
+
+ All of the Print-Job status code descriptions in Section 3.1.3.1.1
+ Print-Job Response with the specialization's described for Send-
+ Document are applicable to Send-URI. See Section 13 in [RFC2911] for
+ a more complete description of each status code.
+
+ client-error-uri-scheme-not-supported: the URI scheme supplied
+ in the "document-uri" operation attribute is not supported and
+ the "document-uri" attribute MUST be returned in the
+ Unsupported Attributes group.
+
+ server-error-operation-not-supported: the Send-URI operation is
+ not supported.
+
+3.1.3.2.3 Cancel-Job
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Cancel-Job with the following
+ specializations and differences. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ For the following success status codes, the Job object is being
+ canceled or has been canceled:
+
+
+
+Hastings, et al. Informational [Page 65]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For any of the error status codes, the Job object has not been
+ canceled or was previously canceled.
+
+ client-error-not-possible: The request cannot be carried out
+ because of the state of the Job object ('completed',
+ 'canceled', or 'aborted') or the state of the system.
+
+ client-error-not-found: the target Printer and/or Job object
+ does not exist.
+
+ client-error-gone: the target Printer and/or Job object no
+ longer exists and no forwarding address is known.
+
+ client-error-request-entity-too-large: same as Print-Job,
+ except no document data is involved.
+
+ client-error-document-format-not-supported: not applicable.
+
+ client-error-attributes-or-values-not-supported: not
+ applicable, since unsupported operation attributes and values
+ MUST be ignored.
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that the Printer's "printer-is-accepting-jobs" attribute is not
+ involved.
+
+ server-error-operation-not-supported: not applicable (Cancel-
+ Job is REQUIRED).
+
+ server-error-device-error: same as Print-Job, except no
+ document data is involved.
+
+ server-error-temporary-error: same as Print-Job, except no
+ document data is involved.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: not applicable.
+
+
+
+
+
+Hastings, et al. Informational [Page 66]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.3.2.4 Get-Job-Attributes
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Get-Job-Attributes with the
+ following specializations and differences. See Section 13 in
+ [RFC2911] for a more complete description of each status code.
+
+ For the following success status codes, the requested attributes are
+ returned in Group 3 in the response:
+
+ successful-ok: same as Get-Printer-Attributes (see section
+ 3.1.3.1.5).
+
+ successful-ok-ignored-or-substituted-attributes: same as Get-
+ Printer-Attributes (see section 3.1.3.1.5).
+
+ successful-ok-conflicting-attributes: same as Get-Printer-
+ Attributes (see section 3.1.3.1.5).
+
+ For the error status codes, Group 3 is returned containing no
+ attributes or is not returned at all.
+
+ client-error-not-possible: Same as Print-Job, in addition the
+ Printer object is not accepting any requests.
+
+ client-error-document-format-not-supported: not applicable.
+
+ client-error-attributes-or-values-not-supported: not
+ applicable.
+
+ client-error-uri-scheme-not-supported: not applicable.
+
+ client-error-attributes-or-values-not-supported: not
+ applicable, since unsupported operation attributes and/or
+ values MUST be ignored and an appropriate success code returned
+ (see above).
+
+ client-error-conflicting-attributes: not applicable
+
+ server-error-operation-not-supported: not applicable (since
+ Get-Job-Attributes is REQUIRED).
+
+ server-error-device-error: same as Print-Job, except no
+ document data is involved.
+
+ server-error-temporary-error: sane as Print-Job, except no
+ document data is involved..
+
+
+
+
+Hastings, et al. Informational [Page 67]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: not applicable.
+
+3.1.3.2.5 Hold-Job
+
+ All of the Print-Job status codes described in Section 3.1.3.1.1
+ Print-Job Response are applicable to Hold-Job with the following
+ specializations and differences. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ For the following success status codes, the Job object is being held
+ or has been held:
+
+ successful-ok: no request attributes were substituted or
+ ignored (same as Print-Job).
+
+ successful-ok-ignored-or-substituted-attributes: same as
+ Print-Job.
+
+ successful-ok-conflicting-attributes: same as Print-Job.
+
+ For any of the error status codes, the Job object has not been held
+ or was previously held.
+
+ client-error-not-possible: The request cannot be carried out
+ because of the state of the Job object ('completed',
+ 'canceled', or 'aborted') or the state of the system.
+
+ client-error-not-found: the target Printer and/or Job object
+ does not exist.
+
+ client-error-gone: the target Printer and/or Job object no
+ longer exists and no forwarding address is known.
+
+ client-error-request-entity-too-large: same as Print-Job,
+ except no document data is involved.
+
+ client-error-document-format-not-supported: not applicable.
+
+ client-error-conflicting-attributes: same as Print-Job, except
+ that the Printer's "printer-is-accepting-jobs" attribute is not
+ involved.
+
+ server-error-operation-not-supported: the Hold-Job operation is
+ not supported.
+
+ server-error-device-error: not applicable.
+
+
+
+Hastings, et al. Informational [Page 68]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ server-error-temporary-error: same as Print-Job, except no
+ document data is involved.
+
+ server-error-not-accepting-jobs: not applicable.
+
+ server-error-job-canceled: not applicable.
+
+3.1.3.2.6 Release-Job
+
+ All of the Print-Job status code descriptions in Section 3.1.3.1.1
+ Print-Job Response with the specialization's described for Hold-Job
+ are applicable to Release-Job. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ server-error-operation-not-supported: the Release-Job operation
+ is not supported.
+
+3.1.3.2.7 Restart-Job
+
+ All of the Print-Job status code descriptions in Section 3.1.3.1.1
+ Print-Job Response with the specialization's described for Hold-Job
+ are applicable to Restart-Job. See Section 13 in [RFC2911] for a
+ more complete description of each status code.
+
+ server-error-operation-not-supported: the Restart-Job operation
+ is not supported.
+
+3.1.3.2.7.1 Can documents be added to a restarted job?
+
+ Assume I give a Create-Job request along with a set of 5 documents.
+ All the documents get printed and the job state is moved to
+ completed. I issue a Restart-Job request on the job. Now the issue
+ is that, if I try to add new documents to the restarted job, will the
+ IPP Server permit me to do so or return "client-error-not-possible "
+ and again print those 5 jobs?
+
+ A job can not move to the 'completed' state until all the documents
+ have been processed. The 'last-document' flag indicates when the
+ last document for a job is being sent from the client. This is the
+ semantic equivalent of closing a job. No documents may be added once
+ a job is closed. Section 3.3.7 of the IPP/1.1 model states "The job
+ is moved to the 'pending' job state and restarts the beginning on the
+ same IPP Printer object with the same attribute values." 'number-
+ of-documents' is a job attribute.
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 69]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.1.4 Returning unsupported attributes in Get-Xxxx responses (Issue
+ 1.18)
+
+ In the Get-Printer-Attributes, Get-Jobs, or Get-Job-Attributes
+ responses, the client cannot depend on getting unsupported attributes
+ returned in the Unsupported Attributes group that the client
+ requested, but are not supported by the IPP object. However, such
+ unsupported requested attributes will not be returned in the Job
+ Attributes or Printer Attributes group (since they are unsupported).
+ Furthermore, the IPP object is REQUIRED to return the 'successful-
+ ok-ignored-or-substituted-attributes' status code, so that the client
+ knows that not all that was requested has been returned.
+
+3.1.5 Sending empty attribute groups
+
+ The [RFC2911] and [RFC2910] specifications RECOMMEND that a sender
+ not send an empty attribute group in a request or a response.
+ However, they REQUIRE a receiver to accept an empty attribute group
+ as equivalent to the omission of that group. So a client SHOULD omit
+ the Job Template Attributes group entirely in a create operation that
+ is not supplying any Job Template attributes. Similarly, an IPP
+ object SHOULD omit an empty Unsupported Attributes group if there are
+ no unsupported attributes to be returned in a response.
+
+ The [RFC2910] specification REQUIRES a receiver to be able to receive
+ either an empty attribute group or an omitted attribute group and
+ treat them equivalently. The term "receiver" means an IPP object for
+ a request and a client for a response. The term "sender' means a
+ client for a request and an IPP object for a response.
+
+ There is an exception to the rule for Get-Jobs when there are no
+ attributes to be returned. [RFC2910] contains the following
+ paragraph:
+
+ The syntax allows an xxx-attributes-tag to be present when the xxx-
+ attribute-sequence that follows is empty. The syntax is defined this
+ way to allow for the response of Get-Jobs where no attributes are
+ returned for some job-objects. Although it is RECOMMENDED that the
+ sender not send an xxx-attributes-tag if there are no attributes
+ (except in the Get-Jobs response just mentioned), the receiver MUST
+ be able to decode such syntax.
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 70]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.2 Printer Operations
+
+3.2.1 Print-Job operation
+
+3.2.1.1 Flow controlling the data portion of a Print-Job request (Issue
+ 1.22)
+
+ A paused printer, or one that is stopped due to paper out or jam or
+ spool space full or buffer space full, may flow control the data of a
+ Print-Job operation (at the TCP/IP layer), so that the client is not
+ able to send all the document data. Consequently, the Printer will
+ not return a response until the condition is changed.
+
+ The Printer should not return a Print-Job response with an error code
+ in any of these conditions, since either the printer will be resumed
+ and/or the condition will be freed either by human intervention or as
+ jobs print.
+
+ In writing test scripts to test IPP Printers, the script must also be
+ written not to expect a response, if the printer has been paused,
+ until the printer is resumed, in order to work with all possible
+ implementations.
+
+3.2.1.2 Returning job-state in Print-Job response (Issue 1.30)
+
+ An IPP client submits a small job via Print-Job. By the time the IPP
+ printer/print server is putting together a response to the operation,
+ the job has finished printing and been removed as an object from the
+ print system. What should the job-state be in the response?
+
+ The Model suggests that the Printer return a response before it even
+ accepts the document content. The Job Object Attributes are returned
+ only if the IPP object returns one of the success status codes. Then
+ the job-state would always be "pending" or "pending-held".
+
+ This issue comes up for the implementation of an IPP Printer object
+ as a server that forwards jobs to devices that do not provide job
+ status back to the server. If the server is reasonably certain that
+ the job completed successfully, then it should return the job-state
+ as 'completed'. Also the server can keep the job in its "job
+ history" long after the job is no longer in the device. Then a user
+ could query the server and see that the job was in the 'completed'
+ state and completed as specified by the jobs "time-at-completed"
+ time, which would be the same as the server submitted the job to the
+ device.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 71]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ An alternative is for the server to respond to the client before or
+ while sending the job to the device, instead of waiting until the
+ server has finished sending the job to the device. In this case, the
+ server can return the job's state as 'pending' with the 'job-
+ outgoing' value in the job's "job-state-reasons" attribute.
+
+ If the server doesn't know for sure whether the job completed
+ successfully (or at all), it could return the (out-of-band) 'unknown'
+ value.
+
+ On the other hand, if the server is able to query the device and/or
+ setup some sort of event notification that the device initiates when
+ the job makes state transitions, then the server can return the
+ current job state in the Print-Job response and in subsequent queries
+ because the server knows what the job state is in the device (or can
+ query the device).
+
+ All of these alternatives depend on implementation of the server and
+ the device.
+
+3.2.2 Get-Printer-Attributes operation
+
+ If a Printer supports the "printer-make-and-model" attribute and
+ returns the .INF file model name of the printer in that attribute,
+ the Microsoft client will automatically install the correct driver
+ (if available).
+
+ Clients which poll periodically for printer status or queued-job-
+ count should use the "requested-attributes" operation attribute to
+ limit the scope of the query in order to save Printer and network
+ resources.
+
+3.2.3 Get-Jobs operation
+
+3.2.3.1 Get-Jobs, my-jobs='true', and 'requesting-user-name' (Issue
+ 1.39)?
+
+ In [RFC2911] section 3.2.6.1 'Get-Jobs Request', if the attribute
+ 'my-jobs' is present and set to TRUE, MUST the 'requesting-user-name'
+ attribute be there too, and if it's not present what should the IPP
+ printer do?
+
+ [RFC2911] Section 8.3 describes the various cases of "requesting-
+ user-name" being present or not for any operation. If the client
+ does not supply a value for "requesting-user-name", the printer MUST
+ assume that the client is supplying some anonymous name, such as
+ "anonymous".
+
+
+
+
+Hastings, et al. Informational [Page 72]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.2.3.2 Why is there a "limit" attribute in the Get-Jobs operation?
+
+ When using the Get-Jobs operation a client implementer might choose
+ to limit the number of jobs that the client shows on the first
+ screenful. For example, if its UI can only display 50 jobs, it can
+ defend itself against a printer that would otherwise return 500 jobs,
+ perhaps taking a long time on a slow dial-up line. The client can
+ then go and ask for a larger number of jobs in the background, while
+ showing the user the first 50 jobs. Since the job history is returned
+ in reverse order, namely the most recently completed jobs are
+ returned first, the user is most likely interested in the first jobs
+ that are returned. Limiting the number of jobs may be especially
+ useful for a client that is requesting 'completed' jobs from a
+ printer that keeps a long job history. Clients that don't mind
+ sometimes getting very large responses, can omit the "limit"
+ attribute in their Get-Jobs requests.
+
+3.2.4 Create-Job operation
+
+ A Printer may respond to a Create-Job operation with "job-state"
+ 'pending' or 'pending-held' and " job-state-reason" 'job-data-
+ insufficient' to indicate that operation has been accepted by the
+ Printer, but the Printer is expecting additional document data before
+ it can move the job into the 'processing' state. Alternatively, it
+ may respond with "job-state" 'processing' and "job-state-reason"
+ 'job-incoming' to indicate that the Create-Job operation has been
+ accepted by the Printer, but the Printer is expecting additional
+ Send-Document and/or Send-URI operations and/or is
+ accessing/accepting document data. The second alternative is for
+ non-spooling Printers that don't implement the 'pending' state.
+
+ Should the server wait for the "last-document" operation attribute
+ set to 'true' before starting to "process" the job?
+
+ It depends on implementation. Some servers spool the entire job,
+ including all document data, before starting to process, so such an
+ implementation would wait for the "last-document" before starting to
+ process the job. If the time-out occurs without the "last-document",
+ then the server takes one of the indicated actions in section 3.3.1
+ in the [RFC2911] document. Other servers will start to process
+ document data as soon as they have some. These are the so-called
+ "non-spooling" printers. Currently, there isn't a way for a client to
+ determine whether the Printer will spool all the data or will start
+ to process (and print) as soon as it has some data.
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 73]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+3.3 Job Operations
+
+3.3.1 Validate-Job
+
+ The Validate-Job operation has been designed so that its
+ implementation may be a part of the Print-Job operation. Therefore,
+ requiring Validate-Job is not a burden on implementers. Also it is
+ useful for client's to be able to count on its presence in all
+ conformance implementations, so that the client can determine before
+ sending a long document, whether the job will be accepted by the IPP
+ Printer or not.
+
+3.3.2 Restart-Job
+
+ The Restart-Job operation allows the reprocessing of a completed job.
+ Some jobs store the document data on the printer. Jobs created using
+ the Print-Job operation are an example. It is required that the
+ printer retains the job data after the job has moved to a 'completed
+ state' in order for the Restart-Job operation to succeed.
+
+ Some jobs contain only a reference to the job data. A job created
+ using the Print-URI is an example of such a job. When the Restart-
+ Job operation is issued the job is reprocessed. The job data MUST be
+ retrieved again to print the job.
+
+ It is possible that a job fails while attempting to access the print
+ data. When such a job is the target of a Restart-Job the Printer
+ SHALL attempt to retrieve the job data again.
+
+4 Object Attributes
+
+4.1 Attribute Syntax's
+
+4.1.1 The 'none' value for empty sets (Issue 1.37)
+
+ [RFC2911] states that the 'none' value should be used as the value of
+ a 1setOf when the set is empty. In most cases, sets that are
+ potentially empty contain keywords so the keyword 'none' is used, but
+ for the 3 finishings attributes, the values are enums and thus the
+ empty set is represented by the enum 3. Currently there are no other
+ attributes with 1setOf values, which can be empty and can contain
+ values that are not keywords. This exception requires special code
+ and is a potential place for bugs. It would have been better if we
+ had chosen an out-of-band value, either "no-value" or some new value,
+ such as 'none'. Since we didn't, implementations have to deal with
+ the different representations of 'none', depending on the attribute
+ syntax.
+
+
+
+
+Hastings, et al. Informational [Page 74]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+4.1.2 Multi-valued attributes (Issue 1.31)
+
+ What is the attribute syntax for a multi-valued attribute? Since
+ some attributes support values in more than one data type, such as
+ "media", "job-hold-until", and "job-sheets", IPP semantics associate
+ the attribute syntax with each value, not with the attribute as a
+ whole. The protocol associates the attribute syntax tag with each
+ value. Don't be fooled, just because the attribute syntax tag comes
+ before the attribute keyword. All attribute values after the first
+ have a zero length attribute keyword as the indication of a
+ subsequent value of the same attribute.
+
+4.1.3 Case Sensitivity in URIs (issue 1.6)
+
+ IPP client and server implementations must be aware of the diverse
+ uppercase/lowercase nature of URIs. RFC 2396 defines URL schemes and
+ Host names as case insensitive but reminds us that the rest of the
+ URL may well demonstrate case sensitivity. When creating URL's for
+ fields where the choice is completely arbitrary, it is probably best
+ to select lower case. However, this cannot be guaranteed and
+ implementations MUST NOT rely on any fields being case-sensitive or
+ case-insensitive in the URL beyond the URL scheme and host name
+ fields.
+
+ The reason that the IPP specification does not make any restrictions
+ on URIs, is so that implementations of IPP may use off-the-shelf
+ components that conform to the standards that define URIs, such as
+ RFC 2396 and the HTTP/1.1 specifications [RFC2616]. See these
+ specifications for rules of matching, comparison, and case-
+ sensitivity.
+
+ It is also recommended that System Administrators and implementations
+ avoid creating URLs for different printers that differ only in their
+ case. For example, don't have Printer1 and printer1 as two different
+ IPP Printers.
+
+ Example of equivalent URI's
+
+ http://abc.com:80/~smith/home.html
+
+ http://ABC.com/%7Esmith/home.html
+
+ http:/ABC.com:/%7esmith/home.html
+
+ Example of equivalent URI's using the IPP scheme
+
+ ipp://abc.com:631/~smith/home.html
+
+
+
+
+Hastings, et al. Informational [Page 75]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ ipp://ABC.com/%7Esmith/home.html
+
+ http:/ABC.com:631/%7esmith/home.html
+
+ The HTTP/1.1 specification [RFC2616] contains more details on
+ comparing URLs.
+
+4.1.4 Maximum length for xxxWithLanguage and xxxWithoutLanguage
+
+ The 'textWithLanguage' and 'nameWithLanguage' are compound syntaxes
+ that have two components. The first component is the 'language'
+ component that can contain up to 63 octets. The second component is
+ the 'text' or 'name' component. The maximum length of these are 1023
+ octets and 255 octets respectively. The definition of attributes
+ with either syntax may further restrict the length (e.g., printer-
+ name (name(127))).
+
+ The length of the 'language' component has no effect on the allowable
+ length of 'text' in 'textWithLanguage' or the length of 'name' in
+ 'nameWithLanguage'
+
+4.2 Job Template Attributes
+
+4.2.1 multiple-document-handling(type2 keyword)
+
+4.2.1.1 Support of multiple document jobs
+
+ IPP/1.0 is silent on which of the four effects an implementation
+ would perform if it supports Create-Job, but does not support
+ "multiple-document-handling" or multiple documents per job. IPP/1.1
+ was changed so that a Printer could support Create-Job without having
+ to support multiple document jobs. The "multiple-document-jobs-
+ supported" (boolean) Printer description attribute was added to
+ IPP/1.1 along with the 'server-error-multiple-document-jobs-not-
+ supported' status code for a Printer to indicate whether or not it
+ supports multiple document jobs, when it supports the Create-Job
+ operation. Also IPP/1.1 was clarified that the Printer MUST support
+ the "multiple-document-handling" (type2 keyword) Job Template
+ attribute with at least one value if the Printer supports multiple
+ documents per job.
+
+4.3 Job Description Attributes
+
+4.3.1 Getting the date and time of day
+
+ The "date-time-at-creation", "date-time-at-processing", and "date-
+ time-at-completed" attributes are returned as dateTime syntax. These
+ attributes are OPTIONAL for a Printer to support. However, there are
+
+
+
+Hastings, et al. Informational [Page 76]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ various ways for a Printer to get the date and time of day. Some
+ suggestions:
+
+ 1. A Printer can get time from an NTP timeserver if there's one
+ reachable on the network . See RFC 1305. Also DHCP option 32
+ in RFC 2132 returns the IP address of the NTP server.
+
+ 2. Get the date and time at startup from a human operator
+
+ 3. Have an operator set the date and time using a web
+ administrative interface
+
+ 4. Get the date and time from incoming HTTP requests, though the
+ problems of spoofing need to be considered. Perhaps comparing
+ several HTTP requests could reduce the chances of spoofing.
+
+ 5. Internal date time clock battery driven.
+
+ 6. Query "http://tycho.usno.navy.mil/cgi-bin/timer.pl"
+
+4.4 Printer Description Attributes
+
+4.4.1 queued-job-count (integer(0:MAX))
+
+4.4.1.1 Why is "queued-job-count" RECOMMENDED (Issue 1.14)?
+
+ The reason that "queued-job-count" is RECOMMENDED, is that some
+ clients look at that attribute alone when summarizing the status of a
+ list of printers, instead of doing a Get-Jobs to determine the number
+ of jobs in the queue. Implementations that fail to support the
+ "queued-job-count" will cause that client to display 0 jobs when
+ there are actually queued jobs.
+
+ We would have made it a REQUIRED Printer attribute, but some
+ implementations had already been completed before the issue was
+ raised, so making it a SHOULD was a compromise.
+
+4.4.1.2 Is "queued-job-count" a good measure of how busy a printer is
+ (Issue 1.15)?
+
+ The "queued-job-count" is not a good measure of how busy the printer
+ is when there are held jobs. A future registration could be to add a
+ "held-job-count" (or an "active-job-count") Printer Description
+ attribute if experience shows that such an attribute (combination) is
+ needed to quickly indicate how busy a printer really is.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 77]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+4.4.2 printer-current-time (dateTime)
+
+ A Printer implementation MAY support this attribute by obtaining the
+ date and time by any number of implementation-dependent means at
+ startup or subsequently. Examples include:
+
+ 1. an internal date time clock,
+
+ 2. from the operator at startup using the console,
+
+ 3. from an operator using an administrative web page,
+
+ 4. from HTTP headers supplied in client requests,
+
+ 5. use HTTP to query "http://tycho.usno.navy.mil/cgi-bin/timer.pl"
+
+ 6. from the network, using NTP [RFC1305] or DHCP option 32
+ [RFC2132] that returns the IP address of the NTP server.
+
+ If an implementation supports this attribute by obtaining the current
+ time from the network (at startup or later), but the time is not
+ available, then the implementation MUST return the value of this
+ attribute using the out-of-band 'no-value' meaning not configured.
+ See the beginning of section 4.1.
+
+ Since the new "date-and-time-at-xxx" Job Description attributes refer
+ to the "printer-current-time", they will be covered also.
+
+4.4.3 Printer-uri
+
+ Must the operational attribute for printer-uri match one of the
+ values in "printer-uri-supported"?
+
+ A forgiving printer implementation would not reject the operation.
+ But the implementation has its rights to reject a printer or job
+ operation if the operational attribute printer-uri is not a value of
+ the printer-uri-supported. The printer might not be improperly
+ configured. The request obviously reached the printer. The printer
+ could treat the printer-uri as the logical equivalent of a value in
+ the printer-uri-supported. It would be implementation dependent for
+ which value, and associated security policy, would apply. This does
+ also apply to a job object specified with a printer-uri and job-id,
+ or with a job-uri. See section 4.1.3 for how to compare URI's.
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 78]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+4.5 Empty Jobs
+
+ The IPP object model does not prohibit a job that contains no
+ documents. Such a job may be created in a number of ways including a
+ 'create-job' followed by an 'add-document' that contains no data and
+ has the 'last-document' flag set.
+
+ An empty job is processed just as any other job. The operation that
+ "closes" an empty job is not rejected because the job is empty. If
+ no other conditions exist, other than the job is empty, the response
+ to the operation will indicate success. After the job is scheduled
+ and processed, the job state SHALL be 'completed'.
+
+ There will be some variation in the value(s) of the "job-state-
+ reasons" attribute. It is required that if no conditions, other than
+ the job being empty, exist the "job-state-reasons" SHALL include the
+
+ 'completed-successfully'. If other conditions existed, the
+ 'completed-with-warnings' or 'completed-with-errors' values may be
+ used.
+
+5 Directory Considerations
+
+5.1 General Directory Schema Considerations
+
+ The [RFC2911] document lists RECOMMENDED and OPTIONAL Printer object
+ attributes for directory schemas. See [RFC2911] APPENDIX E: Generic
+ Directory Schema.
+
+ The SLP printer template is defined in the "Definition of the Printer
+ Abstract Service Type v2.0" document [svrloc-printer]. The LDAP
+ printer template is defined in the "Internet Printing Protocol (IPP):
+ LDAP Schema for Printer Services" document [ldap-printer]. Both
+ documents systematically add "printer-" to any attribute that doesn't
+ already start with "printer-" in order to keep the printer directory
+ attributes distinct from other directory attributes. Also, instead
+ of using "printer-uri-supported", "uri-authentication-supported", and
+ "uri-security-supported", they use a "printer-xri-supported"
+ attribute with special syntax to contain all of the same information
+ in a single attribute.
+
+5.2 IPP Printer with a DNS name
+
+ If the IPP printer has a DNS name should there be at least two values
+ for the printer-uri-supported attribute. One URL with the fully
+ qualified DNS name the other with the IP address in the URL?
+
+
+
+
+
+Hastings, et al. Informational [Page 79]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ The printer may contain one or the other or both. It's up to the
+ administrator to configure this attribute.
+
+6 Security Considerations
+
+ The security considerations given in [RFC2911] Section 8 "Security
+ Considerations" all apply to this document. In addition, the
+ following sub-sections describes security consideration that have
+ arisen as a result of implementation testing.
+
+6.1 Querying jobs with IPP that were submitted using other job
+ submission protocols (Issue 1.32)
+
+ The following clarification was added to [RFC2911] section 8.5:
+
+ 8.5 Queries on jobs submitted using non-IPP protocols If the
+ device that an IPP Printer is representing is able to accept jobs
+ using other job submission protocols in addition to IPP, it is
+ RECOMMEND that such an implementation at least allow such
+ "foreign" jobs to be queried using Get-Jobs returning "job-id" and
+ "job-uri" as 'unknown'. Such an implementation NEED NOT support
+ all of the same IPP job attributes as for IPP jobs. The IPP
+ object returns the 'unknown' out-of-band value for any requested
+ attribute of a foreign job that is supported for IPP jobs, but not
+ for foreign jobs.
+
+ It is further RECOMMENDED, that the IPP Printer generate "job-id"
+ and "job-uri" values for such "foreign jobs", if possible, so that
+ they may be targets of other IPP operations, such as Get-Job-
+ Attributes and Cancel-Job. Such an implementation also needs to
+ deal with the problem of authentication of such foreign jobs. One
+ approach would be to treat all such foreign jobs as belonging to
+ users other than the user of the IPP client. Another approach
+ would be for the foreign job to belong to 'anonymous'. Only if
+ the IPP client has been authenticated as an operator or
+ administrator of the IPP Printer object, could the foreign jobs be
+ queried by an IPP request. Alternatively, if the security policy
+ were to allow users to query other users' jobs, then the foreign
+ jobs would also be visible to an end-user IPP client using Get-
+ Jobs and Get-Job- Attributes.
+
+ Thus IPP MAY be implemented as a "universal" protocol that
+ provides access to jobs submitted with any job submission
+ protocol. As IPP becomes widely implemented, providing a more
+ universal access makes sense.
+
+
+
+
+
+
+Hastings, et al. Informational [Page 80]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7 Encoding and Transport
+
+ This section discusses various aspects of IPP/1.1 Encoding and
+ Transport [RFC2910].
+
+ A server is not required to send a response until after it has
+ received the client's entire request. Hence, a client must not
+ expect a response until after it has sent the entire request.
+ However, we recommend that the server return a response as soon as
+ possible if an error is detected while the client is still sending
+ the data, rather than waiting until all of the data is received.
+ Therefore, we also recommend that a client listen for an error
+ response that an IPP server MAY send before it receives all the data.
+ In this case a client, if chunking the data, can send a premature
+ zero-length chunk to end the request before sending all the data (and
+ so the client can keep the connection open for other requests, rather
+ than closing it). If the request is blocked for some reason, a
+ client MAY determine the reason by opening another connection to
+ query the server using Get-Printer-Attributes.
+
+ IPP, by design, uses TCP's built-in flow control mechanisms [RFC 793]
+ to throttle clients when Printers are busy. Therefore, it is
+ perfectly normal for an IPP client transmitting a Job to be blocked
+ for a really long time. Accordingly, socket timeouts must be
+ avoided. Some socket implementations have a timeout option, which
+ specifies how long a write operation on a socket can be blocked
+ before it times out and the blocking ends. A client should set this
+ option for infinite timeout when transmitting Job submissions.
+
+ Some IPP client applications might be able to perform other useful
+ work while a Job transmission is blocked. For example, the client
+ may have other jobs that it could transmit to other Printers
+ simultaneously. A client may have a GUI, which must remain
+ responsive to the user while the Job transmission is blocked. These
+ clients should be designed to spawn a thread to handle the Job
+ transmission at its own pace, leaving the main application free to do
+ other work. Alternatively, single-threaded applications could use
+ non-blocking I/O.
+
+ Some Printer conditions, such as jam or lack of paper, could cause a
+ client to be blocked indefinitely. Clients may open additional
+ connections to the Printer to Get-Printer-Attributes, determine the
+ state of the device, alert a user if the printer is stopped, and let
+ a user decide whether to abort the job transmission or not.
+
+ In the following sections, there are tables of all HTTP headers,
+ which describe their use in an IPP client or server. The following
+ is an explanation of each column in these tables.
+
+
+
+Hastings, et al. Informational [Page 81]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ - the "header" column contains the name of a header
+ - the "request/client" column indicates whether a client sends the
+ header.
+ - the "request/ server" column indicates whether a server supports
+ the header when received.
+ - the "response/ server" column indicates whether a server sends
+ the header.
+ - the "response /client" column indicates whether a client
+ supports the header when received.
+ - the "values and conditions" column specifies the allowed header
+ values and the conditions for the header to be present in a
+ request/response.
+
+ The table for "request headers" does not have columns for responses,
+ and the table for "response headers" does not have columns for
+ requests.
+
+ The following is an explanation of the values in the "request/client"
+ and "response/ server" columns.
+
+ - must: the client or server MUST send the header,
+ - must-if: the client or server MUST send the header when the
+ condition described in the "values and conditions" column is
+ met,
+ - may: the client or server MAY send the header
+ - not: the client or server SHOULD NOT send the header. It is not
+ relevant to an IPP implementation.
+
+ The following is an explanation of the values in the
+ "response/client" and "request/ server" columns.
+
+ - must: the client or server MUST support the header,
+ - may: the client or server MAY support the header
+ - not: the client or server SHOULD NOT support the header. It is
+ not relevant to an IPP implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 82]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7.1 General Headers
+
+ The following is a table for the general headers.
+
+ General- Request Response Values and Conditions
+ Header
+
+ Client Server Server Client
+
+
+ Cache- not must not "no-cache" only
+ Control must
+
+ Connection must- must must- must "close" only. Both
+ if if client and server
+ SHOULD keep a
+ connection for the
+ duration of a sequence
+ of operations. The
+ client and server MUST
+ include this header
+ for the last operation
+ in such a sequence.
+
+ Date may may must may per RFC 1123 [RFC1123]
+ from RFC 2616
+ [RFC2616]
+
+ Pragma must not must not "no-cache" only
+
+ Transfer- must- must must- must "chunked" only. Header
+ Encoding if if MUST be present if
+ Content-Length is
+ absent.
+
+ Upgrade not not not not
+
+ Via not not not not
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 83]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7.2 Request Headers
+
+ The following is a table for the request headers.
+
+ Request- Client Server Request Values and Conditions
+ Header
+
+ Accept may must "application/ipp" only. This
+ value is the default if the
+ client omits it
+
+ Accept- not not Charset information is within the
+ Charset application/ipp entity
+
+ Accept- may must empty and per RFC 2616 [RFC2616]
+ Encoding and IANA registry for content-
+ codings
+
+ Accept- not not language information is within the
+ Language application/ipp entity
+
+ Authorization must- must per RFC 2616. A client MUST send
+ if this header when it receives a
+ 401 "Unauthorized" response and
+ does not receive a "Proxy-
+ Authenticate" header.
+
+ From not not per RFC 2616. Because RFC
+ recommends sending this header
+ only with the user's approval,
+ it is not very useful
+
+ Host must must per RFC 2616
+
+ If-Match not not
+
+ If-Modified- not not
+ Since
+
+ If-None-Match not not
+
+ If-Range not not
+
+ If- not not
+ Unmodified-
+ Since
+
+
+
+
+
+Hastings, et al. Informational [Page 84]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Request- Client Server Request Values and Conditions
+ Header
+
+ Max-Forwards not not
+
+ Proxy- must- not per RFC 2616. A client MUST send
+ Authorizati if this header when it receives a
+ on 401 "Unauthorized" response and
+ a "Proxy-Authenticate" header.
+
+ Range not not
+
+ Referrer not not
+
+ User-Agent not not
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 85]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7.3 Response Headers
+
+ The following is a table for the request headers.
+
+ Response- Server Client Response Values and Conditions
+ Header
+
+
+ Accept-Ranges not not
+
+ Age not not
+
+ Location must- may per RFC 2616. When URI needs
+ if redirection.
+
+ Proxy- must per RFC 2616
+ Authenticat
+ e not
+
+ Public may may per RFC 2616
+
+ Retry-After may may per RFC 2616
+
+ Server not not
+
+ Vary not not
+
+ Warning may may per RFC 2616
+
+ WWW- must- must per RFC 2616. When a server needs
+ Authenticate if to authenticate a client.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 86]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7.4 Entity Headers
+
+ The following is a table for the entity headers.
+
+ Entity-Header Request Response Values and
+ Conditions
+
+ Client Server Server Client
+
+ Allow not not not not
+
+ Content-Base not not not not
+
+ Content- may must must must per RFC 2616 and
+ Encoding IANA registry for
+ content codings.
+
+ Content- not not not not Application/ipp
+ Language handles language
+
+ Content- must- must must- must the length of the
+ Length if if message-body per
+ RFC 2616. Header
+ MUST be present
+ if Transfer-
+ Encoding is
+ absent..
+
+ Content- not not not not
+ Location
+
+ Content-MD5 may may may may per RFC 2616
+
+ Content-Range not not not not
+
+ Content-Type must must must must "application/ipp"
+ only
+
+ ETag not not not not
+
+ Expires not not not not
+
+ Last-Modified not not not not
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 87]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+7.5 Optional support for HTTP/1.0
+
+ IPP implementations consist of an HTTP layer and an IPP layer. In
+ the following discussion, the term "client" refers to the HTTP client
+ layer and the term "server" refers to the HTTP server layer. The
+ Encoding and Transport document [RFC2910] requires that HTTP 1.1 MUST
+ be supported by all clients and all servers. However, a client
+ and/or a server implementation may choose to also support HTTP 1.0.
+
+ This option means that a server may choose to communicate with a
+ (non-conforming) client that only supports HTTP 1.0. In such cases
+ the server should not use any HTTP 1.1 specific parameters or
+ features and should respond using HTTP version number 1.0.
+
+ This option also means that a client may choose to communicate with a
+ (non-conforming) server that only supports HTTP 1.0. In such cases,
+ if the server responds with an HTTP 'unsupported version number' to
+ an HTTP 1.1 request, the client should retry using HTTP version
+ number 1.0.
+
+7.6 HTTP/1.1 Chunking
+
+7.6.1 Disabling IPP Server Response Chunking
+
+ Clients MUST anticipate that the HTTP/1.1 server may chunk responses
+ and MUST accept them in responses. However, a (non-conforming) HTTP
+ client that is unable to accept chunked responses may attempt to
+ request an HTTP 1.1 server not to use chunking in its response to an
+ operation by using the following HTTP header:
+
+ TE: identity
+
+ This mechanism should not be used by a server to disable a client
+ from chunking a request, since chunking of document data is an
+ important feature for clients to send long documents.
+
+7.6.2 Warning About the Support of Chunked Requests
+
+ This section describes some problems with the use of chunked requests
+ and HTTP/1.1 servers.
+
+ The HTTP/1.1 standard [RFC2616] requires that conforming servers
+ support chunked requests for any method. However, in spite of this
+ requirement, some HTTP/1.1 implementations support chunked responses
+ in the GET method, but do not support chunked POST method requests.
+ Some HTTP/1.1 implementations that support CGI scripts [CGI] and/or
+ servlets [Servlet] require that the client supply a Content-Length.
+ These implementations might reject a chunked POST method and return a
+
+
+
+Hastings, et al. Informational [Page 88]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ 411 status code (Length Required), might attempt to buffer the
+ request and run out of room returning a 413 status code (Request
+ Entity Too Large), or might successfully accept the chunked request.
+
+ Because of this lack of conformance of HTTP servers to the HTTP/1.1
+ standard, the IPP standard [RFC2910] REQUIRES that a conforming IPP
+ Printer object implementation support chunked requests and that
+ conforming clients accept chunked responses. Therefore, IPP object
+ implementers are warned to seek HTTP server implementations that
+ support chunked POST requests in order to conform to the IPP standard
+ and/or use implementation techniques that support chunked POST
+ requests.
+
+8 References
+
+ [CGI] CGI/1.1 (http://www.w3.org/CGI/).
+
+ [IANA-CS] IANA Registry of Coded Character Sets:
+ http://www.iana.org/assignments/character-sets
+
+ [ldap-printer] Fleming, P., Jones, K., Lewis, H. and I. McDonald,
+ "Internet Printing Protocol (IPP): LDAP Schema for
+ Printer Services", Work in Progress.
+
+ [RFC793] Postel, J., "Transmission Control Protocol", STD 7,
+ RFC 793, September 1981.
+
+ [RFC1123] Braden, R., "Requirements for Internet Hosts -
+ Application and Support", RFC 1123, October, 1989.
+
+ [RFC2026] Bradner, S., "The Internet Standards Process --
+ Revision 3", BCP 9, RFC 2026, October 1996.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119 , March 1997.
+
+ [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter,
+ "Uniform Resource Identifiers (URI): Generic
+ Syntax", RFC 2396, August 1998.
+
+ [RFC2565] DeBry, R., Hastings, T., Herriot, R., Isaacson, S.
+ and P. Powell, "Internet Printing Protocol/1.0:
+ Model and Semantics", RFC 2566, April 1999.
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 89]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ [RFC2566] Herriot, R., Butler, S., Moore, P. and R. Turner,
+ "Internet Printing Protocol/1.0: Encoding and
+ Transport", RFC 2565, April 1999.
+
+ [RFC2567] Wright, D., "Design Goals for an Internet Printing
+ Protocol", RFC 2567, April 1999.
+
+ [RFC2568] Zilles, S., "Rationale for the Structure and Model
+ and Protocol for the Internet Printing Protocol",
+ RFC 2568, April 1999.
+
+ [RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J.
+ Martin, "Mapping between LPD and IPP Protocols",
+ RFC 2569, April 1999.
+
+ [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
+ Masinter, L., Leach, P. and T. Berners-Lee,
+ "Hypertext Transfer Protocol - HTTP/1.1", RFC 2616,
+ June 1999.
+
+ [RFC2910] Herriot, R., Butler, S., Moore, P. and R. Turner,
+ "Internet Printing Protocol/1.0: Encoding and
+ Transport", RFC 2910, September, 2000.
+
+ [RFC2911] DeBry, R., Hastings, T., Herriot, R., Isaacson, S.
+ and P. Powell, "Internet Printing Protocol/1.0:
+ Model and Semantics", RFC 2911, September, 2000.
+
+ [Servlet] Servlet Specification Version 2.1
+ (http://java.sun.com/products/servlet/2.1/
+ index.html).
+
+ [svrloc-printer] St. Pierre, P., Isaacson, S., McDonald, I.,
+ "Definition of the Printer Abstract Service Type
+ v2.0", http://www.isi.edu/in-
+ notes/iana/assignments/svrloc-
+ templates/printer.2.0.en (IANA Registered, May 27,
+ 2000).
+
+ [SSL] Netscape, The SSL Protocol, Version 3, (Text
+ version 3.02), November 1996.
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 90]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+9. Authors' Addresses
+
+ Thomas N. Hastings
+ Xerox Corporation
+ 701 Aviation Blvd.
+ El Segundo, CA 90245
+
+ EMail: hastings@cp10.es.xerox.com
+
+
+ Carl-Uno Manros
+ Independent Consultant
+ 1601 N. Sepulveda Blvd. #505
+ Manhattan Beach, CA 90266
+
+ Email: carl@manros.com
+
+
+ Carl Kugler
+ Mail Stop 003G
+ IBM Printing Systems Co
+ 6300 Diagonal Hwy
+ Boulder CO 80301
+
+ EMail: Kugler@us.ibm.com
+
+
+ Henrik Holst
+ i-data Printing Systems
+ Vadstrupvej 35-43
+ 2880 Bagsvaerd, Denmark
+
+ EMail: hh@I-data.com
+
+
+ Peter Zehler
+ Xerox Corporation
+ 800 Philips Road
+ Webster, NY 14580
+
+ EMail: PZehler@crt.xerox.com
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 91]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ IPP Web Page: http://www.pwg.org/ipp/
+ IPP Mailing List: ipp@pwg.org
+
+ To subscribe to the ipp mailing list, send the following email:
+
+ 1) send it to majordomo@pwg.org
+ 2) leave the subject line blank
+ 3) put the following two lines in the message body:
+ subscribe ipp
+ end
+
+ Implementers of this specification document are encouraged to join
+ the IPP Mailing List in order to participate in any discussions of
+ clarification issues and review of registration proposals for
+ additional attributes and values. In order to reduce spam the
+ mailing list rejects mail from non-subscribers, so you must subscribe
+ to the mailing list in order to send a question or comment to the
+ mailing list.
+
+ Other Participants:
+
+ Chuck Adams - Tektronix Shivaun Albright - HP
+
+ Stefan Andersson - Axis Jeff Barnett - IBM
+
+ Ron Bergman - Hitachi Koki Dennis Carney - IBM
+ Imaging Systems
+
+ Keith Carter - IBM Angelo Caruso - Xerox
+
+ Rajesh Chawla - TR Computing Nancy Chen - Okidata
+ Solutions
+
+ Josh Cohen - Microsoft Jeff Copeland - QMS
+
+ Andy Davidson - Tektronix Roger deBry - IBM
+
+ Maulik Desai - Auco Mabry Dozier - QMS
+
+ Lee Farrell - Canon Information Satoshi Fujitami - Ricoh
+ Systems
+
+ Steve Gebert - IBM Sue Gleeson - Digital
+
+ Charles Gordon - Osicom Brian Grimshaw - Apple
+
+ Jerry Hadsell - IBM Richard Hart - Digital
+
+
+
+
+Hastings, et al. Informational [Page 92]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Tom Hastings - Xerox Henrik Holst - I-data
+
+ Stephen Holmstead Zhi-Hong Huang - Zenographics
+
+ Scott Isaacson - Novell Babek Jahromi - Microsoft
+
+ Swen Johnson - Xerox David Kellerman - Northlake
+ Software
+
+ Robert Kline - TrueSpectra Charles Kong - Panasonic
+
+ Carl Kugler - IBM Dave Kuntz - Hewlett-Packard
+
+ Takami Kurono - Brother Rick Landau - Digital
+
+ Scott Lawrence - Agranot Systems Greg LeClair - Epson
+
+ Dwight Lewis - Lexmark Harry Lewis - IBM
+
+ Tony Liao - Vivid Image Roy Lomicka - Digital
+
+ Pete Loya - HP Ray Lutz - Cognisys
+
+ Mike MacKay - Novell, Inc. David Manchala - Xerox
+
+ Carl-Uno Manros - Xerox Jay Martin - Underscore
+
+ Stan McConnell - Xerox Larry Masinter - Xerox
+
+ Sandra Matts - Hewlett Packard Peter Michalek - Shinesoft
+
+ Ira McDonald - High North Inc. Mike Moldovan - G3 Nova
+
+ Tetsuya Morita - Ricoh Yuichi Niwa - Ricoh
+
+ Pat Nogay - IBM Ron Norton - Printronics
+
+ Hugo Parra, Novell Bob Pentecost - Hewlett-Packard
+
+ Patrick Powell - Astart Jeff Rackowitz - Intermec
+ Technologies
+
+ Eric Random - Peerless Rob Rhoads - Intel
+
+ Xavier Riley - Xerox Gary Roberts - Ricoh
+
+ David Roach - Unisys Stuart Rowley - Kyocera
+
+
+
+
+Hastings, et al. Informational [Page 93]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ Yuji Sasaki - Japan Computer Richard Schneider - Epson
+ Industry
+
+ Kris Schoff - HP Katsuaki Sekiguchi - Canon
+
+ Bob Setterbo - Adobe Gail Songer - Peerless
+
+ Hideki Tanaka - Canon Devon Taylor - Novell, Inc.
+
+ Mike Timperman - Lexmark Atsushi Uchino - Epson
+
+ Shigeru Ueda - Canon Bob Von Andel - Allegro Software
+
+ William Wagner - NetSilicon/DPI Jim Walker - DAZEL
+
+ Chris Wellens - Interworking Labs Trevor Wells - Hewlett Packard
+
+ Craig Whittle - Sharp Labs Rob Whittle - Novell, Inc.
+
+ Jasper Wong - Xionics Don Wright - Lexmark
+
+ Michael Wu - Heidelberg Digital Rick Yardumian - Xerox
+
+ Michael Yeung - Toshiba Lloyd Young - Lexmark
+
+ Atsushi Yuki - Kyocera Peter Zehler - Xerox
+
+ William Zhang- Canon Information Frank Zhao - Panasonic
+ Systems
+
+ Steve Zilles - Adobe Rob Zirnstein - Canon
+ Information Systems
+
+10. Description of the Base IPP Documents
+
+ In addition to this document, the base set of IPP documents includes:
+
+ Design Goals for an Internet Printing Protocol [RFC2567]
+ Rationale for the Structure and Model and Protocol for the
+ Internet
+ Printing Protocol [RFC2568]
+ Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
+ Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
+ Mapping between LPD and IPP Protocols [RFC2569]
+
+ The "Design Goals for an Internet Printing Protocol" document takes a
+ broad look at distributed printing functionality, and it enumerates
+ real-life scenarios that help to clarify the features that need to be
+
+
+
+Hastings, et al. Informational [Page 94]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+ included in a printing protocol for the Internet. It identifies
+ requirements for three types of users: end users, operators, and
+ administrators. It calls out a subset of end user requirements that
+ are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator
+ operations have been added to IPP/1.1 [RFC2911, RFC2910].
+
+ The "Rationale for the Structure and Model and Protocol for the
+ Internet Printing Protocol" document describes IPP from a high level
+ view, defines a roadmap for the various documents that form the suite
+ of IPP specification documents, and gives background and rationale
+ for the IETF IPP working group's major decisions.
+
+ The "Internet Printing Protocol/1.1: Model and Semantics" document
+ describes a simplified model with abstract objects, their attributes,
+ and their operations. The model introduces a Printer and a Job. The
+ Job supports multiple documents per Job. The model document also
+ addresses how security, internationalization, and directory issues
+ are addressed.
+
+ The "Internet Printing Protocol/1.1: Encoding and Transport" document
+ is a formal mapping of the abstract operations and attributes defined
+ in the model document onto HTTP/1.1 [RFC2616]. It also defines the
+ encoding rules for a new Internet MIME media type called
+ "application/ipp". This document also defines the rules for
+ transporting a message body over HTTP whose Content-Type is
+ "application/ipp". This document defines the 'ipp' scheme for
+ identifying IPP printers and jobs.
+
+ The "Mapping between LPD and IPP Protocols" document gives some
+ advice to implementers of gateways between IPP and LPD (Line Printer
+ Daemon) implementations.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 95]
+
+RFC 3196 Internet Printing Protocol/1.1 November 2001
+
+
+11 Full Copyright Statement
+
+ Copyright (C) The Internet Society (2001). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hastings, et al. Informational [Page 96]
+