January 20, 2004
Candidate Standard 5105.1

The Printer Working Group (PWG)
Semantic Model

Abstract: This document is a high level overview of the Semantic Model defined by the PWG.  This document briefly describes the semantic elements defined in various PWG documents and PWG documents submitted to the IETF.  The Semantic Model also incorporates additions made by other groups addressing print systems.  With every semantic element included a reference is provided to the document and section that details the semantic definition. 
The Semantic Model contains a high level description of the Actions that operate on the objects and attributes in the model.  This document does not describe the mapping of the semantics onto a specific protocol or network environment.  

January 20, 2004
Candidate Standard 5105.1

The Printer Working Group (PWG)
Semantic Model

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

ftp://ftp.pwg.org/pub/pwg/standards/pwg5105.1.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) 2004, 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 Semantic Model 
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:
Semantic Model Web Page:  http://www.pwg.org/sm/ 
Semantic Model Mailing List:  sm@pwg.org 
To subscribe to the Semantic Model 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 sm
end
Implementers of this specification are encouraged to join the Semantic Model 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 Semantic Model 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
2	Terminology
3	Model Overview
4	Data Classes
4.1	Naming of Classes, Elements and Values
4.2	Printer Object Class
4.2.1	Printer Status Elements
4.2.2	Printer Description Elements
4.2.3	Printer Defaults, Supported and Ready Processing Elements
4.3	Job Object Class
4.3.1	Job Status Elements
4.3.2	Job Description Elements
4.4	Document Object Class
4.4.1	Document Status Elements
4.4.2	Document Description Elements
4.5	Processing Elements
4.5.1	Job Processing Elements
4.5.2	Document Processing Elements
4.6	Processing Actual Elements
4.6.1	Job Processing Actual Elements
4.6.2	Document Processing Actual Elements
5	Actions
5.1	Job Creation and document submission Actions
5.1.1	CreateJob
5.1.2	CloseJob
5.1.3	PrintJob
5.1.4	PrintUri
5.1.5	SendDocument
5.1.6	SendUri
5.1.7	ValidateDocument
5.1.8	ValidateJob
5.2	Job and Document Control Actions
5.2.1	CancelCurrentJob
5.2.2	CancelDocument
5.2.3	CancelJob
5.2.4	DeleteDocument
5.2.5	HoldJob
5.2.6	PromoteJob
5.2.7	ReleaseJob
5.2.8	ReprocessJob
5.2.9	RestartJob
5.2.10	ResumeJob
5.2.11	ScheduleJobAfter
5.2.12	SetDocumentElements
5.2.13	SetJobElements
5.2.14	SuspendCurrentJob
5.3	Status and information Actions
5.3.1	GetDocumentElements
5.3.2	GetDocuments
5.3.3	GetJobElements
5.3.4	GetJobs
5.3.5	GetPrinterElements
5.3.6	GetPrinterSettableElementValues
5.4	Printer Control Actions
5.4.1	ActivatePrinter
5.4.2	DeactivatePrinter
5.4.3	DisablePrinter
5.4.4	EnablePrinter
5.4.5	HoldNewJobs
5.4.6	PausePrinter
5.4.7	PausePrinterAfterCurrentJob
5.4.8	PurgeJobs
5.4.9	ReleaseHeldNewJobs
5.4.10	RestartPrinter
5.4.11	ResumePrinter
5.4.12	SetPrinterElements
5.4.13	ShutdownPrinter
5.4.14	StartupPrinter
6	Globalization
7	Summary of elements
7.1	Processing Elements (Job and Document)
7.2	Job Elements (Status and Description)
7.3	Document Elements (Status and Description)
7.4	Printer Elements (Status and Description)
8	Status Strings
9	References
10	Author's Addresses
10.1	Other Participants
11	Appendix A – UPnP Definitions
11.1	DeviceId
12	Appendix B – IPP Mapping
12.1	Changes to remove some IPP specific aspects
12.2	Attribute Group Mapping

Table of Figures
Figure 1 Model Overview
Figure 2 Data Classes
Figure 3 Printer Status Elements
Figure 4 - The "PrinterState" element and the Printer Life Cycle
Figure 5 Printer Description Elements
Figure 6 Job Status Elements
Figure 7 The "JobState" Job Element and the Job object life cycle
Figure 8 Job Description Elements
Figure 9 Document Status Elements
Figure 10  "DocumentState" Element and Document object life Cycle
Figure 11 Document Description Elements
Figure 12 Job Processing Elements
Figure 13 Document Processing Elements
Figure 14 Processing Instruction Processing

Table of Tables
Table 1-Integer syntax whose ProcessingElementSupported syntax isn’t RangeOfInteger
Table 2 - Summary of Actions
Table 3 - Processing Elements (Job and Document)
Table 4- Job Elements (Status and Description)
Table 5 – Document Elements (Status and Description)
Table 6 - Printer Elements (Status and Description)
Table 7 Status strings indicating some degree of success
Table 8 Status strings indicating error on the part of the Client
Table 9 Status strings indicating error on the part of the Printer

1	
Introduction
This document is a high level overview of the Semantic Model defined by the PWG.  This document briefly describes the semantic elements defined in various PWG documents and PWG documents submitted to the IETF.
The PWG Semantic Model is primarily based on the model used by IPP.  Furthermore the PWG Semantic Model is not limited to the semantics defined in IPP.   IPP Objects, Attributes and Operations are mapped to Objects, Elements and Actions in the PWG Semantic model. This specification does not augment or change the definition of IPP in any way. See IPP mapping details in section 12.
The Semantic Model also incorporates additions made by other groups addressing print systems.  With every semantic element included a reference is provided to the document and section that details the semantic definition. 
The Semantic Model contains a high level description of the Actions that operate on the objects and Elements in the model.  This document does not describe the mapping of the semantics onto a specific protocol or network environment.  
2	Terminology
Action	A request that a Print Client makes to an object to perform some activity.  The object returns a response to the Print Client that contains some information about the effect of the action on the object.	
Data Class	A template for data describing an object and representing its state.   Each Element in the data class represents a semantic element of the associated object.	
Document	An object containing descriptive and state information for a logical unit of information to be printed.  The object may contain processing information.  The document content is represented by a single data (e.g.  PDL, image)  file and contains Pages.	
Document Processing Elements	Document Elements supplied by the Print Client to direct the printing of a Document that the Printer copies to the Document.  Examples: Copies, Finishings, Media, NumberUp.	
End User	A print client that has no special rights on the printer.  The End User typically submits jobs.  The End User is allowed to query the printer, jobs and documents and control jobs based on policy.	
Element	In this Document element is used to describe a characteristic of an object. (In XML an element is a construct that defines a component of an object.)	
Impression	Everything printed on a single side of a media	
Job	An object that represents the submission of work for the printer.  It contains descriptive and state information as well as default Document Processing Elements.  Jobs contain one or more Documents	
Job Description Elements	Job Elements supplied by the Print Client to describe the Job.  Examples: JobName, RequestingUserName, JobRecipient	
Job Processing Elements	Job Elements supplied by the Print Client to direct the printing of the Job as a whole that the Printer copies to the Job.  Examples:  JobHoldUntil, JobPriority, JobCopies, JobFinishings.	
Object	A entity that instantiates a data class and implements the appropriate actions.	
Operator	A print client that has special rights on the printer.  The Operator typically oversees the printer.  The Operator is allowed to query and control the printer, jobs and documents based on site policy.	
MediaSheet	A sheet of paper, or other material, used for printing	
Page	A logical entity that represents the information contained on a single side of a sheet of media.  Note that this is the electronic form and that multiple pages can be rendered into a single impression through N-Up printing	
PDL	(Page Description Language)  A language that describes the content to be printed and how it will be laid out on a page (e.g. Adobe PostScript®, Hewlett Packard PCL®).	
Print Client	An application or network entity that performs actions	
 Printer	An object that represents a printing device, set of printing devices, or a printing service and contains zero or more Jobs	
Type 1 keyword	All the values are defined in the specification.  Additional values require a new specification.	
Type 2 keyword	An initial set of values is defined in the specification.  This working group registers additional values after review. The initial versions of the specification will contain the values registered so far.  After the specification is approved, this working group will register additional values after approval.	
Type 3 keyword	An initial set of values is defined in the specification.  Additional values are registered without working group review.  The initial versions of the specification contain the values registered so far.  After the specification is approved, this working group will register additional values without approval.	

3	Model Overview
The Printer Working Group (PWG) has defined a simplified printing model.  It represents printing in a Web Services, traditional client/server or peer-to-peer print paradigm.  The PWG model describes a Printer object that may contain zero or more Jobs.  A Job is contained in only one Printer object.  A Job can contain zero or more Documents and a Document is contained in only one Job.  The PWG model contains methods that act upon these objects. 

Figure 1 Model Overview
The objects are represented in the semantic model as data classes. The methods are represented as a set of actions that act upon those data classes.  The actions permit the creation and control of Jobs and documents as well as the submission of Document data.  The content of a Document is included in the submission or can be accessed via a URL reference.  There are also actions to query a Printer, Job or Document to access their Elements or to list their contained objects.  
The model uses a number of terms with specific meaning for a printer.  
4	Data Classes
This section describes the data classes in the PWG semantic model.  Some of the classes are taken from the model and semantics of IPP [rfc2911].  Figure 2 shows the data classes, their elements and the containment relationship between the classes

Figure 2 Data Classes
4.1	Naming of Classes, Elements and Values
The Action, Class, Element and Value keywords are shown here with mixed case for readability.  For the purpose of matching, the case can be ignored.  The names of clesses, elements and values must differ by more than just case.  For example there can not be two values for JobStateReasons that differ only by case such as JobPrinting and jobprinting.  
Specific mapping, of the Semantic Model, can mandate policy on case sensitivity.  Mappings that impose case sensitivity for matching, such as XML, may simplify their implementations.  Mappings that ignore case results in a server that will accept slightly malformed (i.e. case does not agree) requests.  In either mapping, the keywords are semantically identical.
4.2	Printer Object Class
The Printer class is represented by a collection of elements as shown in Figure 2.  The Printer Elements are presented in detail in Table 6.  The printer object also contains elements that describe the valid processing element values. (See section 4.5 for processing elements)  The Printer class is the container for Jobs.
4.2.1	Printer Status Elements
Figure 3 below shows the Printer Status Elements.  These elements represent the state of the printer such as the number of jobs or existing error conditions.  Automata change the values of the elements in this group.  End Users cannot directly modify their values.  The End User can affect the values of these elements through actions (e.g. PausePrinter can change the value of PrinterIsAcceptingJobs”).  The semantics of the elements are summarized in Table 6.

Figure 3 Printer Status Elements
The “PrinterState” element is one of the most important Printer Status elements.  Figure 4 shows the values of the “PrinterState” element and the Printer life cycle as affected by actions on the Printer and job processing.

Figure 4 - The "PrinterState" element and the Printer Life Cycle
4.2.2	Printer Description Elements
Figure 5 below shows the Printer Description Elements.  These elements contain information that describes the printer such as its make, where it’s located and its speed.  An automaton controls some of the elements in this group (e.g. “PagesPerMinute”). Others elements in this group can be modified by Operators or Administrators (e.g. “PrinterName”).  The semantics of the elements are summarized in Table 6. 

Figure 5 Printer Description Elements
4.2.3	Printer Defaults, Supported and Ready Processing Elements
See section 4.5 below for the elements that may comprise these groups.  Processing Elements are the union of Job Processing Elements and Document Processing Elements. If a Processing element (e.g. Media) is supported, the Printer must have an associated Processing Supported Element (e.g. MediaSupported) and Processing Default Element (e.g. MediaDefault) Printer element.  There may be an associated Processing Ready Element (e.g. MediaReady) Printer element.  By retrieving the Printer Processing elements, a Client can determine all the Job and Document Processing elements and values that may be used in creating Jobs and Documents. 
All Processing Supported, Processing Ready and Processing Default Elements have an associated Processing Element.  There are Printer Description Elements with a “Supported” suffix (e.g. ImpressionsSupported).  While they do list the valid values for the base element (e.g. Impressions), they are not Processing Supported Elements.  The difference is the containing group for the base element.  Note that the Impressions element is a member of the Job and Document Description groups.
4.2.3.1	Processing Supported Elements 
These elements list all the currently configured valid values for each Job Processing Element and Document Processing Element.  Though the Printer is configured to support the feature, human intervention may be required to process the job (e.g. selected paper may have to be loaded into a tray).  
The syntax for Processing Elements Supported is multi-valued when the associated processing element is a string.  When syntax of the processing element is an integer, the syntax of the corresponding Processing Supported Element is usually RangeOfInteger that indicates the minimum and maximum values supported by the Printer.  However, there are some exceptions as indicated in Table 1.
Table 1-Integer syntax whose ProcessingElementSupported syntax isn’t RangeOfInteger
 “xxx” element name	“xxx” syntax	“xxxSupported” syntax	
JobPriority	Integer 	Integer (Max value)	
Copies	Integer	Integer (Max value)	
PageRanges	RangeOfInteger (Multivalued)	Boolean (are PageRanges supported)	
4.2.3.2	Processing Default Elements
These elements give the default value for the associated processing instruction if the Processing Element of the job and document are not supplied and the instructions is not embedded in the PDL.  The syntax for the Processing Default Elements is the same as the corresponding Processing Element.  The only exception is that the PageRanges element does not have a PageRangesDefault element.
4.2.3.3	Processing Ready Elements
These elements give the features available without human intervention.  The syntax for a Processing Ready Element is the same as the corresponding Processing Element.  
4.3	Job Object Class
The Job object class is represented by a collection of elements divided into six groups as shown in Figure 2.  The Job class also contains the document class
Job Status Elements – See Section 4.3.1
Job Description Elements – See section 4.3.2.
Job Processing Elements – See section 4.5.1 
Document Processing Elements – See section 4.5.2
Job Processing Actual Elements – See section 4.6.1
Document Processing Actual Elements – See section 4.6.2
4.3.1	Job Status Elements
Figure 6 below shows the Job Status Elements.  These elements reflect the status of the Job as a whole.  Automata primarily control the elements in this group.  Clients cannot directly modify their values.  The Client can affect the values of these elements through actions (e.g. CancelJob can change the value of JobStateReasons”).  The semantics of the Job Status elements are summarized in Table 4. 

Figure 6 Job Status Elements
4.3.1.1	The Job Life Cycle
The “JobState” element is one of the most important Job Status elements. Figure 7 shows the values of the “JobState” element and the Job life cycle as affected by actions on the Job, Printer, and job processing.

Figure 7 The "JobState" Job Element and the Job object life cycle
4.3.2	Job Description Elements
Figure 8 below shows the Job Description Elements. These elements contain information supplied by the Client at Job creation that describes the Job such as its name.  The Printer may modify the value of some of the elements in this group (e.g. “KOctets”) if more reliable data is obtained. The semantics of the Job Description elements are summarized in Table 4.

