October 31, 2003
Candidate Standard 5100.5

The Printer Working Group (PWG)
Standard for The Internet Printing Protocol (IPP):
Document Object

Abstract: This IPP specification extends the IPP Protocol, Model and Semantics [rfc2910], [rfc2911] object model by defining a Document object.  The [rfc2911] Job object is extended to contain one or more Document objects that are passive objects operated on by the Job.  Multi-Document Jobs exist in IPP [rfc2911] but are not objects in their own right.  This specification elevates the Document to an IPP object thus giving access to a document’s metadata within a Job.  A Document object allows template attributes to be applied at both the Job and Document level.  This enables document overrides of Job Template attributes.
This specification defines new operations or extends [rfc2911] operations as follows: 
1 [rfc 2911] operation that creates a Job object: Create-Job
2 [rfc 2911] operations that create a Job and Document object: Print-Job, Print-URI 
2 [rfc 2911] operations that create Document objects:  Send-Document, Send-URI 
5 new operations:  Get-Documents, Get-Document-Attributes, Set-Document-Attributes, Cancel-Document, Delete-Document
This specification uses the new Operation attributes (defined in [pwg5100.7]) that describe the contents of the Document and permit the Printer to reject requests that it cannot process correctly to define new Document Description attributes.  The Printer copies these Operation attributes to the corresponding Document Description attributes, which clients may query.
This specification also uses existing Job Template attributes to define Document Template attributes (“xxx” Document Template attribute, “xxx-actual” Document Description attribute, “xxx-default” Printer attribute, and “xxx-supported” Printer attribute).  In addition this specification lists most of the attributes defined in other IPP specifications to show their relationship to corresponding attributes defined in this IPP specification for use with the Document object.  
The purpose for specifying the Document object is so that the print industry can have a common semantic specification for use in IPP, the PWG Semantic Model, the PWG Print Service Interface (PSI) project, and the Free Standards Group Job Ticket API, which all have a Document object.

October 31, 2003
Candidate Standard 5100.5

The Printer Working Group (PWG)
Standard for
The Internet Printing Protocol (IPP):
Document Object

This version of the PWG Proposed Standard is available electronically at:

ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.5.pdf , .doc, .rtf
This document is an IEEE-ISTO PWG Candidate Standard.   For a definition of a "PWG Candidate Standard" and its transition to a "PWG Standard", see:  ftp://ftp.pwg.org/pub/pwg/general/pwg-process.pdf.  

Copyright (C) 2003, IEEE ISTO. All rights reserved. 
This document 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, this paragraph and the title of the Document as referenced below 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 IEEE-ISTO and the Printer Working Group, a program of the IEEE-ISTO. 
Title:  The Printer Working Group Standard for the Internet Printing Protocol (IPP): Document Object 
The IEEE-ISTO and the Printer Working Group DISCLAIM ANY AND ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED INCLUDING (WITHOUT LIMITATION) ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
The Printer Working Group, a program of the IEEE-ISTO, reserves the right to make changes to the document without further notice.  The document may be updated, replaced or made obsolete by other documents at any time. 
The IEEE-ISTO takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. 
The IEEE-ISTO invites any interested party to bring to its attention any copyrights, patents, or patent applications, or other proprietary rights which may cover technology that may be required to implement the contents of this document. The IEEE-ISTO and its programs shall not be responsible for identifying patents for which a license may be required by a document and/or IEEE-ISTO Industry Group Standard or for conducting inquiries into the legal validity or scope of those patents that are brought to its attention. Inquiries may be submitted to the IEEE-ISTO by e-mail at: 
ieee-isto@ieee.org.
The Printer Working Group acknowledges that the IEEE-ISTO (acting itself or through its designees) is, and shall at all times, be the sole entity that may authorize the use of certification marks, trademarks, or other special designations to indicate compliance with these materials. 
Use of this document is wholly voluntary.  The existence of this document does not imply that there are no other ways to produce, test, measure, purchase, market, or provide other goods and services related to its scope. 

About the IEEE-ISTO

The IEEE-ISTO is a not-for-profit corporation offering industry groups an innovative and flexible operational forum and support services.  The IEEE-ISTO provides a forum not only to develop standards, but also to facilitate activities that support the implementation and acceptance of standards in the marketplace.  The organization is affiliated with the IEEE (http://www.ieee.org/) and the IEEE Standards Association (http://standards.ieee.org/).

For additional information regarding the IEEE-ISTO and its industry programs visit http://www.ieee-isto.org.

About the IEEE-ISTO PWG
The Printer Working Group (or PWG) is a Program of the IEEE Industry Standards and Technology Organization (ISTO) with member organizations including printer manufacturers, print server developers, operating system providers, network operating systems providers, network connectivity vendors, and print management application developers.  The group is chartered to make printers and the applications and operating systems supporting them work together better.  All references to the PWG in this document implicitly mean “The Printer Working Group, a Program of the IEEE ISTO.” In order to meet this objective, the PWG will document the results of their work as open standards that define print related protocols, interfaces, procedures and conventions. Printer manufacturers and vendors of printer related software will benefit from the interoperability provided by voluntary conformance to these standards. 
In general, a PWG standard is a specification that is stable, well understood, and is technically competent, has multiple, independent and interoperable implementations with substantial operational experience, and enjoys significant public support. 
For additional information regarding the Printer Working Group visit:  http://www.pwg.org

Contact information:
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 are encouraged to join the IPP Mailing List in order to participate in any discussions of clarifications or review of registration proposals for additional names.  Requests for additional extensions, for inclusion in this specification, should be sent to the IPP Mailing list for consideration.  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.

Table of Contents
1	Introduction and Summary
1.1 Scope
2	Terminology
2.1 Conformance Terminology
2.2 Other Terminology
3	New Job operations and semantic extensions to Job operations
3.1 Job Creation operations
3.1.1 Fidelity Attributes
3.1.1.1 ipp-attribute-fidelity (boolean) ([rfc2911] § 3.2.1 and 15)
3.1.1.2 job-mandatory-attributes (1setOf type2 keyword) Operation attribute
3.1.2 Create-Job ([rfc2911] § 3.2.4)
3.1.3 Print-Job ([rfc2911] § 3.2.1)
3.1.4 Print-URI ([rfc2911] § 3.2.2)
3.2 Validate-Job ([rfc2911] § 3.2.4)
3.3 Get-Documents Operation
3.3.1 Get-Documents Request
3.3.1.1 "limit" (integer(1:MAX)):
3.3.1.2 "requested-attributes" (1setOf type2 keyword):
3.3.2 Get-Documents Response
3.4 Cancel-Job ([rfc2911] § 3.3.3)
3.5 Send-Document ([rfc2911] § 3.3.1)
3.6 Send-URI ([rfc2911] § 3.3.2)
3.7 Hold-Job ([rfc2911] § 3.3.5)
3.8 Release-Job  ([rfc2911] § 3.3.6)
3.9 Restart-Job ([rfc2911] § 3.3.7)
3.10 Reprocess-Job ([adm-ops] § 4.1)
4	Document Operations
4.1 Send-Document ([rfc2911] § 3.3.1) extension
4.1.1 Send-Document Request
4.1.2 Send-Document Response
4.1.2.1 document-number (integer(1:MAX))
4.1.2.2 document-state (type1 enum)
4.1.2.3 document-state-reasons (1setOf type2 keyword)
4.1.2.4 document-state-message (text(MAX))
4.2 Send-URI ([rfc2911] § 3.3.2) extension
4.3 Get-Document-Attributes
4.3.1 Get-Document-Attributes Request
4.3.1.1 "requested-attributes" (1setOf keyword):
4.3.2 Get-Document-Attributes Response
4.4 Set-Document-Attributes
4.4.1 Settable and READ-ONLY Document Description attributes
4.4.2 Set-Document-Attributes Request
4.4.3 Set-Document-Attributes Response
4.5 Cancel-Document
4.5.1 Cancel-Document Request
4.5.1.1 document-message (text(MAX)):
4.5.2 Cancel-Document Response
5	Administrative Job and Document operations
5.1 Purge-Jobs ([rfc2911] § 3.2.9)
5.2 Cancel-Current-Job ([adm-ops] § 4.2)
5.3 Suspend-Current-Job ([adm-ops] § 4.3.1)
5.4 Delete-Document
6	Job and Document Template Attribute Precedence during Job processing
7	Operation Attributes for the Job and Document Creation operations
7.1 Operation Attributes supplied at the Job and Document Levels for Creation
7.2 Operation/Document Description attributes
7.2.1 document-natural-language (naturalLanguage)
7.3 Operation Attributes returned in Job and Document Creation responses
8	Job Template and Document Template attributes
8.1 Document Template attributes
8.2 Document Template attributes containing explicit Document numbers
8.3 Sheet Collation at the Document Level
9	Job Description and Document Description attributes
9.1 Document Description attributes
9.1.1 attributes-charset (charset)
9.1.2 attributes-natural-language (naturalLanguage)
9.1.3 compression (type3 keyword)
9.1.4 current-page-order (type2 keyword)
9.1.5 date-time-at-completed (dateTime)
9.1.6 date-time-at-creation (dateTime)
9.1.7 date-time-at-processing (dateTime)
9.1.8 detailed-status-messages (1setOf text(MAX))
9.1.9 document-access-errors (1setOf text(MAX))
9.1.10 document-charset (charset)
9.1.11 document-digital-signature (type2 keyword)
9.1.12 document-format (mimeMediaType)
9.1.13 document-format-details (1setOf collection)
9.1.14 document-format-details-detected (1setOf collection)
9.1.15 document-format-detected (mimeMediaType)
9.1.16 document-format-version (text(127))
9.1.17 document-format-version-detected (text(127))
9.1.18 document-job-id (integer(1:MAX))
9.1.19 document-job-uri (uri)
9.1.20 document-message (text(MAX))
9.1.21 document-name (name(MAX))
9.1.22 document-natural-language (naturalLanguage)
9.1.23 document-number (integer(1:MAX))
9.1.24 document-printer-uri (uri)
9.1.25 document-state (type1 enum)
9.1.25.1 The “document-state” Document Description attribute and the Document object life Cycle
9.1.26 document-state-message (text(MAX))
9.1.27 document-state-reasons (1setOf type2 keyword)
9.1.28 document-uri (uri)
9.1.29 errors-count (integer(0:MAX))
9.1.30 impressions (integer(0:MAX))
9.1.31 impressions-completed (integer(0:MAX))
9.1.32 impressions-completed-current-copy (integer(0:MAX))
9.1.33 k-octets (integer(0:MAX))
9.1.34 k-octets-processed (integer(0:MAX))
9.1.35 last-document  (boolean)
9.1.36 media-sheets (integer(0:MAX))
9.1.37 media-sheets-completed (integer(0:MAX))
9.1.38 more-info (uri)
9.1.39 output-device-assigned (name(127))
9.1.40 printer-up-time (integer (1:MAX))
9.1.41 sheet-completed-copy-number (integer(0:MAX))
9.1.42 time-at-completed (integer (MIN:MAX))
9.1.43 time-at-creation (integer (MIN:MAX))
9.1.44 time-at-processing (integer (MIN:MAX))
9.1.45 warnings-count (integer(0:MAX))
9.2 “-actual” Job and Document Description Attributes
10	New Printer attributes
10.1 document-creation-attributes-supported (1setOf type2 keyword)
11	New Values for Existing Printer Description Attributes
11.1 operations-supported (1setOf type2 enum)
12	Encodings of Additional Attribute Tags
13	Conformance Summary
13.1 Printer conformance requirements
13.2 Client conformance requirements
14	Normative References
15	Informative References
16	IANA Considerations
16.1 Attribute Registrations
16.2 Keyword attribute values
16.3 Enum Attribute Values
16.4 Operations
16.5 Attribute Group tags
16.6 Status codes
16.7 Attribute Group name Registrations
17	Internationalization Considerations
18	Security Considerations
19	Contributors
20	Author’s Address
21	Appendix A: Document operations compared to Job operations (Informative)
22	Annex B: IEEE-ISTO 5100.4-2001 Document Overrides (informative)

Table of Tables
Table 1 - Summary of operations
Table 2 - Summary of Operation and New Description attributes
Table 3 - Job Creation and Document Creation operations
Table 4 - Client-supplied Document Creation and Validation Request Signatures
Table 5 - Printer-returned Document Creation and Validation Response Signatures
Table 6 - Document State Table for the Set-Document-Attributes operation
Table 7- Operation, Default, and Supported Attributes
Table 8 - Operation Attributes supplied at the Job and Document Levels in Job and Document Creation Requests
Table 9 - Operation attributes returned in Job and Document Creation operation responses
Table 10 - Job Template and Document Template attributes
Table 11 - Job and Document Description attributes
Table 12 - "document-state" attribute values
Figure 1 - The "document-state" Document Description attribute and the Document object life cycle
Table 13 - "document-state-reasons" attribute values
Table 14 “-actual” Job/Document Description attributes
Table 15 – New Printer attributes
Table 16 – Operation-id assignments
Table 17 - Document operations compared to Job operations
 
Table of Figures
Figure 1 - The "document-state" Document Description attribute and the Document object life cycle

1	Introduction and Summary
This IPP specification extends the IPP Model and Semantics [rfc2911] object model by defining a Document object.  The [rfc2911] Job object is extended to contain one or more Document objects that are passive objects operated on by the Job.  The REQUIRED Print-Job and OPTIONAL Print-URI operations ([rfc2911] § 3.2.1 and 3.2.2) create a Job object containing a single Document object.  The REQUIRED Create-Job operation ([rfc2911] § 3.2.4) creates a Job object.  The REQUIRED Send-Document and OPTIONAL Send-URI operations ([rfc2911] § 3.3.1 and 3.3.2) add a Document object to the specified Job object.  This specification adds a Document Attributes group (and tag) to the Send-Document and Send-URI requests and responses.  The Document Attributes group contains any Document Template attributes to be applied to this Document object being created, overriding any corresponding Job Template attributes supplied at the job level (by Create-Job) and thereby allowing the client to vary the Document Template attributes between Document objects in a single Job.  
This specification defines one new operation for Job objects, four new operations for Document objects once they have been created, and extends [rfc2911] operations as follows: 
1 REQUIRED Job operation: Get-Documents   
1 REQUIRED Job and Document Creation operation: PrintJob [rfc2911]
1 OPTIONAL Job and Document Creation operation: Print-URI [rfc2911]
1 REQUIRED Document Creation operation: Send-Document [rfc2911]
1 OPTIONAL Document Creation operation:  Send-URI [rfc2911]
2 REQUIRED Document operations: Cancel-Document, Get-Document-Attributes
2 OPTIONAL Document operations: Delete-Document, Set-Document-Attributes.
This specification uses the new Operation attributes (defined in [pwg5100.7]) that describe the contents of the Document and permit the Printer to reject requests that it cannot process correctly to define new Document Description attributes.  The Printer copies these Operation attributes to the corresponding Document Description attributes which client may query.
This specification also uses existing Job Template attributes to define Document Template attributes (“xxx” Document Template attribute, “xxx-actual” Document Description attribute [ippact], “xxx-default” Printer attribute, and “xxx-supported” Printer attribute).  In addition this specification lists all of the attributes defined in other IPP specifications to show their relationship to corresponding attributes defined in this IPP specification for use with the Document object.   The analogous Document Descriptions attributes that correspond to the Job Description attributes are also defined.
The semantics of the “document-state”, “document-state-reasons”, and “document-state-message” Document Description attributes are based on the corresponding [rfc2911] “job-state”, “job-state-reasons”, and “job-state-message” Job Description attributes.  The state transitions for a Document are simpler than a Job’s.  A Document is either waiting for the Job to process it, being processed by the Job or has reached its terminating state.  Only the applicable state values are used.  It is assumed that an implementation will only use values from “job-state-reasons” that are applicable to a Document for “document-state-reasons”.
This specification describes an IPP extension which is referenced as part of the PWG Semantic Model.  The purpose for specifying the Document object is so the print industry has a common semantic specification for use in IPP, the PWG Semantic Model [pwg-sm], the PWG Print Service Interface (PSI) project [pwg-psi], and the Free Standards Group Job Ticket API [fsg-jt], which all have a Document object.
1.1	Scope
Part of this extension is to allow the client to supply printing instructions, called Document Template attributes, when creating each Document object.  An IPP Printer implementation MAY support most of the existing Job Template attributes as Document Template attributes as well.  (The PWG Semantic Model [pwg-sm] currently calls the Job Template attributes and Document Template attributes simply “Job Processing” and “Document Processing” attributes).  Note:  There are a number of footnotes which relate this IPP specification to the PWG Semantic model and other PWG projects, such as the Print Service Interface (PSI) [pwg-psi].
The Document object is a passive object and is operated upon by the Job.  The client uses any of the existing Send-Document, Send-URI, Print-Job, or Print-URI operations to create a Document object.  In addition there are 5 new operations that affect the Document object after it has been created as summarized in Table 1.  
Table 1 - Summary of operations
Operation Name	Printer support	Brief Description	
Print-Job [rfc2911]	REQUIRED	Creates a Job object as in [rfc2911] that contains a single Document object with pushed data in-line.  Some additional Operation attributes are defined in [pwg5100.7] for use in creating the Document object with Document Description attributes.	
Print-URI [rfc2911]	OPTIONAL	Creates a Job object as in [rfc2911] that contains a single Document object with a reference to the document data.  Some additional Operation attributes are defined in [pwg5100.7] for use in creating the Document object with Document Description attributes.	
Create-Job [rfc2911]	REQUIRED	Creates the Job object as defined in [rfc2911] with Job Attributes.  Job Template attributes that affect individual documents, such as “media”, are inherited by the Document objects that are subsequently created for the Job using Send-Document and/or Send-URI.	
Send-Document [rfc2911]	REQUIRED3	Creates a Document object with Document attributes and data.  Some additional Operation attributes are defined in [pwg5100.7] for use in creating the Document object with Document Description attributes, along with a new Document attributes group to pass Document Template attributes.	
Send-URI [rfc2911]	OPTIONAL	Creates a Document object with Document attributes and a URL reference to the data (print-by-reference).  Some additional Operation attributes are defined in [pwg5100.7] for use in creating the Document object with Document Description attributes, along with a new Document attributes group to pass Document Template attributes.	
Get-Document-Attributes	REQUIRED	Get requested attributes of the specified Document in the specified Job.	
Get-Documents	REQUIRED	Get requested attributes of all of the Documents in the specified Job.	
Set-Document-Attributes	OPTIONAL	Set the supplied Document attributes on the specified Document.	
Cancel-Document	REQUIRED	Cancel the specified Document in the specified Job, but don’t remove it.	
Delete-Document	OPTIONAL	Remove the specified Document object and its data from the Job.	

This specification uses existing [rfc2911] and [pwg5100.7] Operation attributes summarized in Table 2 to define new Document Description attributes.  The Printer copies these Operation attributes supplied by the client in the request to the corresponding Job or Document Description attributes.
Table 2 - Summary of Operation and New Description attributes
Operation attribute	Creation operation	Printer support	Description	
ipp-attribute-fidelity (boolean) * 
[rfc2911] §15.1	Job	MUST	Allows the client to indicate whether or not the Printer MUST support all Job Template and Document Template attributes.	
job-mandatory-attributes (1setOf type2 keyword) [pwg5100.7] § 4.1.2	Job	MUST	Allows the client to list which Job Template and Document Template attributes that the Printer MUST support.	
document-charset (charset) [pwg5100.7] § 4.2.1	Document	CMUST	The charset of the Document Object content.	
document-digital-signature (type2 keyword) [pwg5100.7] § 4.2.2	Document	MAY	The type of digital signature, if any, used in the Document Object content.	
document-format (mimeMediaType) *
[rfc2911] §3.2.1.1	Document	MUST	The document format of the Document Object content.	
document-format-details (1setOf collection) [pwg5100.7] § 4.2.4	Document	CMUST	The details of the Document Object content, including when it’s a package of files (e.g. zip, multipart/related).  The details include information, such as the application and the operating system that created the document, the intended device type (when the format is device-dependent), and the natural languages of the document.	
document-format-version (text(127)) [pwg5100.7] § 4.2.5	Document	MAY	The level or version of the document format.	
document-natural-language (naturalLanguage) *    [rfc2911] §3.2.1.1	Document	MAY	The primary language of the Document Object content.	
* - indicates Operation attributes defined in [rfc2911] that are extended to apply to the Document Creation operations defined in this specification.
2	Terminology
This section defines terminology used throughout this document.
2.1	Conformance Terminology
Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, MAY, and OPTIONAL, have special meaning relating to conformance as defined in RFC 2119 [rfc2119].  If an implementation supports the extension defined in this document, then these terms apply; otherwise, they do not.  These terms define conformance to this document (and [rfc2911]) only; they do not affect conformance to other documents, unless explicitly stated otherwise.  For example, the term REQUIRED in this document means “REQUIRED if this OPTIONAL Document Object specification is implemented”.
The term CONDITIONALLY REQUIRED means that the Printer MUST support the feature, if the specified condition is true.  The term CMUST means MUST if the specified “condition” is true.
2.2	Other Terminology
This document uses the same terminology as [rfc2911], such as “client”, “Printer”, “attribute”, “attribute value”, “keyword”, “Job Template attribute”, “Operation attribute”, “operation”, “request”, “response”, and “support” with the same meaning.  In addition, the following terms are defined for use in this document:
Attribute Precedence - the precedence rules which dictate which attribute value takes precedence when the same attribute is supplied at different points in the workflow with different values, such as at both the Job Level and the Document Level.  See section 6.
Document attribute - an Operation attribute or a Document Template attribute that applies to a Document object as a whole.  For example, “document-format” is an Operation attribute and “media” is a Document Template attribute.
Document Creation operation - operations that create Document objects.  Specifically: Print-Job, Print-URI, Send-Document, and Send-URI.  Note: Print-Job and Print-URI are both Job Creation and Document Creation operations, since they create both a Job and a Document object at the same time.  This specification does not extend the Print-Job and Print-URI operations.  However, this specification does extend the Send-Document and Send-URI operations to allow the client to supply Document Template attributes in each request.
Document Level - Operation and Document Template attributes supplied in the Send-Document and Send-URI operations are referred to as being supplied at the Document Level.  Note: attributes supplied in the Print-Job and Print-URI requests are considered as being supplied at the Job Level only, not also at the Document Level, even though Print-Job and Print-URI also create Document objects (see Table 3).
Document object - the object to represent the logical concept of a document in a Job.  A Job object can contain one or more Document objects.
Document Template attribute - an attribute that the client supplies in a Send-Document or Send-URI operation request in the Document Attributes group.  For example, “media”.
Honor - a Printer is said to Honor an attribute supplied by the client, if the Printer supports that attribute and the supplied value and performs the indicated semantics.   If the client supplies the “ipp-attribute-fidelity” or “job-mandatory-attributes” Operation attribute, the client is indicating which supplied Job Template and Document Template attributes the Printer MUST Honor.
Job Attribute - an Operation attribute or a Job Template attribute that applies to the Job (object) as a whole.  For example, “job-name” is an Operation attribute and “job-priority” is a Job Template attribute.
Job Creation operation - operations that create Job objects, specifically: Print-Job, Print-URI, and Create-Job as defined in [rfc2911].
Job Level - Operation and Job Template attributes supplied in the Print-Job, Print-URI, and Create-Job are referred to as being supplied at the Job Level (see Table 3).  Attributes supplied at the Job Level are a mixture of Job attributes and Document attributes.  Job Template attributes apply to the Job as a whole, while Document Template attributes provide defaults for the Document objects in case the client does not supply a Document Template attribute at the Document Level for a Document object.  Put another way, Document objects inherit Document Template attributes from the Job object which are used if the client didn’t supply a corresponding Document Template attribute for the Document object.
Operation attribute - an attribute supplied by a client in the Operation Attribute group of a request in order to affect the behavior of the operation or an attribute returned by the Printer in the Operation Attributes group in an operation response in order to report the results of the operation.  For some Operation attributes, the Printer copies the values supplied by the client to corresponding Job Description or Document Description attributes.
Table 3 shows this terminology as applied to the six operations.  Note that Print-Job and Print-URI are both Job Creation operations and Document Creation operations, though they only create single Document jobs.  In other words, for Print-Job and Print-URI, there is only one document per job, so whether the attributes are considered to be submitted at the Job Level and then inherited by the Document object is moot, since these operations do not have a separate Document group in which the client can supply Document attributes.  Note also that for the “Level” concept, no operation supplies attributes at more than one level.
Table 3 - Job Creation and Document Creation operations
Operation	Job Creation operation	Document Creation operation	Attribute Group in Request	Level	
			Job Attributes	Document Attributes		
Create-Job	yes		Job attributes and
Document attributes mixed together		Job Level	
Print-Job	yes	yes	Job attributes and
Document attributes mixed together			
Print-URI	yes	yes	Job attributes and
Document attributes mixed together			
					Document Level	
Send-Document		yes		Document attributes		
Send-URI		yes		Document attributes		

3	New Job operations and semantic extensions to Job operations
This section defines the semantic extensions to Job operations that affect Document objects.  Printer and Subscription object (Event Notification [ntfy]) operations MUST have no effect on the Document object and the Document object has no effect on the semantics of the Printer and Subscription operations.  The Job operations MUST NOT have any effect on the Document object because they are defined to affect the Job object as a whole are: Get-Job-Attributes ([rfc2911] § 3.3.4), Get-Jobs ([rfc2911] § 3.2.6), Hold-Job ([rfc2911] § 3.3.5), Release-Job ([rfc2911] § 3.3.6), Set-Job-Attributes ([rfc3380] § 4.2), and Validate-Job ([rfc2911] § 3.2.3).
3.1	Job Creation operations
This section defines the extensions to the Job Creation operations.
3.1.1	Fidelity Attributes
The following Operation attributes have additional semantics when used with document objects.  These attributes apply for all the Job Creation operations..    The Fidelity Attributes must be retained when supplied by the Client on Job Creation operations so that they are available when Documents are added to the Job.  The semantics of Fidelity on a Job are inherited by all the Documents within that Job.
3.1.1.1	ipp-attribute-fidelity (boolean) ([rfc2911] § 3.2.1 and 15)
This REQUIRED Operation attribute specifies the policy for the Printer to use (see [rfc2911] §3.2.1.1) when the client supplies unsupported Job Template or Document Template attributes or value in a Job Creation operation or a subsequent Document Creation operation for this job.  The value ‘true’ indicates that total fidelity to client supplied Job Template and Document Template attributes and values is required for this Job Creation operation and all subsequent Document Creation operations for this job.  If the client supplies the value ‘false’ or omits the attribute, then the Printer MUST accept the Job Creation operation and all subsequent Document Creation operations even if the client supplies unsupported attributes or values in them.  
The Printer MUST copy this attribute to the corresponding Job Description attribute (see [pwg5100.7] § 6.1) and use its value for validating subsequent Document Creation operations for this job.
Note: The inheritance of the effect of the “ipp-attribute-fidelity” Operation attribute by subsequent Document Creation operations is like the inheritance of Document Template attributes supplied at the Job Level but affecting the behavior of the Document Level (see Table 3).
3.1.1.2	job-mandatory-attributes (1setOf type2 keyword) Operation attribute
This REQUIRED Operation attribute identifies which Job Template and Document Template attributes the Printer MUST Honor in this Job Creation request and all subsequent Document Creation requests for this Job.  
A client MUST NOT supply this “job-mandatory-attributes” Operation attribute in a Document Creation operation.  If a client does supply this attribute in a Document Creation operation, the Printer MUST ignore and otherwise accept the request and return this attribute without any values in the Unsupported Attributes Group in the response (see [rfc2911] § 3.1.7).  Thus the Printer only supports the “job-mandatory-attributes” Operation attribute supplied at the Job level.  Thus the “job-mandatory-attributes” Operation attribute controls all other Job Template and Document Template attributes supplied at the Job Level and Document Level uniformly.
The Printer MUST copy this attribute to the corresponding “job-mandatory-attributes” Job Description attribute (see [pwg5100.7] § 6.3) for auditing and trouble-shooting purposes and use its value for validating subsequent Document Creation operations for this job.
Note: The inheritance of the effect of the “job-mandatory-attributes” Operation attribute by subsequent Document Creation operations is like the inheritance of Document Template attributes supplied at the Job Level but affecting the behavior of the Document Level (see Table 3).
3.1.2	Create-Job ([rfc2911] § 3.2.4)
This REQUIRED operation creates the Job object with all of the mixture of Job and Document attributes supplied in the Create-Job operation.  All Operation attributes supplied affect the Job as a whole.  The client supplies Job Template attributes [rfc2911] that are a mixture of Job and Document attributes supplied together in the Job attribute group in the request.  For example, Job Template attributes such as “job-priority” and “job-hold-until” are Job attributes that affect the Job as a whole.  On the other hand, Job Template attributes such as “media” and “number-up” are Document attributes that the client is supplying as defaults for the Document objects.  The Document objects that are subsequently created for the specified Job are said to inherit the Document attributes from the Job object, unless the Document Creation operation supplies a corresponding Document Template attribute.  However, the Printer MUST NOT copy any Job Level attributes to the Document object as observable by a client in any Get-Documents or Get-Document-Attributes operation responses.  
3.1.3	Print-Job ([rfc2911] § 3.2.1)
This REQUIRED operation creates one Document object as a side effect of the Print-Job operation in addition to creating the Job object.  The Printer MUST copy all of the supported Operation attributes supplied by the client to the corresponding Job Description or Document Description attributes as indicated in Table 8.  For example, the Printer copies the “job-name” and “attributes-charset” operation attributes to the corresponding Job Description attributes, while copying the “document-format” and “document-charset” Operation attributes to the corresponding Document Description attributes.  The Printer MUST copy the supported Job Template attributes supplied by the client to the Job object and MUST NOT copy them down to the Document object.  In other words, the Document object created by Print-Job has an empty group of Document (and Job) Template attributes.  Any Job Template attributes supplied that affect Documents have effect on the Document object because the Document object inherits them from the Job object.  
The Printer MUST populate the single Document object’s “document-state”, “document-state-reasons”, and “document-number” Document Description attributes with appropriate values.  Thus a Get-Job-Attributes operation returns the same attributes for a Job created with Print-Job as a Printer that doesn’t support the Document object.  However, a Get-Documents or Get-Document-Attributes for a Job created by Print-Job will return no Document Templates attributes (since the client can’t submit any with Print-Job), but will return the populated Document Description attributes, such as “document-format”, supplied by the client.  
Note:  Using Get-Job-Attributes and Get-Document-Attributes, a Job created by Print-Job will be indistinguishable to a client from a Job created with Create-Job and Send-Document with no Document Template attributes supplied.  Also an old client performing just a Get-Job-Attributes will see the same results from (1) an old Printer that accepted the Print-Job, (2) a new Printer that accepted the Print-Job, and (3) a new Printer that accepted the Create-Job and Send-Document (with no Document Template attributes supplied).  However, if a new client supplies Document Template attributes on the Send-Document, instead of the same attributes as Job Template attributes on the Create-Job, then an old client will not see any of the Document Template attributes when it performs the Get-Job-Attributes operation (since the Printer does not "copy up" Document Template attributes to the Job Level).
3.1.4	Print-URI ([rfc2911] § 3.2.2)
This OPTIONAL operation creates one Document object as a side effect of the Print-URI operation in addition to creating the Job object.  The Printer MUST copy all of the supported Operation attributes supplied by the client and the Job Template attributes as indicated for Print-Job in section 3.1.3. In addition the Printer MUST copy the “document-uri” Operation attribute to the corresponding Document Description attribute.  
Note:  Using Get-Job-Attributes and Get-Document-Attributes, a Job created by Print-URI will be indistinguishable to a client from a Job created with Create-Job and Send-URI with no Document Template attributes supplied.  
3.2	Validate-Job ([rfc2911] § 3.2.4)
This REQUIRED operation is similar to the Print-Job operation ([rfc2911] § 3.2.1 and[pwg5100.5]   § 3.1.3) except that a client supplies no document data and the Printer allocates no resources (i.e., it creates neither a new Job object nor a Document object).  This operation is used only to verify attributes supplied by the client in the Validate-Job request against the capabilities of a Printer object.  By using the Validate-Job operation a client can validate that an identical Print-Job operation (with the document data) would be accepted.  A client can also use the Validate-Job operation to validate that an identical Send-Document operation (with the document data) would be accepted.  Such a client MAY either:
(1) perform all of the Validate-Job operations for each of the documents before doing the Create-Job in order to validate all documents before creating the Job and transmitting any document data OR 
(2) perform a Create-Job and then a Validate-Job before each Send-Document (or Send-URI) operation.
There are certain configurations and implementations where the above validation will not completely validate a multi-document job with differing Document Template attributes for the same Job.  Consider a Printer that is representing several dissimilar devices in which no device is a superset of the others.  In such as case, the Printer MAY reject a Send-Document operation that cannot be supported in the Job because the combination of its supplied Document Template attributes cannot be supported in the same Job in combination with the differing Document Template attributes of the previously supplied documents.  In fact, there is no way to completely validate a multi-document job which has documents with differing Document Template attributes using Validate-Job, since each Validate-Job is a separate independent operation.  An administrator can avoid such a configuration by making sure that one of the devices is a superset of all of the other devices.
3.3	Get-Documents Operation
This REQUIRED Job operation allows a client to retrieve the list of Document objects belonging to the target Job object.  The client MAY also supply a list of Document attribute names and/or attribute group names.  A group of Document object attributes will be returned for each Document object in the Job.
This operation is similar to the Get-Document-Attributes operation (see section 4.3), except that this Get-Documents operation returns attributes from all Document objects contained in the Job object, instead of from a single selected Document object in the Job object.  As with the Get-Document-Attributes operation the Printer MUST only return attributes that were submitted by a client when the Document object was created by the Send-Document or Send-URI operations and possibly modified by the Set-Document-Attributes operation (see section 4.4).
3.3.1	Get-Documents Request
The client submits the Get-Documents request to a Printer.  The Get-Documents is similar to the Get-Jobs operations (see [rfc2911] § 3.2.6) except that there are no equivalents to the “which-jobs” and “my-jobs” Operation attributes.
The following groups of attributes are part of the Get-Documents Request:
Group 1: Operation Attributes
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.1.
Target:
Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) or (2) the "job-uri" (uri) Operation attribute(s) which define the target Job object for this operation as described in [rfc2911] § 3.1.5.
Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the client as described in [rfc2911] § 8.3.
3.3.1.1	"limit" (integer(1:MAX)):
The client OPTIONALLY supplies this Operation attribute.  The Printer MUST support this Operation attribute. It is an integer value that determines the maximum number of Documents that a client will receive from the Printer.  The limit is a "stateless limit" in that if the value supplied by the client is 'N', then only the first 'N' Documents are returned in the Get-Documents Response.  There is no mechanism to allow for the next 'M' Documents after the first 'N' Documents.  If the client does not supply the “limit” attribute, the Printer responds with all Documents in the Job.
3.3.1.2	"requested-attributes" (1setOf type2 keyword):
The client OPTIONALLY supplies this attribute.  The Printer MUST support this attribute.  It is a set of Document attribute names and/or attribute groups names in whose values the requester is interested.  This set of attributes is returned for each Document object that is returned.  The allowed attribute group names are the same as those defined in the Get-Document-Attributes operation in section 4.3.  
If the client does not supply this attribute, the Printer MUST respond as if the client had supplied this attribute with the single value: 
‘document-number’ (see section 9.1.23)

3.3.2	Get-Documents Response
The Printer returns all of the Document objects up to the number specified by the "limit" attribute that match the criteria as defined by the attribute values supplied by the client in the request.  If the client requests any Document attributes at all, there is a set of Document Object Attributes returned for each Document object. 
It is not an error for the Printer to return 0 Documents. If the response returns 0 Documents because there are no Documents in the Job, then the status code for 0 Documents MUST be 'successful-ok'.  
Group 1: Operation Attributes
Status Message:
In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-messages" (text(MAX)) Operation attribute as described in [rfc2911] § 13 and 3.1.6.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.2.
Group 2: Unsupported Attributes
See [rfc2911] § 3.1.7 for details on returning Unsupported Attributes.
The response MAY contain or MAY omit the "requested-attributes" Operation attribute with any supplied values (attribute keywords) that were requested by the client but are not supported by the Printer. If the Printer does return unsupported attributes referenced in the "requested-attributes" Operation attribute and that attribute included group names, such as 'all', the unsupported attributes MUST NOT include attributes described in the standard but not supported by the implementation.  
Groups 3 to N: Document Object Attributes
The Printer responds with one set of Document Template attributes (see the D column in Table 10) and Document Description attributes (see the Doc column in Table 11) for each returned Document object as specified by the “requested-attributes” Operation attribute supplied by the client in the request.  The Printer ignores (does not respond with) any requested attribute or value which is not supported or which is restricted by the security policy in force, including whether the requesting user is the user that submitted the job (job originating user) or not (see [rfc2911] § 8).  However, the Printer MUST respond with the 'unknown' value for any supported attribute (including all REQUIRED attributes) for which the Printer does not know the value, unless it would violate the security policy.  See the description of the "out-of-band" values in the beginning of [rfc2911] § 4.1.
The Printer MUST return the Groups for the requested Job in order of increasing “document-number” Document Description attribute value.
3.4	Cancel-Job ([rfc2911] § 3.3.3)
This REQUIRED operation sets the “document-state” Document Description attribute to ‘canceled’ and the “document-state-reasons” Document Description attribute with ‘canceled-by-user’ or ‘canceled-by-operator’ for all Document objects in the identified Job that have not yet reached a terminal state (‘completed’, ‘canceled’, or ‘aborted’).
3.5	Send-Document ([rfc2911] § 3.3.1)
This REQUIRED Job operation is a Document Creation operation that has been extended to accept a new Document Attributes group (Group 4) that the client can supply (see section 4.1 for the extension semantics).
3.6	Send-URI ([rfc2911] § 3.3.2)
This OPTIONAL Job operation is a Document Creation operation that has been extended to accept a new Document Attributes group (Group 4) that the client can supply (see section 4.2 for the extension semantics).
3.7	Hold-Job ([rfc2911] § 3.3.5)
This OPTIONAL operation moves the job to the ‘pending-held’ state, and sets the Job’s “job-state-reasons” Job Description attribute as described in [rfc2911] § 3.3.5.  The values of the Documents’ “document-state-reasons” Document Description attributes MUST NOT be affected by this operation.
3.8	Release-Job  ([rfc2911] § 3.3.6)
This OPTIONAL operation moves the job out of the ‘pending-held’ state, if there are no other “job-state-reasons” to hold the job as described in [rfc2911] § 3.3.6.  The values of the Documents’ “document-state-reasons” Document Description attributes MUST NOT be affected by this operation.  
3.9	Restart-Job ([rfc2911] § 3.3.7)
This OPTIONAL operation starts the Job over again by processing all Documents in the Job as described in [rfc2911] § 3.3.7, including Documents that have been canceled by a previous Cancel-Document operation (see section 4.5).  Therefore, the Printer removes any ‘canceled-by-xxx’ values from any of the “document-state-reasons” attributes and the Job’s “job-state-reasons” attribute so that any canceled Documents are reprocessed along with the other Documents.  
3.10	Reprocess-Job ([adm-ops] § 4.1)
This OPTIONAL operation processes the Job again by processing all Documents in the Job, including ones that have been canceled by a previous Cancel-Document operation.  Therefore, the Printer removes any ‘canceled-by-xxx’ values from any of the “document-state-reasons” attributes and the Job’s “job-state-reasons” attribute so that any canceled Documents are reprocessed along with the other Documents.
4	Document Operations
This section defines the Document Creation and Document operations.  The Document object semantics are as parallel to the Job object semantics as possible.  Therefore, most of the Job operations have analogous Document operations as shown in Table 17 in section “Appendix A: Document operations compared to Job operations”.  Operations that can apply only to an entire job have no analogous document operation as indicated.  This extension adds 5 new Document operations that operate on the Document object once it is created by either of the existing four operations: Send-Document, Send-URI operations, Print-Job and Print-URI.
Note:  By Document object, this specification means the object once it becomes a contained part of a Job object, not before or after.  So in this specification a Document object does not represent data in a repository.
The signatures of the operation requests that create Document objects are very similar as shown in Table 4.  The entries in the table show what a client MUST, MAY, or MUST NOT supply in the indicated operation requests.
Table 4 - Client-supplied Document Creation and Validation Request Signatures
	Send-Document	Send-URII	Print-Job	Print-URI	
Target	MUST be Job	MUST be Job	MUST be Printer	MUST be Printer	
“document-uri”	MUST NOT	MUST	MUST NOT	MUST	
Document Template attributes	MAY	MAY	MAY	MAY	
Data	MUST	MUST NOT	MUST	MUST NOT	

The entries in Table 5 show what a Printer MUST or MAY support and return in the indicated operations responses.
Table 5 - Printer-returned Document Creation and Validation Response Signatures
	Create-Job	Send-Document	Send-URI	Print-Job	Print-URI	
Status code/message	MUST	MUST	MUST	MUST	MUST	
Unsupported Attributes	MUST, if any	MUST, if any	MUST, if any	MUST, if any	MUST, if any	
Job status attributes	MUST	MUST	MUST	MUST	MUST	
Document status attributes:	
“document-number”	MUST NOT	MUST	MUST	MAY	MAY	
“document-state”	MUST NOT	MUST	MUST	MAY	MAY	
“document-state-reasons”	MUST NOT	MUST	MUST	MAY	MAY	
“document-state-message”	MUST NOT	MAY	MAY	MAY	MAY	