Figure 8 Job Description Elements
4.4	Document Object Class
The Document object class is represented by a collection of elements divided into four groups as shown in Figure 2.  The Document class contains the document class
Document Status Elements – See Section 4.4.1.
Document Description Elements – See section 4.4.2.
Document Processing Elements – See section 4.5.2
Document Processing Actual Elements – See section 4.6.2
4.4.1	Document Status Elements
Figure 9 shows the Document Status Elements.  These elements reflect the status of each Document indivually.  Automata primarily control the elements in this group.  Clients cannot directly modify their values.  The Client can affect the values of these elements through actions (e.g. CancelDocument can change the value of DocumentState”). The semantics of the Document Status elements are summarized Table 5. 

Figure 9 Document Status Elements
4.4.1.1	The Document Life Cycle
The “DocumentState” element is one of the most important Document Status Elements.  Figure 10 shows the values of the “DocumentState” element and the Document life cycle as affected by Actions and job processing.  Documents are not active objects and their 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 its terminating state.  The last state for a Document is its terminal state (i.e., completed, canceled, aborted)

Figure 10  "DocumentState" Element and Document object life Cycle
4.4.2	Document Description Elements
Figure 11 below shows the Document Description Elements.  These elements contain information supplied by the Client at Document creation that describes the document such as its size.  The Printer may modify the value of some of the elements in this group (e.g. “KOctets”) if more reliable data is obtained. The semantics of the Document Description elements are summarized in Table 5.

Figure 11 Document Description Elements
4.5	Processing Elements
Processing elements are instructions that the Client supplies to the Printer to be applied to jobs and documents.  They indicate such things as the priority for scheduling a job or the number of copies for a document.  A Printer should support each Processing Element that represents a feature of the Printer.  The Processing elements are split into two groups.  One groups applies to Jobs and the other to Documents. 
1)	Job Processing Elements are processing instructions applied the Job level.  See section 4.5.1.
2)	Document Processing Elements are specific to documents.  See section 4.5.2.
4.5.1	Job Processing Elements
Figure 12 shows the Job Processing Elements.  These elements define features supplied by the Client at Job creation.  The Printer applies these elements to the Job as a whole (e.g., “JobPriority”) as opposed to each document in the Job (e.g., “Media”).  The semantics of the Job Processing elements are summarized in Table 3.  

Figure 12 Job Processing Elements
4.5.2	Document Processing Elements
Figure 13 shows the Document Processing Elements.  These elements define features supplied by the Client at Document creation.   The Printer applies these element to each Document individually (e.g. “copies”) to create final output products.  Included in these elements is how multiple physical sheets are manipulated or how the logical pages look on the output media or they determine the quality and resolution of how marks are made on a page.  The semantics of the Document Processing elements are summarized in Table 3.
The Client supplies Document Processing Elements at the Job or Document level.  If these elements are supplied at the Job level, the Printer applies them as the default values for all the Documents in the Job.  If the elements are supplied at the Document level, the Printer applies them only to that Document.

Figure 13 Document Processing Elements
4.6	Processing Actual Elements
See section 4.5 above for the elements that may map to elements in these groups.  The Processing Actual elements are optional Job and Document element that records what processing elements were used in a Job and its Documents.  The mapping between the Processing element and the Processing Actual element is by taking the Processing element name and appending the suffix “Actual”.  The Processing Actual elements are always multivalued.  
Any Processing element may have a related ProcessingActual element that shows what was applied to the Job or Document.  It is not necessary for the Printer to support the Processing element for it to support the associated ProcessingActual element.  By retrieving the Printer Processing Actual elements after a job completes, a Client can determine all the Job and Document Processing elements and values that were used in processing the Job and its Documents. (See [PWG5100.8])
4.6.1	Job Processing Actual Elements
See section 4.5.1above for the base elements that map to elements in this group.  The Job Processing Actual Element can only appear in the Job object.
4.6.2	Document Processing Actual Elements
See section 4.5.2 above for the base elements that map to elements in this group.  The Document Processing Actual Element can appear in the Job and Document objects.
5	Actions
The PWG has defined a number of operations that affect Printers, Jobs and their document.  Below is a description of the semantics of these Actions.  Naturally different protocol bindings will use differing subsets of the Actions or define new ones.  Another difference will be the precise parameters to the Actions.  Below is an abstract definition of the Actions. Action Summary
The Print Service Interface [PSI] has introduced additional operations or PSI specific mappings of existing actions.  These are included below to show a concrete mapping of the PWG Semantic Model and an application specific extension of the model.  Consult the PSI specification [PSI] for the exact definitions.
This table summarizes the actions defined for the Job and Printer.  The rest of section 5 provides more details on the semantic of the actions.  
Job Creation and Document submission	Job  and Document Control	Status and Information access	Printer Control	
CreateJob 	CancelCurrentJob	GetDocumentElements	ActivatePrinter 	
PrintJob 	CancelDocument 	GetDocuments 	DeactivatePrinter 	
PrintUri 	CancelJob 	GetJobElements 	DisablePrinter 	
SendDocument 	DeleteDocument 	GetJobs 	EnablePrinter 	
SendURI 	HoldJob 	GetPrinterElements 	HoldNewJobs 	
ValidateDocument 	PromoteJob 	GetPrinterSettableElementValues 	PausePrinter 	
ValidateJob 	ReleaseJob 		PausePrinterAfter
CurrentJob	
	ReprocessJob		PurgeJobs	
	RestartJob 		ReleaseHeldNew
Jobs	
	ResumeJob		RestartPrinter	
	ScheduleJobAfter		ResumePrinter	
	SetDocumentElements		SetPrinterElements	
	SetJobElements		ShutdownPrinter	
	SuspendCurrentJob		StartupPrinter	
Table 2 - Summary of Actions
5.1	Job Creation and document submission Actions
This section describes the Job Creation actions that create a Job and the ones that create add Document to a Job.  The Job Creation actions are: PrintJob, PrintUri, and CreateJob.  The PrintJob action also submits the Document.  The PrintUri action submits a URI reference to the Document that the Printer then retrieves when needed at a later time.  The CreateJob action only creates the job and the Client must issue subsequent SendDocument and SendUri actions in order to submit document content or a URI reference, respectively, for a job.  
Processing instructions and descriptive information contained in the arguments of the Job Creation action are combined with Printer supplied information to create a Job instance.
The last action in this section is ValidateJob.  This operation allows a Client to send a request with all the information to create a Job, except the document content.  The Printer does not create a Job but informs the client whether a CreateJob, PrintJob or PrintUri with the same information would have succeeded.  This is useful for allowing a Client to verify the processing instructions before sending a large PrintJob request.
A concept that is important in the PWG model is a set of instructions that can be applied to a print job.  Examples of these instructions include the number of copies and the media to use.  These instructions are referred to as Processing Elements.  The Processing Elements are made up of the Job Processing Elements (see section 4.5.1) and the Document Processing Elements (see section 4.5.2) sent in a Job or Document Creation Action.  

Figure 14 Processing Instruction Processing 
In the real world, processing instructions are also contained in the document content for a job.  Page Description Languages (PDL) such as PostScript® and PCL® often contain processing instructions.   Some environments use a printer specific driver to generate the PDL stream based on feature selections made through a user interface.  Given that processing instructions can occur in both the PDL and in an associated Job, the PWG model allows a Printer to declare its capability to resolve this conflict.  The Printer’s element “PdlOverride” declares if an attempt will be made to override the instructions in the PDL with the instructions in the Job.
There are a wide variety of capabilities in Printers.  An instance of a Printer is to subject to changes in its configured capabilities.  An example would be an administrative change in the media the Printer supports or disabling two-sided printing.  Clients need not check the capabilities of a Printer before creating their Job Processing Elements and submitting a job.  Since this is a client/server paradigm, it is always possible that the capabilities could change after checking a Printer’s capabilities and before a Job is submitted.  On the other hand, a client may use the Printer’s configured capabilities to create their Job Processing Elements and submit a job.
The PWG model allows a client to control the Printer’s acceptance of a job submission based on the job request and the Printer’s current configured capabilities as follows.  When the client supplies a ‘true’ value for the “ElementFidelity” Job Processing element, the Printer must reject the job unless the Printer supports all of the supplied Job Processing elements and values.  When the client supplies a ‘false’ value or omits the element, the Printer must accept the job submission and ignore or substitute elements and values, respectively, that it does not support.  Note that the “ElementFidelity” Job Processing element covers only the creation of the Job.  It is implementation specific how a Printer handles processing a job when the Printer encounters unsupported processing instructions in the document content.
5.1.1	CreateJob
([rfc2911] §3.2.4)  Similar to the PrintJob operation (see section 5.1.3), except that in the CreateJob request the Client does not supply Document Data.  The client supplies a single set of Job Processing elements that the Printer applies to the Output Document(s) of the job.  The “MultipleDocumentHandling” Job Processing element controls whether the Printer produces separate Output Documents or combines the Input Documents into a single Output Document (see section 27).
5.1.2	CloseJob
([PWG5100.5] section 4.3)  Closes a print job that was created with a CreateJob operation (see section 5.1.1) and one or more SendDocument and/or SendUri operations (see sections 5.1.5 and 5.1.6) This action sets the LastDocument element (see section 4.4.2) of the last Document in the Job to ‘true’.  CloseJob is semantically equivalent to a SendDocument or SendUri action with the LastDocument element set to True.  An explicit CloseJob is preferable to the implied closing of a Job using SendDocument or SendUri and the LastDocument element set to True.
5.1.3	PrintJob
([rfc2911] §3.2.1)  Submit a print job with only one document and supply the document content data.  If the Printer accepts the job, it creates the Job object and returns a unique “JobId” element for the Printer and a globally unique “JobUri” element.  The Printer also sets the corresponding Job elements with these values.
5.1.4	PrintUri
([rfc2911] §3.2.2)  Identical to the PrintJob operation (see section 5.1.3) except that a client supplies a URI reference to the document data.
5.1.4.1	The “MultipleDocumentHandling” Job Processing element
When a client submits a job with more than one Input Document, the “MultipleDocumentHandling” Job element allows the client to specify whether the Printer is to (1) produce corresponding separate Output Documents or (2) combine the Input Documents into a single Output Document.  For example, the ‘single-document’ and ‘single-document-new-sheet’ values allow the client to staple all of the Input Documents into a single Output Document, with the latter value forcing each Input Document to start on a new sheet (useful when doing two-sided printing).  When requesting multiple Copies, the ‘separate-document-uncollated-Copies’ value results in the Copies of each Input Document being together in an Output set, while the ‘separate-document-collated-Copies’ value keeps a copy of each Input Document together in an Output set.  For example, a job with Input Documents A, B, C and “Copies” = 2 will result in A, A, B, B, C, C or A, B, C, A, B, C, respectively.  If the Printer supports multiple documents per job, the Printer must support this Job Processing element with at least one value.
5.1.5	SendDocument
([rfc2911] §3.3.1, [PWG5100.5] §3)  Submits the entire Document Content for the next Input Document of a job created by a previous CreateJob action (see section 5.1.1).  
5.1.6	SendUri
([rfc2911] §3.3.2, [PWG5100.5] §3)  Identical to the SendDocument operation (see section 5.1.5) except that a client supplies a URI reference to the Document Content data, instead of supplying the document content.  
5.1.7	ValidateDocument
([PWG5100.5] §3)  This operation is used only to verify capabilities of a Printer object against whatever elements are supplied by the client in the ValidateDocument request. By using the ValidateDocument action a client can validate that an identical SendDocument or SendUri would be accepted.
5.1.8	ValidateJob
([rfc2911] §3.2.3)  This operation is used only to verify capabilities of a Printer object against whatever elements are supplied by the client in the ValidateJob request. By using the ValidateJob action a client can validate that an identical PrintJob, PrintUri or CreateJob would be accepted.
5.2	Job and Document Control Actions
This section describes the actions that allow a client to control a Job after it has been submitted:  CancelJob, HoldJob, ReleaseJob, and RestartJob.
5.2.1	CancelCurrentJob
([admin-ops] §4.2)  Allows a client to cancel the current Job in the “processing” or “processing-stopped” state.  
5.2.2	CancelDocument
([PWG5100.5] §3)  Prevents the processing of the specified Document if the Document has not yet been processed.  Stops the processing of any active Document in an implementation specific manner.
5.2.3	CancelJob
([rfc2911] §3.3.3)  Allows a client to cancel a Print Job from the time the Job is created up to the time it is completed, canceled, or aborted.  
5.2.4	DeleteDocument
([PWG5100.5] §3)  Removes the Document and its content from the Job.
5.2.5	HoldJob
([rfc2911] §3.3.5)  Allows a client to hold a pending Job in the Printer so that it is not eligible for scheduling.    
5.2.6	PromoteJob
([admin-ops] §4.4.1)  Allows a client to make the pending target job be processed after the current job completes.  
5.2.7	ReleaseJob
([rfc2911] §3.3.6)  Release a previously held Job so that it is again eligible for scheduling.  
5.2.8	ReprocessJob
([admin-ops] §4.1)  Allows a client to re-process a copy of a job retained after processing was completed. This operation is the similar to RestartJob except that a new job that is a copy of the target job  is created and processed.  
5.2.9	RestartJob
([rfc2911] §3.3.7)  Restart a job that is retained in the Printer after processing has completed.  
5.2.10	ResumeJob
([admin-ops] §4.3.2)  Resume the job at the point where it was suspended.  
5.2.11	ScheduleJobAfter
([admin-ops] §4.4.2)  Request the target job be processed immediately after the specified job  
5.2.12	SetDocumentElements
([PWG5100.5] §3)  Set the values of the supplied Document Processing and Document Description elements of the indicated Document. (SetDocumentAttributes in IPP)
5.2.13	SetJobElements
([rfc3380] §4.2)  Set the values of the supplied Job Processing, Document Processing and Job Description elements of the indicated Job. (SetJobAttributes in IPP)
5.2.14	SuspendCurrentJob
([admin-ops] §4.4.2)  Stop the current job and allow other jobs to be processed instead.  
5.3	Status and information Actions
This section describes the actions that allow a client to obtain status and elements of Jobs and Printers:  GetJobs, GetPrinterElements, GetJobElements and GetPrinterSupportedValues.
5.3.1	GetDocumentElements
([PWG5100.5] §3)  Returns the requested Document elements or element groups in the indicated Document in the indicated Job. (GetDocumentAttributes in IPP)
5.3.2	GetDocuments
([PWG5100.5] §3)  Returns the requested Document elements or element groups in all Documents in the indicated Job.
5.3.3	GetJobElements
([rfc2911] §3.3.4)  Returns the values of the requested job elements and/or element groups of a Job (i.e., Job Description, Job Status, Job Processing and Document Processing).  (GetJobAttributes in IPP)
5.3.4	GetJobs
([rfc2911] §3.3.4)  Retrieve the list of Jobs belonging to the Printer. The Client may supply some simple filters (e.g. “MyJobs, “Limit) to control which jobs will be returned. The Client may supply a list of Job element and/or element group names to be returned in the response (See 5.3.3). A group of Job elements will be returned for each returned Job.
5.3.5	GetPrinterElements
([rfc2911] §3.2.5)  Returns the values of the requested printer elements and/or element groups of a Printer (i.e. Printer Status, Printer Description, Processing Supported, Processing Default, Processing Ready).  (GetPrinterAttributes in IPP)
5.3.6	GetPrinterSettableElementValues
([rfc3380] §4.3)  Returns the possible values of each of the requested Printer Processing and Printer Description elements that may be set with the SetPrinterElements action. (GetPrinterSupportedValues in IPP) 
5.4	Printer Control Actions
This section describes actions which allow a client to control a Printer and may require operator credentials:  PausePrinter, ResumePrinter, PurgeJobs, DisablePrinter, EnablePrinter, and SetPrinterElements.
5.4.1	ActivatePrinter
([admin-ops] §3.4.2)  The Printer will now start sending jobs to its Output Devices or Subordinate Printers and begin accepting all requests.  
5.4.2	DeactivatePrinter
([admin-ops] §3.4.1)  The Printer will now stop sending any more jobs to its Output Devices or Subordinate Printers and begin refusing all requests except ActivatePrinter, SendDocument, and SendUri requests and query requests.  
5.4.3	DisablePrinter
([adm-ops] §3.1.1)  Prevents the Printer from accepting any more Job Creation operations.  The Printer sets the PrinterIsAcceptingJobs Printer Status element to ‘false’.
5.4.4	EnablePrinter
([adm-ops] §3.1.2)  Allows the Printer to start accepting Job Creation operations.  The Printer sets the PrinterIsAcceptingJobs Printer Status element to ‘true’.
5.4.5	HoldNewJobs
([admin-ops] §3.3.1)  Complete the current 'pending' and  'processing' Jobs but do not start processing any subsequently created Jobs.  
5.4.6	PausePrinter
([rfc2911] §3.2.7)  Stops the Printer object from scheduling jobs.  Job processing should also cease.
5.4.7	PausePrinterAfterCurrentJob
([admin-ops] §3.2.1)  Stops the Printer from starting to send jobs to any of its Output Devices or Subordinate Printers.  
5.4.8	PurgeJobs
([rfc2911] §3.2.9)  Removes all jobs from the Printer, regardless of their state.  
5.4.9	ReleaseHeldNewJobs
([admin-ops] §3.3.2)  Undo the effect of HoldNewJobs and release all Jobs held as a consequence of HoldNewJobs.  
5.4.10	RestartPrinter
([admin-ops] §3.5.1)  This action has the effect of a software re-boot.
5.4.11	ResumePrinter
([rfc2911] §3.2.8)  Resume the processing and scheduling of Jobs in the Printer.  
5.4.12	SetPrinterElements
([rfc3380] §4.1)  Set the values of the supplied Printer Processing and Printer Description elements. (SetPrinterAttributes in IPP)
5.4.13	ShutdownPrinter
([admin-ops] §3.5.2)  Stop processing jobs without losing any jobs and make the Printer no longer available for any Actions.
5.4.14	StartupPrinter
([admin-ops] §3.5.3)  Allows a hosted implementation of the Printer to be started after the host is available.
6	Globalization
The two aspects of globalization being addressed are the character sets and natural language of the human readable strings.  Determining what character set is being used is left up to the protocol mapping of this semantic model.  The natural language being used is represented in the Printer and the Job.  The Printer declares the natural language it uses for all its semantic elements of type string.  Administrators are free to change the localization and the values in the string elements.  Each job creator declares the natural language for the Job and all its contained Documents.  Not all string elements are treated the same.
Any semantic element that is labeled type1, type2 or type3 keyword in the constraint column is the following tables do not have any globalization issues from the Printer’s point of view.  They are simply a sequence of octets that have a semantic meaning attached to them.  The fact that the sequence of octets can be interpreted as ASCII strings is unimportant.  The keywords are intended for consumption by automata.  We leave it to Client implementations to determine how the keywords will be presented to end-users.
There are also strings with specific formats.  These formats are URI, URI Scheme, MIME, IEEE 1284 and DateTime.  Any semantic element whose string value must adhere to one of the previous formats is excluded from this discussion.
There are a few elements whose value is set by automata.  Those values are “JobStateMessage”, “DocumentStateMessage” and “PrinterStateMessage”.  If the semantic model is mapped to a protocol that allows the Client to request a language, the Printer will return these strings in the requested language if possible.
All the remaining Printer element strings are assumed to be in the Printer’s language.  All the remaining Job element strings are assumed to be in the language of the Job.
7	Summary of elements
This section summarizes the elements for the Document, Job and Printer objects.  Included in the definition are the processing elements that can be applied at either the Job or Document level.    For each element, the tables contain the element name, whether the element is multi-valued, its syntax, constraints, a short description and a reference to the Document where the semantics of the element is completely specified.  The basic syntax types are “Boolean”, “String” and “Integer”.  “Complex” types are a container for elements of any type.  Members are listed in the description field.    “RangeOfInteger” is a complex type that contains “Upperbound” and “Lowerbound” integer value members.  “Resolution” is a complex type that contains “CrossFeedDir” and “FeedDir” integer value members and a “Units” string value member.  
7.1	Processing Elements (Job and Document)
* Group key: J=Job Processing Elements, D=Document Processing Elements
Table 3 - Processing Elements (Job and Document)
Processing Element Name	Multivalued	Syntax 	Constraint	Group*	Reference	
	Description (values) 	