4.1	Send-Document ([rfc2911] § 3.3.1) extension
This REQUIRED Document Creation operation allows a client to submit multiple documents in a single Job by making a Send-Document request for each Document.  In this specification, the Send-Document creates a Document object ([rfc2911] did not have a Document object).  A Printer MUST support this operation with the semantics specified in [rfc2911] and with the extension defined in this specification, since this specification REQUIRES the Printer to support multiple document jobs.  
See [rfc2911] § 3.3.1 for the semantics of the Send-Document operation not reproduced here.
Access Rights: The authenticated user (see [rfc2911] § 8.3) performing this operation must either be the job owner (as determined in the Create-Job operation) or an operator or administrator of the Printer (see [rfc2911] § 1 and 8.5).  Otherwise, the Printer MUST reject the operation and return: 'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-not-authorized' as appropriate. 
4.1.1	Send-Document Request
The following attribute sets are part of the Send-Document Request:
Group 1: Operation Attributes (as in [rfc2911])
As specified in [rfc2911] § 3.3.1 Send-Document request, plus any extensions indicated in Table 8.  For example, “compression”, “document-format”, and “document-name”.  
Group 2: Document Template Attributes (new - not in [rfc2911])
The client OPTIONALLY supplies a set of Document Template attributes as listed in Table 10.  For example, “media” and “number-up”.  If the client is not supplying any Document Template attributes in the request, the client SHOULD omit Group 2 rather than sending an empty group.  However, a Printer MUST be able to accept an empty group.
Group 3: Document Content (as in [rfc2911] Group 2)
The client MUST supply the document data in-line to be processed for this Document if the "last-document" flag is set to 'false' or omitted.  However, since a client might not know that the previous Document Creation operation that the client had supplied (a Send-Document or a Send-URI operation) was the last document (i.e., the client had supplied the "last-document" attribute with a 'false' value), the client MUST use a Send-Document request with no document data where the "last-document" flag is set to 'true' (see [rfc2911] § 3.3.1).  For this Send-Document case with no data, the Printer MUST NOT increment the value of the Job object's "number-of-documents" attribute, since no Document object was added to the job.  In addition, it is not an error for a client to submit a job with no actual document data, i.e., only a single Create-Job and Send-Document request with a "last-document" Operation attribute set to 'true' with no document data; it is an empty job that is scheduled and scheduled and processed normally.  
4.1.2	Send-Document Response
The following sets of attributes are part of the Send-Document Response:
Group 1: Operation Attributes (as in [rfc2911] Group 1)
Status Message:
In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-messages" (text(MAX)) Operation attribute as described in [rfc2911] § 13 and 3.1.6.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.2.
Group 2: Unsupported Attributes (as in [rfc2911] Group 2)
See [rfc2911] § 3.1.7 for details on returning Unsupported Attributes. 
Group 3: Job Object Attributes (as in [rfc2911] Group 3)
The Printer MUST return the same set of Job status attributes as for the Print-Job response as specified in [rfc2911] § 3.2.1.2.
Group 4: Document Object Attributes (new)
The following Document Description attributes are defined for this Group: 
4.1.2.1	document-number (integer(1:MAX))
The Printer MUST return the document number of this Document object that was assigned by the Printer starting with 1 for each Job (see section 9.1.23).  
4.1.2.2	document-state (type1 enum)
The Printer MUST return the state of this Document object (see section 9.1.25).
4.1.2.3	document-state-reasons (1setOf type2 keyword)
The Printer MUST return the associated state reasons for this Document (see section 9.1.27).
4.1.2.4	document-state-message (text(MAX))
The Printer MAY return the localized description of the “document-state” and “document-state-reasons” values for this Document (see section 9.1.26).
4.2	Send-URI ([rfc2911] § 3.3.2) extension
This OPTIONAL Document Creation operation has the same request and response semantics as the Send-Document operation (see section 4.1) except that a client MUST supply a URI reference ("document-uri" Operation attribute) rather than the document data itself.  If a Printer supports this operation, clients can use either this operation or the Send-Document operation to add new Document objects to an existing multi-document Job object.  However, if a client needs to indicate that the previous Send-URI or Send-Document was the last document,  the client MUST use the Send-Document operation (see section 4.1) with no document data and the "last-document" flag set to 'true' as specified in [rfc2911] § 3.3.2 (rather than using a Send-URI operation with no "document-uri" Operation attribute).  
If a Printer supports this operation, it MUST also support the Print-URI operation (see [rfc2911] § 3.2.2).
The Printer MUST validate the syntax and URI scheme of the supplied URI before returning a response, just as in the Print-URI operation.  The IPP Printer MAY validate the accessibility of the document as part of the operation or subsequently (see [rfc2911] § 3.2.2).  
4.3	Get-Document-Attributes
This REQUIRED Document operation allows a client to request the values of selected attributes of a Document object.  This operation is almost identical to the Get-Job-Attributes operation (see [rfc2911] § 3.3.4).  The only differences are that the operation is directed at a Document object rather than a Job object and the returned attribute group is a set of Document object attributes rather than a set of Job object attributes. 
The Printer MUST return the Document Description attributes that a client supplied in the Document Creation operation (Print-Job, Print-URI, Send-Document or Send-URI) as Operation attributes (see the PJ/PU and SD/SU columns in Table 8 and the Doc column in Table 11), any Document Template attributes supplied by Send-Document or Send-URI operations (see the D column in Table 10), plus any additional Document Description attributes that the Printer has generated, such as "document-state" (see the Doc column in Table 11).  The Printer MUST NOT return any Job Level attributes that the Document object inherits and MUST NOT factor out common Document object attributes and return them as Job object attributes.  Thus Get-Document-Attributes returns to clients only the attributes that clients submitted in Document Creation operations, plus the additional Document Description attributes that the Printer sets.
The client MAY display to the user any Document attributes inherited from the Job object.  However, such a client MUST query both the Job object using Get-Job-Attributes and the Document object using Get-Document-Attributes in order to be able to merge the inherited attributes with the explicitly-supplied Document attributes.  Furthermore, the client MAY factor out common explicitly-supplied Document object attributes and display them once as Job object attributes, instead of with each Document object.  However, any such regularization of the display for users is the policy of the client and is outside the scope of this client-Printer protocol specification.  Note: to specify any such regularization or canonicalization policy in the Printer response would have been impossible to agree to.
For Document objects, the possible names of attribute groups are:
- ‘document-template': the subset of the Document Template attributes (the “D” column in Table 10) that the implementation supports for Document objects.
- ‘document-description': the subset of the Document Description attributes specified in the “Doc” column of Table 11 that the implementation supports for Document objects.
- 'all': the special group 'all' that includes all attributes that the implementation supports for Document objects.  
Since a client MAY request specific attributes or named groups, there is a potential that there is some overlap.  For example, if a client requests, ‘document-name' and ‘document-description', the client is actually requesting the "document-name" attribute once by naming it explicitly, and once by inclusion in the ‘document-description' group.  In such cases, the Printer MAY return the attribute only once in the response even if it is requested multiple times.  The client SHOULD NOT request the same attribute in multiple ways.
It is NOT REQUIRED that a Document object support all attributes belonging to a group (since some attributes are OPTIONAL).  However, it is REQUIRED that the Printer support all these group names for the Document object. 
4.3.1	Get-Document-Attributes Request
The following groups of attributes are part of the Get-Document-Attributes Request when the request is directed at a Document object:
Group 1: Operation Attributes
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.1.
Target:
The “document-number” (integer(1:MAX)) Operation attribute MUST be supplied immediately after either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) or (2) the "job-uri" (uri) Operation attribute(s) which define the target Document object for this operation as described in [rfc2911] § 3.1.5.  If the client omits the “document-number” Operation attribute, the Printer MUST reject the request and return the ‘client-error-bad-request’ status code.
Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the client as described in [rfc2911] § 8.3.
4.3.1.1	"requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute.  The Printer MUST support this attribute.   It is a set of attribute names and/or attribute group names in whose values the requester is interested.  If the client omits this attribute, the Printer MUST respond as if this attribute had been supplied with a value of 'all'. 
4.3.2	Get-Document-Attributes Response
The Printer returns the following sets of attributes as part of the Get-Document-Attributes Response:
Group 1: Operation Attributes
Status Message:
In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-messages" (text(MAX)) Operation attribute as described in [rfc2911] § 13 and 3.1.6.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.2.  The "attributes-natural-language" MAY be the natural language of the Document object, rather than the one requested.
Group 2: Unsupported Attributes
See [rfc2911] § 3.1.7 for details on returning Unsupported Attributes. 
The response MAY contain or MAY omit the "requested-attributes" Operation attribute with any supplied values (attribute keywords) that were requested by the client but are not supported by the Printer. If the Printer does return unsupported attributes referenced in the "requested-attributes" Operation attribute and that attribute included group names, such as 'all', the unsupported attributes MUST NOT include attributes described in the standard but not supported by the implementation.  
Group 3: Document Object Attributes
The Printer returns the set of requested Document Template attributes (see the D column in Table 10) and Document Description attributes (see the Doc column in Table 11) and their current values.  The Printer ignores (does not respond with) any requested attribute or value which is not supported.  Furthermore, the Printer MUST NOT return Document Template attributes that were not supplied by a client in a Send-Document or Send-URI request or set by a Set-Document-Attributes request.  So the response reflects what was submitted.  The Printer MAY omit returning attributes that are restricted by the Printer’s security policy in force, including whether the requesting user is the user that submitted the job (job originating user) or not (see [rfc2911] § 8).  However, the Printer MUST respond with the 'unknown' value for any supported attribute (including all REQUIRED attributes) for which the Printer does not know the value, unless it would violate the security policy.  See the description of the "out-of-band" values in the beginning of [rfc2911] § 4.1. 
4.4	Set-Document-Attributes
This OPTIONAL Document operation allows a client to set the values of the attributes of a Document object after the Document object is submittedto the Printer.  In the request, the client supplies the set of Document keyword attribute names and values that are to be set.  In the response, the Printer returns success or rejects the entire request with indications of which attribute or attributes could not be set.  
This operation is almost identical to the Set-Job-Attributes operation and follows the same rules for validation (see [rfc3380] § 4.2).  The only difference is that the Set-Document-Attributes operation is directed at a Document object rather than a Job object.  As with the Set-Job-Attributes operation, the Set-Document-Attributes operation can add an attribute to the Target object and accept the 'delete-attributes' out-of-band value to remove an attribute from the Target object.  In addition the validation is the same as the Send-Document and Send-URI operations that create Document objects, i.e., the Printer validation depends on the "xxx-supported" Printer Description attributes (see [rfc2911] § 3.1).  
If a client supplies a document attribute in a Set-Document-Attributes request that the Printer supports, and the document was originally submitted without supplying that attribute, the Printer adds the attribute to the Document object. 
If the client supplies a document attribute with the "out-of-band" value 'delete-attribute' (see [rfc3380] § 8.2), then the Printer MUST remove the attribute and all of its values from the Document object, if present.  The semantic effect of the client supplying the 'delete-attribute' value in a Set-Document-Attributes operation MUST be the same as if the attribute had not been supplied with the Document object in the Document Creation operation, i.e., the Printer applies its default attribute or behavior with lower precedence that the PDL (see the beginning of [rfc2911] § 4.2 and [rfc2911] 3.2.1.1).  Any subsequent query of the Document object using Get-Document-Attributes or Get-Documents MUST NOT return any attribute that has been deleted using the 'delete-attribute' out-of-band value.  However, a client can re-establish such a deleted Document attribute with any supported value(s) using a subsequent Set-Document-Attributes operation.
If the client supplies an attribute in a Set-Document-Attributes request with the 'delete-attribute' value and that attribute is not present on the Document object, the Printer ignores that supplied attribute in the request, does not return the attribute in the Unsupported Attributes group, and returns the 'successful-ok' status code, if there are no other problems with the request.
The validation of the Set-Document-Attributes request is performed by the Printer as if the document had been submitted originally with the new attribute values (and the deleted attributes removed) and with "ipp-attribute-fidelity" set to 'true', i.e., all modified Document attributes and values MUST be supported in combination with the Document attributes not modified.  If such a Document Creation operation would have been accepted, then the Set-Document-Attributes MUST be accepted.  If such a Document Creation operation would have been rejected, then the Set-Document-Attributes MUST be rejected and the Document MUST be unchanged.  In addition, if any of the supplied attributes are not supported, are not settable, or the values are not supported, the Printer MUST reject the entire operation; the Printer MUST NOT partially set some of the supplied attributes.  In other words, after the operation, all the supplied attributes MUST be set or none of them MUST be set, thus making the Set-Document-Attributes an atomic operation.
The value of the “ipp-attribute-fidelity” and “job-mandatory-attributes” Operation attributes supplied in the original Job Creation request, if any, MUST have no effect on the behavior of the Set-Document-Attributes operation, since the Set-Document-Attributes request MUST behave as if “ipp-attribute-fidelity”  = ‘true’.  In other words, the Printer MUST reject any attempt to set a Document attribute to an unsupported value or to a value that would conflict with another Document attribute value.
The Printer MUST accept or reject this operation when the Document's READ-ONLY "document-state" attribute has the values shown in Table 6.  The document's current state MUST affect whether the Printer accepts or rejects the request.  However, the Set-Document-Attributes operation MUST NOT change the state of the Document object (since the Document is a passive object and the Document state is a subset of the Job State).  For example, in the case where the operation creates a request for unavailable resources, the Job (but not the Document) transitions to a new state.  Table 6 shows the allowed behaviors in each document state.
Table 6 - Document State Table for the Set-Document-Attributes operation
Current
 “document-state”	New
 “document-state” (no change)	Printer’s response status code
 and “action”:	
'pending'	'pending'	'successful-ok'	
'pending'	'pending'	'successful-ok' - needed resources are not ready (the Job MAY change state, but the Document MUST NOT).	
'processing'	'processing'	'successful-ok'  or 'client-error-not-possible' depending on implementation, including the attributes being set, whether the document has started marking media, etc.	
'completed'	'completed'	'client-error-not-possible'	
'canceled'	'canceled'	'client-error-not-possible'	
'aborted'	'aborted'	'client-error-not-possible'	

This operation MUST NOT change the value of attributes not specified in the operation unless the definition of the attribute explicitly specifies such side effects.  In general, Document attribute definitions that are settable will not define side effects on other attributes that are settable, only side effects on READ-ONLY attributes, if any.
4.4.1	Settable and READ-ONLY Document Description attributes
If the Printer supports the Set-Document-Attributes operation, then it SHOULD support setting of all Document Template ("xxx") attributes that the implementation supports (see the “D” column in Table 10).
Most Document Description attributes (see [rfc2911] § 4.3) are NOT settable, i.e., they are defined to be READ-ONLY.  Only Document Description attributes marked with “(r/w)” in Table 11 MAY be settable using Set-Document-Attributes.  The Printer MUST reject a Set-Document-Attributes request that attempts to set any attributes in Table 11 that are not marked “(r/w)”.
Note:  From now on, all extensions that define new Document Description attributes will indicate whether or not the attributes are READ-ONLY, by including the "READ-ONLY" adjective in their descriptions and/or explicitly stating whether they MAY be settable.  
Access Rights: The authenticated user (see [rfc2911] § 8.3) performing this operation must either be the job owner (as determined in the Job Creation operation) or an operator or administrator of the Printer (see [rfc2911] § 1 and 8.5).  
4.4.2	Set-Document-Attributes Request
The following sets of attributes are part of the Set-Document-Attributes Request:
Group 1: Operation Attributes
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.1.
Target:
The client MUST supply the “document-number” (integer(1:MAX)) Operation attribute immediately after either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) or (2) the "job-uri" (uri) Operation attribute(s) which define the target Document object for this operation as described in [rfc2911] § 3.1.5.  If the client omits the “document-number” Operation attribute, the Printer MUST reject the request and return the ‘client-error-bad-request’ status code.
Note:  There is no way in a single operation for the client to set all of a Job’s Document objects to the same attribute value.  Either (1) the client sets the corresponding attribute in each Document object in the Job with separate Set-Document-Attributes requests, or (2) the client sets the corresponding attribute at the Job Level using the Set-Job-Attributes operation.  Setting the corresponding attribute at the Job Level (or supplying that attribute initially in the Job Creation operation) causes each Document object to inherit the Job Level attribute value, if the Document object doesn’t have a corresponding explicit attribute supplied at the Document Level.  In other words, supplying an attribute at the Job Level will affect all the Job’s Document objects that don’t have that attribute also explicitly supplied at the Document Level.  
Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the client as described in [rfc2911] § 8.3.
Group 2: Document Attributes
The client MUST supply a set of Document Template attributes with one or more values (including explicitly allowed out-of-band values) as listed in the “D” column in Table 10, and Document Description attributes flagged with “(r/w)” and listed in the “Doc” column in Table 11, and any attribute extensions supported by the Printer.  The value(s) of each Document attribute supplied in Group 2 replaces the value(s) of the corresponding Document attribute on the target Document object.  For attributes that can have multiple values (1setOf), all values supplied by the client replace all values of the corresponding Document object attribute.  
In order to set the Document’s “document-message” Document Description attribute (see section 9.1.20), the client MUST supply the attribute in Group 2, rather than supplying a “document-message” Operation attribute in Group 1.
If the client supplies an "xxx" attribute with the 'delete-attribute' out-of-band value (see [rfc3380] § 8.2), the Printer MUST remove the "xxx" attribute from the Document object, if present.
4.4.3	Set-Document-Attributes Response
The Printer returns the following sets of attributes as part of the Set-Document-Attributes Response:
Group 1: Operation Attributes
Status Message:
In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-messages" (text(MAX)) Operation attribute as described in [rfc2911] § 13 and 3.1.6.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.2. 
Group 2: Unsupported Attributes
See [rfc2911] § 3.1.7 for details on returning Unsupported Attributes.  
If some of the attributes in the operation fail to validate, the Printer MUST reject the operation, MUST NOT change any Document attributes, and MUST return the indicated status code below.  In this group, the Printer MUST also return all attributes that fail to validate.  The following are the reasons that an attribute fails to validate and the value returned for the attribute, along with the indicated status code and order of detection:
1.	The number of attributes supplied by the client exceeds the maximum number that the Printer supports in a Set-Printer-Attributes request:  return the 'client-error-request-entity-too-large' (see [rfc2911] § 13.1.4.9).
2.	The Printer doesn't support the attribute:  return the attribute with the 'unsupported' out-of-band attribute value (see [rfc2911] § 3.1.7 and [rfc2910]) and the 'client-error-attributes-or-values-not-supported (see [rfc2911] § 13.1.4.12).
3.	The attribute is READ-ONLY (in its definition) or is not-settable in this implementation:  return the attribute with the 'not-settable' out-of-band attribute value (see [rfc3380] § 8.1) and the 'client-error-attributes-not-settable' status code (see [rfc3380] § 7.1).
4.	The Printer doesn't support the value:  if the attribute in the operation has a single value, return it.  If the attribute in the operation is multi-valued, return only those values in a 1setOf that are not supported.  Return the 'client-error-attributes-or-values-not-supported' status code (see [rfc2911] § 13.1.4.12).
5.	The values of some of the supplied attributes conflict with one another and/or other Document attribute values not being set:  if the conflicting attribute in the operation has a single value, return the attribute and the value.  If the attribute in the operation is multi-valued, return only the attribute and those values in a 1setOf that are conflicting with other attributes.  Return the 'client-error-conflicting-attributes' status code (see [rfc2911] § 13.1.4.15).
4.5	Cancel-Document
This REQUIRED Document operation allows a client to cancel a specified Document in a specified Print Job any time from the time the Document is created up to, but not including, the time that the Document is completed, canceled, or aborted.  Since a Document might already be printing by the time a Cancel-Document is received, some media sheet pages might be printed before the document processing is actually terminated. 
The Cancel-Document operation does not remove the Document from the Job and Printer, but only sets the specified Document’s “document-state” Document Description attribute to ‘canceled’ and the Document’s “document-state-reasons” Document Description attribute with ‘canceled-by-user’ or ‘cancel-by-operator’.  If the Job object is printed again using operations such as the Reprocess-Job operation (see [adm-ops] § 4.1) or the Restart-Job operation (see [rfc2911] § 3.3.7), any canceled Documents are also printed again.  Thus Cancel-Document has the same semantics as Cancel-Job (see [rfc2911] § 3.3.3), which only cancels the processing of the job, and doesn’t delete the Job object itself.  See the Delete-Document operation (section 5.4) to remove the Document object itself immediately from the Job and Printer.  
The Cancel-Document operation does not affect the states of any of the other Document objects in the job.  If the Job was processing and there are more Documents to be processed, the Printer does so.  If there are no further Documents to process, the Job moves to the ‘completed’ state as usual whenever there is no more processing to be done.
The Printer MUST accept or reject the request based on the document's current state and transition the document to the indicated new state as follows:
Current "document-state"	New "document-state"	Printer's response status code and action:	
'pending'	'canceled'	'successful-ok'	
'processing'	'canceled'	'successful-ok'	
'processing'	'processing'	'successful-ok'  See Rule 1	
'processing'	'processing'	'client-error-not-possible'  See Rule 2	
'completed'	'completed'	'client-error-not-possible'	
'canceled'	'canceled'	'client-error-not-possible'	
'aborted'	'aborted'	'client-error-not-possible'	

Rule 1:  If the implementation requires some measurable time to cancel the document in the 'processing' document states, the Printer MUST add the 'processing-to-stop-point' value to the document's "document-state-reasons" attribute and then transition the document to the 'canceled' state when the processing ceases (see [rfc2911] § 4.3.8).
Rule 2:  If the Document object already has the 'processing-to-stop-point' value in its "document-state-reasons" attribute, then the Printer MUST reject a Cancel-Document operation.
Access Rights: The authenticated user (see [rfc2911] § 8.3) performing this operation must either be the job owner or an operator or administrator of the Printer (see [rfc2911] § 1 and 8.5).  Otherwise, the Printer MUST reject the operation and return: 'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-not-authorized' as appropriate.
4.5.1	Cancel-Document Request
The following groups of attributes are part of the Cancel-Document Request:
Group 1: Operation Attributes
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.1.
Target:
The client MUST supply the “document-number” (integer(1:MAX)) Operation attribute immediately after either (1) the "printer-uri" (uri) plus "job-id"  (integer(1:MAX)) or (2) the "job-uri" (uri) Operation attribute(s) which define the target Document object for this operation as described in section [rfc2911] 3.1.5.  If the client omits the “document-number” Operation attribute, the Printer MUST reject the request and return the ‘client-error-bad-request’ status code.
Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the client as described in [rfc2911] § 8.3.
4.5.1.1	document-message (text(MAX)):
The client MAY supply this Operation attribute.  If the Printer supports this attribute, the Printer MUST also support the corresponding “document-message” (text(MAX)) Document Description attribute (see section 9.1.20) and copy this value to the “document-message” Document Description attribute.  The end user can use this Document Description attribute as a message to the operator and the operator can use it as a message to the end user.  The Printer MAY print this message on a document start sheet for this document, if any.  
The Printer MUST ignore the “job-message-from-operator” Operation attribute (see [adm-ops] § 6) for this operation, since that is a job-only attribute and Cancel-Document is a Document operation.  
4.5.2	Cancel-Document Response
The following sets of attributes are part of the Cancel-Document Response: 
Group 1: Operation Attributes
Status Message:
In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-messages" (text(MAX)) Operation attribute as described in [rfc2911] § 13 and 3.1.6.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" attributes as described in [rfc2911] § 3.1.4.2.
Group 2: Unsupported Attributes
See [rfc2911] § 3.1.7 for details on returning Unsupported Attributes.
Once a successful response has been sent, the implementation guarantees that the Document will eventually end up in the 'canceled' state.  Between the time the Cancel-Document operation is accepted and when the document enters the 'canceled' document-state (see section 9.1.25), the "document-state-reasons" attribute (see section 9.1.27) MUST contain the 'processing-to-stop-point' value which indicates to later queries that although the Document might still be 'processing', it will eventually end up in the 'canceled' state, not the 'completed' state.
5	Administrative Job and Document operations
This section summarizes the extensions to existing Administrative Job and Printer operations and defines new Document Administrative operations.  The following administrative operations: Promote-Job ([adm-ops] § 4.4.1), Release-Held-New-Jobs ([adm-ops] § 3.3.2), Resume-Job ([adm-ops] § 4.3.2), Schedule-Job-After ([adm-ops] § 4.4.2) do not affect the Document objects because they are defined to affect the Job object as a whole.
5.1	Purge-Jobs ([rfc2911] § 3.2.9)
This OPTIONAL Administrative Printer operation removes all Jobs and all of their contained Document objects.
5.2	Cancel-Current-Job ([adm-ops] § 4.2)
This OPTIONAL Administrative Printer operation sets the “document-state” Document Description attribute to ‘canceled’ and the “document-state-reasons” Document Description attribute to ‘canceled-by-xxx’ for any documents in the current Job that have not yet reached a terminal state (‘completed’, ‘canceled’, or ‘aborted’), where ‘xxx’ is ‘user’ or  ‘operator’.  See [adm-ops] § 4.2.  
Note: There is no Cancel-Current-Document operation defined, since it is too likely that the Printer would have moved onto the next document before the operation could issue the request.
5.3	Suspend-Current-Job ([adm-ops] § 4.3.1)
This OPTIONAL Administrative Printer operation suspends the current job and sets the Job’s “job-state” Job Description attribute to ‘processing-stopped’ and “job-state-reasons” to ‘job-suspended-by-xxx’, where ‘xxx’ is ‘user’ or ‘operator’.  The Documents’ “document-state” and “document-state-reasons” Document Description attributes are unaffected (but the Documents are not processed any further, since the Job is stopped).
5.4	Delete-Document
This OPTIONAL Administrative Document operation removes the specified Document object and its data immediately from the specified Job.  The Printer MUST reject the request if the Document is in any state other than ‘pending” (there is no ‘pending-held’ state for Documents).  The Printer does not reassign the “document-number” Document Description attribute values of the remaining Document objects in the Job, so that the deleted Document object leaves a gap in the document numbering space for the Job.  The Printer MUST return a ‘client-error-not-found’ status code, in a subsequent Get-Document-Attributes operation for this Document object specifying its former “document-number”.  This operation is similar to the Purge-Jobs operation that immediately deletes all jobs from the Printer.  However, the Delete-Document operation only deletes a single Document from the specified Job.  
Access Rights: The authenticated user (see [rfc2911] § 8.3) performing this operation MUST be an operator or administrator of the Printer (see [rfc2911] § 1 and 8.5).  Otherwise, the Printer MUST reject the operation and return: 'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-not-authorized' as appropriate.  This operation requires operator/administrator privileges, otherwise a rogue client could submit, then delete, at will using up valuable spooling space.  Instead of using this operation, unprivileged users use Cancel-Document which goes through the normal accounting, if any.
The Delete-Document request and Delete-Document response have the same attribute groups and attributes as the Cancel-Document operation (see section 4.5).
6	Job and Document Template Attribute Precedence during Job processing
This section defines the Attribute Precedence rules that the Printer MUST follow when processing jobs, including instructions in the PDL data.  These rules cover Queue Override attributes, Page Override attributes, Document Object attributes (Operation/Document Description and Document Template), Document Override attributes, Job  Object attributes (Operation/Job Description and Job Template), PDL instructions, PDL Interpreter initialization files, and Printer defaults.  Since each attribute can be specified at all of these levels, it is important to define which level takes precedence when the same attribute occurs at different levels with differing values. 
The attribute precedence model has the following features:
1)	In principle, each defined attribute can occur at each of the precedence levels.
2)	Attributes can be introduced and modified at different points in the job workflow, e.g., in the application, print driver, submission client, protocol, and Printer:
•	Attributes are supplied by different agents in the system:  application, user, print driver, administrator, operator, Printer, and the output device hardware.
•	Attributes are supplied at different points in time:  PDL generation, job submission, job acceptance, job pending, job processing.
3)	The later that an attribute is introduced into the work flow or the closer the specified scope of the attribute is to the affected object, the higher the precedence is assigned to that attribute, since precedence is intended to reflect the user’s wishes.
The following levels of Attribute Precedence are defined in order of decreasing priority:
1.	Document Level - page override programming - The special “overrides” collection Document Template attribute (see [pwg5100.6]) supplied at the Document Level, that is, as a Document Template Attribute in a Send-Document or Send-URI operation, that contains the attributes that are to have the page override status for the specified ranges of pages.  This can be supplied by the client when submitting a Document object, or set either by the user or operator after the Document has been accepted using the Set-Document-Attributes operation, or by the operator using means local to the Printer.  Example:  " overrides" = {"pages" = '1:1'; " media" = 'letterhead'}
2.	Job Level - page override programming - The special "overrides" collection Job Template attribute (see [pwg5100.6]) supplied at the Job Level, that is, in a Job Creation operation, that contains the attributes that are to have the page override status for the specified ranges of pages in the specified Document.  This can be supplied by the client when submitting a job, or set either by the user or operator after the job has been accepted using the Set-Job-Attributes operation, or by the operator using means local to the Printer.  Example:  " overrides" = {"pages" = '1:1'; “document-numbers” = ‘1:1’; "media" = 'letterhead'}  
3.	Document Level - Document object attributes - The Document attributes supplied at the Document Level, that is, Operation/Document Description and Document Template attributes supplied in a Send-Document or Send-URI operation to apply to the Input Document.  This can be supplied by the client when submitting a Document object, or set either by the user or operator after the Document has been accepted using the Set-Document-Attributes operation, or by the operator using means local to the Printer.  Examples: "media" = 'na-letter' and "copies" = '2'.
4.	Job Level - Job object and Document object attributes - The Job attributes (Operation/Job Description and Job Template) and Document attributes (Operation/Document Description and Document Template) supplied at the Job Level, i.e., with a Create-Job, Print-Job, or Print-URI operation.  This can be supplied by the client when submitting a Job, or set either by the user or operator after the job has been accepted using the Set-Job-Attributes operation, or by the operator using means local to the Printer.  Examples: "media" = 'na-letter' and "copies" = '2'.
5.	PDL document data - An instruction in the PDL document data.  This is supplied by the application or print driver that created the PDL.  Example:  PostScript setPageDevice specifying na-letter media.  Whether PDL document data is actually lower precedence than the preceding levels depends on the implementation as expressed in the “pdl-override-supported” Printer Description attribute (see [rfc2911] § 4.4.28).