Copies		Integer 	1:MAX	D	[rfc2911] §4.2.5	
	The number of copies of the Output Document(s) to be printed.  (See  also JobCopies Job element)	
CoverBack		complex 		D	[PWG5100.3] §3.1	
	The back cover to apply this Document. (Includes Media/MediaCol, CoverType)	
CoverFront		complex 		D	[PWG5100.3] §3.1	
	The front cover to apply to this Document. (Includes Media/MediaCol, CoverType)	
CoverType		String 	Type2 keyword	D	[PWG5100.3] §3.1.2	
	Indicates if covers are requested and which sides will contain print stream pages. (Keywords: NoCover, PrintNone, PrintFront, PrintBack, PrintBoth) (See CoverBack & CoverFront for use)	
DocumentCopies	Yes	RangeOfInteger		J	[PWG5100.4] §5.1.3	
	Specifies which copies of a Document to apply the override Processing elements.    (See Overrides for use)	
DocumentNumbers	Yes	RangeOfInteger	1:MAX	D	[PWG5100.4] §5.1.2	
	Specifies the documents in a Job for override processing.  (See Overrides for use)  	
FeedOrientation		String	Type3 keyword	D	[prod-print2] §5.1	
	Specifies the media edge that is fed into the print engine from the paper tray.  (Keywords: LongEdgeFirst, ShortEdgeFirst).	
Finishings	Yes	String 	Type2 keyword	D	[rfc2911] §4.2.6
[PWG5100.1] §2	
	Identifies the finishings that the Printer uses for each copy of the Output Document.  (See also JobFinishings Job element) (Keywords: Bale, Bind, BindBottom, BindLeft, BindRight, BindTop, BookletMaker, Cover, EdgeStitch, EdgeStitchBottom,EdgeStitchLeft, EdgeStitchRight, EdgeStitchTop, Fold, JogOffset, None, Punch, SaddleStitch, Staple, StapleBottomLeft, StapleBottomRight, StapleDualBottom, StapleDualLeft, StapleDualRight, StapleDualTop, StapleTopLeft, StapleTopRight, Trim)	
FinishingsCol		complex 		D	[PWG5100.3] §3.2	
	Enables an end user to specify detailed finishing options not possible with the “Finishings” element for the Output Document.  (See also JobFinishingsCol Job element)  (Includes FinishingTemplate, Stitching)	
FinishingTemplate		String 	Maxlength=1023	J,D	[PWG5100.3] §3.2.1	
	A string specifying some particular finishing operation.  (See FinishingsCol/JobFinishingsCol for use)	
FontNameRequested		String	Maxlength=255	D	[prod-print2] §5.2	
	Specifies the font name if the document data is in a format that does not have inherent font information (e.g., ‘text/plain’), otherwise, this element is ignored.	
FontSizeRequested		Integer	1:MAX	D	[prod-print2] §5.3	
	Specifies the font size in points (1/72 of an inch) if the document data is in a format that does not have inherent font information (e.g., ‘text/plain’), otherwise, this element is ignored.	
ForceFrontSide	Yes	Integer	1:MAX	D	[PWG5100.3] §3.3	
	Forces the specified pages to be printed on the front side of a sheet of media.  The pages of the output document start at 1.	
ImpositionTemplate		String	Type2 keyword	D	[PWG5100.3] §3.4	
	Specifies imposition method for laying out finished page images onto the surface of output media.  (Keywords: None, Signature)	
InsertAfterPageNumber		Integer 	0:MAX	D	[PWG5100.3] §3.5.1	
	Specifies the input page after which the Insert Sheet will be placed.  Pages are numbered starting at 1.  A 0 value means in front of the first page.  (See InsertSheet for use)	
InsertCount		Integer 	0:MAX	D	[PWG5100.3] §3.5.2	
	Specifies the number of  Insert Sheet to insert.  (See InsertSheet for use)	
InsertSheet	Yes	complex 		D	[PWG5100.3] §3.5	
	Specifies how Insert Sheets are to be inserted into the sequence of media sheets that are produced for each copy of the documents.  (Includes InsertAfterPageNumber, InsertCount, Media/MediaCol)	
JobAccountingOutputBin		String	Type3 keyword	J	[PWG5100.3] §3.8.3	
	Specifies the output bin where the accounting sheet is to be placed.  (See JobAccountingSheet for use)  (Keywords: Top, Middle, Bottom, Side, Left, Right, Center, Rear, FaceUp, FaceDown, Large-Capacity, MyMailbox, StackerN, MailboxN, TrayN *Note: N is replaced by a cardinal number, *Note: See [PWG5100.2 §2.1 for description of keywords)	
JobAccountingSheets		complex		J	[PWG5100.3] §3.8	
	Specifies the accounting sheet for a job.  (Includes JobAccountingSheetsType, Media/ MediaCol, JobAccountingOutputBin).	
JobAccountingSheetsType		String	Type3 keyword	J	[PWG5100.3] §3.8.1	
	Specifies the accounting sheet format for a job.  (See JobAccountingSheets for use)  (Keywords: None, Standard)	
JobCopies		Integer 	1:MAX	J	[PWG5100.7] §4.1.1	
	The number of copies of the Job to be printed.  (See also Copies Document Processing element)    	
JobCoverBack		complex 		J	[PWG5100.7] §4.1.2	
	The back cover to apply this Job. (Includes Media/MediaCol, CoverType)   	
JobCoverFront		complex 		J	[PWG5100.7] §4.1.3	
	The front cover to apply to this Job. (Includes Media/MediaCol, CoverType)   	
JobErrorSheet		complex		J	[PWG5100.3] §3.9	
	Specifies the error sheet for a job.  (Includes JobErrorSheetType, JobErrorSheetWhen, Media/MediaCol).	
JobErrorSheetType		String	Type3 keyword	J	[PWG5100.3] §3.9.1	
	Specifies the error sheet format for a job.  (See JobErrorSheet for use)  (Keywords: None, Standard)	
JobErrorSheetWhen		String	Type2 keyword	J	[PWG5100.3] §3.9.2	
	Specifies the accounting sheet format for a job.  (See JobErrorSheet for use)  (Keywords: OnError, Always)	
JobFinishings	Yes	String 	Type2 keyword	J	[PWG5100.7] §4.1.4	
	Identifies the finishing that the Printer uses for each job copy of the Job.  (See also Finishings Document element) (Keywords: None, Staple, Punch, Cover, Bind, SaddleStitch, EdgeStitch, StapleTopLeft, StapleBottomLeft, StapleTopRight, StapleBottomRight, EdgeStitchLeft, EdgeStitchTop, EdgeStitchRight, EdgeStitchBottom, StapleDualLeft, StapleDualTop, StapleDualRight, StapleDualBottom) 	
JobFinishingCol		complex 		J	[PWG5100.7] §4.1.5	
	Enables an end user to specify detailed finishing options not possible with the “JobFinishings” element.  (See also FinishingsCol Document element)  (Includes FinishingTemplate, Stitching)  	
JobHoldUntil		String 	Type3 keyword	J	[rfc2911] §4.2.2	
	Specifies the named time period during which the Job must become a candidate for printing. (keywords: NoHold, Indefinite, DayTime, Evening, Night, Weekend, SecondShift, ThirdShift)	
JobHoldUntilTime		String 	DateTime [rfc1123]	J	[prod-print2] §5.4	
	Specifies the date and time after which the Job must become a candidate for printing.  (example: Fri, 03 May 2002 08:49:37 GMT)	
JobMessageToOperator		String	Maxlength=1023	J	[PWG5100.3] §3.10	
	Message from the end user to indicate something about the processing of this Job.   (example: “Call 555-1234 before running this job”)	
JobPhoneNumber		String 	Maxlength=127	J	[prod-print2] §5.5	
	Contains the contact telephone number for this Job.	
JobPriority		Integer	1:100	J	[rfc2911] §4.2.1	
	Priority for scheduling the Job. A higher value specifies a higher priority.	
JobSaveDisposition		Complex 		J	[prod-print2] §5.7	
	Specifies that the Printer is to save the job as a file that can be re-printed on demand anytime in the future using the Print-URI operation (see section 5.1.4). )  (Includes SaveDisposition, SaveInfo)	
JobSheets		String 	type3 keyword	J	[rfc2911] §4.2.3
[PWG5100.3] §6.2 	
	Specifies which job start/end sheet(s), will be printed with a job.  (Keywords: None, Standard, JobStartSheet, JobEndSheet, JobBothSheets, FirstPrintStreamPage)	
JobSheetsCol		complex 		J	[PWG5100.3] §3.11	
	Allows the client to specify the media for the JobSheet.  (Includes JobSheets, Media/MediaCol)	
JobSheetMessage		String	Maxlength=1023	J	[PWG5100.3] §3.12	
	Conveys a message that is delivered with the job.  	
Media		String	type3 keyword	D	[rfc2911] §4.2.11	
	The name of the medium that the Printer uses for all impressions of the Job.  (Keyword examples: na_letter_8.5x11in, iso_a4_210x297mm, na_monarch_3.875x7.5in, choice_iso_a4_210x297mm_na_letter_8.5x11in.  See [pwg5101.1])	
MediaCol		complex		D	[PWG5100.3] §3.13	
	Enables a client end user to submit a list of media characteristics to the Printer as a way to more completely specify the media to be used than the Media element.  (Includes MediaBackCoating, MediaColor, MediaFrontCoating, MediaGrain , MediaHoleCount, MediaInfo, MediaKey, MediaMaterial, MediaOrderCount, MediaPrePrinted, MediaRecycled, MediaSize, MediaThickness, MediaTooth, MediaType, MediaWeightMetric)	
MediaBackCoating		String	Type3 keyword	D	[PWG5100.3] §3.13.10	
	Indicates the pre-process coating applied to the back of the media.  (See MediaCol for use)  (Keywords: None, Glossy, HighGloss, SemiGloss, Satin, Matte)	
MediaColor		String	Type3 keyword	D	[PWG5100.3] §3.13.4	
	Indicates the desired color of the media being specified.  (See MediaCol for use)  (Keywords: no-color, white, pink, yellow, blue, green, buff, goldenrod, red, gray, ivory, orange  (See [pwg5101.1] §4))	
MediaFrontCoating		String	Type3 keyword	D	[PWG5100.3] §3.13.10	
	Indicates the pre-process coating applied to the front of the media.  (See MediaCol for use)  (Keywords: None, Glossy, HighGloss, SemiGloss, Satin, Matte)	
MediaGrain		String	Type3 keyword	D	[prod-print2] §8.4.2	
	Indicates the grain of the media.  (See MediaCol for use)  (Keywords: XDirection, YDirection)	
MediaHoleCount		Integer	0:MAX	D	[PWG5100.3] §3.13.6	
	Indicates the number of pre-drilled holes in the desired media.  (See MediaCol for use)	
MediaInfo		String	Maxlength=255	D	[PWG5100.3] §3.13.3	
	Specifies information that helps describe the media instance.  Intended for human consumption.  (See MediaCol for use)	
MediaInputTrayCheck		String	Type3 keyword	D	[PWG5100.3] §3.14	
	Indicates that the characteristics of the media in the identified input tray must match the characteristics of the media identified by the "media" or "media-col"  element. (Keywords: Top, Middle, Bottom, Side, LargeCapacity, Envelope, Main, Manual.  See [RFC2911] Appendix C)	
MediaKey		String	Type3 keyword	D	[PWG5100.3] §3.13.1	
	The name of the media represented as a keyword.  The media that MediaKey represents is a named collection of MediaCol elements and their values.  Identical values  of MediaKey and the Media Document Processing element represent the same media.  (See MediaCol for use)	
MediaMaterial		String	Type3 keyword	D	[prod-print] §8.4.3	
	The material of the media.  (See MediaCol for use)  (Keywords: Aluminum, DryFilm, Paper, Polyester, WetFilm)	
MediaOrderCount		Integer	1:MAX	D	[PWG5100.3] §3.13.7	
	Indicates the number of sheets, within an ordered sequence of sheets; after which the sequence begins to repeat.  (See MediaCol for use)	
MediaPrePrinted		String	Type3 keyword	D	[PWG5100.3] §3.13.11	
	Indicates the pre-printed characteristics of the desired media.  (See MediaCol for use)  (Keywords: Blank, PrePrinted, LetterHead)	
MediaRecycled		String	Type3 keyword	D	[PWG5100.3] §3.13.10	
	Indicates the recycled characteristics of the media.  (See MediaCol for use)  (Keywords: None, Standard)	
MediaSize  		Complex		D	[PWG5100.3] §3.13.8	
	Explicitly specifies the numerical media width and height dimensions in hundredth of a millimeter.  (See MediaCol for use)  (Includes XDimension, YDimension)	
MediaSizeName  		String	Type3 keyword	D	[PWG5100.5] §8.1.	
	The medium size that the Printer uses for all impressions of the Job.  (See MediaCol for use)  (Keywords: na_letter_8.5x11in.  See [pwg5101.1] §5) 	
MediaThickness 		Integer	1:MAX	D	[prod-print2] §8.4.4	
	The thickness of the media in units of one hundredth of a millimeter.  This unit is equivalent to 1/2540 th of an inch.  (See MediaCol for use)	
MediaTooth  		String	Type3 keyword	D	[prod-print2] §8.4.1	
	The tooth (or roughness) of the media.  (See MediaCol for use)  (Keywords: Fine, Medium, Coarse)	
MediaType		String	Type3 keyword	D	[PWG5100.3] §3.13.2	
	The medium type that the Printer uses for all impressions of the Job.  (See MediaCol for use)  (Keywords: stationery, transparency envelope, envelope-plain, envelope-window, continuous, continuous-long, continuous-short, tab-stock, pre-cut-tabs, full-cut-tabs, multi-part-forms, labels, multi-layer, screen, screen-paged, photographic, cardstock, other   See also  [pwg5101.1] §3)	
MediaWeightMetric		Integer	0:MAX	D	[PWG5100.3] §3.13.9	
	Indicates the weight of the desired media rounded to the nearest whole number of grams per square meter.  (See MediaCol for use)	
MultipleDocumentHandling		String 	type2 keyword	J	[rfc2911] §4.2.4	
	Controls whether Input Document in multi-Document jobs are combined into a single Output Document or are kept as separate Output Document   Useful for application of Finishings and the placement of one or more print-stream pages into impressions and onto media sheets for multi-Document Jobs.  (Keywords: SingleDocument, SeparateDocumentUncollatedCopies, SeparateDocumentCollatedCopies, SingleDocumentNewSheet)	
NumberUp		Integer	1:MAX	D	[rfc2911] §4.2.9	
	Indicates the number of Input pages that the Printer is to image on one impression.	
OrientationRequested		String	type2 keyword	D	[rfc2911] §4.2.10	
	The desired orientation for printed pages for document formats that don’t have a built-in orientation.  (Keywords: Portrait, Landscape, ReverseLandscape, ReversePortrait)	
OutputBin		String	Type2 keyword	J,D	[PWG5100.2] §2.1 [PWG5100.5] §8.1	
	Specifies the output bin where the job is to be delivered.  (Keywords: Bottom, Center, FaceDown, FaceUp, LargeCapacity, Left, MailboxN*, Middle, MyMailbox, Rear, Right, Side, StackerN*, Top, TrayN*.  *Note: N is replaced by a cardinal number)	
OutputDevice		String	Maxlength=255	J,D	[PWG5100.7] §4.2.1 [PWG5100.5] §8.1	
	Specifies the device where the pages of of a Job/Document will be printed.	
Overrides	Yes	complex		D	[PWG5100.4] §5.2	
	Provides for the overriding of processing instructions on a page basis.  (Includes Pages DocumentNumbers, DocumentCopies and any processing element that affects pages) 	
PageDelivery		String	Type2 keyword	D	[PWG5100.3] §3.15	
	Indicates whether the pages of the job are to be delivered to the output bin or finisher in the same page order as the original document and face up or face down. .  See the PageOrderReceived Document Description element and the CurrentPageOrder Document Status element.  (Keywords: ReverseOrderFaceDown, ReverseOrderFaceUp, SameOrderFaceDown, SameOrderFaceUp, SystemSpecified)	
Pages	yes	RangeOfInteger	1:MAX	D	[PWG5100.4] §5.2.4	
	Specifies a range of pages in the document PDL data.  (See Overrides for use)  	
PagesPerSubset	yes	Integer	1:MAX	D	[PWG5100.4] §5.3	
	Combines all of the Pages of all of the Documents into a single stream of -Pages.  Then the Printer partitions that single stream into contiguous subsets of -Pages according to the list of integers. The list of integers is cyclical. When the last integer in the list is reached, the next subset uses the first.in the list.  Common use of subsets is a single value in the list.	
PageRanges	yes	RangeOfInteger	1:MAX	D	[RFC2911] §4.2.7	
	Specifies a range of pages in the document data to be output.	
PdlInitFile	Yes	Complex 		D	[prod-print2] §5.8	
	Controls initialization of the Printer’s Page Description Language (PDL) interpreter.  (Includes PdlInitFileEntry, PdlInitFileLocation. PdlInitFileName)	
PdlInitFileEntry		String 	Maxlength=255	D	[prod-print2] §5.8.1.3	
	Specifies an entry point within the init file at which the PDL interpreter starts.  (See PdlInitFile for use)	
PdlInitFileLocation		String 	Maxlength=1023	D	[prod-print2] §5.8.1.1	
	Contains a URL that specifies the path to the directory where the initialization file for the Printer’s PDL interpreter will be found.  (See PdlInitFile for use)	
PdlInitFileName		String 	Maxlength=255	D	[prod-print2] §5.8.1.2	
	Specifies the name of the PDL interpreter’s initialization file within the directory specified by the PdlInitFileLocation element.  (See PdlInitFile for use)	
PresentationDirectionNumberUp		String	Type2 keyword	D	[PWG5100.3] §3.17	
	Specifies the placement order of the page images on a Finished-Page Image with the "number-up" element. (Keywords: TorightTobottom, TobottomToright, ToleftTobottom, TobottomToleft, TorightTotop, TotopToright, ToleftTotop)	
PrintContent Optimize		String	type2 keyword	J,D	[PWG5100.7] §4.2.2 [PWG5100.5] §8.1	
	directs the type of optimization/processing that will be performed on the Document content.  It does not necessarily mean the value describes the content..  (Keywords: Photo, Graphics, Text, TextAndGraphics)	
PrintQuality		String	type2 keyword	D		
	The print quality that the Printer uses for the Job.  (Keywords: Draft, Normal, High)	
PrinterResolution		resolution		D	RFC2911] §4.2.12	
	The resolution that Printer uses for the Job in cross-feed and feed direction in units of dpi or dpcm.	
ProofPrint		Complex 		J	[prod-print2] §5.9	
	Specifies the elements for zero or more proof prints of the job that are to be printed prior to the printing the full run of the job.  (Includes ProofPrintCopies , Media/MediaCol and any other Processing elements).	
ProofPrintCopies		Integer 	0:MAX	J	[prod-print2] §5.9.1	
	Specifies the number of proof prints to be printed prior to the printing the full run of the job.  (See ProofPrint for use)	
SaveDisposition		String 	type3 keyword	J	[prod-print2] §5.7.1.1	
	Specifies whether the Printer must print and/or save the job.  (See JobSaveDisposition for use)  (Keywords: None,  PrintSave, SaveOnly)	
SaveDocumentFormat		String 	MimeMediaType [rfc2046], [rfc2048]	J	[prod-print2] §5.7.1.2.3.3	
	Indicates the document format in which the Printer saves the Document Data.  (See DocumentFormat Document Description element)  (See SaveInfo for use)	
SaveInfo	Yes	complex 		J	[prod-print2] §5.7.1.2	
	Contains sets of elements that each tells the Printer how to create each copy of the saved job.  (See JobSaveDisposition for use)  (Includes SaveLocation, SaveName, SaveDocumentFormat)	
SaveLocation		String 	Maxlength=1023	J	[prod-print2] §5.7.1.2.3.1	
	Specifies the path to the directory as a URI where the Printer saves the Document Data and other Job information.  (See SaveInfo for use)	
SaveName		String 	Maxlength=255	J	[prod-print2] §5.7.1.2.3.2	
	Specifies the name of the saved job in the directory specified by the “save-location” member element.  The value may be a relative path.  (See SaveInfo for use)	
SeparatorSheets		complex 		D	[PWG5100.3] §3.18	
	Specifies the separator sheets to be printed with the Document.  (Includes SeparatorSheetsType, Media/MediaCol)	
SeparatorSheetsType		String 	Type3 keyword	D	[PWG5100.3] §3.18.1	
	Specifies the separator sheets type.  (See SeparatorSheets for use)  (Keywords: None, SlipSheets, StartSheet, EndSheet, BothSheets)	
SheetCollate		String 	Type2 keyword	D	[rfc3381] §3.1	
	Specifies if the media sheets of each copy of each printed document in a job are to be in sequence.  (Keywords: Uncollated, Collated)	
Sides		String	type2 keyword	D	[rfc2911] §4.2.8	
	Indicates how an impression is to be placed upon the side(s) of the media.  (Keywords: OneSided, TwoSidedLongEdge, TwoSidedShortEdge, TwoSidedLongEdge)	
Stitching		complex 		D	[PWG5100.3] §3.2.2	
	Provides detailed stitching parameters.  (See FinishingsCol/JobFinishingsCol for use)  (Includes StitchingReferenceEdge, StitchingOffset, StitchingLocations)	
StitchingLocations	yes	Integer	0:MAX	D	[PWG5100.3] §3.2.2.3	
	The distance along the stitching axis where a stitch will be placed in hundredths of a millimeter.  (See Stitching for use)	
StitchingOffset		Integer	0:MAX	D	[PWG5100.3] §3.2.2.2	
	The perpendicular distance from the reference edge to the stitching axis in hundredths of a millimeter.    (See Stitching for use)	
StitchingReferenceEdge		String	type2 keyword	D	[PWG5100.3] §3.2.2.1	
	Specifies the stitching reference edge of the output media.  (See Stitching for use)  (Keyword: Bottom, Top, Left, Right)	
XDimension		Integer	0:MAX	D	[PWG5100.3] §3.13.8.1	
	Size of the media in hundredths of a millimeter along the bottom edge.  (See MediaSize for use)	
XImagePosition		String	type2 keyword	D	[PWG5100.3] §3.19.2	
	Causes the specified point of the Finished-Page Image to be positioned at a specified location.  (Keywords: None, Center, Left, Right)	
XImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.3	
	Causes the Finished-Page Image to be shifted in position with respect to the x-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	
Xside1ImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.4	
	Causes each Finished-Page Image that would be placed on the front side of a sheet to be shifted in position with respect to the x-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	
Xside2ImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.5	
	Causes each Finished-Page Image that would be placed on the backside of a sheet to be shifted in position with respect to the x-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	
YDimension		Integer	0:MAX	D	[PWG5100.3] §3.13.8.2	
	Size of the media in hundredths of a millimeter along the left edge.  (See MediaSize for use)	
YImagePosition		String	type2 keyword	D	[PWG5100.3] §3.19.6	
	Causes the specified point of the Finished-Page Image to be positioned at a specified location.  (Keywords: None, Center, Top, Bottom)	
YImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.7	
	Causes the Finished-Page Image to be shifted in position with respect to the y-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	
Yside1ImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.8	
	Causes each Finished-Page Image that would be placed on the front side of a sheet to be shifted in position with respect to the y-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	
Yside2ImageShift		Integer	MIN:MAX	D	[PWG5100.3] §3.19.9	
	Causes each Finished-Page Image that would be placed on the backside of a sheet to be shifted in position with respect to the y-axis of the media.  The unit of measure for this element is hundredths of a millimeter.  The sign of the value indicates the direction of the shift.	

7.2	Job Elements (Status and Description)
* Group Key: S=Status, D=Description
Table 4- Job Elements (Status and Description)
Job Element Name	Multivalued	Syntax 	Constraint	Group*	Reference	
	Description (values)	