Job Template and Document Template attributes of the form “xxx-requested”, such as “orientation-requested” (see [rfc2911] § 4.2.10) have a lower priority than the PDL.  If the PDL contains a corresponding instruction, that PDL instruction will be used instead of the supplied “xxx-requested” attribute.  For example, PostScript PDL data always has a well-defined orientation, so that “orientation-requested” never affects the result.  On the other hand, PDLs such as text/plain never have orientation and PCL MAY omit orientation, in which case, “orientation-requested” takes effect.  
6.	PDL Init File data - A file that the Printer uses to initialize the PDL Interpreter before it starts interpreting each document in a Job.  It is immaterial how this file is specified, whether it be by job object attribute or printer default – the precedence of the contents of this file is at this level.
7.	Printer default - A Printer "xxx-default" attribute that is applied by the Printer provided that none of the higher levels have supplied a value.  The Printer implementation supplies values for the Printer's "xxx-default" attributes that reflect the out-of-the-box action by the output device.  For example, if the output device will use media from the large-capacity input tray if not directed otherwise, the implementation supplies the Printer's "media-default" attribute with the 'large-capacity' keyword value without requiring the administrator to configure that value.  Implementations might allow the administrator to configure the Printer's "xxx-default" attributes to other values, if other values are supported by the implementation.  Example:  The administrator changes the Printer's "media-default" from 'large-capacity' to 'na-letter'.
8.	Hardware default - When none of the above conditions supply an explicit value, the printer will apply the defaults supplied by the hardware.  An example of these implicit defaults would be a “copies” value of 1 or a “sides” value of ‘one-sided’.  Note that this level is outside the scope of IPP.  The defaults at this level only apply if there are no explicit values in the higher level.  Since this level is outside the scope of IPP there is no IPP specific way to query the defaults at this level. 
7	Operation Attributes for the Job and Document Creation operations
This section defines some new Operation/Description attributes and lists all the Operation/Description attributes that have been defined in other IPP specifications that are used in Job Creation operations and extends their use to the Document Creation operations.  In addition, some new Job/Document Description attributes have been defined to be set from existing Operation attributes.  Note: Operation attributes relate to the operation and do not depend on the printing capabilities of the Printer.  
7.1	Operation Attributes supplied at the Job and Document Levels for Creation
Table 7 lists all the Operation attributes and their attribute syntax supplied in Job Creation and Document Creation operations and the attribute syntaxes of their corresponding "xxx-default" and "xxx-supported" Printer Description attributes, if any.  A "-" indicates that there isn't an "xxx-default" or "xxx-supported" Printer Description attribute.
Table 7- Operation, Default, and Supported Attributes
Operation attribute	Operation
attribute syntax	Printer: Default Value attribute syntax	Printer: Supported Values
attribute syntax	
attributes-charset	charset	-	1setOf charset	
attributes-natural-language	naturalLanguage	-	1setOf naturalLanguage 	
compression	type3 keyword	-	1setOf type3 keyword	
document-charset	charset	charset	1setOf charset	
document-digital-signature	type2 keyword	type2 keyword	1setOf type2 keyword	
document-format	mimeMediaType	mimeMediaType	1setOf mimeMediaType	
document-format-details	1setOf collection	1setOf collection	1setOf type2 keyword	
document-source-application-name	name(MAX)	name(MAX)	-	
document-source-application-version	text(127)	text(127)	-	
document-source-os-name	name(40)	name(40)	-	
document-source-os-version	text(40)	text(40)	-	
document-format	mimeMediaType	mimeMediaType	-	
document-format-device-id	text(127)	text(127)	-	
document-format-version	text(127)	text(127)	-	
document-natural-language	naturalLanguage	naturalLanguage	-	
document-format-version	text(127)	text(127)	1setOf text(127)	
document-message	text(MAX)	-	-	
document-name	name(MAX)	-	-	
document-natural-language	naturalLanguage	naturalLanguage	1setOf naturalLanguage	
document-uri	uri	-	1setOf uriScheme	
ipp-attribute-fidelity	boolean	-	-	
[job-]impressions	integer(0:MAX)	-	rangeOfInteger(0:MAX)	
[job-]k-octets	integer(0:MAX)	-	rangeOfInteger(0:MAX)	
job-mandatory-attributes	1setOf type2 keyword	-	-	
[job-]media-sheets	integer(0:MAX)	-	rangeOfInteger(0:MAX)	
job-name	name(MAX)	-	-	
job-password	octetString(255)	-	integer(0:127)	
job-password-encryption	type3 keyword | name(MAX)	-	1setOf (type3 keyword | name(MAX))	
last-document	boolean	-	-	
operation-id	integer(1:0x8FFF)	-	1setOf type2 enum	
original-requesting-user-name	name(MAX)	-	-	
output-device-requested	name(127)	name(127)	1setOf name(MAX)	
printer-uri	uri	-	1setOf uri	
request-id	integer(1:MAX)	-	-	
requesting-user-name	name(MAX)	-	-	
version-number	X.Y	-	1setOf type2 keyword	

Table 8 lists the Operation attributes that clients supply at the Job Level and/or the Document Level and whether the Printer copies (indicated by “”) the supplied value to corresponding Job Description and/or Document Description attributes.  
Legend:
”*”	an attribute that has a “job-” prefix in its name in [rfc2911].  The “job-“ prefix is omitted in the table.  Job level attributes use the “-job” prefix.  Document level attributes do not use the prefix.   The only difference in the semantics are whether it applies to just the Document or to the entire Job.  Note: For the PWG Semantic Model, the “job-” prefix is dropped altogether.  
“Level Supplied” column indicates whether the Operation attribute can be supplied at the Job Level (PJ=Print-Job, PU=Print-URI, and CJ=Create-Job) and at the Document Level (SD=Send-Document, and SU=Send-URI).    
“y”	the Operation attribute is defined for the indicated operation, but does not have a corresponding Job Description or Document Description attribute (no ““).
“y”	the Operation attribute has a corresponding Job Description (yJ) or Document Description (yD) attribute to which the Printer MUST copy this Operation attribute.  See Table 11 for the corresponding Job and Document Description attributes.
“-”	the Operation attribute is not defined for the indicated operation.
**	these Operation attributes are defined for all operations, not just Job Creation and Document Creation operations.
“Conformance” column indicates the conformance requirements for what the client supplies in a request and the Printer supports in a request.  If an Operation attribute that is a collection attribute is supported (see [rfc3382]), then there are conformance requirements for which member attributes MUST be supported by a Printer and which member attributes a client MUST supply as indicated in the Conformance column for each collection member attribute in Table 8. 
“Reference and Section” column indicates where the Operation attribute is defined in other IPP specs and this spec.

Table 8 - Operation Attributes supplied at the Job and Document Levels in Job and Document Creation Requests
Operation attribute name for Job and Document Creation requests	Attribute Syntax	Level Supplied	Conformance	Reference and Section	
		Job	Doc			
		CJ	PJ, PU	SD, SU	 Client supply	Printer support		
attributes-charset **	charset	yJ	yJ	yD	MUST	MUST	[rfc2911] §3.1.4	
attributes-natural-language **	naturalLanguage	yJ	yJ	yD	MUST	MUST	[rfc2911] §3.1.4	
compression	type3 keyword	-	yD	yD	MAY	MUST	[rfc2911] §3.2.1.1	
document-charset	charset	-	yD	yD	MAY	CMUST	[pwg5100.7] §43.2.1	
document-digital-signature	type2 keyword	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.2	
document-format	mimeMediaType	-	yD	yD	MAY	MUST	[rfc2911] §3.2.1.1, [pwg5100.7] §3.2.3	
document-format-details	1setOf collection	-	yD	yD	MAY	CMUST	[pwg5100.7] §3.2.4	
document-source-application-name	name(MAX)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.1	
document-source-application-version	text(127)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.2	
document-source-os-name	name(40)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.3	
document-source-os-version	text(40)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.4	
document-format	mimeMediaType	-	yD	yD	MUST	MUST	[pwg5100.7] §3.2.4.5	
document-format-device-id	text(127)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.6	
document-format-version	text(127)	-	yD	yD	SHOULD	MUST	[pwg5100.7] §3.2.4.7	
document-natural-language	naturalLanguage	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.4.8	
document-format-version	text(127)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.5	
document-message	text(MAX)	-	yD	yD	MAY	MAY	[pwg5100.7] §3.2.6	
document-name	name(MAX)	-	yD	yD	MAY	MUST	[rfc2911] §3.2.1.1	
document-natural-language	naturalLanguage	-	yD	yD	MAY	MAY	[rfc2911] §3.2.1.1,
[pwg5100.5] §7.2.1	
document-uri 	uri	-	yD 	yD	CMUST  	MAY	[rfc2911] §3.2.2	
impressions*	integer(0:MAX)	yJ	yJ	yD	MAY	MAY	[rfc2911] §3.2.1.1	
ipp-attribute-fidelity	boolean	yJ27	yJ	-	MAY	MUST	[rfc2911] §3.2.1.1,
[pwg5100.5] §3.1.1.1	
job-mandatory-attributes	1setOf type2 keyword	yJ	yJ	-	MAY	MUST	[pwg5100.5] §3.1.1.2	
job-name	name(MAX)	yJ	yJ	-	MAY	MUST	[rfc2911] §4.3.5	
k-octets*	integer(0:MAX)	yJ	yJ	yD	MAY	MAY	[rfc2911] §3.2.1.1	
last-document	boolean	-	-	yD 	MUST	MUST	[rfc2911] §3.3.1.1	
media-sheets*	integer(0:MAX)	yJ	yJ	yD	MAY	MAY	[rfc2911] §3.2.1.1	
operation-id **	integer(1:0x8FFF)	y	y	y	MUST	MUST	[rfc2911] §3.1.2	
original-requesting-user-name **	name(MAX)	yJ	yJ	-	MAY	MAY	[adm-ops] §11.7.2.2	
output-device-requested	name(127)	yJ	yJ	-	MAY	MAY	[pwg5100.7] §5.5	
printer-uri **	uri	yJ	yJ30	yD30	MUST	MUST	[rfc2911] §3.1.5	
request-id **	integer(1:MAX)	y	y	y	MUST	MUST	[rfc2911] §3.1.2	
requesting-user-name **	name(MAX)	yJ	yJ31	y	SHOULD	MUST	[rfc2911] §3.2.1.1	
version-number **	X.Y	y	y	y	MUST	MUST	[rfc2911] §3.1.8	
“y”, “y”, and “**”: see Legend at the beginning of the Table.
7.2	Operation/Document Description attributes
The rest of this section defines the semantics for the Operation attributes that a client MAY supply in a Document Creation operation and their corresponding Document Description attributes.  The following statements apply to all of these Operation/Document Description attributes and are not repeated in each Description:
If the Printer doesn’t support the “xxx” Operation attribute, the Printer MUST ignore the “xxx” attribute (as with any OPTIONAL Operation attribute) and return the “xxx” attribute with the supplied value as unsupported in the Unsupported Attributes group as specified in [rfc2911] § 3.1.7.
If the Printer supports the “xxx” Operation attribute, the Printer MUST support it at the Job and Document level.  The Printer MUST also:
1.	support the corresponding “xxx” Document Description attribute of the same name (see section 9.1) and vice versa.
2.	copy the value of the “xxx” Operation attribute, if supplied by the client, to the corresponding “xxx” Document Description attribute.
3.	support the corresponding "xxx-default" and "xxx-supported" Printer Description attributes as well, if defined (see section 9.2) and vice versa.
4.	validate the values supplied by the client in the "xxx" Operation attribute against the values indicated in the Printer's corresponding "xxx-supported" Printer Description attribute (see section 9.2).  If the values do not validate, the Printer MUST either reject the operation or accept the operation as indicated for each of the attributes described below.
If the client supplies one of the "xxx" Operation/Document attributes with a value that the Printer does not support, the Printer MUST perform one of the actions indicated for that Operation, unless specified otherwise, such as (1) reject the request, (2) accept the request and either (a) hold the job for operator intervention or (b) print the Job ignoring the attribute.  In all of these cases, the Printer MUST return the Operation attribute with the unsupported value in the Unsupported Attributes group in the response (see [rfc2911] § 3.1.7).

7.2.1	document-natural-language (naturalLanguage)
This OPTIONAL Operation attribute specifies the natural language of the Document Object content (see [rfc2911] § 3.2.1.1 and section 4.1.8).  
If the client supplies this "document-natural-language" Operation attribute with a value that the Printer doesn’t support, the Printer MUST perform one of the following actions:  (1) reject the request OR (2) accept the request and either (a) put the Job in the 'pending-held' state or (b) process the job ignoring the attribute.  See section 7.2 above for more details. 
The values MAY include the region as well as the language according to [rfc2911] § 4.1.8.  If the document contains more than one language, the value is the first or primary language of the document.  The Printer MAY use this value to select fonts or other Internationalization processing.  As indicated in [rfc2911] § 4.1.8, examples include:
'en':  for English
'en-us': for US English
'fr':  for French
'de':  for German

7.3	Operation Attributes returned in Job and Document Creation responses
Table 9 lists the Operation attributes that Printers return in Job Creation operation responses (Print-Job, Print-URI and Create-Job) and in Document Creation operation responses (Send-Document and Send-URI).  The column labeled “Conformance” indicates the conformance for what the Printer returns and what the Printer supports.  The References column lists the IETF or IEEE-ISTO specification which defines the semantics of the attribute.
Table 9 - Operation attributes returned in Job and Document Creation operation responses
Operation attribute name	Attribute Syntax	Conformance		References	
	  Values	Printer return	Printer support		
attributes-charset *	charset	MUST	MUST	[rfc2911] §3.1.4	
	  ‘utf-8’	MAY	MUST	[rfc2911] §4.1.7	
	  ‘us-ascii’	MAY	MAY	[rfc2911] §4.1.7	
	  ‘iso-8859-1’	MAY	MAY	[rfc2911] §4.1.7	
	  ‘iso-10646-ucs-2’	MAY	MAY	[rfc2911] §4.1.7	
attributes-natural-language *	naturalLanguage	MUST	MUST	[rfc2911] §3.1.4	
	  ‘en-US’	MAY	MAY	[rfc2911] §4.1.8	
detailed-status-messages *	text(MAX)	MAY	MAY	[rfc2911] §3.1.6.3	
document-access-error	text(MAX)	MAY	MAY	[rfc2911] §3.1.6.4	
document-number	integer(1:MAX)	MUST	MUST	§9.1.23	
job-id	integer(1:MAX)	MUST	MUST	[rfc2911] §4.3.2	
job-uri	uri	MUST	MUST	[rfc2911] §4.3.1	
redirect-uri 	uri	MAY	MAY	[not-srv] §5.2	
request-id *	integer(1:32767)	MUST	MUST	[rfc2911] §3.1.2	
status-code *	integer(0:32767)	MUST	MUST	[rfc2911] §3.1.6.1	
status-message *	text(255)	MAY	MAY	[rfc2911] §3.1.6.2	
version-number *	integer(1:255), integer(0:255)	MUST	MUST	[rfc2911] §3.1.8	
* - indicates attributes that are defined for all operations, not just Job Creation operations

8	Job Template and Document Template attributes
Table 10 lists all of the Job Template attributes defined in other IPP specifications and lists their corresponding Document Template attributes defined in this IPP specification.  The Job Template attributes can be supplied in the Job Creation operations: Print-Job, Print-URI, and Create-Job operations.  
A subset of these Job Template attributes (e.g. “number-up” and “media”, but not “job-priority”) are also defined to apply to Documents and are called Document Template attributes when supplied at the Document Level.  Document Template attributes can be supplied in the Send-Document and Send-URI operations.  
A subset of the Document Template attributes that apply to pages (e.g., “media”, but not “document-format”) can also be supplied as Page Overrides using the “overrides” Job Template collection attribute (see [pwg5100.6]) or Document Template attribute.
Job Template and Document Template attributes are OPTIONAL for a Printer to support and for a client to supply in a Job Creation or Document Creation request or Page Overrides.  If a Printer supports a Job Template or Document Template attribute, then it MUST copy the supplied attribute to the Job or Document object, respectively, so that a client MAY query the attributes in subsequent Get-Job-Attributes/Get-Jobs and Get-Document-Attributes/Get-Documents operations, respectively.  The effect of Job Template Attributes supplied in Job Creation requests are inherited by the Document objects, unless the Document Creation operation supplies the attribute with a different value.  
Every Job or Document Template attribute (e.g. “copies”) has associated printer attributes that provide the default value(s) (e.g. “finishings-default) and  the supported value(s) (e.g. “finishings -supported”). Also allowed is the list of values that are ready to use without human intervention (e.g. “finishings-ready”).   Since some attributes (e.g. “finishings”) can be Job Template and Document Template attributes both the Job and the Document share the same default and supported values.
If a Job Template collection attribute is supported (see [rfc3382]), then there are conformance requirements for which member attributes MUST be supported by a Printer and which member attributes a client MUST supply as indicated in the Conformance column for each collection member attribute in Table 10.  
The “Defined for use” column indicates whether the client MAY supply and the Printer support the attribute at the Job, Document, or Page Level with the following semantics:
Supplied	Description	
J=y	Job Level:  The attributes MAY be supplied as Job Template attributes at the Job Level in a Job Creation request (Print-Job, Print-URI, Create-Job) in which case each Document inherits the Job Template attribute as a default which is used unless an attribute at the Document Level is also supplied.  Note:  The “multiple-document-handling” attribute controls whether extensive attributes, such as “finishing” and “copies”, affect the entire job as a whole (‘single-xxx’ values) or affect each document separately (‘separate-xxx’ values).  	
D=y	Document Level:  The attribute MAY be supplied at the Document Level as Document Template attributes in a Document Creation operation (Send-Document, Send-URI), in which case the supplied Document Templates override any Job Template attributes supplied at the Job Level.  	
P=y	Page Level: The attribute MAY be supplied as a member of the (1) “page-ranges” Job Template attribute at the Job Level in a Job Creation operation or (2) “page-ranges” Document Template attribute at the Document Level to affect the specified range of pages.	

“**” - Most Job Template and Document Template attributes correspond to the PWG Semantic Model Job Processing and Document Processing attributes, respectively.  However, 4 of the IPP Job Template attributes are represented in the PWG Semantic Model as Job Description attributes, instead of Job Processing attributes.  These are indicated in the first column with “**”.
Table 10 - Job Template and Document Template attributes
Job Template /
Document Template attribute name	Attribute Syntax	Defined for use	Conformance	Reference	
		J	D	P	Client supply	Printer support		