CompressionSupplied		String	Type2 keyword	D	[PWG5100.7] §5.2.1	
	Default compression algorithm used for the Documents Data.   (Keywords: None, Deflate, Gzip, Compress)	
DateTimeAtCompleted		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.7	
	Indicates the date and time at which the Job completed.  (example: Fri, 03 May 2002 08:49:37 GMT)	
DateTimeAtCreation		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.5	
	Indicates the date and time at which the Job was created . (example: Fri, 03 May 2002 08:49:37 GMT)	
DateTimeAtProcessing		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.6	
	Indicates the date and time at which the Job first began processing.  (example: Fri, 03 May 2002 08:49:37 GMT)	
DetailedStatusMessage	Yes	String 	Maxlength=1023	S	[rfc2911] §4.3.10	
	Specifies additional detailed and technical information about the job.  Intended for use by the system administrator or other experienced technical persons and so is not localized by the Printer.  (example: “PostScript error: stack overflow”) (job-detailed-status-message in IPP)	
DocumentAccessErrors	Yes	String 	Maxlength=1023	S	[rfc2911] §4.3.11	
	Information about each Document access error for this job encountered by the Printer.  (example: “(404) http://www.company.com/pub/fileToPrint.pdf ”)  (job-document-access-errors in IPP)	
DocumentCharsetSupplied		String 	Maxlength=63	D	[PWG5100.7] §5.2.2	
	The default charset of the Documents content	
DocumentDigitalSignatureSupplied		String	Type2 keyword	D	[PWG5100.7] §5.2.3	
	The type of digital signature, if any, used in the Document Content.  (Keywords: dss, none, pgp, smime, xmldsig)  	
DocumentFormatDetailsSupplied	Yes	Complex 	Complex	D	[PWG5100.7] §5.2.4  	
	Summarizes the default distinct contained document formats when Document contains multiple files, i.e., the Document is a container DocumentFormat, such as ‘multipart/related’ or ‘application/zip’.   For example, a container containing 100 PostScript files and 1 PCL file would have two sets of values.  (Includes DocumentSourceApplicationName, DocumentSourceApplicationVersion, DocumentSourceOsName, DocumentSourceOsVersion, DocumentFormat, DocumentFormatDeviceId, DocumentFormatVersion, DocumentNaturalLanguage). 	
DocumentFormatSupplied		String	MimeMediaType [rfc2046], [rfc2048]	D	[PWG5100.7] §5.2.5
	
	The default Document format (i.e., PDL) for Documents in the Job. The value “application/octet-stream” has a special meaning.  This value is used to indicate that a Printer is capable of auto-sensing the format of the Document.  The values “application/zip” and “multipart/related” are container formats for which DocumentContainerSummary gives additional information about the contained files.  (Examples: application/octet-stream, application/postscript, application/vnd.hp-PCL, “text/plain; charset=utf-8”, application/zip, multipart/related)	
DocumentFormatVersionSupplied		String	Maxlength=127	D	[PWG5100.7] §5.2.6	
	The default level or version of the DocumentFormat.  Values are either from the prtInterpreterLangLevel [rfc1759] or a standard designation.  (examples: “3” for DocumentFormat=application/postscript’ “5e” for DocumentFormat=application/vnd.hp-pcl; “ISO 12639-1:1996” for TIFF/IT Profile 1)	
DocumentMessageSupplied		String	Maxlength=1023	D	[PWG5100.7] §5.2.7	
	A message from either (1) the user to the operator about the Documents 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 Documents.	
DocumentNameSupplied		String	Maxlength=255	D	[PWG5100.7] §5.2.8	
	The default name for the Documents in the Job to be used in an implementation specific manner.   	
DocumentNaturalLanguageSupplied		String 	Maxlength=127	D	[PWG5100.7] §5.2.9	
	Identifies the defailt Natural Language for the Documents in the Job.	
ElementFidelity		Boolean		D	[rfc2911] §15.1,
[PWG5100.5] §8.1.1	
	Allows a user to control whether or not the Printer MUST honor all supplied Processing elements in the Job Creation operation.  For a ‘true’ value the Printer rejects the job submission if any of the supplied Processing element values are unsupported.  For a ‘false’ value the Printer MUST accept the job submission and do best effort.  Default = ‘false’ NOTE: Use “JobMandatoryElements” to explicitly specify a subset of the supplied elements that the Printer MUST honor. (ipp-attribute-fidelity in IPP)	
ElementsNaturalLanguage		String	Natural language	D	[rfc2911] §4.3.20	
	Indicates the natural language of the elements with string syntax that were set by the End User. (attributes-natural-language in IPP)	
ErrorsCount		Integer	MIN:MAX	S	[PWG5100.7] §5.1.1	
	The total number of errors that a Printer has generated while processing and printing a Job’s Document(s).	
Impressions		Integer	0:MAX	D	[rfc2911] §4.3.17.2	
	The total size in number of impressions in all the Job’s Document(s). (job-impressions in IPP)	
ImpressionsCompleted		Integer	0:MAX	S	[rfc2911] §4.3.18.2	
	The number of impressions completed for the Job so far. (job-impressions-completed in IPP)	
ImpressionsCompletedCurrentCopy		Integer	0:MAX	S	[rfc3381] §4.4	
	The number of impressions completed for the current iteration of this Job so far. 	
JobAccountId		String 	Maxlength=255	D	[PWG5100.3] §3.6	
	Account associated with this Job.	
JobAccountingUserID		String 	Maxlength=255	D	[PWG5100.3] §3.7	
	Specifies the User ID associated with the “JobAccountId”.	
JobCollationType		String 	Type2 keyword	S	[rfc3381] §4.1	
	Identifies the collation type of the Job.  (Keywords:  Other, Unknown, UncollatedSheets, UncollatedDocuments, CollatedDocuments)	
JobId		Integer 	1:MAX	S	[rfc2911] §4.3.2	
	The Printer sets this to the ID of this Job , which is unique for the Printer.	
JobMandatoryElements	Yes	String 	Type3 keyword	D	[PWG5100.5] §8.1	
	Allows a user to list which Processing elements the Printer must honor.  The Printer rejects the job submission if any of the listed elements are unsupported or contain values that the Printer does not support.   All of the remaining supplied elements are best effort. This element is ignored if ElementFidelity is supplied with a ‘true’ value.  (See [rfc2911] §15.1) (Keywords: None and any Processing element names.  Member elements of collection elements are named as Attr.Member.  For example, JobSheetsCol.Media) NOTE: New element to align fidelity with FSG work was JobMandatoryAttributes).	
JobMessageFromOperator		String	Maxlength=127	D	[rfc2911] §4.3.16	
	Message to the end user indicating the reasons for any management action taken on this Job.   (example: “Job canceled due to length”, “Pick job up in mailbox”)	
JobName		String 	Maxlength=255	D	[rfc2911] §4.3.5	
	The Printer sets this to the client-supplied end-user friendly name for the Job, else the Printer must generate a name from other information.  (example: “license agreement memo”)	
JobOriginatingUserName		String 	Maxlength=255	D	[rfc2911] §4.3.6	
	The Printer sets this element to the most authenticated printable name that it can obtain (example: “John Doe”, \authDomain\John Doe”)	
JobPassword		String 	Maxlength=255	D	[prod-print2] §4.1	
	Contains a password supplied by the client encrypted according to method specified by the client in the JobPasswordEncryption element.	
JobPasswordEncryption		String 	Type3 keyword	D	[prod-print2] §4.2	
	Specifies the type of encryption that the client is used for the supplied value of the JobPassword element.  (Keywords: None, Md2, Md4, Md5, Sha)	
JobPrinterMakeAndModel		String 	Maxlength=127	S	[prod-print] §6.1	
	Identifies the make and model of the output device that saved this Job according to the JobSaveDisposition Job Processing element.	
JobPrinterUri		String 	uri	S	[rfc2911] §4.3.3	
	The Printer set this to the URI of Printer that created this Job. (example: ipp://www.company.com/printer)	
JobState		String	Type1 keyword	S	[rfc2911] §4.3.7	
	The current state of this Job (see section 4.3.1.1).  See also JobStateReasons element below.  (Keywords: Pending, Pending-Held, Processing, ProcessingStopped, Canceled, Aborted, Completed)	
JobStateMessage		String 	Maxlength=1023	S	[rfc2911] §4.3.6	
	Specifies information about the "JobState" and "JobStateReasons" elements in human readable text localized by the Printer according to the natural language supplied in the client’s query request. (example: “Job completed successfully with warnings" for an English request)	
JobStateReasons	Yes	String	type2 keyword	S	[rfc2911] §4.3.8
[prod-print2] §8.3.1
[PWG5100.7] §6.1
[pwg5100.5]	
	Provides additional information about this Job's current state.  (Keywords: AbortedBySystem, CompressionError, DigitalSignatureDidNotVerify, DigitalSignatureTypeNotSupported, DocumentAccessError, DocumentFormatError, ErrorsDetected, JobCanceledAtDevice, JobCanceledByOperator, JobCanceledByUser, JobCompletedSuccessfully, JobCompletedWithErrors, JobCompletedWithWarnings, JobDataInsufficient, JobDigitalSignatureWait, JobHoldUntilSpecified, JobIncoming, JobInterpreting, JobOutgoing, JobPasswordWait, JobPrinting, JobQueued, JobQueuedForMarker, JobRestartable, JobResuming, JobSavedSuccessfully, JobSaveError, JobSaving, JobScheduling, JobSpooling, JobStreaming, JobSuspended, JobSuspendedByOperator, JobSuspendedBySystem, JobSuspendedByUser, JobSuspending, JobTransforming, None, PrinterStopped, PrinterStoppedPartly, ProcessingToStopPoint, ProofPrintWait, QueuedInDevice, ResourcesAreNotReady, ResourcesAreNotSupported, ServiceOffLine, SubmissionInterrupted, UnsupportedCompression, UnsupportedDocumentFormat, WarningsDetected)	
JobUri		String 	uri	S	[rfc2911] §4.3.1	
	The Printer sets this to the URI for this Job. (example: ipp://www.company.com/printer/jobs/22)  The URI is globally unique.	
KOctets		Integer	0:MAX	D	[rfc2911] §4.3.17.1	
	The total size of this Job’s Document(s) in integral units of 1024 octets. (job-k-octets in IPP)	
KOctetsProcessed		Integer	0:MAX	S	[rfc2911] §4.3.18.1	
	the total number of octets processed in integral units of 1024 octets so far.  (job-k-octetsprocessed in IPP)	
MediaSheets		Integer	0:MAX	D	[rfc2911] §4.3.17.3	
	The total number of media sheets to be produced for this Job’s Document(s). . (job-media-sheets in IPP)	
MediaSheetsCompleted		Integer	0:MAX	S	[rfc2911] §4.3.18.3	
	The media-sheets completed marking and stacking so far. (job-media-sheets-completed in IPP)	
MoreInfo		String 	uri	S	[rfc2911] §4.3.4	
	URI used to obtain information intended for end user consumption about this specific Job/Document.  (example: “http://www.company.com/printer/embededjobpage”) . (job-more-info in IPP)	
NumberOfDocuments		Integer 	0:MAX	S	[rfc2911] §4.3.12	
	The number of Documents in this Job.	
NumberOfInterveningJobs		Integer	0:MAX	S	[rfc2911] §4.3.15	
	The number of jobs that are "ahead" of this Job assuming the current scheduled order.	
OutputDeviceAssigned		String	Maxlength=127	S	[rfc2911] §4.3.13	
	Identifies the output device to which the Printer has assigned this Job  (example: “Pete’s Printer”)	
PrinterUpTime		Integer	1:MAX	S	[rfc2911] §4.3.14.4	
	The amount of time (in seconds) that the Printer has been up and running.  See Printer element “PrinterUpTime”  (job-printer-up-time in IPP)	
SheetsCompletedCopyNumber		Integer	0:MAX	S	[rfc3381] §4.2	
	Number of the copy being stacked for the current Document.	
SheetsCompletedDocumentNumber		Integer	0:MAX	S	[rfc3381] §4.3	
	Number of the document in this Job currently being stacked. .  The Documents in a Job are numbered 1, 2, 3.  A 0 value means no Document is currently being stacked.	
TimeAtCompleted		Integer	MIN:MAX	S	[rfc2911] §4.3.14.3	
	The time at which the Job completed in “PrinterUpTime” seconds.	
TimeAtCreation		Integer	MIN:MAX	S	[rfc2911] §4.3.14.1	
	The time at which the Job was created in “PrinterUpTime” seconds. 	
TimeAtProcessing		Integer	MIN:MAX	S	[rfc2911] §4.3.14.2	
	The time at which the Job first began processing in “PrinterUpTime” seconds.	
WarningsCount		Integer	MIN:MAX	S	[PWG5100.4 §6.1	
	The total number of warnings that a Printer has generated while processing and printing a Job’s Document(s).   (job-warnings-count in IPP)	

7.3	Document Elements (Status and Description)
* Group Key: S=Status, D=Description.  Reference is given to the Job Description attribute in [rfc2911] and [pwg5100.n] even when the [PWG5100.5] has a corresponding Document Description attribute defined, since the definitions are so parallel.  Reference is given to [PWG5100.5] when the element is defined therein only.
Table 5 – Document Elements (Status and Description)
Document Element Name	Multivalued	Syntax 	Constraint	Group*	Reference	
	Description (values) 	
Compression		String	Type2 keyword	D	[rfc2911] §4.4.32	
	Compression algorithm used on the Document Data, if any.   (Keywords: None, Deflate, Gzip, Compress)	
CurrentPageOrder		String	Type2 keyword	S	[PWG5100.3] §4.1	
	Indicates the page order of the pages in the document data. Initially set to PageOrderReceived and updated if data is transformed. (Keywords: 1ToNOrder, NTo1Order)	
DateTimeAtCompleted		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.7	
	Indicates the date and time at which this Document completed.  (example: Fri, 03 May 2002 08:49:37 GMT)	
DateTimeAtCreation		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.5	
	Indicates the date and time at which this Document was created . (example: Fri, 03 May 2002 08:49:37 GMT)	
DateTimeAtProcessing		String	DateTime [rfc1123]	S	[rfc2911] §4.3.14.6	
	Indicates the date and time at which this Document first began processing.  (example: Fri, 03 May 2002 08:49:37 GMT)	
DetailedStatusMessage	Yes	String 	Maxlength=1023	S	[rfc2911] §4.3.10	
	Specifies additional detailed and technical information about this Document.  Intended for use by the system administrator or other experienced technical persons.  (example: “PostScript error: stack overflow”) (job-detailed-status-message in IPP)	
DocumentAccessErrors	Yes	String 	Maxlength=1023	S	[rfc2911] §4.3.11	
	Information about each Document access error for this Document encountered by the Printer.  (example: “(404) http://www.company.com/pub/fileToPrint.pdf ”)  (job-document-access-errors in IPP)	
DocumentCharset		String 	Maxlength=63	D	[PWG5100.7] §3.2.2  [PWG5100.5] §9.1.10	
	The charset of the Document content	
DocumentDigitalSignature		String	Type2 keyword	D	[PWG5100.7] §3.2.3  [PWG5100.5] §9.1.11	
	The type of digital signature, if any, used in the Document Content.  (Keywords: dss, none, pgp, smime, xmldsig)  	
DocumentFormat		String	MimeMediaType [rfc2046], [rfc2048]	D	[rfc2911] §3.2.1.1
[PWG5100.5] §9.1.12	
	The Document format (i.e., PDL) for this Document. The value “application/octet-stream” has a special meaning.  This value is used to indicate that a Printer is capable of auto-sensing the format of the Document.  The values “application/zip” and “multipart/related” are container formats for which DocumentContainerSummary gives additional information about the contained files.  (Examples: application/octet-stream, application/postscript, application/vnd.hp-PCL, “text/plain; charset=utf-8”, application/zip, multipart/related)	
DocumentFormatDetails	Yes	Complex 		D	[PWG5100.7] §3.2.5  [PWG5100.5] §9.1.13	
	Summarizes the distinct contained document formats when the Document contains multiple files, i.e., the Document is a container DocumentFormat, such as ‘multipart/related’ or ‘application/zip’.   For example, a container containing 100 PostScript files and 1 PCL file would have two sets of values.  (Includes DocumentSourceApplicationName, DocumentSourceApplicationVersion, DocumentSourceOsName, DocumentSourceOsVersion, DocumentFormat, DocumentFormatDeviceId, DocumentFormatVersion, DocumentNaturalLanguage). 	
DocumentFormatDetailsDetected	Yes	Complex 		S	[PWG5100.5] §9.1.14	
	Generated by the Printer to indicate the actual document format details of the Document object.  (Includes DocumentCreatorApplicationName, DocumentCreatorApplicationVersion, DocumentCreatorOsName, DocumentCreatorOsVersion, DocumentFormat, DocumentFormatDeviceId, DocumentFormatVersion, DocumentNaturalLanguage). 	
DocumentFormatDetected		String	mimeMediaType [rfc2046], [rfc2048]	S	[PWG5100.5] §9.1.15	
	The Printer sets this to the actual DocumentFormat that the Printer detects when auto-sensing the document format, i.e., when the DocumentFormat is omitted or supplied as ‘application/octet-stream’.   (example: ‘application/postscript’)	
DocumentFormatDeviceId		String	Maxlength=127	D	[PWG5100.5] §9.1.13	
	Identifies the type of device for which the document was formatted, including manufacturer and model, following the IEEE 1284-2000 Device ID string.  (example: MANUFACTURER:ACME Co.;COMMAND SET:PS;MODEL:LaserBeam 9;) (See DocumentFormatDetails for use)	
DocumentFormatVersion		String	Maxlength=127	D	[PWG5100.5] §9.1.16	
	The level or version of the DocumentFormat.  Values are either from the prtInterpreterLangLevel [rfc1759] or a standard designation.  (examples: “3” for DocumentFormat=application/postscript’ “5e” for DocumentFormat=application/vnd.hp-pcl; “ISO 12639-1:1996” for TIFF/IT Profile 1)	
DocumentFormatVersionDetected		String	Maxlength=127	S	[PWG5100.5] §9.1.17	
	The Printer sets this to the actual DocumentFormat level or version that the Printer detects when auto-sensing the document format, i.e., when the DocumentFormat is omitted or supplied as ‘application/octet-stream’.  (examples: “3” for DocumentFormat=application/postscript’ “5e” for DocumentFormat=application/vnd.hp-pcl; “ISO 12639-1:1996” for TIFF/IT Profile 1)	
DocumentMessage		String	Maxlength=1023	D	[PWG5100.5] §9.1.20	
	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.	
DocumentName		String	Maxlength=255	D	[rfc2911] §3.2.1.1	
	Name for this Document to be used in an implementation specific manner.   	
DocumentNaturalLanguage		String 	Maxlength=127	D	[rfc2911] §3.2.1.1
[PWG5100.5] §9.1.22	
	Identifies the primary Natural Language of this Document.
	
DocumentNumber		integer		S	[PWG5100.4] §9.2, [PWG5100.5] §9.1.23	
	The order of this document within a job starting at a base of 1.   	
PrinterUri		String	Maxlength=1023	S	[PWG5100.5] §9.1.24	
	The Printer sets this to the URI of the Printer, i.e., a copy of the Job’s JobPrinterUri element.    (example: ipp://www.company.com/printers/myprinter) (document-printer-uri in IPP)	
DocumentSourceApplicationName		String 	Maxlength=255	D	[PWG5100.5] §9.1.13	
	The name of the application that created the document, without its version number. (examples: “Photoshop”, “Microsoft Word”) (See DocumentFormatDetails for use)	
DocumentSourceApplicationVersion		String 	Maxlength=127	D	[PWG5100.5] §9.1.13	
	The version of the application that created the document, without its name. (examples: 'V3.0.', ‘V6.0’) (See DocumentFormatDetails for use)	
DocumentSourceOsName		String 	Maxlength=40	D	[PWG5100.5] §9.1.13	
	The name of the operating system, without version number, on which the document was generated (see IANA [os-names]).  (examples: ‘LINUX’, ‘MACOS’, ‘NETWARE’, ‘WINDOWS’) (See DocumentFormatDetails for use)	
DocumentSourceOsVersion		String 	Maxlength=127	D	[PWG5100.5] §9.1.13	
	The version of the operating system, without its name, on which the document was generated (see IANA [os-names].  (examples: For LINUX = ‘1.0’, 2.4’; For WINDOWS = ‘95’, ‘NT’, ‘NT-4’, ‘2000’, ‘XP’) (See DocumentFormatDetails for use)	
DocumentState		String	Type1 keyword	S	[PWG5100.5] §9.1.25	
	The current state of this Document.  See also DocumentStateReasons element below.   (Keywords: Pending, Processing, Canceled, Aborted, Completed)  	
DocumentStateMessage		String 	Maxlength=1023	S	[PWG5100.5] §9.1.26	
	Specifies information about the "DocumentState" and "DocumentStateReasons" elements of this Document in human readable text localized by the Printer according to the language supplied in the client’s query request. (Example: “Document completed successfully with warnings" for an English request)	
DocumentStateReasons	Yes	String	type2 keyword	S	[PWG5100.5] §9.1.27	
	Provides additional information about this Document’s current state.  (Keywords: AbortedBySystem, CanceledAtDevice, CanceledByOperator, CanceledByUser, CompletedSuccessfully, CompletedWithErrors, CompletedWithWarnings, CompressionError, DocumentAccessError, DocumentFormatError, Incoming, Interpreting, None,Outgoing, Printing, PrinterStoppedPartly, Printing, ProcessingToStopped, ProofPrintWait, Queued, QueuedForMarker, QueuedInDevice, ResourcesAreNotReady, ResourcesAreNotSupported, Spooling, Streaming, SubmissionInterrupted, Transforming, UnsupportedCompression, UnsupportedDocumentFormat, WarningsDetected)	
DocumentUri		String 	Maxlength=1023	D	[rfc2911] §3.2.2
[PWG5100.5] §9.1.28	
	Reference to the Document to be printed (Print by reference) supplied by the Client.	
ElementsCharset		String	Charset	D	[rfc2911] §4.3.19	
	Indicates the coded character set and encoding method of the elements in this Document object with string syntax that were set by the End User. (attributes-charset in IPP)	
ElementsNaturalLanguage		String	Natural language	D	[rfc2911] §4.3.20	
	Indicates the natural language of the elements in this Document object with string syntax that were set by the End User. (attributes-natural-language in IPP)	
ErrorsCount		Integer	MIN:MAX	S	[PWG5100.5] §9.1.29	
	The total number of errors that a Printer has generated while processing and the Document.	
Impressions		Integer	0:MAX	D	[rfc2911] §4.3.17.2	
	The total size in number of impressions in this Document. (job-impressions in IPP)	
ImpressionsCompleted		Integer	0:MAX	S	[rfc2911] §4.3.18.2	
	The number of impressions completed for this Document so far. (job-impressions-completed in IPP)	
ImpressionsCompletedCurrentCopy		Integer	0:MAX	S	[rfc3381] §4.4	
	The number of impressions completed for the current iteration of this Document so far. 	
JobId		integer	1:MAX	S	[PWG5100.5] §9.1.18	
	The Printer sets this to the ID of the Job containing this Document, i.e., a copy of the Job’s JobId.  The ID is unique for the Printer. (document-job-id in IPP)	
JobUri		String	Maxlength=1023	S	[PWG5100.5] §9.1.19	
	The Printer sets this to the URI for the job, i.e., a copy of the Job’s JobUri.  The URI is globally unique.  (example: ipp://www.company.com/printers/myprinter/jobs/22) (document-job-uri in IPP)	
KOctets		Integer	0:MAX	D	[rfc2911] §4.3.17.1	
	The total size of this Document in integral units of 1024 octets. (job-k-octets in IPP)	
KOctetsProcessed		Integer	0:MAX	S	[rfc2911] §4.3.18.1	
	the total number of octets processed in integral units of 1024 octets so far.  (job-k-octets-processed in IPP)	
LastDocument		Boolean		D	[rfc2911] §3.3.1	
	Has a ‘true’ value if this Document is the last Input Document for the Job.   Default = ‘false’.	
MediaSheets		Integer	0:MAX	D	[rfc2911] §4.3.17.3	
	The total number of media sheets to be produced for this Document. (job-media-sheets in IPP)	
MediaSheetsCompleted		Integer	0:MAX	S	[rfc2911] §4.3.18.3	
	The media-sheets completed marking and stacking for this Document so far. (job-media-sheets-completed in IPP)	
MoreInfo		String 	uri		S	[rfc2911] §4.3.4	
	URI used to obtain information intended for end user consumption about this specific Document.  (example: “http://www.company.com/printer/embededjobpage”) . (job-more-info in IPP)	
OutputDeviceAssigned		String	Maxlength=127	S	[rfc2911] §4.3.13	
	Identifies the output device to which the Printer has assigned this Job  (example: “Pete’s Printer”)	
PageOrderReceived		String	Type2 keyword	D	[PWG5100.3] §3.16	
	Indicates the order of pages in this Document data as supplied with the job. (Keywords: 1ToNOrder, NTo1Order)	
PrinterUpTime		Integer	1:MAX	S	[rfc2911] §4.3.14.4	
	The amount of time (in seconds) that the Printer has been up and running.  (See Printer element “PrinterUpTime”)  (job-printer-up-time)	
SheetsCompletedCopyNumber		Integer	0:MAX	S	[rfc3381] §4.2	
	Number of the copy being stacked for this Document. 	
TimeAtCompleted		Integer	MIN:MAX	S	[rfc2911] §4.3.14.3	
	The time at which this Document completed.	
TimeAtCreation		Integer	MIN:MAX	S	[rfc2911] §4.3.14.1	
	The time at which this Document was created in “PrinterUpTime” seconds. 	
TimeAtProcessing		Integer	MIN:MAX	S	[rfc2911] §4.3.14.2	
	The time at which this Document first began processing.	
WarningCount		Integer	MIN:MAX	S	[PWG5100.4 §6.1	
	The total number of warnings that a Printer has generated while processing and printing the Document.   (job-warning-count in IPP)	

7.4	Printer Elements (Status and Description)
* Group Key: S=Status, D=Description
Table 6 - Printer Elements (Status and Description)
Printer Element Name	Multivalued	Syntax 	Constraint	Group*	reference	
	Description (values)	
ColorSupported		boolean		D	[rfc2911] §4.4.26	
	Indicates if this Printer is capable of any type of color printing at all, including highlight color. 	
CompressionSupported	Yes	String	Type3 keyword	D	[rfc2911] §4.4.32	
	Identifies the set of Compression algorithms for Document content that this Printer supports.  (Keywords: None, Deflate, Gzip, Compress)	
DeviceId		String	IEEE 1284	D	See Appendix 11.1	
	An identifier based on IEEE 1284 to identify the device that the Printer represents.  Often used to load an appropriate driver on the client device.  (example:  “MANUFACTURER:ACME;COMMAND SET:PCL,PJL,PS,XHTML-Print+xml;MODEL:LaserBeam 9;COMMENT:example;ACTIVE COMMAND SET:PCL”)	
DocumentCharsetDefault		String 	Maxlength=63	S	[PWG5100.7] §7.1	
	The default charset for Document content	
DocumentCharsetSupported	Yes	String 	Maxlength=63	S	[PWG5100.7] §7.2  	
	The allowed charsets for Document content	
DocumentCreationElementsSupported	Yes	String 	Type2 keyword	S	[PWG5100.5] §10.1  	
	The Processing and Description elements that are allowed in a Document Creation operation (e.g. SendDocument, SendUri)	
DocumentDigitalSignatureDefault		String	Type2 keyword	S	[PWG5100.7] §7.3	
	The default type of digital signature, if any, used in the Document Content.  (Keywords: dss, none, pgp, smime, xmldsig)  	
DocumentDigitalSignatureSupported		String	Type2 keyword	S	[PWG5100.7] §7.4	
	The allowed  types of digital signature, if any, for the Document Content.  (Keywords: dss, none, pgp, smime, xmldsig)  	
DocumentFormatDefault		String	MimeMediaType [rfc2046], [rfc2048]	D	[rfc2911] §4.4.21	
	The document format (i.e. PDL) that this Printer has been configured to assume if the client does not specify a document format in any of the actions that supply document content for a Job. The value “application/octet-stream” has a special meaning.  This value is used to indicate that a Printer is capable of auto-sensing the format of the document.  (examples: application/octet-stream, application/postscript, application/vnd.hp-PCL, “text/plain; charset=utf-8”)	
DocumentFormatDetailsDefault		Complex 	Complex	D	[PWG5100.7] §7.5  	
	The default distinct contained document formats when Document contains multiple files, i.e., the Document is a container DocumentFormat, such as ‘multipart/related’ or ‘application/zip’.   (Includes DocumentSourceApplicationName, DocumentSourceApplicationVersion, DocumentSourceOsName, DocumentSourceOsVersion, DocumentFormat, DocumentFormatDeviceId, DocumentFormatVersion, DocumentNaturalLanguage). 	
DocumentFormatDetailsSupported	YES	String	Type2 keyword	D	[PWG5100.7] §7.6	
	Lists the type2 keyword names of the member attributes of DocumentFormatDetails that the Printer supports. (Examples: DocumentCreatorApplicationName, DocumentCreatorApplicationVersion, DocumentCreatorOsName, DocumentCreatorOsVersion, DocumentFormat, DocumentFormatDeviceId, DocumentFormatVersion, DocumentNaturalLanguage).	
DocumentFormat
Supported	YES	String	MimeMediaType [rfc2046], [rfc2048]	D	[rfc2911] §4.4.22 .	
	Identifies both the Document and Image formats supported by this Printer.    Specifies the set of Document formats that the Printer supports.  (examples: application/octet-stream, application/postscript, application/vnd.hp-PCL, “text/plain; charset=utf-8”).   Also specifies the set of Image formats that the Printer supports.  (examples:   ‘image/jpeg’ which is a registered MIME Media Type with IANA.   	
DocumentFormatVersionDefault		String	Maxlength=127	D	jobx] §7.7	
	The default level or version of the DocumentFormats that the Printer will use if not supplied by the Client in DocumentFormatDetails.  (examples: “3” for DocumentFormat=application/postscript’ “5e” for DocumentFormat=application/vnd.hp-pcl; “ISO 12639-1:1996” for TIFF/IT Profile 1) 	
DocumentFormatVersionSupported	YES	String	Maxlength=127	D	jobx] §7.8	
	The level or version of the DocumentFormats that the Printer will accept if supplied by the Client in DocumentFormatDetails.  (examples: “3” for DocumentFormat=application/postscript’ “5e” for DocumentFormat=application/vnd.hp-pcl; “ISO 12639-1:1996” for TIFF/IT Profile 1)	
GeneratedNaturalLanguageSupported	YES	String	Natural Language	D	[rfc2911] §4.4.20	
Identifies the natural language(s) that the Printer supports in returned values of messages generated by the Printer, that is, the JobStateMessage, DocumentStateMessage, and PrinterStateMessage elements.	
ImpressionsSupported		RangeOfInteger	0:MAX	D	[rfc2911] §4.4.34	
	Specifies the upper and lower bounds for the number of impressions allowed per job. (job-impressions-supported in IPP)	
JobCreationElementsSupported	YES	String	Type2 keyword	D	[prod-print1] §7.1	
	Identifies the set of Job Processing and Job Description elements (but not member elements) that this Printer will accept in a JobCreation action  (job-creation-attributes-supported in IPP)	
JobPasswordEncryptionSupported	Yes	String	type3 keyword 	D	[prod-print1] §7.3	
	Identifies which encryption methods this Printer supports as values of the JobPasswordEncryption Job Description element for Secure Print.  (Keywords: None, Md2, Md4, Md5, Sha)	
JobPasswordSupported		Integer	0:MAX	D	[prod-print1] §7.2	
	Indicates the maximum length that this Printer will accept for the unencrypted password which the client will encrypt as the value of the JobPassword Description Element.	
JobSpoolingSupported		String	type2 keyword	D	[prod-print1] §7.4	
	Indicates whether or not the Printer spools Jobs before interpreting the document data (RIPing).  (Keywords: Spool, Stream, Automatic)	
KOctetsSupported		RangeOfInteger	0:MAX	D	[rfc2911] §4.4.33	
	Specifies the allowable upper and lower bounds of the total size per Job in integral units of 1024 octets that this Printer will accept. (job-k-octets-supported in IPP)	
MaxSaveInfoSupported		Integer	1:MAX	D	[prod-print1] §7.5	
	Identifies the maximum number of SaveInfo member element collections that this Printer can accept in a job request.	
MediaColDatabase	Yes	Complex		D	[prod-print1] §7.6	
	Identifies all of the Media supported by this Printer using a collection value for each which identifies the media characteristics.  This element is not returned when ‘all’ is requested.  (Includes any of the MediaCol member elements)	
MediaSheetsSupported		RangeOfInteger	0:MAX	D	[rfc2911] §4.4.35	
	Specifies the upper and lower bounds for the number of media sheets allowed per job by this Printer.  (job-media-sheets-supported in IPP)	
MultipleDocumentJobsSupported		boolean		D	[rfc2911] §4.4.16	
	Indicates whether this Printer supports more than one Document per job, i.e., more than one SendDocument and/or SendUri request per job.  A multi-Document per job Printer must implement this element and have a value of ‘true’.  A single Document per job Printer may either not support this element or support it with a value of ‘false’.	
MultipleOperationTimeOut		Integer	1:MAX	D	[rfc2911] §4.4.31	
	Identifies the minimum time (in seconds) that this multi-Document per job Printer will wait between actions on an open job before timing out.  The actions can add Document to the open Job or close the Job.  Timeouts are handled in an implementation specific manner.  Multi-Document per job Printers must implement this element.  The recommended value is greater than 60 and less than 240.	
NaturalLanguageConfigured		String	Natural language	D	[rfc2911] §4.4.19	
	Indicates the natural language of the elements with string syntax that were set by the Administrator or Manufacturer.	
OperationsSupported	Yes	String 	type2 keyword	D	[rfc2911] §4.4.15	
	The set of supported actions for the Printer and Job.  (Keywords: PrintJob, PrintUri, CreateJob, SendDocument, SendURI, ValidateJob, ValidateDocument, CancelJob, HoldJob, ReleaseJob, RestartJob, SetJobElements, SetDocumentElements, CancelDocument, DeleteDocument, GetJobs, GetPrinterElements, GetJobElements, GetDocuments, GetDocumentElements, GetPrinterSupportedValues, PausePrinter, ResumePrinter, PurgeJobs, DisablePrinter, EnablePrinter, SetPrinterElements).  	
PagesPerMinute		Integer	0:MAX	D	[rfc2911] §4.4.36	
	Specifies the nominal number of pages per minute which may be generated by this Printer.	
PagesPerMinuteColor		Integer	0:MAX	D	[rfc2911] §4.4.37	
	Specifies the nominal number of pages per minute which may be generated by this Printer when printing color.	
ParentPrintersSupported	Yes	String	Uri	D	[admin-ops] §7.2	
	Contains the URI of the non-leaf  Printer for which this Printer is the immediate subordinate.	
PdlOverrideSupported		String	type2 keyword	D	[rfc2911] §4.4.28	
	Expresses the ability of this Printer to (1) guaranteed, (2) attempt to, or (3) not attempt to override a Document’s processing instructions with Job Processing Elements. (Keywords: Attempted, Guaranteed,  NotAttempted)	
PrinterCurrentTime		String	DateTime [rfc1123]	S	[rfc2911] §4.4.30	
	Indicates the current date and time.  (example: Fri, 03 May 2002 08:49:37 GMT)	
PrinterDetailedStatusMessages	Yes	String	Maxlength=1023	S	[prod-print2] §7.7	
	Specifies additional detailed and technical information about this Printer for the technical staff.	
PrinterDriverInstaller		String 	Uri	D	[rfc2911] §4.4.8	
	Intended for consumption by automata to locate the driver installer for this Printer object. (example: “http://www.company.com/printer/installerProgram”)   Note: This element has not been used by any known implementation and is therefore deprecated.	
PrinterInfo		String 	Maxlength=127	D	[rfc2911] §4.4.6	
	Descriptive information about this Printer object.(example: “Out of courtesy for others, please print only small (1-5 page) jobs at this printer")	
PrinterIsAcceptingJobs		Boolean		S	[rfc2911] §4.4.23	
	Indicates whether this Printer is currently able to accept jobs.	
PrinterLocation		String 	Maxlength=127	D	[rfc2911] §4.4.5	
	Identifies the location of the device that this Printer represents.  (Example: Pete’s Office)	
PrinterMakeAndModel		String 	Maxlength=127	D	[rfc2911] §4.4.9	
	Identifies the make and model of the device that this Printer object represents.  (Example: “Xerox Phaser 7700”, “HP LaserJet 1000”, “Lexmark Optra Color 45”)	
PrinterMessageFromOperator		String	Maxlength=127	D	[rfc2911] §4.4.25	
	End user information for this Printer.  (Example: “printer unavailable until 1pm due to preventive maintenance”)	
PrinterMoreInfo		String 	uri	D	[rfc2911] §4.4.7	
	URI used to obtain information intended for end user consumption about this specific Printer.  (Example: “http://www.company.com/printer/embeddedwebpage”)	
PrinterMoreInfoManufacturer		String	uri	D	[rfc2911] §4.4.10	
	URI used to obtain more information for end user consumption about this type of device that this Printer represents.  (Example: “http://www.xerox.com/go/xrx/template/012.jsp?Xcntry=USA&Xlang=en_US&prodID=7700”, “http://www.lexmark.com/US/products/overview/0,1224,MjQ5fDE=,00.html”)	
PrinterName		String 	Maxlength=127	D	[rfc2911] §4.4.4	
	The end-user friendly name of this Printer object.  (example: “Pete’s Printer”)	
PrinterState		String 	type1 keyword	S	[rfc2911] §4.4.11	
	Identifies the current state of the device(s) that this Printer represents (see Figure 4).  (See “PrinterStateReasons” below)  (Keywords: Idle, Processing, Stopped)	
PrinterStateMessage		String	Maxlength=1023	S	[rfc2911] §4.4.13	
	Information about the "printer- state" and "printer-state-reasons" elements in human readable text localized by the Printer according to the natural language supplied in the client’s query request.  (Example: “Printer stopped due to paper jam” for an English request)	
PrinterStateReasons	Yes	String	type2 keyword	S	[rfc2911] §4.4.12	
	Augments the "printer-state" element to give more detailed information about this Printer’s state.  Each keyword value may have a suffix to indicate its level of severity. The three suffixes (levels) are: “Report” (least severe), “Warning”, and “Error” (most severe).  Keywords without suffixes are assumed to be “Error” (most severe).  See reference for semantics of defined keywords.  (Keywords: AttentionRequired, ConnectingToDevice, CoverOpen, Deactivated, DeveloperEmpty, DeveloperLow, DoorOpen, FuserOverTemp, FuserUnderTemp, HoldNewJobs, InputTrayMissing, InterlockOpen, InterpreterResourceUnavailable, MarkerSupplyEmpty, MarkerSupplyLow, MarkerWasteAlmostFull, MarkerWasteFull, MediaEmpty, MediaJam, MediaLow, MediaNeeded, MovingToPaused, None , OpcLifeOver, OpcNearEol, Other, OutputAreaAlmostFull, OutputAreaFull, OutputTrayMissing, Paused, Shutdown, SpoolAreaFull, StoppedPartly, Stopping, TimedOut, TonerEmpty, TonerLow)	
PrinterUpTime		integer	1:MAX	S	[rfc2911] §4.4.29	
	The amount of time (in seconds) that this Printer has been up and running	
PrinterUriSupported	Yes	String 	uri	D	[rfc2911] §4.4.1	
	Contains at least one URI for this Printer object.  The PrinterUriSupported, UriAuthenticationSupported and the UriSecuritySupported are parallel elements.  Each of these elements must have the same cardinality.  The “i”th value of each of these elements describes the URI for the printer, the authentication mechanism used and the security method used. (Example: ipp://www.company.com/printer)	
QueuedJobCount		integer	0:MAX	S	[rfc2911] §4.4.24	
	The number of jobs that this Printer has accepted but has not yet completed.	
ReferenceUriSchemesSupported	Yes	String	UriScheme	D	[rfc2911] §4.4.27	
	Which URI schemes are supported by this Printer to retrieve Document  This element must be supported if the Printer is capable of print by reference.  (Example: ftp, http)	
RepertoiresSupported	Yes	String	Repertoire	D	[PWG5100.9] §3.1	
	Indicates the subsets of characters that are actually present in the Printer.   (Example: IANA: iso-8859-1, Unicode: Latin 1, Vendor: Oak Floral)	
SubordinatePrintersSupported	Yes	String	Uri	D	[admin-ops] §7.1	
	Contains the URI of the immediate subordinate Printers associated with this Printer.	
UriAuthenticationSupported	Yes	String 	type2 keyword	D	[rfc2911] §4.4.2	
	The Client authentication mechanism that this Printer object uses to identify the user.  (See PrinterUriSupported for additional information)  (Keywords: None, Requesting-UserName, Basic, Digest, Certificate)	
UriSecuritySupported	Yes	String 	type2 keyword	D	[rfc2911] §4.4.3	
	Identifies the security mechanisms used for accessing this Printer object.  (See PrinterUriSupported for additional information)  (Keywords: None, Ssl3, Tls)	
VersionsSupported	Yes	String 	type2 keyword	D	[rfc2911] §4.4.14	
	The versions of the semantics that this Printer supports.  (Keywords: 1.0, 1.1, etc. ).  	
WhichJobsSupported	Yes	String 	type2 keyword	D	[prod-print2] §7.8	
	Contains the set of values that this Printer supports for the WhichJobs operation element that the client may supply in the Get-Jobs operation as a job filter.  (Keywords: Aborted, All, Canceled, Completed, NotCompleted, Pending, PendingHeld, Processing, ProcessingStopped )	

8	Status Strings
This Appendix lists the status strings that the Printer returns in each action response.
Table 7 Status strings indicating some degree of success
Status String		Actions where status may occur	
Reference	Description of status	
SuccessfulOk	Any	
Rfc2911	Action succeeded and no requested element were substituted or ignored.	
SuccessfulOkConflictingElements	CreateJob, PrintJob, PrintUri, SendDocument, SendUri, ValidateDocument, ValidateJob	
	Action succeeded but some elements were conflicting and have been substituted or ignored.	
SuccessfulOkIgnoredOrSubstitutedElements 	CreateJob, PrintJob, PrintUri, SendDocument, SendUri, ValidateDocument, ValidateJob	
	Action succeeded but some unsupported elements were ignored or substituted.	

Table 8 Status strings indicating error on the part of the Client
Status String	Actions where status may occur	
	Description of status	
ClientErrorBadRequest 	Any	
	Malformed syntax or constraint exceeded.	
ClientErrorCharsetNotSupported 	Any	
	The charset is not supported.	
ClientErrorCompressionError 	PrintJob, PrintUri, SendDocument, SendUri	
	An error occurred when uncompressing the Document Content.	
ClientErrorCompressionNotSupported 	PrintJob, PrintUri, SendDocument, SendUri	
	The compression of the Document Content is not supported.	
ClientErrorConflictingElements 	CreateJob, PrintJob, PrintUri, SendDocument, SendUri, SetDocumentElements, SetJobElements, SetPrinterElements, ValidateDocument, ValidateJob	
	Some supplied elements are conflicting.  The Printer must return them in the Unsupported Elements group.	
ClientErrorDocumentAccessError 	PrintUri, SendUri	
	An error occurred when the Printer attempted to access the Document Content through the URI supplied.	
ClientErrorDocumentFormatError 	PrintJob, PrintUri, SendDocument, SendUri	
	An error occurred when interpreting the Document Content.	
ClientErrorDocumentFormatNotSupported 	CreateJob, PrintJob, SendDocument, SendUri, ValidateDocument, ValidateJob	
	The document format is not supported.	
ClientErrorElementsNotSettable 	SetDocumentElements, SetJobElements, SetPrinterElements	
	The supplied element(s) are not settable	
ClientErrorElementsOrValuesNotSupported 	CreateJob, PrintJob, PrintUri, SendDocument, SendUri, SetDocumentElements, SetJobElements, SetPrinterElements, ValidateDocument, ValidateJob	
	The supplied element(s) or Values are not supported	
ClientErrorForbidden 	Any	
	The Printer understood the request, but is refusing to fulfill it for authentication and/or authorization reasons.  The client should not try again even with credentials.	
ClientErrorGone 	Any	
	The target object is no longer available.	
ClientErrorJobNotAcceptingAdditionalDocuments 	SendDocument, SendUri	
	Client attempted to add a Document to a Job after indicating the last document was sent	
ClientErrorNotAuthenticated 	Any	
	The request requires user authentication.  The client may try again with suitable authentication.	
ClientErrorNotAuthorized 	Any	
	The requester is not authorized to perform the request.  The Client should not try again.	
ClientErrorNotFound 	ActivatePrinter, CancelDocument, CancelJob, DeactivatePrinter, DeleteDocument, DisablePrinter, EnablePrinter, GetDocumentElements, GetDocuments, GetJobElements, GetJobs, GetPrinterElements, GetPrinterSettableElementValues, HoldJob, PromoteJob, ReleaseJob, ReprocessJob, RestartJob, ResumeJob, SendDocument, SendUri, SetDocumentElements, SetJobElements	
	The target object was not found.	
ClientErrorNotPossible 		
	The action cannot be performed, because of the state of the target object.	
ClientErrorRequestEntityTooLarge 	Any	
	The request and/or the Document Content is too large. 	
ClientErrorRequestValueTooLong 	Any	
	An element value in the request is longer than the Printer supports.	
ClientErrorTimeout 	SendDocument, SendUri	
	The client did not produce a subsequent request within the time that the Printer was prepared to wait.	
ClientErrorUnsupportedInterface		
	PSI specific error indicating a request for information for a non-existent interface 	
ClientErrorUriNotResolvable 		
	PSI specific error indicating inability of PSI Server to communicate with a Target Device	
ClientErrorUriSchemeNotSupported 	PrintUri, SendUri	
	The URI scheme is not supported.	
ClientInvalidUri 		
	PSI specific error indicating the URI provided is not well formed	

Table 9 Status strings indicating error on the part of the Printer
Status String	Actions where status may occur	
Reference	Description of status	
ServerErrorBusy 	Any	
	A temporary error indicating that the Printer is too busy processing jobs and/or other requests.  A Client should try again later.	
ServerErrorDeviceError 	CreateJob, PrintJob, PrintUri, SendDocument, SendUri	
	The Printer encountered a device error that causes it to be unable to accept a new request.  For example, a paper jam for a Printer that doesn’t spool and so cannot accept a new job submission until the jam is fixed.	
ServerErrorInternalError 	Any	
	An unexpected internal error occurred.	
ServerErrorJobCanceled 	CancelDocument, CancelJob, DeleteDocument, SendDocument, SendUri, SetDocumentElements, SetJobElements	
	The job has been canceled by an operator or aborted by the system.  For example, while the Client is transmitting the Document Content to the Printer.	
ServerErrorMultipleDocumentJobsNotSupported 	SendDocument, SendUri	
	The Printer doesn’t support multiple document jobs and the client attempted to supply a second SendDocument or SendUri request.  The Printer’s “MultipleDocumentJobsSupported” Printer Description element is ‘false’.	
ServerErrorNotAcceptingJobs 	CreateJob, PrintJob, PrintUri	
	The Printer is not currently accepting jobs.  Its “PrinterIsAcceptingJobs” Printer Description element is ‘false’.	
ServerErrorNotCancelableAtTargetDevice	CancelJob, CancelJob	
	PSI specific error indicating the Print Service is unable to direct the Target Device to cancel the Job.	
ServerErrorOperationNotSupported 	Any unsupported action	
	The Printer does not support the requested action.	
ServerErrorPrinterIsDeactivated	Any except Activate-Printer	
	The Printer has been deactivated using the Deactivate-Printer
   operation and is only accepting the Activate-Printer	
ServerErrorServiceUnavailable 	Any	
	The Printer is unable to service the request at this time due to overloading or maintenance.  The client should try again later as per the “message” Operation element.	
ServerErrorTargetDeviceNotReachable	CreateJob	
	PSI specific error indicating the Print Service is unable to communicate with the specified Target Device.	
ServerErrorTargetDeviceUrlNotSupported	CreateJob	
	PSI specific error indicating the Print Service does not support the specified Target Device.	
ServerErrorTemporaryError 	Any	
	A temporary error such as a buffer full write error, a memory overflow, or a disk full condition.	
ServerErrorTooManyDocuments 	SendDocument, SendUri	
	An attempt to create a Document in a Job failed because it exceeded the Printer’s capacity for this Job at this time..	
ServerErrorTooManyJobs 	PrintJob, PrintUri, CreateJob	
	An attempt to create a Job in a Job failed because it exceeded the Printer’s capacity at this time..	
ServerErrorVersionNotSupported 	Any	
	The Printer doesn’t support the requested major version of the protocol and returns the closest version that it does support. 	

9	References
 [prod-print2] T. Hastings, and D. Fullman, “Internet Printing Protocol (IPP): Production Printing Attributes - Set 2”, August 21, 2002, ftp://ftp.pwg.org/pub/pwg/ipp/new_PPE/pwg-ipp-prod-print-set2-draft-v0_1-020821.pdf , work in progress,
[PSI] D. Hall,   A. Berkema, “PrinterWorking Group Print Service Interface 1.0”,working draft to become a PWG IEEE-ISTO standard, work in progress, February 10, 2003, ftp://ftp.pwg.org/pub/pwg/ps/wd/wd-psi10-20030210.pdf 
 [PWG5100.1] IEEE-ISTO 5100.1-2001, "Internet Printing Protocol (IPP): “finishings” attribute values extension”, T. Hastings, and  D. Fullman,  February 5, 2001, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.1.pdf 
 [PWG5100.2] IEEE-ISTO 5100.2-2001, “Internet Printing Protocol (IPP): output-bin attribute extension”, February 7, 2001, Hastings, and  R. Bergman,  ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.2.pdf
[PWG5100.3] IEEE-ISTO 5100.3-2001, "Internet Printing Protocol (IPP): Production Printing Attributes - Set1", February 12, 2001, K. Ocke, T. Hastings, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.3.pdf 
[PWG5100.4] IEEE-ISTO 5100.4-2001, "Internet Printing Protocol (IPP): Override Attributes for Documents and Pages", February 7, 2001, R. Herriot, K. Ocke,  ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.4.pdf 
[PWG5100.5] IEEE-ISTO 5100.5-2003, "Internet Printing Protocol (IPP): Document Object", October 31, 2003,  D. Carney, T. Hastings, and  P. Zehler, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.5.pdf 
[PWG5100.6] IEEE-ISTO 5100.6-2003, "Internet Printing Protocol (IPP): Page Overrides", October 31, 2003, P. Zehler, K. Ocke and R. Herriot, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.5.pdf 
[PWG5100.7] IEEE-ISTO 5100.7-2003, “Internet Printing Protocol (IPP): Job Extensions", October 31, 2003, T. Hastings, and  P. Zehler, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.8.pdf
[PWG5100.8] IEEE-ISTO 5100.8-2003, “Internet Printing Protocol (IPP): “-actual” attributes", January 31, 2003, D. Carney, H. Lewis, ftp://ftp.pwg.org/pub/pwg/standards/pwg5100.8.pdf
[PWG5101.1] IEEE-ISTO 5101.1-2001 Media Standardized Names <work in progress>, ftp://ftp.pwg.org/pub/pwg/standards/pwg5101.1.pdf , .doc, .rtf for standardized names
[PWG5101.2] IEEE-ISTO 5101.2-2003  The Printer Working Group Standard for Character Repertoire Interoperability, February 1, 2004, E. Bradshaw, ftp://ftp.pwg.org/pub/pwg/standards/pwg5101.2.pdf, Candidate Standard.
 [rfc1123] RFC 1123 " Requirements for Internet Hosts -- Application and Support ", October 1989, Branden, R. , ftp://ftp.rfc-editor.org/in-notes/rfc1123.txt
[rfc2046] RFC 2046 "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", November 1996, N. Freed, and  N. Borenstein, ftp://ftp.rfc-editor.org/in-notes/rfc2046.txt
[rfc2048] RFC 2048 "Multipurpose Internet Mail Extension (MIME) Part Four: Registration Procedures", November 1996, N. Freed,, J. Klensin and  J. Postel, ftp://ftp.rfc-editor.org/in-notes/rfc2048.txt
[rfc2911] RFC 2566 “Internet Printing Protocol/1.0 Model and Semantics”, March 1999 and RFC 2911 “Internet Printing Protocol/1.1 Model and Semantics”, September 2000, T. Hastings, R. Herriot, R. deBry, S. Isaacson, P. Powell, ftp://ftp.rfc-editor.org/in-notes/rfc2911.txt 
[rfc3380] "Internet Printing Protocol (IPP): Job and Printer Set Operations", September 2002, T. Hastings, R. Herriot, C. Kugler, and H. Lewis, ftp://ftp.rfc-editor.org/in-notes/rfc3380.txt
[rfc3381]"Internet Printing Protocol (IPP): Job Progress Attributes", September 2002, T. Hastings,  H. Lewis, and R. Bergman, ftp://ftp.rfc-editor.org/in-notes/rfc3381.txt 
10	 Author's Addresses

Peter Zehler
Xerox Corporation
800 Phillips Road
MS/128-30E
Webster, NY 14580
Phone: 585 265-8755
Fax: 585-422-7691
e-mail:  pzehler@crt.xerox.com	Tom Hastings 
Xerox Corporation
701 S. Aviation Blvd.
MS/ESAE-242
El Segundo, CA 90245
Phone: 310 333-6413
e-mail:  thastings@cp10.es.xerox.com	Shivaun Albright
Hewlett Packard 
e-mail:  shivaun_albright@hp.com	

10.1	Other Participants
Alan Berkema – Hewlett Packard	Elliott Bradshaw, Zoran Corp	
Lee Farrell - Canon Information Systems	Don Fullman - Xerox	
Melinda Grant - Hewlett Packard	David Hall - Hewlett Packard	
Harry Lewis - IBM	Ira Mcdonald – High North	
Gail Songer - Peerless	Robert Taylor - Hewlett Packard	
William Wagner - NetSilicon/DPI		

11	Appendix A – UPnP Definitions
11.1	DeviceId
 The value of this variable MUST exactly match the IEEE 1284-2000 Device ID string, except the length field MUST not be specified.. The value is assigned by the Printer vendor and MUST NOT be localized by the Print Service.   
The IEEE 1284-2000 Device ID is a length field followed by a case-sensitive string of ASCII characters defining peripheral characteristics and/or capabilities. For the purposes of this specification, the length bytes MUST NOT be included. The Device ID sequence is composed of a series of keys and values of the form:
key: value {,value} repeated for each key
As indicated, each key will have one value, and MAY have more than one value. The minimum necessary keys (case-sensitive) are  MANUFACTURER, COMMAND SET, and MODEL. (These keys MAY be abbreviated as MFG, CMD, and MDL respectively.) Each implementation MUST supply these three keys and possibly additional ones as well. Each key (and each value) is a string of characters. Any characters except colon (:), comma (,), and semi-colon (;) MAY be included as part of the key (or value) string. Any leading or trailing white space (SPACE[x'20'], TAB[x'09'], VTAB[x'0B'], CR[x'0D'], NL[x'0A'], or  FF[x'0C']) in the string is ignored by the parsing program (but is still counted as part of the overall length of the sequence). 
An example ID String, showing optional comment and active command set keys and their associated values (the text is actually all on one line):

MANUFACTURER:ACME Manufacturing;
COMMAND SET:PCL,PJL,PS,XHTML-Print+xml;
MODEL:LaserBeam 9;
COMMENT:Anything you like;
ACTIVE COMMAND SET:PCL;

(See IEEE 1284-2000 clause 7.6)
Note: One of the purposes of the DeviceId variable is to select a printer driver for those clients that need a printer driver.  The values of the COMMAND SET key are interpreted by the printer driver provided by the vendor and so are vendor-defined, rather than being standardized.
12	Appendix B – IPP Mapping
12.1	 Changes to remove some IPP specific aspects
This section lists some changes to remove some IPP specific aspects from the PWG Semantic Model.  
1.	IPP enumerations use their well-known string name instead of the integer enumeration.  This applies not only to IPP attributes but also to IPP Operations.
2.	Any IPP attribute name containing “ipp” has had the “ipp” removed.  
3.	All IPP attribute and operation keywords have the substring “attribute” replaced with “element”.
4.	All IPP operation, status codes, attribute, and attribute value keyword names have had the first letter capitalized and the ‘-‘ character removed and the character following the ‘-‘ has been capitalized.  (All mixed case PWG Semantic Model keywords can be interpreted without regard to case.)
5.	Certain elements prefixed with”Job” that apply to either Jobs or Documents has had the “Job” prefix removed.  (This mapping clarified in the tables in section 7)
6.	The IPP attribute value keywords defined in other registries remain unchanged.  Note that the PWG defined media keyword values for the Semantic Elements MediaType, MediaColor, MediaSizeName and Media use the values as specified in PWG 5101.1.
7.	The types of the attributes have been simplified.  All keyword, text, name, DateTime, uri, UriScheme, enum and mimeMediaType  types are represented by the simple string type.  The “Constraint” column in section 7 clarifies the mapping of the string types in the Semantic Model to their original types (e.g. JobState type:string constraint: Type 1 keyword).  Note that IPP Attributes of type Keyword or Name are represented as strings with a Type 2 or 3 keyword constraint
8.	The “1setOf X” types are represented as the base type and the “Multivalued” field in the tables set to “Yes”.  
9.	Integers and Boolean types remain the same.  
10.	Any applicable constraints placed on the attribute values has been noted in the tables.
The term “keyword” continues to be used for string values enumerated as part of the PWG Model.  The term “object” is sometimes changed to “data class”.  The term “operation” has been changed to “action” to use the term more frequently used with XML.
The following IPP attributes are not included: operation-id, attributes-charset, request-id.
12.2	 Attribute Group Mapping
IPP Actions may contain a number of parameters.  The first parameter is always the Operation Attributes for the Action.  The IPP Operation Attributes have been mapped to the Printer and Job Description Element Groups.
The IPP Printer Description Attributes map to the PWG Printer Status Elements and Printer Description Elements.  The IPP Job Description Attributes map to the PWG Job Status Elements and Job Description Elements.  
The IPP Job Template Attributes map to the PWG Job Processing Elements and Document Processing Elements.  IPP does not differentiate between the PWG Processing Elements subgroups of Rendering, Imposition and Finishing Elements.