copies	integer(1:MAX)	y 	y	n	MAY	MAY	[rfc2911] §4.2.5	
cover-back	collection	y	y	n	MAY	MAY	[pwg5100.3] §3.1	
cover-type	type2 keyword				MUST	MUST	[pwg5100.3] §3.1.2	
media	type3 keyword | name(MAX)				MAY be neither or one of, but NOT both	MUST	[pwg5100.3] §3.1.1	
media-col	collection					MAY	[pwg5100.3] §3.1.1	
cover-front	collection	y	y	n	MAY	MAY	[pwg5100.3] §3.1	
cover-type	type2 keyword				MUST	MUST	[pwg5100.3] §3.1.2	
media	type3 keyword | name(MAX)				MAY be neither or one of, but NOT both	MUST	[pwg5100.3] §3.1.1	
media-col	collection					MAY	[pwg5100.3] §3.1.1	
finishings	1setOf type2 enum	y 	y	y	MAY be neither or one of, but NOT both	MAY, MUST if “finishing-col” is supported	[rfc2911] §4.2.6
[pwg5100.1] §2	
finishings-col	collection	y 35	y	y		MAY	[pwg5100.3] §3.2	
finishing-template	name(MAX)				MAY	MAY	[pwg5100.3] §3.2.1	
stitching	collection				MAY	MAY	[pwg5100.3] §3.2.2	
stitching-reference-edge	type2 keyword				MUST	MUST	[pwg5100.3] §3.2.2.1	
stitching-offset	integer (0:MAX)				MUST	MUST	[pwg5100.3] §3.2.2.2	
stitching-locations	1setOf integer(0:MAX)				MUST	MUST	[pwg5100.3] §3.2.2.3	
force-front-side	1setOf integer(1:MAX)	y 	y	y	MAY	MAY	[pwg5100.3] §3.3	
imposition-template	type3 keyword | name(MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.4	
insert-sheet	1setOf collection	y 36	y	y	MAY	MAY	[pwg5100.3] §3.5	
insert-after-page-number	integer(0:MAX)				MUST	MUST	[pwg5100.3] §3.5.1	
insert-count	integer(0:MAX)				MAY	MUST	[pwg5100.3] §3.5.2	
media	type3 keyword | name(MAX)				MUST be one or the other, but NOT both	MUST	[pwg5100.3] §3.5.3	
media-col	collection					MAY	[pwg5100.3] §3.5.3	
job-account-id **	name(MAX)	y	n	n	MAY	MAY	[pwg5100.3] §3.6	
job-accounting-sheets	collection	y	n	n	MAY	MAY	[pwg5100.3] §3.8	
job-accounting-sheets-type	type3 keyword | name(MAX)				MUST	MUST	[pwg5100.3] §3.8.1	
media	type3 keyword | name(MAX)				MAY be neither or one of, but NOT both	MUST	[pwg5100.3] §3.8.2	
media-col	collection					MAY	[pwg5100.3] §3.8.2	
job-accounting-output-bin	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.8.3	
job-accounting-user-id**	name(MAX)	y	n	n	MAY	MAY	[pwg5100.3] §3.7	
job-copies	integer(1:MAX)	y	n 	n	MAY	MAY	[pwg5100.7] §4.1.1	
job-cover-back	collection	y	n 	n	MAY	MAY	[pwg5100.7] §4.1.2 	
same as cover-back	see cover-back							
job-cover-front	collection	y	n 	n	MAY	MAY	[pwg5100.7] §4.1.3 	
same as cover-front	see cover-front							
job-error-sheet	collection	y	n	n	MAY	MAY	[pwg5100.3] §3.9	
job-error-sheet-type	type3 keyword | name(MAX)				MUST	MUST	[pwg5100.3] §3.9.1	
job-error-sheet-when	type2 keyword				MAY	MAY	[pwg5100.3] §3.9.2	
media	type3 keyword | name(MAX)				MAY be neither or one of, but NOT both	MUST	[pwg5100.3] §3.9.3	
media-col	collection					MAY	[pwg5100.3] §3.9.3	
job-finishings	1setOf type2 enum	y	n 	n	MAY	MAY	[pwg5100.7] §4.1.4	
job-finishings-col	collection	y	n 	n	MAY	MAY	[pwg5100.7] §4.1.5 	
same as finishings-col	see finishings-col							
job-hold-until	type3 keyword | name(MAX)	y	n	n	MAY	MAY	[rfc2911] §4.2.2	
job-message-to-operator	text(MAX)	y	n 	n	MAY	MAY	[pwg5100.3] §3.10	
job-priority	integer(1:100	y	n	n	MAY	MAY	[rfc2911] §4.2.1	
job-sheet-message	text(MAX)	y	n	n	MAY	MAY	[pwg5100.3] §3.12	
job-sheets	type3 keyword | name(MAX)	y	n	n	MAY be neither or one of, but NOT both	MAY, MUST if “job-sheets-col” supported	[rfc2911] §4.2.3	
job-sheets-col	collection	y	n	n		MAY	[pwg5100.3] §3.11	
job-sheets	type3 keyword | name(MAX)				MUST	MUST	[pwg5100.3] §3.11.1	
media	type3 keyword | name(MAX)				MUST be one or the other, but NOT both	MUST	[pwg5100.3] §3.11.2	
media-col	collection					MAY	[pwg5100.3] §3.11.2	
media	type3 keyword | name(MAX)	y	y	y	MAY be neither or one of, but NOT both	MAY, MUST if “media-col” supported	[rfc2911] §4.2.11	
media-col	collection	y	y	y		MAY	[pwg5100.3] §3.13	
media-back-coating	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.10	
media-color	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.4	
media-front-coating	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.10	
media-hole-count	integer(0:MAX)				MAY	MAY	[pwg5100.3] §3.13.6	
media-info	text(255)				MAY	MAY	[pwg5100.3] §3.13.3	
media-key	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.1	
media-order-count	integer(1:MAX)				MAY	MAY	[pwg5100.3] §3.13.7	
media-preprinted	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.5	
media-recycled	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.11	
media-size	collection				MAY	MUST	[pwg5100.3] §3.13.8	
x-dimension	integer(0:MAX)				MUST	MUST	[pwg5100.3] §3.13.8.1	
y-dimension	integer(0:MAX)				MUST	MUST	[pwg5100.3] §3.13.8.2	
media-type	type3 keyword | name(MAX)				MAY	MAY	[pwg5100.3] §3.13.2	
media-weight-metric	integer(0:MAX)				MAY	MAY	[pwg5100.3] §3.13.9	
media-input-tray-check	type3 keyword | name(MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.14	
media-type 	type3 keyword | name(MAX)	y	y	y	MAY	MAY	[upnp], [pwg5100.3] §3.13.2	
multiple-document-handling	type2 keyword	y	n	n	MAY	MUST	[rfc2911] §4.2.4	
number-up	integer(1:MAX)	y	y	y	MAY	MAY	[rfc2911] §4.2.9	
orientation-requested	type2 enum	y	y	y	MAY	MAY	[rfc2911] §4.2.10	
output-bin	type2 keyword | name(MAX)	y	n	n	MAY	MAY	[pwg5100.2] §2.1	
Output-device	name(MAX)	y	y	y	MAY	MAY	[pwg5100.7] §3.1.3	
overrides	1setOf collection	y 	y	n	MAY	MAY	[pwg5100.6] §4.1, also see §8.2	
pages	1setOf rangeOfInteger(1:MAX)				MUST	MUST	[pwg5100.6] §4.1.1	
document-numbers	1setOf rangeOfInteger(1:MAX)				MAY	MUST	[pwg5100.6] §4.1.2	
document-copies	1setOf rangeOfInteger(1:MAX)				MAY	MAY	[pwg5100.6] §4.1.3	
any other Template attributes that affect pages, such as “media” or “media-col”				MAY	MAY	[pwg5100.6] §4.1.4	
page-delivery	type2 keyword	y	y	n	MAY	MAY	[pwg5100.3] §3.15	
page-order-received**	type2 keyword	y	y	n	MAY	MAY	[pwg5100.3] §3.16	
page-ranges	1setOf rangeOfInteger(1:MAX)	y	y	n	MAY	MAY	[rfc2911] §4.2.7	
presentation-direction-number-up	type2 keyword	y	y	y	MAY	MAY	[pwg5100.3] §3.17	
print-quality	type2 enum	y	y	y	MAY	MAY	[rfc2911] §4.2.13	
printer-resolution	resolution	y	y	y	MAY	MAY	[rfc2911] §4.2.12	
separator-sheets	collection	y	y	n	MAY	MAY	[pwg5100.3] §3.18	
separator-sheets-type	type3 keyword | name(MAX)				MUST	MUST	[pwg5100.3] §3.18.1	
media	type3 keyword | name(MAX)				MAY be neither or one of, but NOT both	MUST	[pwg5100.3] §3.18.2	
media-col	collection					MAY	[pwg5100.3] §3.18.2	
sheet-collate	type2 keyword	y	y	n	MAY	MAY	[rfc3381] §3.1	
sides	type2 keyword	y	y	y	MAY	MAY	[rfc2911] §4.2.8	
x-image-position	type2 keyword	y	y	y	MAY	MAY	[pwg5100.3] §3.19.2	
x-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.3	
x-side1-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.4	
x-side2-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.5	
y-image-position	type2 keyword	y	y	y	MAY	MAY	[pwg5100.3] §3.19.6	
y-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.7	
y-side1-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.8	
y-side2-image-shift	integer(MIN:MAX)	y	y	y	MAY	MAY	[pwg5100.3] §3.19.9	
“**” - These 4 attributes are Job Description attributes, not Job Processing attributes, in the PWG Semantic Model [pwg-sm] - see the comment just before the Table.

8.1	Document Template attributes
Most Job Template attributes can be used as Document Template attributes for use in Document Creation operations to apply to the Document object.  However, the Job Template attributes that have the “job-“ prefix MUST NOT be used as Document Template attributes, since they are defined to apply to the job as a whole.  Table 10 shows lists all of the Document Template attributes for use with the Document Creation operations and the Document object.  All of the definitions of the Document Template attributes are done by reference to the corresponding Job Template attributes in other specifications.  However, the semantics of each Document Template attribute only applies to the Document object with which the attribute is associated either by being supplied by the client in the Document Creation operation or supplied by the Printer as a default because the client did not (and the PDL did not have any corresponding instruction).  See section 6 for defaulting semantics.
The Document Template attributes share the same "xxx-default", "xxx-supported", and "xxx-ready" Printer attributes with the Job Template attributes of the same name.
The Document object also has the corresponding "xxx-actual" READ-ONLY Document Description attributes defined that correspond to the "xxx" Document Template attributes (see [ippact]).
8.2	Document Template attributes containing explicit Document numbers
Job Template attributes that contain explicit Document numbers, such as “overrides”, must have an appropriate value.  The Document number MUST have a single value and the single value MUST match the Document number to which the Document Template attributes are being applied.  If they do not match, the Printer MUST reject the request with a status of ‘client-error-bad-request’.
8.3	Sheet Collation at the Document Level
Since “sheet-collate” can be applied at the Document level it is possible for a Job to contain some Documents which are collated and others that are not.  To describe this condition the Printer MUST set the “job-collation-type” to a value of ‘3’ (i.e ‘other’.).
9	Job Description and Document Description attributes
Table 11 lists all the Job Description attributes defined in other IPP specifications and the corresponding Document Description attributes defined in this IPP specification.  Job Description and Document Description attributes are Job object and Document object attributes, respectively, that are filled in by the Printer.  Some Job/Document Description attribute values are supplied by the client in the Job/Document Creation operation using corresponding Operation attributes as flagged with “”.  Unless specified otherwise herein, the Printer MUST NOT support modification of Job Description and Document Descriptions attributes.
The column labeled “attribute syntax” indicates the attribute syntax (see [rfc2911] § 4.1).  The Printer conformance is indicated along with the reference to the specification in which the attribute is defined.  The conformance for Document Description attributes (if the Printer supports the Document object) is the same as the corresponding Job Description attributes.
Each of the Document Description attributes have a sub-section in section 9.1.  The column labeled References contains references to the sub-section in this document if there is significant information there.  Those subsections that are only references to other specifications contain only that reference in the Reference column.  Those attributes that are only Job Description attributes with no subsection in this specification have an “n/a” in the “Doc Desc” column.
Note:  There are no corresponding Page Range (or Page Override) Description attributes.  The Page Range is not an object with a state and it cannot be queried.
Legend:
”*”	an attribute that has a “job-” prefix in its name in [rfc2911].  The “job-“ prefix is omitted in the table.  Job level attributes use the “-job” prefix.  Document level attributes do not use the prefix.   The only difference in the semantics are whether it applies to just the Document or to the entire Job.  Note: For the PWG Semantic Model, the “job-” prefix is dropped altogether.  
 “-”	indicates that the Job or Document attribute is not defined.
“y”	the Printer MUST populate this Job or Document Description attribute by copying from the corresponding Operation attribute that the client MAY supply in a Job or Document Creation operation.   See Table 8 for the corresponding Operation attribute.
(r/w)	indicates that the Job Description or Document Description attribute is read/write, so that the client can changes its value using the Set-Job-Attributes or Set-Document-Attributes operation (see section 4.4).  

Table 11 - Job and Document Description attributes
Job Description / Document Description attribute name	IPP Attribute Syntax	Job	Doc	Printer conform-ance	Reference
Job Description Attr	
Doc Desc.	
attributes-charset	charset	y	y	MUST	[rfc2911] §4.3.19	§9.1.1	
attributes-natural-language	naturalLanguage	y	y	MUST	[rfc2911] §4.3.20	§9.1.2	
compression	type3 keyword	-	y	MUST	[rfc2911] §3.2.1.1	§9.1.3	
current-page-order	type2 keyword	y	y	MAY	[pwg5100.3] §4.1	§9.1.4	
date-time-at-completed	dateTime	y	y	MAY	[rfc2911] §4.3.14.7	§9.1.5	
date-time-at-creation	dateTime	y	y	MAY	[rfc2911] §4.3.14.5	§9.1.6	
date-time-at-processing	dateTime	y	y	MAY	[rfc2911] §4.3.14.6	§9.1.7	
detailed-status-messages*	1setOf text(MAX)	y	y	MAY	[rfc2911] §4.3.10	§9.1.8	
document-access-errors*	1setOf text(MAX)	y	y	MAY	[rfc2911] §4.3.11	§9.1.9	
document-charset	charset	-	y	CMUST	-	§9.1.10	
document-digital-signature	type2 keyword	-	y	MAY	-	§9.1.11	
document-format	mimeMediaType	-	y	MUST	[rfc2911] §3.2.1.1	§9.1.12	
document-format-details	1setOf collection	-	y	CMUST	[pwg5100.7] §3.2.4	§9.1.13	
document-format	mimeMediaType	-	y	MUST	[pwg5100.7] §3.2.4.5		
document-format-device-id	text(127)	-	y	MUST	[pwg5100.7] §3.2.4.6		
document-format-version	text(127)	-	y	MAY	[pwg5100.7] §3.2.4.7		
document-source-application-name	name(MAX)	-	y	MAY	[pwg5100.7] §3.2.4.1		
document-source-application-version	text(127)	-	y	MAY	[pwg5100.7] §3.2.4.2		
document-source-os-name	name(40)	-	y	MAY	[pwg5100.7] §3.2.4.3		
document-source-os-version	text(40)	-	y	MAY	[pwg5100.7] §3.2.4.4		
document-natural-language	naturalLanguage	-	y	MAY	[pwg5100.7] §3.2.4.8		
document-format-details-detected	1setOf collection	-	y	MAY	-	§9.1.14	
document-format-detected	mimeMediaType	-	y	MAY	-	§9.1.15	
document-format-version	text(127)	-	y	MAY	[pwg5100.7] §3.2.5	§9.1.16	
document-format-version-detected	text(127)	-	y	MAY	-	§9.1.17	
document-job-id	integer(1:MAX)	-	y	MUST	-	§9.1.18	
document-job-uri	uri	-	y	MUST	-	§9.1.19	
document-message (r/w)	text(MAX)	-	y	MAY	[pwg5100.7] §3.2.6	§9.1.20	
document-name (r/w)	name(MAX)	-	y	MUST	[rfc2911] §3.2.1.1	§9.1.21	
document-natural-language	naturalLanguage	-	y	MAY		§9.1.22	
document-number	integer(1:MAX)	-	y	MUST	-	§9.1.23	
document-printer-uri	uri	-	y	MUST	-	§9.1.24	
document-state	type1 enum	-	y	MUST	-	§9.1.25	
document-state-message	text(MAX)	-	y	MAY	-	§9.1.26	
document-state-reasons	1setOf type2 keyword	-	y	MUST	-	§9.1.27	
document-uri	uri	-	y	MAY	-	§9.1.28	
errors-count	integer(0:MAX)	y	y	MAY	[pwg5100.7] §5.2	§9.1.29	
Impressions*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.17.2	§9.1.30	
impressions-completed*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.18.2	§9.1.31	
impressions-completed-current-copy	integer(0:MAX)	y	y	MAY	[rfc3381] §4.4	§9.1.32	
ipp-attribute-fidelity	boolean	y	-	MUST	[rfc2911] §3.2.1.1
[pwg5100.7] §5.1	-	
job-collation-type	type2 enum	y	-	MAY	[rfc3381] §4.1	-	
job-id	integer (1:MAX)	y	-	MUST	[rfc2911] §4.3.2	-	
job-mandatory-attributes	1setOf type2 keyword	y	-	MUST	[pwg5100.7] §5.3	-	
job-message-from-operator	text(127)	y	- 	MAY	[rfc2911] §4.3.16	-	
job-name (r/w)	name(MAX)	y	- 	MUST	[rfc2911] §4.3.5	-	
job-originating-user-name	name (MAX)	y	-	MUST	[rfc2911] §4.3.6	-	
job-printer-uri	uri	y	-	MUST	[rfc2911] §4.3.3	-	
job-state	type1 enum	y	- 	MUST	[rfc2911] §4.3.7	-	
job-state-message	text(MAX)	y	- 	MAY	[rfc2911] §4.3.9	-	
job-state-reasons	1setOf type2 keyword	y	- 	MUST	[rfc2911] §4.3.8	-	
job-uri	uri	y	-	MUST	[rfc2911] §4.3.1	-	
k-octets*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.17.1	§9.1.33	
k-octets-processed*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.18.1	§9.1.34	
last-document	boolean	-	y	MUST	-	§9.1.35	
media-sheets*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.17.3	§9.1.36	
media-sheets-completed*	integer(0:MAX)	y	y	MAY	[rfc2911] §4.3.18.3	§9.1.37	
more-info*	uri	y	y	MAY	[rfc2911] §4.3.4	§9.1.38	
number-of-documents	integer(0:MAX)	y	-	MUST	[rfc2911] §4.3.12	-	
number-of-intervening-jobs	integer(0:MAX)	y	-	MAY	[rfc2911] §4.3.15	-	
output-device-assigned	name(127)	y	y	MAY	[rfc2911] §4.3.13	§9.1.39	
output-device-requested	name(127)	y	-	MAY	[pwg5100.7] §5.5	-	
printer-up-time*	integer (1:MAX)	y	y	MUST	[rfc2911] §4.3.14.4	§9.1.40	
sheet-completed-copy-number	integer(0:MAX)	y	y	MAY	[rfc3381] §4.2	§9.1.41	
sheet-completed-document-number	integer(0:MAX)	y	-	MAY	[rfc3381] §4.3	-	
time-at-completed	integer (MIN:MAX)	y	y	MUST	[rfc2911] §4.3.14.3	§9.1.42	
time-at-creation	integer (MIN:MAX)	y	y	MUST	[rfc2911] §4.3.14.1	§9.1.43	
time-at-processing	integer (MIN:MAX)	y	y	MUST	[rfc2911] §4.3.14.2	§9.1.44	
warnings-count*	integer(0:MAX)	y	y	MAY	[pwg5100.7] §5.3	§9.1.45	
"y", “y”, "-"	See the description in the Legend before the table.

Most of the existing “job-state” and “job-state-reasons” Job Description attribute values apply equally well to individual documents in a multi-document job (with removal of the ‘job-’ prefix for those that apply to both Job and Document).  The reason for separating state from reasons is so that the states can be the fundamental states that most implementations have, while the state reasons can vary depending on the sophistication of the system.  The states are the ones that clients are most likely to base actions upon, and the state reasons are more information, both for programs and people.
9.1	Document Description attributes
This section contains all of the Document Description attributes for use with the Document object.  Most of these definitions refer to the corresponding Job Template attribute semantics in other specifications.  However, the semantics of each Document Description attribute only applies to the Document object containing the Document Description attribute.   The Printer MAY support changing these Document Description attributes with the Set-Document-Attributes operation (see section 4.4), but only if indicated explicitly in this section.
Important Implementer’s note:  The brief descriptions in this section are not a substitute for the detailed specification in the referenced specifications.  You need to read the referenced specifications when implementing!	
9.1.1	attributes-charset (charset) 
This REQUIRED Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.19) applied to the Document object.  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see Table 3).  
9.1.2	attributes-natural-language (naturalLanguage) 
This REQUIRED Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.20) applied to the Document object.  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see Table 3). 
9.1.3	compression (type3 keyword) 
This REQUIRED Document Description attribute specifies the compression used to represent this document (see [rfc2911] §3.2.1.1).  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see Table 3). 
9.1.4	current-page-order (type2 keyword) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [pwg5100.3] §4.1) applied to the Document object.   
9.1.5	date-time-at-completed (dateTime) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.7) applied to the Document object.   
9.1.6	date-time-at-creation (dateTime) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.5) applied to the Document object.   
9.1.7	date-time-at-processing (dateTime) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.6) applied to the Document object.   
9.1.8	detailed-status-messages (1setOf text(MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-detailed-status-messages” Job Description attribute (see [rfc2911] §4.3.10) applied to the Document object.
9.1.9	document-access-errors (1setOf text(MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-document-access-errors” Job Description attribute (see [rfc2911] job-document-access-errors §4.3.11) applied to the Document object.
9.1.10	document-charset (charset)
This CONDITIONALLY REQUIRED Document Description attribute specifies the charset used to represent this document (see [pwg5100.7] §4.2.1).  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see Table 3).  This attribute is REQUIRED for a Printer to support if the Printer supports any charset-ambiguous document formats; otherwise, this attribute is OPTIONAL.  Note, however, that if a Printer supports the “document-charset” Operation attribute, the Printer MUST support this “document-charset” Document Description attribute.
9.1.11	document-digital-signature (type2 keyword)
This OPTIONAL Document Description attribute specifies the digital signature technology used in the Document content.  The Printer sets this Document Description attribute from the corresponding “document-digital-signature” Operation attribute ([pwg5100.7] §4.2.2 for the semantics), if supplied by the client in the Document Creation operation (see Table 3).  If a Printer supports the “document-digital-signature” Operation attribute, the Printer MUST support this “document-digital-signature” Document Description attribute.
9.1.12	document-format (mimeMediaType) 
This REQUIRED Document Description attribute specifies the document format of the Document Object content.  The Printer sets this Document Description attribute from the corresponding “document-format” Operation attribute (see section [pwg5100.7] §4.2.3 for the semantics), if supplied by the client in the Document Creation operation (see Table 3).  
9.1.13	document-format-details (1setOf collection)
This CONDITIONALLY REQUIRED Document Description attribute specifies the details of the document format(s) of the Document Object content.  The Printer sets this Document Description attribute from the corresponding “document-format-details” Operation attribute ([pwg5100.7] §4.2.4 for the semantics), if supplied by the client in the Document Creation operation (see Table 3).  This attribute is REQUIRED for a Printer to support if the Printer supports a packaging MIME type document format, such as ‘application/zip’ or ‘multipart/related’; otherwise, this attribute is OPTIONAL.  Note, however, that if a Printer supports the “document-format-details” Operation attribute, the Printer MUST support this “document-format-details” Document Description attribute.
9.1.14	document-format-details-detected (1setOf collection)
This OPTIONAL Document Description attribute is generated by the Printer to indicate the actual document format details of the Document object as detected by the Printer.  The member attributes are the same as the "document-format-details" Operation attribute. (see [pwg5100.7] §6.6.4 for details)  
9.1.15	document-format-detected (mimeMediaType) 
This OPTIONAL Document Description attribute is generated by the Printer to indicate the actual document format of the Document object content as detected by the Printer.  See [pwg5100.7] §6.6.5 for detailed semantics.
9.1.16	document-format-version (text(127))
This OPTIONAL Document Description attribute specifies the version of the document format of the Document Object content.  The Printer sets this Document Description attribute from the corresponding “document-format-version” Operation attribute ([pwg5100.7] §4.2.6 for the semantics), if supplied by the client in the Document Creation operation (see Table 3).  If a Printer supports the “document-format-version” Operation attribute, the Printer MUST support this “document-format-version” Document Description attribute.
9.1.17	document-format-version-detected (text(127))
This OPTIONAL Document Description attribute is generated by the Printer to indicate the actual document format version of the Document content as detected by the Printer.  See [pwg5100.7] §6.6.7 for detailed semantics.
9.1.18	document-job-id (integer(1:MAX))
This REQUIRED Document Description attribute is a copy of the Job’s “job-id” Job Description attribute (see [rfc2911] §4.3.2), i.e., the “job-id” of the Job containing this Document. 
9.1.19	document-job-uri (uri)
This REQUIRED Document Description attribute is a copy of the Job’s “job-uri” Job Description attribute (see [rfc2911] §4.3.1), i.e., the URI of the Job that contains this Document.  Example: ipp://www.company.com/printers/myprinter/jobs/22
9.1.20	document-message (text(MAX)) 
This OPTIONAL Document Description attribute contains a message from either (1) the user to the operator about the Document or (2) from the operator, system administrator, or "intelligent" process to indicate to the end user the reasons for modification or other management action taken on the Document.  The Printer populates this Document Description attribute from the “document-message” (text(MAX)) Operation attribute value supplied by the client in any of the Document Creation operations (see Table 3) or in a Cancel-Document operation (see section 4.5).  
In addition, the user and the operator can set the value of this Document Description attribute explicitly using the Set-Document-Attributes operation (see section 4.4).
9.1.21	document-name (name(MAX)) 
This REQUIRED Document Description attribute specifies the name of the document (see [rfc2911] §3.2.1.1).    The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see Table 3).  
This attribute may be modified by a client using the Set-Document-Attributes operation (see section 4.4).
9.1.22	document-natural-language (naturalLanguage) 
This OPTIONAL Document Description attribute specifies the natural language of the Document Object content.  The Printer sets this Document Description attribute from the corresponding “document-natural-language” Operation attribute (section 7.2.1 for the semantics), if supplied by the client in the Document Creation operation (see Table 3).  If a Printer supports the “document-natural-language” Operation attribute, the Printer MUST support this “document-natural-language” Document Description attribute.
9.1.23	document-number (integer(1:MAX)) 
This REQUIRED Document Description attribute is the ordinal number of the document within the job, and determines its order of being printed in a multi-document job.  The Printer MUST generate the values monotonically increasing from 1 for each job.  
9.1.24	document-printer-uri (uri)
This REQUIRED Document Description attribute is a copy of the “printer-uri” Operation attribute (see [rfc2911] §3.1.5), i.e., the URI of the Printer containing the Job which contains this Document.  Example:  ipp://www.company.com/printers/myprinter.
9.1.25	document-state (type1 enum) 
The REQUIRED “document-state” Document Description attributes identifies the current state of the document.  The values for “document-state” are a subset of the values for “job-state” ([rfc2911] §4.3.7); in particular, the “job-state” values ‘pending-held’ and ‘processing-stopped’ do not apply to “document-state”.  Even though IPP defines five values for document state (plus the out-of-band 'unknown' value - see [rfc2911] § 4.1), implementations only need to support those states which are appropriate for the particular implementation.  In other words, an IPP Printer implementation supports only those document states implemented by the output device and available to the IPP Printer implementation.
Table 12 lists the “document-state” attribute values.
Table 12 - "document-state" attribute values
“document-state” Values	
3  pending	
5  processing	
7  canceled	
8  aborted	
9  completed	

Standard enum values are:
Value		Symbolic Name and Description	
'3'		'pending' :  The Document has not started to be processed at all.	
'5'		'processing' :  One or more of:

1.	The job has begun using, or is attempting to use, one or more purely software processes that are analyzing, creating, or interpreting a PDL, etc. for the Document,
2.	The job has begun using, or is attempting to use, one or more hardware devices that are interpreting a PDL, making marks on a medium, and/or performing finishing, such as stapling, etc. for the Document,
3.	The Document is ready for printing, but the output device is not yet printing it, either because the Document hasn't reached the output device or because the Document is queued in the output device or some other spooler, awaiting the output device to print it.

The ‘processing’ state for the Document indicates that the Document has begun to be processed.  Even if the Job stops being processed, the Document remains in the ‘processing’ state until it moves to one of the three terminal states.

Implementations MAY  include additional values in the document’s ”document-state-reasons” attribute to indicate the progress of the Document, such as adding the ’printing’ value to indicate when the output device is actually making marks on paper and/or the ‘processing-to-stop-point’ value to indicate that the Printer is in the process of canceling or aborting the Document.	
'7'		'canceled' :  The Document has been canceled by a Cancel-Document operation and the Printer has completed canceling the Document and all Document status attributes have reached their final values for the Document.  While the Printer is canceling the Document, the Document remains in its current state, but the Document’s "document-state-reasons” attribute SHOULD contain the 'processing-to-stop-point' value and one of the 'canceled-by-user', 'canceled-by-operator', or 'canceled-at-device' values.  When the Document moves to the 'canceled' state, the  'processing-to-stop-point' value, if present, MUST be removed, but the 'canceled-by-xxx', if present, MUST remain.	
'8'		'aborted' :  The Document has been aborted by the system, usually while the Document was in the 'processing' state and the Printer has completed aborting the Document and all Document status attributes have reached their final values for the Document.  While the Printer is aborting the Document, the Document remains in its current state, but the Document’s " document-state-reasons” attribute SHOULD contain the 'processing-to-stop-point' and 'aborted-by-system' values.  When the Document moves to the 'aborted' state, the  'processing-to-stop-point' value, if present, MUST be removed, but the 'aborted-by-system' value, if present, MUST remain.	
'9'		'completed' :  The Document has completed successfully or with warnings or errors after processing and all of the Document media sheets have been successfully stacked in the appropriate output bin(s) and all Document status attributes have reached their final values for the Document.  The Document’s " document-state-reasons” attribute SHOULD contain one of: 'completed-successfully', 'completed-with-warnings', or 'completed-with-errors' values.	
The final value for this attribute MUST be one of: 'completed', 'canceled', or 'aborted' before the Printer removes the Document altogether.  The length of time that Documents remain in the 'canceled', 'aborted', and 'completed' states depends on implementation.
Documents reach one of the three terminal states: 'completed', 'canceled', or 'aborted', after the Job has completed all activity for the Document, including stacking output media, and all Document status attributes have reached their final values for the Document.

9.1.25.1	The “document-state” Document Description attribute and the Document object life Cycle
The “document-state” attribute is one of the most important Document Description attributes.  Figure 1 shows the values of the “document-state” attribute and the Document object life cycle as affected by actions on the Job, Document, Printer, and job processing.  Documents are not active objects.  Active objects in IPP are Printers and Jobs.  Printers and Jobs have URIs where requests are sent and acted upon.  Documents have no such URI.  Printers schedule Jobs and Jobs, once scheduled, process the Documents that they contain.  The Document’s life cycle is closely tied to the lifecycle of a Job.  Documents basically have three states.   The first is waiting to be processed by a Job (i.e. pending).  The second state is from the time the Job first starts processing the Document (i.e. processing) and until it reaches one of its terminal states.  The third state for a Document is one of its terminal states (i.e. completed, canceled, or aborted).

Figure 1 - The "document-state" Document Description attribute and the Document object life cycle
A Document object has a much simpler life cycle than a Job object.  A Document always progresses from left to right in the state diagram.  No other state transitions are defined.  
9.1.26	document-state-message (text(MAX)) 
This OPTIONAL Document Description attribute specifies information about the "document-state” and "document-state-reasons” attributes in human readable text.  If the Printer supports this attribute, the Printer MUST be able to generate this message in any of the natural languages identified by the Printer's "generated-natural-language-supported" attribute (see the "attributes-natural-language" Operation attribute specified in [rfc2911] § 3.1.4.1).
The value SHOULD NOT contain additional information not contained in the values of the "document-state" and "document-states-reasons" attributes, such as interpreter error information.  Otherwise, application programs might attempt to parse the (localized text).  For additional information such as interpreter errors for application program consumption or specific document access errors, new attributes with keyword values, needs to be developed and registered.
9.1.27	document-state-reasons (1setOf type2 keyword) 
The REQUIRED “document-state-reasons” Document Description attribute provides additional information about each document’s current state, i.e., information that augments the value of the Document’s “document-state” attribute.  
These values MAY be used with any document state for which the reason makes sense.  Some of these value definitions indicate conformance requirements; the rest are OPTIONAL.  Furthermore, when implemented, the Printer MUST return these values when the reason applies and MUST NOT return them when the reason no longer applies whether the value of the Document’s “document-state” attribute changed or not.  When the Document does not have any reasons for being in its current state, the value of the Document’s “document-state-reasons” attribute MUST be 'none'.
Some of the Job’s “job-state-reasons” values affect job scheduling, such as ‘resources-are-not-ready’ and ‘job-hold-until-specified’.  However, “document-state-reasons” values MUST NOT affect job scheduling, since Document objects are passive objects operated on by the containing Job object.
Note: While values cannot be added to the “document-state” attribute without impacting deployed clients that take actions upon receiving “document-state” values, it is the intent that additional “document-state-reasons’ values can be defined and registered without impacting such deployed clients.  In other words, the “document-state-reasons” attribute is intended to be extensible.
Table 13 lists the standard keyword values for the “document-state-reasons” attribute defined in this specification and derived from “job-state-reasons” defined in other IPP specifications as indicated in the References column.  In Table 13 the keywords are listed in alphabetic order, while in their descriptions following Table 13, they are listed in the most likely order of occurrence to help understanding.
When the Document object is supported, the Printer implementation SHOULD still support the corresponding Job level “job-state-reasons”, so that clients that do not support the Document object will receive the same information.  Also it is usually more convenient for the client to obtain just the Job level status.  However, the client SHOULD query both Job and Document attributes and convert them to some canonical form for display to the user, so that all Jobs and their Documents are displayed in a uniform manner, no matter from which clients they were submitted.
Table 13 - "document-state-reasons" attribute values
IPP Job Description / Document Description attribute name	IPP Attribute Syntax
plus
Values	Printer conformance	Reference	
document-state-reasons	1setOf type2 keyword	MUST	9.1.27	
	aborted-by-system	MAY	[rfc2911] §4.3.8	
	compression-error	MAY	[rfc2911] §4.3.8	
	digital-signature-did-not-verify	MAY	[pwg5100.7] §6.1	
	digital-signature-type-not-supported	MAY	[pwg5100.7] §6.1	
	document-access-error	MAY	[rfc2911] §4.3.8	
	document-format-error	MAY	[rfc2911] §4.3.8	
	canceled-at-device	MAY	[rfc2911] §4.3.8 *	
	canceled-by-operator	MAY	[rfc2911] §4.3.8 *	
	canceled-by-user	MAY	[rfc2911] §4.3.8 *	
	completed-successfully	MAY	[rfc2911] §4.3.8 *	
	completed-with-errors	MAY	[rfc2911] §4.3.8 *	
	completed-with-warnings	MAY	[rfc2911] §4.3.8 *	
	data-insufficient	MAY	[rfc2911] §4.3.8 *	
	digital-signature-wait	MAY	[pwg5100.7] §6.1 *	
	errors-detected	MAY	[pwg5100.7] §6.1 *	
	incoming	MAY	[rfc2911] §4.3.8 *	
	interpreting	MAY	[rfc2911] §4.3.8 *	
	none	MUST	[rfc2911] §4.3.8	
	outgoing	MAY	[rfc2911] §4.3.8 *	
	printing	MAY	[rfc2911] §4.3.8 *	
	processing-to-stop-point	MAY	[rfc2911] §4.3.8	
	queued	MAY	[rfc2911] §4.3.8 *	
	queued-for-marker	MAY	[rfc2911] §4.3.8 *	
	queued-in-device	MAY	[rfc2911] §4.3.8	
	resources-are-not-ready	MAY	[rfc2911] §4.3.8	
	resources-are-not-supported	MAY	[pwg5100.3] §6.1	
	submission-interrupted	MAY	[rfc2911] §4.3.8	
	transforming	MAY	[rfc2911] §4.3.8 *	
	unsupported-compression	MUST	[rfc2911] §4.3.8	
	unsupported-document-format	MUST	[rfc2911] §4.3.8	
	warnings-detected	MAY	[pwg5100.7] §6.1 *	
*  The state reason keyword value is derived from an existing “job-state-reasons” value. The associated value is prefixed by ‘job-‘ when it is a value of the “job-state-reasons” attribute.  The semantics for the reasons differ only by the object to which they are bound.  For example ‘job-printing’ means that at least one document in the job is printing, i.e. the job is printing, while ‘printing’ means the document within the job is printing.

For ease of understanding, the following value descriptions are presented in the order in which the reasons are likely to occur (if implemented), starting with the ‘none’ value:
'none' :  There are no reasons for the Document’s current state. This state reason is semantically equivalent to “document-state-reasons” without any value and MUST be used when there is no other value, since the 1setOf attribute syntax requires at least one value.  [rfc2911] §4.3.8
'resources-are-not-supported' : At least one of the resources needed by the Document, such as media, fonts, resource objects, etc., is not supported on any of the physical printers for which the Document is a candidate.  This condition MAY be detected when the Document is accepted, or subsequently while the Document is pending or processing, depending on implementation.  The Job containing the Document may (1) remain in its current state, (2) be moved to the 'pending-held' state, depending on implementation and/or job scheduling policy, or (3) scheduled normally, but the Printer is put into the 'stopped' state when the Document is attempted to be processed on the Printer.  This value is intended for use with an implementation that supports the "user-defined-values-supported" Printer attribute (see [pwg5100.3] § 6.1), which allows a Job to be accepted with an unsupported 'name' value.  [pwg5100.3] §6.1
'resources-are-not-ready' :  At least one of the resources needed by the Document, such as media, fonts, resource objects, etc., is not ready on any of the physical printers for which the Document is a candidate.  This condition MAY be detected when the Document is accepted, or subsequently while the Document is pending or processing, depending on implementation.  The Job containing the Document may remain in its current state or be moved to the 'pending-held' state, depending on implementation and/or scheduling policy.  [rfc2911] §4.3.8
'digital-signature-type-not-supported : The Document contains a digital signature type that is not supported.  Implementation or site policy determines the state of the Job containing the Document once this condition is detected.  [pwg5100.7] § 6.1.
‘incoming' :  The Printer is retrieving/accepting Document data as a result of a Print-Job, Print-URI, Send-Document or Send-URI operation.  [rfc2911] §4.3.8
 ‘data-insufficient' :  The Printer is expecting additional Document data before it can move the Document into the 'processing' state.  If a Printer starts processing before it has received all data, the Printer removes the 'data-insufficient' reason, but the 'incoming' remains.  If a Printer starts processing after it has received all data, the Printer removes the 'data-insufficient' reason and the 'incoming' at the same time.  [rfc2911] §4.3.8
'unsupported-compression' : The document was aborted by the system because the Printer determined while attempting to decompress the Document data that the compression is actually not among those supported by the Printer.  This value MUST be supported, since "compression” is a REQUIRED Operation attribute.  [rfc2911] §4.3.8
'compression-error' : The document was aborted by the system because the Printer encountered an error in the Document data while decompressing it.  If the Printer posts this reason, the Document data has already passed any tests that would have led to the 'unsupported-compression' job-state-reason/document-state-reason.  [rfc2911] §4.3.8
'document-access-error' :  After accepting a Print-URI or Send-URI request, the Printer could not access the Document’s reference.  This reason is intended to cover any file access problem, including file does not exist and access denied because of an access control problem.  The Printer MAY also indicate the Document access error using the "document-access-errors" Printer Description attribute.  Whether the Printer aborts the Document and moves the Document to the 'aborted' Document state or prints all Documents that are accessible and moves the Document to the 'completed' Document state and adds the 'completed-with-errors' value in the Job's "job-state-reasons" or Document’s “document-state-reasons” attribute depends on implementation and/or site policy.  This value SHOULD be supported if the Print-URI or Send-URI operations are supported.  [rfc2911] §4.3.8
'unsupported-document-format' : The Document was aborted by the system because the Document data's document-format is not among those supported by the Printer.  If the client specifies the document-format as 'application/octet-stream', the printer MAY abort the Document and post this reason even though the format is a member of the "document-format-supported" printer attribute, but not among the auto-sensed document-formats.  This value MUST be supported, since "document-format" is a REQUIRED Operation attribute.  [rfc2911] §4.3.8
'document-format-error' : The Document was aborted by the system because the Printer encountered an error in the Document data while processing it.  If the Printer posts this reason, the Document data has already passed any tests that would have led to the 'unsupported-document-format' job-state-reason/document-state-reason.  [rfc2911] §4.3.8
'submission-interrupted' :  The Document was not completely submitted for some unforeseen reason, such as: (1) the Printer has crashed before the document was closed by the client, (2) the Printer or the document transfer method has crashed in some non-recoverable way before the Document data was entirely transferred to the Printer, (3) the client crashed or failed to close the job before the time-out period.  See the description of the “multiple-operation-time-out” Printer attribute in [rfc2911] § 4.4.31.  [rfc2911] §4.3.8
'digital-signature-wait' : The Job is currently being held because the Document was submitted with a “document-digital-signature” attribute value that is not supported.  The operator MAY either cancel the job or release it to be processed.  [pwg5100.7] §6.1.
'outgoing' :  The Printer is transmitting the Document to the output device.  [rfc2911] §4.3.8
'queued' : The Document is in the 'processing' state, but more specifically, the Printer has queued the Document data.  [rfc2911] §4.3.8
'interpreting' : The Document is in the 'processing' state, but more specifically, the Printer is interpreting the Document data.  [rfc2911] §4.3.8
'queued-for-marker' : The Document is in the 'processing' state, but more specifically, the Printer has completed enough processing of the document to be able to start marking and the document is waiting for the marker.  rfc2911] §4.3.8
'printing' :  The output device is marking media for this Document. This value is useful for Printers which spend a great deal of time processing (1) when no marking is happening and then want to show that marking is now happening or (2) when the Document is in the process of being canceled or aborted while the Document remains in the 'processing' state, but the marking has not yet stopped so that impression or sheet counts are still increasing for the Document. [rfc2911] §4.3.8
'digital-signature-did-not-verify' : The Document contains a digital signature type that is supported but the signature did not verify when the Printer attempted to verify the signature. [pwg5100.7] §6.1
'canceled-by-user' :  The Document was canceled by the owner of the Job containing the Document using the Cancel-Document request, i.e., by a user whose authenticated identity is the same as the value of the originating user that created the Job, or by some other authorized end-user, such as a member of the job owner's security group.  The ‘canceled-by-user’ value SHOULD be supported for the “document-state-reasons” attribute for use with the Cancel-Document.  [rfc2911] §4.3.8
'canceled-by-operator' :  The Document was canceled by the operator using the Cancel-Document request, i.e., by a user who has been authenticated as having operator privileges (whether local or remote).  If the security policy is to allow anyone to cancel anyone's Document, then these values may be used when the Document is canceled by other than the owner of the job.  For such a security policy, in effect, everyone is an operator as far as canceling Documents is concerned.  This value SHOULD be supported if the implementation permits canceling by other than the owner of the job.  [rfc2911] §4.3.8
'canceled-at-device' :  The Document was canceled by an unidentified local user, i.e., a user at a console at the device.  This value SHOULD be supported if the implementation supports canceling Jobs/Documents at the console.  [rfc2911] §4.3.8
'aborted-by-system' :  The Document (1) is in the process of being aborted, or (2) has been aborted by the system and placed in the 'aborted' state..  This value SHOULD be supported.  [rfc2911] §4.3.8
'processing-to-stop-point' :  The requester has issued a Cancel-Document operation or the Printer has aborted the Document, but is still performing some actions on the Document until a specified stop point occurs or Document termination/cleanup is completed.
If the implementation requires some measurable time to cancel the Document in the 'processing' or 'processing-stopped' Document states, the Printer MUST use this value to indicate that the Printer is still performing some actions on the Document while the Document remains in the 'processing' state.  After all the Document’s Document Description attributes have stopped incrementing, the Printer moves the Document from the 'processing' state to the 'canceled' or 'aborted' Document states.  [rfc2911] §4.3.8
'errors-detected' : Errors were detected during the processing of this Document.  If the Printer supports this value, the Printer MUST add the value to “document-state-reasons” when it generates the first error message. That is, a single occurrence of this value is present in the “document-state-reasons” if the Printer has generated one or more errors.  An error indicates loss of information, such as a page not imaged.  A warning indicates no loss of information (see 'warnings-detected' state reason).  [pwg5100.7] §6.1
'warnings-detected' : Warnings were detected during the processing of this Document.  If the Printer supports this value, the Printer MUST add the value to “document-state-reasons” when it generates the first warning message. That is, a single occurrence of this value is present in the “document-state-reasons” if the Printer has generated one or more warnings.  A warning indicates something did not go as expected, but there was no loss of information; for example, a font substitution.  An error indicates loss of information (see 'errors-detected' state reason).  [pwg5100.7] §6.1
'completed-successfully' :  The Document completed successfully. There were no warnings or errors in printing.  This value SHOULD be supported.  [rfc2911] §4.3.8
'completed-with-warnings' :  The printing of the Document completed with warnings  This value SHOULD be supported if the implementation detects warnings.  [rfc2911] §4.3.8  
'completed-with-errors' :  The printing of the Document completed with errors (and possibly warnings too).  This value SHOULD be supported if the implementation detects errors.  [rfc2911] §4.3.8
'queued-in-device' : The Document has been forwarded to a device or print system that is unable to send back status.  The Printer sets the Document’s  “document-state” attribute to ‘completed’ and adds the 'queued-in-device' value to the Document’s " document-state-reasons” attribute to indicate that the Printer has no additional information about the Document and never will have any better information.  See the description of the "document-state” attribute above, as well as the description of "Forwarding Servers" in [rfc2911] § 4.3.7.1.  [rfc2911] §4.3.8
NOTE:  The semantics of this attribute or the set of valid values may be different for different document formats.
9.1.28	document-uri (uri) 
This Document Description attribute is the URI that the client supplied in the corresponding Operation attribute in a Send-URI operation (see [rfc2911] § 3.3.2).  The Printer MUST support this attribute if the Printer supports the Send-URI operation (see section 4.2). 
Note: this URI identifies the source location of the document data.  This URI is NOT the identifier of the Document Object.  The simple identifier of the Document is the “document-number”.
9.1.29	errors-count (integer(0:MAX))
This OPTIONAL Document Description attribute counts the number of errors that the Printer encounters while processing and printing the Document object.  An error indicates loss of information, such as a page not imaged.  A warning indicates no loss of information (see [pwg5100.7] job-errors-count §5.2).
9.1.30	impressions (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-impressions” Job Description attribute (see [rfc2911] job-impressions §4.3.17.2) applied to the Document object.    The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see §4), but may, as with “job-impressions”, change the value if it is able to compute a value that is more accurate than the client supplied value (see [rfc2911] §4.3.17).
9.1.31	impressions-completed (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-impressions-completed” Job Description attribute (see [rfc2911] job-impressions-completes §4.3.18.2) applied to the Document object.
9.1.32	impressions-completed-current-copy (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc3381] §4.4) applied to the Document object.
9.1.33	k-octets (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-k-octets” Job Description attribute (see [rfc2911] job-k-octets §4.3.17.1) applied to the Document object.  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see §4), but may, as with “job-k-octets” change the value if it is able to compute a value that is more accurate than the client supplied value (see [rfc2911] §4.3.17).
9.1.34	k-octets-processed (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-k-octets-processed” Job Description attribute (see [rfc2911] job-k-octets-processed §4.3.18.1) applied to the Document object.
9.1.35	last-document  (boolean) 
This REQUIRED Document Description attribute indicates whether or not this Document is the last Document in the Job.   See [rfc2911] §4.3.12.  The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see §4).  Note that the last Document in a Job may not be known by the Printer until the client sends a final request containing no document data and the “last-document” attribute set to ‘true’.  In this event the Printer MUST set the “last-document” attribute of the Document created from the most recent Document Creation request ‘true’.  No Document object is created from the final request containing no document data and the “last-document” attribute set to ‘true’ sent to close the Job.
9.1.36	media-sheets (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-media-sheets” Job Description attribute (see [rfc2911] job-media-sheets §4.3.17.3) applied to the Document object.   The Printer sets this Document Description attribute from the corresponding Operation attribute supplied by the client in the Document Creation operation (see §4), but may, as with “job-media-sheets”, change the value if it is able to compute a value that is more accurate than the client supplied value (see [rfc2911] §4.3.17).
9.1.37	media-sheets-completed (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-media-sheets-completed” Job Description attribute (see [rfc2911] §job-media-sheets-completed 4.3.18.3) applied to the Document object.
9.1.38	more-info (uri) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-more-info” Job Description attribute (see [rfc2911] job-more-info §4.3.4) applied to the Document object.
9.1.39	output-device-assigned (name(127)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.7.2) applied to the Document object.  
9.1.40	printer-up-time (integer (1:MAX)) 
This REQUIRED Document Description attribute indicates the amount of time (in seconds) that the Printer implementation has been up and running.  This attribute is an alias for the "printer-up-time" Printer Description attribute (see [rfc2911] job-printer-up-time §4.4.29).  
A client MAY request this attribute in a Get-Document-Attributes or Get-Documents request and use the value returned in combination with other requested Event Time Document Description Attributes in order to display time attributes to a user.  The difference between this attribute and the 'integer' value of a "time-at-xxx" attribute is the number of seconds ago that the "time-at-xxx" event occurred.  A client can compute the wall-clock time at which the "time-at-xxx" event occurred by subtracting this difference from the client's wall-clock time. 
9.1.41	sheet-completed-copy-number (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc3381] §4.2) applied to the Document object. 
9.1.42	time-at-completed (integer (MIN:MAX)) 
This REQUIRED Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.3) applied to the Document object.
9.1.43	time-at-creation (integer (MIN:MAX)) 
This REQUIRED Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.1) applied to the Document object.
9.1.44	time-at-processing (integer (MIN:MAX)) 
This REQUIRED Document Description attribute has the same semantics as the corresponding Job Description attribute (see [rfc2911] §4.3.14.2) applied to the Document object.
9.1.45	warnings-count (integer(0:MAX)) 
This OPTIONAL Document Description attribute has the same semantics as the corresponding “job-warnings-count” Job Description attribute (see [pwg5100.7] job-warnings-count §5,4) applied to the Document object.   .A warning indicates something did not go as expected, but there was no loss of information;  for example, a font substitution.  An error indicates loss of information (see section 9.1.29).  
9.2	“-actual” Job and Document Description Attributes
For each Template attribute defined in this specification or in any other IPP extension documents, an associated Description attribute is defined.  The associated attribute is referred to as an “-actual” attribute,.  The name of such attributes is found by taking the name of the Template attribute and appending “-actual”. The “-actual” attribute is always multi-valued.  The base type of the multi-valued attribute is derived from the Description attribute.
The “-actual” attributes provide a summary of the Template attribute values that were applied at the level it occurs.  For the Document Description “-actual”, it contains all the values of the Document Template attribute that were applied to the Document and the pages within the Document.  The Job Description “-actual” lists all the Document and Job Template values that were applied to the Job, its contained Documents, and the pages of the Document. These new attributes are OPTIONAL for a Printer to support, and are OPTIONAL for a client to use.
Table 14 lists the “-actual” Document Description attributes for all Document Template defined in this specification.
Table 14 “-actual” Job/Document Description attributes
Template Attribute	“-actual” Description attribute	Job	Document	
copies (integer(1:MAX))	copies-actual (1setOf integer(1:MAX))	Yes	Yes	
cover-back (collection)	cover-back-actual (1setOf (collection))	Yes	Yes	
cover-front (collection)	cover-front-actual (1setOf (collection))	Yes	Yes	
finishings (1setOf (type2 enum))	finishings-actual (1setOf (type2 enum))	Yes	Yes	
finishings-col (collection)	finishings-col-actual (1setOf (collection))	Yes	Yes	
force-front-side (1setOf integer(1:MAX))	force-front-side-actual (1setOf (1setOf integer(1:MAX)))	Yes	Yes	
imposition-template (type3 keyword | name(MAX))	imposition-template-actual (1setOf (type3 keyword | name(MAX)))	Yes	Yes	
insert-sheet (collection)	insert-sheet-actual (1setOf (collection))	Yes	Yes	
job-account-id (name(MAX))	job-account-id-actual (1setOf (name(MAX)))	Yes	No	
job-accounting-sheets (collection)	job-accounting-sheets-actual (1setOf (collection))	Yes	No	
job-accounting-user-id (name(MAX))	job-accounting-user-id-actual (1setOf (name(MAX)))	Yes	No	
job-copies (integer(1:MAX))	job-copies-actual (1setOf integer(1:MAX))	Yes	No	
job-collation-type (type2 keyword)	job-collation-type-actual (1setOf (type2 keyword))	Yes	No	
job-cover-back (collection)	job-cover-back-actual (1setOf (collection))	Yes	No	
job-cover-front (collection)	job-cover-front-actual (1setOf (collection))	Yes	No	
job-error-sheet (collection)	job-error-sheet-actual (1setOf (collection))	Yes	No	
Job-finishings (1setOf (type2 enum))	Job-finishings-actual (1setOf (type2 enum))	Yes	No	
Job-finishings-col (collection)	Job-finishings-col-actual (1setOf (collection))	Yes	No	
job-hold-until (type3 keyword | name)	job-hold-until-actual (1setOf (type3 keyword | name))	Yes	No	
job-message-to-operator (text(MAX))	job-message-to-operator-actual (1setOf (text(MAX)))	Yes	No	
job-priority (integer(1:100))	job-priority-actual (1setOf integer(1:100))	Yes	No	
job-sheet-message  (text(MAX))	job-sheet-message-actual (1setOf (text(MAX)))	Yes	No	
job-sheets (type3 keyword | name)	job-sheets-actual (1setOf (type3 keyword | name))	Yes	No	
job-sheets-col (collection)	job-sheets-col-actual (1setOf (collection))	Yes	No	
media (type3 keyword | name(MAX))	media-actual (1setOf (type3 keyword | name(MAX)))	Yes	Yes	
media-col (collection)	media-col-actual (1setOf (collection))	Yes	Yes	
media-input-tray-check (type3 keyword | name(MAX))	media-input-tray-check-actual (1setOf (type3 keyword | name(MAX)))	Yes	Yes	
multiple-document-handling (type2 keyword)	multiple-document-handling-actual (1setOf (type2 keyword))	Yes	No	
number-up (integer(1:MAX))	number-up-actual (1setOf integer(1:MAX))	Yes	Yes	
orientation-requested (type2 enum)	orientation-requested-actual (1setOf (type2 enum))	Yes	Yes	
output-bin (type2 keyword | name(MAX))	output-bin-actual (1setOf (type2 keyword | name(MAX)))	Yes	Yes	
output-bin(name(MAX))	output-bin-axtual(1setOf (name(MAX))			
overrides (1setOf collection)	overrides-actual (1setOf collection)	Yes	Yes	
page-delivery (type2 keyword)	page-delivery-actual (1setOf (type2 keyword))	Yes	Yes	
page-order-received (type2 keyword)	page-order-received-actual (1setOf (type2 keyword))	Yes	Yes	
page-ranges (1setOf rangeOfInteger(1:MAX))	page-ranges-actual (1setOf rangeOfInteger(1:MAX))	Yes	Yes	
presentation-direction-number-up (type2 keyword)	presentation-direction-number-up-actual (1setOf (type2 keyword))	Yes	Yes	
print-quality (type2 enum)	print-quality-actual (1setOf (type2 enum))	Yes	Yes	
printer-resolution (resolution)	printer-resolution-actual (1setOf resolution)	Yes	Yes	
separator-sheets (collection)	separator-sheets-actual (1setOf (collection))	Yes	Yes	
sheet-collate (type2 keyword)	sheet-collate-actual (1setOf (type2 keyword))	Yes	Yes	
sides (type2 keyword)	sides-actual (1setOf (type2 keyword))	Yes	Yes	
x-image-position (type2 keyword)	x-image-position-actual (1setOf (type2 keyword))	Yes	Yes	
x-image-shift (integer (MIN:MAX))	x-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	
x-side1-image-shift (integer (MIN:MAX))	x-side1-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	
x-side2-image-shift (integer (MIN:MAX))	x-side2-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	
y-image-position (type2 keyword)	y-image-position-actual (1setOf (type2 keyword))	Yes	Yes	
y-image-shift (integer (MIN:MAX))	y-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	
y-side1-image-shift (integer (MIN:MAX))	y-side1-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	
y-side2-image-shift (integer (MIN:MAX))	y-side2-image-shift-actual (1setOf (integer (MIN:MAX)))	Yes	Yes	

Note that Table 14 is not meant to be an exhaustive list of the “-actual” attributes a Printer might implement. Any Document Template attributes created by present, or future IPP standard documents, implies a corresponding “-actual” Document Description attribute exists and can be implemented by a Printer or queried by a client.
10	New Printer attributes
This section newly defined Printer attributes. Printer attributes are divided into three disjoint groups:

Job Template attributes (JT)	These Printer attributes are related directly to the “xxx” Job Template attributes that a client can supply in a Job Creation request as follows:
1.	“xxx-supported” indicates the supported values.
2.	“xxx-default” indicates the values that will be used if the client and the PDL omit the attribute.
3.	“xxx-ready” indicates the supported values that are available without human intervention, for those few attributes that require human intervention, such as “media” and possibly “job-finishing”.
These Printer attributes are also returned in a Get-Printer-Attributes response when the client supplies: “requested-attributes” = ‘job-template’.	
Document Template attributes (DT)	These Printer attributes are related directly to the “xxx” Document Template attributes that a client can supply in a Document Creation request as follows:
1.	“xxx-supported” indicates the supported values.
2.	“xxx-default” indicates the values that will be used if the client and the PDL omit the attribute.
3.	“xxx-ready” indicates the supported values that are available without human intervention, for those few attributes that require human intervention, such as “media” and possibly “finishing”.
These Printer attributes are also returned in a Get-Printer-Attributes response when the client supplies: “requested-attributes” = ‘document-template’ (new value defined in this specification).	
Printer Description attributes (PD)	These Printer attributes describe the Printer, such as “printer-current-time” and “printer-is-accepting-jobs”.  Some of them are “xxx-supported” and “xxx-default” for Operation attributes that the client can supply in a Job Creation request.	
neither (-)	These Printer attributes describe supported and defaults for member attributes of collection Job Template attributes.	

In a Get-Printer-Attributes request, a client can request all of the Printer attributes in the Job Template (JT), Document Template (DT), or Printer Description (PD) groups by supplying the ‘job-template’, ‘document-template’, or ‘printer-description’ group name, respectively.  The client can also request ‘all’.
In Table 15, the column labels are:
“Attribute Syntax” - indicates the attribute syntax (see [rfc2911] § 4.1).  Many “xxx-default” and “xxx-supported” attributes have the ‘collection’ syntax which consists of a number of member attributes.  These member attributes are not listed in this table when they are the same as the corresponding “xxx” attribute in Table 10.  Only those few Printer attribute collection attributes that do not have a corresponding Job Template attribute show the member attributes in this table.  
“Grp” - indicates to which group the attribute belongs.  “PD” = Printer Description; “JT” = Job Template; “DT” = Document Template as explained above.
“Printer Conf.” - indicates the Printer conformance requirements for supporting the attribute.  Those attributes labeled as “MAY” may have conditional requirements that require their support, if the Printer supports a related attribute, operation, or feature.  For example, all Job Template attributes are OPTIONAL for a Printer to support.  However, if a Printer supports Job Template attribute “xxx”, then it MUST also support the corresponding “xxx-default” and “xxx-supported” attributes.  Similarly, if Event Notification is supported, then some of the attributes indicated as “MAY” in this table become MUST.  
“Reference” - lists the IETF or IEEE-ISTO specification which defines the semantics of the attribute.
Table 15 – New Printer attributes 
Printer attribute name
(Job Template, Document Template & Printer Description)	Attribute Syntax	Grp	Printer Conf.	Reference	
document-creation-attributes-supported	1setOf type2 keyword	PD	MUST	[this-spec] §10.1	

10.1	document-creation-attributes-supported (1setOf type2 keyword)
This REQUIRED Printer Description attribute lists the keyword names of the Document Template and Operation attributes that the Printer will accept in the Send-Document and Send-URI Document Creation operations.  Note: The attribute “document-uri” is operation specific.  Implementations that support Send-URI MUST include the ‘document-uri’ keyword in “document-creation-attributes-supported”.  Implementations that do not support Send-URI MUST NOT include the ‘document-uri’ keyword in “document-creation-attributes-supported”.  Inclusion of the ‘document-uri’ keyword in “document-creation-attributes-supported” does not imply that the “document-URI” attribute is valid for Send-Document.   
11	New Values for Existing Printer Description Attributes
This section contains those attributes for which additional values are added.
11.1	operations-supported (1setOf type2 enum)
The following “operation-id” values are added in order to support the new operations defined in this document:
Table 16 – Operation-id assignments
Value	Operation Name	Reference	
0x0033	Cancel-Document	§4.5	
0x0034	Get-Document-Attributes	§4.3	
0x0035	Get-Documents	§3.3	
0x0036	Delete-Document	§5.4	
0x0037	Set-Document-Attributes	§4.4	

12	Encodings of Additional Attribute Tags
This section assigns values to an attributes tag as an extension to the encoding defined in [rfc2910].
The “document-attributes-tag” delimits Document Template Attributes Groups in requests and Document Attributes Groups in responses.
The following table specifies the values for the delimiter tag:
Tag Value (Hex)	Meaning	
0x09	“document-attributes-tag”	

13	Conformance Summary
This section specifies the conformance requirements for Printers and clients.  This section does not change any of the preceeding normative definitions.  If there is any conflict , the previous definitions apply.
13.1	Printer conformance requirements
In order to conform to this specification, a Printer:
1.	MUST meet the conformance requirements for Printers specified in [rfc2911].
2.	MUST support the Job operation that section 3 REQUIRES a Printer to support.
3.	MUST support the Document operations that section 4 REQUIRES a Printer to support.
4.	MAY support any of the Administrative operations in section 5.
5.	MUST support the Attribute Precedence semantics specified in section 6 for the levels that the Printer supports.
6.	MUST support the Operation attributes in the Print-Job and Send-Document operations and, if supported, the Print-URI and Send-URI operations, that section 7 REQUIRES a Printer to support.
7.	MUST support any Operation attributes that section 7 REQUIRES a Printer to support along with the corresponding Document Description attributes that section 9.1 REQUIRES a Printer to support and any "xxx-default" and "xxx-supported" Printer attributes that section 9.2 REQUIRES a Printer to support.
8.	MAY support any of the Document Template attributes in Document Creation operations as indicated in section 8 and MUST NOT support them for contexts for where they are not defined as indicated in Table 10 with an  “n”.
9.	MUST support the Document Description attributes that section 9.1 REQUIRES a Printer to support.
10.	MUST support the Printer attributes that section 9.2 REQUIRES a Printer to support..
11.	MUST support the values of Printer Description attributes that section 11 REQUIRES a Printer to support.
13.2	Client conformance requirements
In order to conform to this specification, a client:
1.	MUST meet the conformance requirements for clients specified in [rfc2911].
2.	MAY support any of the new operations, or new semantics for existing operations, defined in sections 3, 4, and 5.  
3.	MUST supply the Operation attributes that section 7 REQUIRES a client to supply in operation requests.
4.	MUST supply any Document Template attributes in the format that section 8 REQUIRES a client to supply in Document Creation operations and MUST NOT support them for contexts for where they are not defined as indicated in the Table 10 with an “n”.
5.	SHOULD support any of the Document Description attributes that section 9.1 REQUIRES a Printer to support.
6.	MAY support any of the Printer attributes listed in section 9.2.
7.	MAY support any of the values of the Printer Description attributes in section 11.
14	Normative References
 [adm-ops]
	Kugler, C., Hastings, T., Lewis, H., "Internet Printing Protocol (IPP): Job and Printer Administrative Operations", <draft-ietf-ipp-ops-set2-03.txt>, July 17, 2001.
 [ippact]
	Carney, D., and H. Lewis, “Internet Printing Protocol (IPP), “-actual” attributes extension”, work in progress, January 31, 2003, ftp://ftp.pwg.org/pub/pwg/ipp/new_ACT/pwg-ipp-actual-attrs-v04-030131.pdf
 [not-srv]
	Hastings, T., Lewis, H, and Ira McDonald, “Distributed Notification Server”, September 26, 2002, work in progress to become IEEE-ISTO 5100.6-2002, ftp://ftp.pwg/org/pub/pwg/ipp/new_NOT/ipp-dist-not-service-020926.doc
[ntfy]
	Herriot, R., Hastings, T., Shepherd, M., deBry, R., Isaacson, S., Martin, J., and R. Bergman, "Internet Printing Protocol/1.1: Event Notifications and Subscriptions", <draft-ietf-ipp-not-spec-08.txt>, November 19, 2001.
 [pwg5100.1]
	Hastings, T., Fullman, D., "Internet Printing Protocol (IPP): “finishings” attribute values extension”, IEEE-ISTO 5100.1-2001, February 5, 2001, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.1.pdf
[pwg5100.2]
	Hastings, T., and R. Bergman, “Internet Printing Protocol (IPP): output-bin attribute extension”, IEEE-ISTO 5100.2-2001, February 7, 2001, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.2.pdf.
 [pwg5100.3]
	Ocke, K., Hastings, T., "Internet Printing Protocol (IPP): Production Printing Attributes - Set1", IEEE-ISTO 5100.3-2001, February 12, 2001, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.3.pdf.
[pwg5100.4-2001]
	Herriot, R., Ocke, K., "Internet Printing Protocol (IPP): Override Attributes for Documents and Pages", IEEE-ISTO 5100.4-2001, February 7, 2001, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.4.pdf.
[pwg5100.6]
	Zehler, P., Herriot, R., Ocke, K., "Internet Printing Protocol (IPP): Page Overrides ", IEEE-ISTO 5100.6-2003, October 31, 2003, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.6.pdf
 [pwg5100.7]
	Hastings, T. and P. Zehler, "Internet Printing Protocol (IPP): Job Extensions", IEEE-ISTO 5100.7-2003, October 31, 2003, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.7.pdf.
 [rfc2911]
	R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell, "Internet Printing Protocol/1.1: Model and Semantics", RFC 2911,  September 2000.
[rfc3380]
	Hastings, T., Herriot, R., Kugler, C., and H. Lewis, "Internet Printing Protocol (IPP): Job and Printer Set Operations", RFC 3380, September 2002.
[rfc3381]
	Hastings, T., Lewis, H., and R. Bergman, "Internet Printing Protocol (IPP): Job Progress Attributes", RFC3381, September 2002.
[rfc3382]
	deBry, R., Hastings, T., Herriot, R., Ocke, K., and P. Zehler, "Internet Printing Protocol (IPP): The ‘collection’ attribute syntax", RFC 3382, September 2002.
[upnp]
	Microsoft, “Basic PrintBasic:1.0 Service Template Version 1.01 For Universal Plug and Play Version 1.0”
15	Informative References
 [dss]
	U.S. Department of Commerce, "Digital Signature Standard (DSS)", Federal Information Processing Standards Publication 186-1 (FIPS PUB 186-1), December 15, 1998.  
[fsg-jt] 
	Free Software Group, Open Printing Job Ticket API, Visit: http://www.freestandards.org/openprinting/
[iso12639]
	ISO 12639:1998 Graphic technology -- Prepress digital data exchange -- Tag image file format for image technology (TIFF/IT), 1998.
[iso15930]
	ISO 15930-1:2001 Graphic technology -- Prepress digital data exchange -- Use of PDF -- Part 1: Complete exchange using CMYK data (PDF/X-1 and PDF/X-1a), 2001.
[pdf]
	“Adobe Portable Document Format”,  Version 1.4, PDF Reference, Third Edition, Adobe Systems Incorporated, http://www.adobe.com, December 2001.
[pwg-psi]
	“Print Service Interface (PSI)”, work in progress to become a PWG IEEE-ISTO standard.  Visit http://www.pwg.org/.
[pwg-sm]
	Zehler, P., and S. Albright, “PWG Semantic Model”, work in progress to become a PWG IEEE-ISTO standard, version 0.27, March 31, 2003.  ftp://ftp.pwg.org/pub/pwg/Semantic-Model/wd-sm010-20030331.pdf  
[rfc1991]
	D. Atkins, W. Stallings, P. Zimmermann, "PGP Message Exchange Formats", RFC 1991, August, 1996. 
[rfc2046]
	Freed, N., and N. Borenstein, “Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types”, RFC 2046, November 1996.
[rfc2565]
	Herriot, R., Butler, S., Moore, P., and R.  Turner, "Internet Printing Protocol/1.0: Encoding and Transport", RFC 2565, April 1999.
[rfc2566]
	R.  deBry, T.  Hastings, R.  Herriot, S.  Isaacson, and P.  Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 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., Martin, J., "Mapping between LPD and IPP Protocols", RFC 2569, April 1999.
[rfc2616]
	R.  Fielding, J.  Gettys, J.  Mogul, H.  Frystyk, L.  Masinter, P.  Leach, T.  Berners-Lee, “Hypertext Transfer Protocol - HTTP/1.1”, RFC 2616, June 1999.
[rfc2634]
	P. Hoffman, "Enhanced Security Services for S/MIME", RFC 2634, June 1999.
[rfc3196]
	Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. Holst, “Internet Printing Protocol/1.1: Implementer’s Guide”, RFC 3196, November 2001.
[rfc3239]
	Kugler, C., Lewis, H. and T. Hastings, “Internet Printing Protocol (IPP): Requirements for Job, Printer, and Device Administrative Operations”, RFC 3239, February 2002.
[xmldsig]
D. Eastlake, J. Reagle, D. Solo "XML-Signature Syntax and Processing", <draft-ietf-xmldsig-core-11.txt>, October 31, 2000.
16	IANA Considerations
This section contains the registration information for IANA to add to the various IPP Registries according to the procedures defined in RFC 2911 [rfc2911] § 6 to cover the definitions in this document.  The resulting registrations will be published in the http://www.iana.org/assignments/ipp-registrations registry.
Note to the RFC Editor:  Replace the References below to[pwg5100.5]   with the IEEE PWG number for the appropriate document, so that it accurately reflects the content of the information for the IANA Registry.
16.1	Attribute Registrations
The following table lists all the attributes defined in this specification.  These are to be registered according to the procedures in RFC 2911 [rfc2911] § 6.2.  If the attribute has a separate sub-section definition in this specification, that sub-section is listed as the Reference.  This specification lists most Job Template attributes as also being Document Template attributes.  However, the definitions of these Document Template attributes are not duplicated in this specification.  Instead, the Reference column in this sub-section indicates Section 8 which contains a table of all Job Template and corresponding Document Template attributes (including dropping the “job-“ prefix).  This table contains the reference in another specification that completely defines each attribute.   These Document Template attributes will also be added to the IANA IPP Registry under the Document Template attributes with a reference to this specification and Section 8.

Attribute Name (attribute syntax)                Reference    Section
----------------------------------               ----------   --------
Document Description attributes:
attributes-charset (charset)                    [pwg5100.5]    9.1.1
attributes-natural-language (naturalLanguage)   [pwg5100.5]    9.1.2
compression (type3 keyword)                     [pwg5100.5]    9.1.3
copies-actual (1setOf integer(1:MAX))           [pwg5100.5]    9.2
cover-back-actual (1setOf collection)           [pwg5100.5]    9.2
   cover-type (type2 keyword)                   [pwg5100.5]    8
   media  (type3 keyword | name)                [pwg5100.5]    8
   media-col  (collection)                      [pwg5100.5]    8
cover-front-actual (1setOf collection)          [pwg5100.5]    9.2
   cover-type (type2 keyword)                   [pwg5100.5]    8
   media  (type3 keyword | name)                [pwg5100.5]    8
   media-col  (collection)                      [pwg5100.5]    8
current-page-order (type2 keyword)              [pwg5100.5]    9.1.4
date-time-at-completed (dateTime)               [pwg5100.5]    9.1.5
date-time-at-creation (dateTime)                [pwg5100.5]    9.1.6
date-time-at-processing (dateTime)              [pwg5100.5]    9.1.7
detailed-status-messages (1setOf text(MAX))     [pwg5100.5]    9.1.8
document-access-errors (1setOf text(MAX))       [pwg5100.5]    9.1.9
document-charset (charset)                      [pwg5100.5]    9.1.10
document-digital-signature (type2 keyword)      [pwg5100.5]    9.1.11
document-format (mimeMediaType)                 [pwg5100.5]    9.1.12
document-format-details (1setOf collection)     [pwg5100.5]    9.1.13
document-format-details-detected (1setOf collection)
                                                [pwg5100.5]    9.1.14
document-format-detected (mimeMediaType)        [pwg5100.5]    9.1.15
document-format-version (text(127))             [pwg5100.5]    9.1.16
document-format-version-detected (text(127))    [pwg5100.5]    9.1.17
document-job-id (integer(1:MAX))                [pwg5100.5]    9.1.11
document-job-uri (uri)                          [pwg5100.5]    9.1.19
document-message (text(MAX))                    [pwg5100.5]    9.1.20
document-name (name(MAX))                       [pwg5100.5]    9.1.21
document-natural-language (naturalLanguage)     [pwg5100.5]    9.1.22
document-number (integer(1:MAX))                [pwg5100.5]    9.1.23
document-printer-uri (uri)                      [pwg5100.5]    9.1.24
document-state (type1 enum)                     [pwg5100.5]    9.1.25
document-state-message (text(MAX))              [pwg5100.5]    9.1.26
document-state-reasons (1setOf type2 keyword)   [pwg5100.5]    9.1.27
document-uri (uri)                              [pwg5100.5]    9.1.28
errors-count (integer(0:MAX))                   [pwg5100.5]    9.1.29
finishings-actual (1setOf type2 enum)           [pwg5100.5]    9.2
finishings-col-actual (1setOf collection)       [pwg5100.5]    9.2
   finishing-template (name (MAX))              [pwg5100.5]    8
   stitching (collection)                       [pwg5100.5]    8
     stitching-reference-edge (type2 keyword)   [pwg5100.5]    8
     stitching-offset (integer(0:MAX))          [pwg5100.5]    8
     stitching-locations (1setOf integer(0:MAX))[pwg5100.5]    8
force-front-side-actual (1setOf integer(1:MAX)  [pwg5100.5]    9.2
impressions  (integer(0:MAX))                   [pwg5100.5]    9.1.30
impressions-completed (integer(0:MAX))          [pwg5100.5]    9.1.31
impressions-completed-current-copy (integer(0:MAX))
                                                [pwg5100.5]    9.1.32
imposition-template-actual (1setOf type3 keyword|name)
                                                [pwg5100.5]    9.2
insert-sheet-actual (1setOf collection)         [pwg5100.5]    9.2
   insert-after-page-number (integer(0:MAX))    [pwg5100.5]    8
   insert-count (integer(0:MAX))                [pwg5100.5]    8
   media (type3 keyword | name)                 [pwg5100.5]    8
   media-col (collection)                       [pwg5100.5]    8
k-octets  (integer(0:MAX))                      [pwg5100.5]    9.1.33
k-octets-processed (integer(0:MAX))             [pwg5100.5]    9.1.34
last-document  (boolean)                        [pwg5100.5]    9.1.35
media-actual (1setOf type3 keyword|name)        [pwg5100.5]    9.2
media-col-actual (1setOf collection)            [pwg5100.5]    9.2
   media-back-coating (type3 keyword|name(MAX)) [pwg5100.5]    8
   media-color (type3 keyword|name(MAX))        [pwg5100.5]    8
   media-front-coating (type3 keyword|name(MAX))[pwg5100.5]    8
   media-hole-count (integer(0:MAX))            [pwg5100.5]    8
   media-info (text(255))                       [pwg5100.5]    8
   media-key (type3 keyword|name(MAX))          [pwg5100.5]    8
   media-order-count (integer(1:MAX))           [pwg5100.5]    8
   media-preprinted (type3 keyword|name(MAX))   [pwg5100.5]    8
   media-recycled (type3 keyword|name(MAX))     [pwg5100.5]    8
   media-size (collection)                      [pwg5100.5]    8
     x-dimension (integer(0:MAX))               [pwg5100.5]    8
     y-dimension (integer(0:MAX))               [pwg5100.5]    8
   media-type (type3 keyword|name(MAX))         [pwg5100.5]    8
   media-weight-metric (integer(0:MAX))         [pwg5100.5]    8
media-input-tray-check-actual (1setOf type3 keyword|name)
                                                [pwg5100.5]    9.2
media-sheets  (integer(0:MAX))                  [pwg5100.5]    9.1.36
media-sheets-completed (integer(0:MAX))         [pwg5100.5]    9.1.37
more-info (uri)                                 [pwg5100.5]    9.1.38
number-up-actual (1setOf integer)               [pwg5100.5]    9.2
orientation-requested-actual (1setOf type2 enum)[pwg5100.5]    9.2
output-bin-actual (1setOf name(MAX))            [pwg5100.5]    9.2
overrides-actual (1setOf collection)            [pwg5100.5]    9.2
   pages (1setOf RangeOfInteger(1:MAX)))        [pwg5100.5]    8
   document-numbers (1setOf RangeOfInteger(1:MAX)))
                                                [pwg5100.5]    8
   document-copies (1setOf RangeOfInteger(1:MAX)))
                                                [pwg5100.5]    8
   <any other Template attribute affecting pages>[pwg5100.5]  8
output-device-assigned (name(127))              [pwg5100.5]    9.1.39
page-delivery-actual (1setOf type2 keyword)     [pwg5100.5]    9.2
page-order-received-actual (1setOf type2 keyword)[pwg5100.5]  9.2
page-ranges-actual (1setOf rangeOfInteger(1:MAX))[pwg5100.5]  9.2
presentation-direction-number-up-actual (1setOf type2 keyword)
                                                [pwg5100.5]    9.2
print-quality-actual (1setOf type2 enum)        [pwg5100.5]    9.2
printer-resolution-actual (1setOf resolution)   [pwg5100.5]    9.2
printer-up-time (integer (1:MAX))               [pwg5100.5]    9.1.40
separator-sheets-actual (1setOf collection)     [pwg5100.5]    9.2
  separator-sheets-type (type3 keyword|name(MAX))[pwg5100.5]  8
  media(type3 keyword|name(MAX))                [pwg5100.5]    8
  media-col(collection)                         [pwg5100.5]    8
sheet-collate-actual (1setOf type2 keyword)     [pwg5100.5]    9.2
sheet-completed-copy-number (integer(0:MAX))    [pwg5100.5]    9.1.41
sides-actual (1setOf type2 keyword)             [pwg5100.5]    9.2
time-at-completed (integer (MIN:MAX))           [pwg5100.5]    9.1.42
time-at-creation (integer (MIN:MAX))            [pwg5100.5]    9.1.43
time-at-processing (integer (MIN:MAX))          [pwg5100.5]    9.1.44
x-image-position-actual (1setOf type2 keyword)  [pwg5100.5]    9.2
x-image-shift-actual (1setOf integer(MIN:MAX))  [pwg5100.5]    9.2
x-side1-image-shift-actual (1setOf integer(MIN:MAX))
                                                [pwg5100.5]    9.2
x-side2-image-shift-actual (1setOf integer(MIN:MAX))
                                                [pwg5100.5]    9.2
y-image-position-actual (1setOf type2 keyword)  [pwg5100.5]    9.2
y-image-shift-actual (1setOf integer(MIN:MAX))  [pwg5100.5]    9.2
y-side1-image-shift-actual (1setOf integer(MIN:MAX))
                                                [pwg5100.5]    9.2
y-side2-image-shift-actual (1setOf integer(MIN:MAX))
                                                [pwg5100.5]    9.2

Document Templates attributes:
copies (integer(1:MAX))                         [pwg5100.5]      8 
cover-back (collection)                         [pwg5100.5]      8 
  cover-type (type2 keyword)                    [pwg5100.5]      8 
  media (type3 keyword | name(MAX))             [pwg5100.5]      8 
  media-col (collection)                        [pwg5100.5]      8 
cover-front (collection)                        [pwg5100.5]      8 
  cover-type (type2 keyword)                    [pwg5100.5]      8 
  media (type3 keyword | name(MAX))             [pwg5100.5]      8 
  media-col (collection)                        [pwg5100.5]      8 
feed-orientation (type3 keyword)                [pwg5100.5]      8 
finishings (1setOf type2 enum)                  [pwg5100.5]      8 
finishings-col (collection)                     [pwg5100.5]      8 
  finishing-template (name(MAX))                [pwg5100.5]      8 
  stitching (collection)                        [pwg5100.5]      8 
    stitching-locations (1setOf integer(0:MAX)) [pwg5100.5]      8 
    stitching-offset (integer (0:MAX))          [pwg5100.5]      8 
    stitching-reference-edge (type2 keyword)    [pwg5100.5]      8 
font-name-requested (name(MAX))                 [pwg5100.5]      8
font-size-requested (integer(1:MAX))            [pwg5100.5]      8
force-front-side (1setOf integer(1:MAX))        [pwg5100.5]      8 
imposition-template (type3 keyword | name(MAX)) [pwg5100.5]      8 
insert-sheet (1setOf collection)                [pwg5100.5]      8 
  insert-after-page-number (integer(0:MAX))     [pwg5100.5]      8 
  insert-count (integer(0:MAX))                 [pwg5100.5]      8 
  media (type3 keyword | name(MAX))             [pwg5100.5]      8 
  media-col (collection)                        [pwg5100.5]      8 
media (type3 keyword | name(MAX))               [pwg5100.5]      8 
                                                [pwg5100.5]      8 
media-col (collection)                          [pwg5100.5]      8 
  media-back-coating (type3 keyword | name(MAX))[pwg5100.5]      8 
  media-color (type3 keyword | name(MAX))       [pwg5100.5]      8 
  media-front-coating (type3 keyword | name(MAX))[pwg5100.5]    8 
  media-grain (type3 keyword | name(MAX))       [pwg5100.5]      8
  media-hole-count (integer(0:MAX))             [pwg5100.5]      8 
  media-info (text(255))                        [pwg5100.5]      8 
  media-key (type3 keyword | name(MAX))         [pwg5100.5]      8 
  media-material (type3 keyword | name(MAX))    [pwg5100.5]      8 
  media-order-count (integer(1:MAX))            [pwg5100.5]      8 
  media-preprinted (type3 keyword | name(MAX))  [pwg5100.5]      8 
  media-recycled (type3 keyword | name(MAX))    [pwg5100.5]      8 
  media-size (collection)                       [pwg5100.5]      8 
    x-dimension (integer(0:MAX))                [pwg5100.5]      8 
    y-dimension (integer(0:MAX))                [pwg5100.5]      8 
  media-thickness (integer(1:MAX))              [pwg5100.5]      8 
  media-tooth (type3 keyword | name(MAX))       [pwg5100.5]      8 
  media-type (type3 keyword | name(MAX))        [pwg5100.5]      8 
  media-weight-metric (integer(0:MAX))          [pwg5100.5]      8 
media-input-tray-check (type3 keyword | name(MAX))
                                                [pwg5100.5]      8 
media-type (type3 keyword | name(MAX))          [pwg5100.5]      8 
number-up (integer(1:MAX))                      [pwg5100.5]      8 
orientation-requested (type2 enum)              [pwg5100.5]      8 
overrides (1setOf collection)                   [pwg5100.5]      8 
  pages (1setOf rangeOfInteger(MAX))            [pwg5100.5]      8 
  document-numbers (1setOf rangeOfInteger(MAX)) [pwg5100.5]      8 
  document-copies (1setOf rangeOfInteger(MAX))  [pwg5100.5]      8 
page-delivery (type2 keyword)                   [pwg5100.5]      8 
page-order-received (type2 keyword)             [pwg5100.5]      8 
page-ranges (1setOf rangeOfInteger(1:MAX))      [pwg5100.5]      8 
pdl-init-file (1setOf collection)               [pwg5100.5]      8 
  pdl-init-file-entry (name(MAX))               [pwg5100.5]      8
  pdl-init-file-location (uri)                  [pwg5100.5]      8
  pdl-init-file-name (name(MAX))                [pwg5100.5]      8
presentation-direction-number-up (type2 keyword)[pwg5100.5]      8 
print-quality (type2 enum)                      [pwg5100.5]      8 
printer-resolution (resolution)                 [pwg5100.5]      8 
separator-sheets (collection)                   [pwg5100.5]      8 
  media (type3 keyword | name(MAX))             [pwg5100.5]      8 
  media-col (collection)                        [pwg5100.5]      8 
  separator-sheets-type (type3 keyword | name(MAX))
                                                [pwg5100.5]      8 
sheet-collate (type2 keyword)                   [pwg5100.5]      8 
sides (type2 keyword)                           [pwg5100.5]      8 
x-image-position (type2 keyword)                [pwg5100.5]      8 
x-image-shift (integer(MIN:MAX))                [pwg5100.5]      8 
x-side1-image-shift (integer(MIN:MAX))          [pwg5100.5]      8 
x-side2-image-shift (integer(MIN:MAX))          [pwg5100.5]      8 
y-image-position (type2 keyword)                [pwg5100.5]      8 
y-image-shift (integer(MIN:MAX))                [pwg5100.5]      8 
y-side1-image-shift (integer(MIN:MAX))          [pwg5100.5]      8 
y-side2-image-shift (integer(MIN:MAX))          [pwg5100.5]      8 

Job Description attributes:
job-copies-actual (1setOf integer(1:MAX))       [pwg5100.5]    9.2
job-cover-back-actual (1setOf collection)       [pwg5100.5]    9.2
job-cover-front-actual (1setOf collection)      [pwg5100.5]    9.2
job-collation-type-actual (1setOf type2 keyword)[pwg5100.5]    9.2
job-finishings-actual (1setOf type2 enum)       [pwg5100.5]    9.2
job-finishings-col-actual (1setOf collection)   [pwg5100.5]    9.2

Job Template attributes:
job-copies  (integer(1:MAX))                    [pwg5100.5]    8
job-copies-default  (integer(1:MAX))            [pwg5100.5]    8
job-copies-supported  (rangeOfInteger (1:MAX))  [pwg5100.5]    8
job-cover-back  (collection)                    [pwg5100.5]    8
job-cover-back-default  (collection)            [pwg5100.5]    8
job-cover-back-supported  (1setOf type2 keyword)[pwg5100.5]    8
job-cover-front (collection)                    [pwg5100.5]    8
job-cover-front-default  (collection)           [pwg5100.5]    8
job-cover-front-supported  (1setOf type2 keyword)[pwg5100.5]  8
job-finishings (1setOf type2 enum)              [pwg5100.5]    8
job-finishings-default (1setOf type2 enum)      [pwg5100.5]    8
job-finishings-supported (1setOf type2 enum)    [pwg5100.5]    8
job-finishings-col (collection)                 [pwg5100.5]    8
job-finishings-col-default (collection)         [pwg5100.5]    8
job-finishings-col-supported (1setOf type2 keyword)
                                                [pwg5100.5]    8

Printer Description attributes:
document-creation-attributes-supported (1setOf type2 keyword)
                                                [pwg5100.5]    10.1
16.2	Keyword attribute values
document-state-reasons (1setOf type2 keyword)   [pwg5100.5]    9.1.27
  aborted-by-system                             [pwg5100.5]    9.1.27
  compression-error                             [pwg5100.5]    9.1.27
  digital-signature-did-not-verify              [pwg5100.5]    9.1.27
  digital-signature-type-not-supported          [pwg5100.5]    9.1.27
  document-access-error                         [pwg5100.5]    9.1.27
  document-format-error                         [pwg5100.5]    9.1.27
  canceled-at-device                            [pwg5100.5]    9.1.27
  canceled-by-operator                          [pwg5100.5]    9.1.27
  canceled-by-user                              [pwg5100.5]    9.1.27
  completed-successfully                        [pwg5100.5]    9.1.27
  completed-with-errors                         [pwg5100.5]    9.1.27
  completed-with-warnings                       [pwg5100.5]    9.1.27
  data-insufficient                             [pwg5100.5]    9.1.27
  digital-signature-wait                        [pwg5100.5]    9.1.27
  errors-detected                               [pwg5100.5]    9.1.27
  incoming                                      [pwg5100.5]    9.1.27
  interpreting                                  [pwg5100.5]    9.1.27
  none                                          [pwg5100.5]    9.1.27
  outgoing                                      [pwg5100.5]    9.1.27
  printing                                      [pwg5100.5]    9.1.27
  processing-to-stop-point                      [pwg5100.5]    9.1.27
  queued                                        [pwg5100.5]    9.1.27
  queued-for-marker                             [pwg5100.5]    9.1.27
  queued-in-device                              [pwg5100.5]    9.1.27
  resources-are-not-ready                       [pwg5100.5]    9.1.27
  resources-are-not-supported                   [pwg5100.5]    9.1.27
  submission-interrupted                        [pwg5100.5]    9.1.27
  transforming                                  [pwg5100.5]    9.1.27
  unsupported-compression                       [pwg5100.5]    9.1.27
  unsupported-document-format                   [pwg5100.5]    9.1.27
  warnings-detected                             [pwg5100.5]    9.1.27
16.3	Enum Attribute Values
The following table lists all the new enum attribute values defined in this document as additional type2 enum values.  These are to be registered according to the procedures in RFC 2911 [rfc2911] § 6.1.

  Value      Name                                Reference   Section:
  --------   ----------------------              ---------   -------
document-state (type1 enum)                     [pwg5100.5]   9.1.25
  3   pending                                   [pwg5100.5]   9.1.25
  5   processing                                [pwg5100.5]   9.1.25
  7   canceled                                  [pwg5100.5]   9.1.25
  8   aborted                                   [pwg5100.5]   9.1.25
  9   completed                                 [pwg5100.5]   9.1.25
operations-supported (1setOf type2 enum)         [rfc2911]   4.4.15
  0x0033     Cancel-Document                    [pwg5100.5]   4.5 
  0x0034     Get-Document-Attributes            [pwg5100.5]   4.3 
  0x0035     Get-Documents                      [pwg5100.5]   3.3 
  0x0036     Delete-Document                    [pwg5100.5]   5.4 
  0x0037     Set-Document-Attributes            [pwg5100.5]   4.4 

16.4	Operations
The following table lists all of the operations defined in this document.  These are to be registered according to the procedures in RFC 2911 [rfc2911] § 6.4.

Operations                                       Reference    Section
--------------------------                       ---------    --------
Cancel-Document                                 [pwg5100.5]    4.5 
Delete-Document                                 [pwg5100.5]    5.4 
Get-Document-Attributes                         [pwg5100.5]    4.3 
Get-Documents                                   [pwg5100.5]    3.3 
Set-Document-Attributes                         [pwg5100.5]    4.4 
  
16.5	Attribute Group tags
The following table lists all the attribute group tags defined in this specification.  These are to be registered according to the procedures in RFC 2911 [rfc2911] § 6.5.
Value    Name                                    Reference     Section
-----    ------------------------------------    ---------     -------
0x09     document-attributes-tag                [pwg5100.5]     12

16.6	Status codes
The following table lists all the status codes defined in this specification.  These are to be registered according to the procedures in RFC 2911 [rfc2911] § 6.6.
Value    Status Code Name                        Reference   Section
------   ------------------------------------    ---------   -------
0x0500:0x05FF - Server Error:
0x050B   server-error-too-many-jobs              [pwg5100.7]       8.1
0x050C   server-error-too-many-documents         [pwg5100.7]       8.2

16.7	Attribute Group name Registrations
The following table lists the one new attribute group name defined in this document.  This is to be registered according to the procedures in RFC 2911 [rfc2911] § 6.2.
Attribute Group name                             Reference   Section
---------------------                            ---------   -------
document-template                               [pwg5100.5]     4.3
17	Internationalization Considerations
The internationalization considerations for this extension for handling the Document object are the same as for handling the Job object in [rfc2911].
18	Security Considerations
The Document object should provide no more increased security considerations than the Job object.  The Printer MUST provide the same access control for Document objects as for Job objects.
The Printer implementer needs to consider counter measures for denial of service attacks for the Create-Job operation.  For example, a rogue client could issue repeated Create-Job and/or Send-Document/Send-URI requests in an attempt to exceed the capacity of the Printer to absorb such requests and thereby deny Job Creation and Document Creation requests from other clients.  For example, a Printer might avoid a fixed set of allocations for Jobs and Documents and also be able to detect when an excessive number of Create-Job and Send-Document/Send-URI requests have been supplied.  In such a case, the Printer would return either a 'server-error-too-many-jobs' status-code (see section Error! Reference source not found.) or a 'server-error-too-many-documents' status-code (see section Error! Reference source not found.).
19	Contributors
	Don Fullman, Xerox
	Harry Lewis, IBM
	Ira McDonald, High North
	Michael Sweet, Easy Software Products
	Jerry Thrasher, Lexmark
	
20	Author’s Address
	Dennis Carney
	IBM Printing Systems
	6300 Diagonal Highway
Boulder, CO 80301

Phone: 303 924-0565
Fax: 303 924-7434
email: dcarney@us.ibm.com

	Tom Hastings
	Xerox Corporation
	737 Hawaii St.
	El Segundo, CA 90245

	Phone: 310 333-6413
	Fax:  310 333-5514
	e-mail: hastings@cp10.es.xerox.com

	Peter Zehler
	Xerox Corporation
	MS: 0128-30E
	800 Phillips Road
	Webster, NY 14580-9701

	Phone: 585 265-8755
	Fax:  585 422-7961
	e-mail: PZehler@crt.xerox.com
21	Appendix A: Document operations compared to Job operations (Informative)
This appendix compares the Document operations with the existing Job operations to show the parallelism.
Table 17 compares the Job and Document operations.  The two Conf. columns indicate the conformance requirements (REQUIRED = REQ, OPTIONAL = OPT) for the Job and Document operations respectively.  A “REQ” in the Document Conformance column means if the Document object is supported.  Whether a Document operation is a method on the Job object or the Document object depends on the modeling regime and is not an essential part of the semantics described here, since these semantics are intended to apply to both object-oriented and object-based protocols, APIs, and implementations.
Table 17 - Document operations compared to Job operations
Job operations	Job Conf.	Document operations	Doc Conf.	
Cancel-Current-Job	OPT	N/A, can only cancel a document explicitly by document number and explicit job id		
Cancel-Job	REQ	Cancel-Document	REQ	
				
Get-Job-Attributes	REQ	Get-Document-Attributes	REQ	
Get-Jobs	REQ	Get-Documents	REQ	
Hold-Job		N/A, can only hold an entire job		
Print-Job	REQ	Send-Document (existing operation - see [rfc2911] with an additional Document attributes group defined in section 4.1)	REQ	
Print-URI	OPT	Send-URI (existing operation - see [rfc2911] with an additional Document attributes group defined in section 4.2)	OPT	
				
Promote-Job	OPT	N/A, can only promote an entire job		
Purge-Jobs	OPT	Delete-Document	OPT	
Release-Held-New-Jobs	OPT	N/A, can only release entire jobs		
Release-Job	OPT	N/A, can only release an entire job		
Reprocess-Job	OPT	N/A, can only reprocess an entire job		
Restart-Job	OPT	N/A, can only restart an entire job		
Resume-Job	OPT	N/A, can only resume an entire job		
Schedule-Job-After	OPT	N/A, can only schedule an entire job		
Set-Job-Attributes	OPT	Set-Document-Attributes	OPT	
Suspend-Current-Job	OPT	N/A, can only suspend an entire job in order to run another one		
Validate-Job	REQ	N/A, use Validate-Job to validate a single document or each document in a multi-document job		

22	Annex B: IEEE-ISTO 5100.4-2001 Document Overrides (informative)
With the introduction of the Document Object, there is no longer a need for the “document-overrides” (1setOf collection) attribute [pwg5100.4-2001] as an Operation attribute or a Job Template attribute.  A new Overrides document [pwg5100.6] without the “document-overrides” attribute will be published.  With the introduction of the Document object, the client simply supplies the Document Template attributes (see Table 10) for each Document Creation request (in a new Document Template attribute group).  There is no longer a need for the “document-overrides” attribute.    
Page Overrides will be specified in a new document [pwg5100.6] that replaces the obsolete [pwg5100.4-2001].   Other [pwg5100.4-2001] features such as Subset Processing and Error/Warning counts have been moved to other specifications.