tech-invite   World Map     

3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search

RFC 8011

 
 
 

Internet Printing Protocol/1.1: Model and Semantics

Part 8 of 12, p. 124 to 145
Prev Section       Next Section

 


prevText      Top      ToC       Page 124 
5.3.  Job Description and Status Attributes

   The attributes in this section form the attribute group called
   "job-description".  Tables 13 and 14 summarize these attributes.  The
   third column of each table indicates whether the attribute is a
   REQUIRED attribute that MUST be supported by Printers.  If it is not
   indicated as REQUIRED, then it is OPTIONAL.  The maximum size in
   octets for 'text' and 'name' attributes is indicated in parentheses.

Top      Up      ToC       Page 125 
             +------------------+----------------+-----------+
             | Attribute        | Syntax         | REQUIRED? |
             +------------------+----------------+-----------+
             | job-impressions  | integer(0:MAX) |           |
             +------------------+----------------+-----------+
             | job-k-octets     | integer(0:MAX) |           |
             +------------------+----------------+-----------+
             | job-media-sheets | integer(1:MAX) |           |
             +------------------+----------------+-----------+
             | job-name         | name(MAX)      | REQUIRED  |
             +------------------+----------------+-----------+

             Table 13: Job Description Attributes (READ-WRITE)

   +-----------------------------+-------------------------+-----------+
   | Attribute                   | Syntax                  | REQUIRED? |
   +-----------------------------+-------------------------+-----------+
   | attributes-charset          | charset                 | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | attributes-natural-language | naturalLanguage         | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | date-time-at-completed      | dateTime|unknown|no-    |           |
   |                             | value                   |           |
   +-----------------------------+-------------------------+-----------+
   | date-time-at-creation       | dateTime|unknown        |           |
   +-----------------------------+-------------------------+-----------+
   | date-time-at-processing     | dateTime|unknown|no-    |           |
   |                             | value                   |           |
   +-----------------------------+-------------------------+-----------+
   | job-detailed-status-        | 1setOf text(MAX)        |           |
   | messages                    |                         |           |
   +-----------------------------+-------------------------+-----------+
   | job-document-access-errors  | 1setOf text(MAX)        |           |
   +-----------------------------+-------------------------+-----------+
   | job-id                      | integer(1:MAX)          | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | job-impressions-completed   | integer(0:MAX)          |           |
   +-----------------------------+-------------------------+-----------+
   | job-k-octets-processed      | integer(0:MAX)          |           |
   +-----------------------------+-------------------------+-----------+
   | job-media-sheets-completed  | integer(0:MAX)          |           |
   +-----------------------------+-------------------------+-----------+
   | job-message-from-operator   | text(127)               |           |
   +-----------------------------+-------------------------+-----------+
   | job-more-info               | uri                     |           |
   +-----------------------------+-------------------------+-----------+
   | job-originating-user-name   | name(MAX)               | REQUIRED  |

Top      Up      ToC       Page 126 
   +-----------------------------+-------------------------+-----------+
   | job-printer-up-time         | integer(1:MAX)          | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | job-printer-uri             | uri                     | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | job-state                   | type1 enum              | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | job-state-message           | text(MAX)               |           |
   +-----------------------------+-------------------------+-----------+
   | job-state-reasons           | 1setOf type2 keyword    | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | job-uri                     | uri                     | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | number-of-documents         | integer(0:MAX)          |           |
   +-----------------------------+-------------------------+-----------+
   | number-of-intervening-jobs  | integer(0:MAX)          |           |
   +-----------------------------+-------------------------+-----------+
   | output-device-assigned      | name(127)               |           |
   +-----------------------------+-------------------------+-----------+
   | time-at-completed           | integer(MIN:MAX)        | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | time-at-creation            | integer(MIN:MAX)        | REQUIRED  |
   +-----------------------------+-------------------------+-----------+
   | time-at-processing          | integer(MIN:MAX)        | REQUIRED  |
   +-----------------------------+-------------------------+-----------+

                Table 14: Job Status Attributes (READ-ONLY)

5.3.1.  job-id (integer(1:MAX))

   This REQUIRED attribute contains the ID of the Job.  The Printer, on
   receipt of a new Job, generates an ID that identifies the new Job on
   that Printer.  The Printer returns the value of the "job-id"
   attribute as part of the response to a Job Creation request.

   For a description of this attribute and its relationship to the
   "job-uri" and "job-printer-uri" attributes, see the discussion in
   Section 3.4 ("Object Identity").

5.3.2.  job-uri (uri)

   This REQUIRED attribute contains the URI for the Job.  The Printer,
   on receipt of a new Job, generates a URI that identifies the new Job.
   The Printer returns the value of the "job-uri" attribute as part of
   the response to a Job Creation request.  The precise format of a Job
   URI is implementation dependent [RFC3510] [RFC7472].  If the Printer
   supports more than one URI and there is some relationship between the
   newly formed Job URI and the Printer's URI, the Printer uses the

Top      Up      ToC       Page 127 
   Printer URI supplied by the Client in the Job Creation request.  For
   example, if the Job Creation request comes in over a secure channel,
   the new Job URI MUST use the same secure channel.  This can be
   guaranteed because the Printer is responsible for generating the Job
   URI and the Printer is aware of its security configuration and policy
   as well as the Printer URI used in the Job Creation request.

   For a description of this attribute and its relationship to the
   "job-id" and "job-printer-uri" attributes, see the discussion in
   Section 3.4 ("Object Identity").

5.3.3.  job-printer-uri (uri)

   This REQUIRED attribute identifies the Printer that created this Job.
   When a Printer creates a Job, it populates this attribute with the
   Printer URI that was used in the Job Creation request.  This
   attribute permits a Client to identify the Printer that created this
   Job when only the Job's URI is available to the Client.  The Client
   queries the creating Printer to determine which languages, charsets,
   and operations are supported for this Job.

   For a description of this attribute and its relationship to the
   "job-uri" and "job-id" attributes, see the discussion in Section 3.4
   ("Object Identity").

5.3.4.  job-more-info (uri)

   Similar to "printer-more-info", this attribute contains the URI
   referencing some resource with more information about this Job,
   perhaps an HTML page containing status information about the Job.

5.3.5.  job-name (name(MAX))

   This REQUIRED attribute is the name of the Job.  It is a name that is
   more user friendly than the "job-uri" or "job-id" attribute values.
   It does not need to be unique between Jobs.  The Job's "job-name"
   attribute is set to the value supplied by the Client in the
   "job-name" operation attribute in the Job Creation request (see
   Section 4.2.1.1).  If, however, the "job-name" operation attribute is
   not supplied by the Client in the Job Creation request, the Printer,
   on creation of the Job, MUST generate a name.  The Printer SHOULD
   generate the value of the Job's "job-name" attribute from the first
   of the following sources that produces a value: (1) the
   "document-name" operation attribute of the first (or only) Document,
   (2) the "document-URI" attribute of the first (or only) Document, or
   (3) any other piece of Job-specific and/or Document data.

Top      Up      ToC       Page 128 
5.3.6.  job-originating-user-name (name(MAX))

   This REQUIRED attribute contains the name of the End User that
   submitted the Print Job.  The Printer sets this attribute to the most
   authenticated printable name that it can obtain from the
   authentication service over which the IPP operation was received.
   Only if such a name is not available does the Printer use the value
   supplied by the Client in the "requesting-user-name" operation
   attribute of the Job Creation request (see Sections 5.4.2, 5.4.3,
   and 9).

   Note: The Printer needs to keep an internal originating user ID of
   some form, typically as a credential of a principal, with the Job.
   Since such an internal attribute is implementation dependent and not
   of interest to Clients, it is not specified as a Job attribute.  This
   originating user ID is used for authorization checks (if any) on all
   subsequent operations.

5.3.7.  job-state (type1 enum)

   This REQUIRED attribute identifies the current state of the Job.
   Even though IPP defines seven values for Job states (plus the
   out-of-band 'unknown' value -- see Section 5.1), implementations only
   need to support those states that are appropriate for the particular
   implementation.  In other words, a Printer supports only those Job
   states implemented by the Output Device and available to the Printer
   implementation.

   Standard enum values are listed in Table 15.

   The final value for this attribute MUST be one of the following --
   'completed', 'canceled', or 'aborted' -- before the Printer removes
   the Job altogether.  The length of time that Jobs remain in the
   'canceled', 'aborted', and 'completed' states depends on
   implementation.  See Section 5.3.7.2.

Top      Up      ToC       Page 129 
   Figure 3 shows the normal Job state transitions.  Normally, a Job
   progresses from left to right.  Other state transitions are unlikely
   but are not forbidden.  Not shown are the transitions to the
   'canceled' state from the 'pending', 'pending-held', and
   'processing-stopped' states.

                                                      +----> canceled
                                                     /
       +----> pending  -------> processing ---------+------> completed
       |         ^                   ^               \
   --->+         |                   |                +----> aborted
       |         v                   v               /
       +----> pending-held    processing-stopped ---+

                       Figure 3: IPP Job Life Cycle

   Jobs reach one of the three terminal states -- 'completed',
   'canceled', or 'aborted' -- after the Jobs have completed all
   activity, including stacking output media, and all Job Status
   attributes have reached their final values for the Job.

Top      Up      ToC       Page 130 
   +--------+----------------------------------------------------------+
   | Values | Symbolic Name and Description                            |
   +--------+----------------------------------------------------------+
   | '3'    | 'pending': The Job is a candidate to start processing    |
   |        | but is not yet processing.                               |
   +--------+----------------------------------------------------------+
   | '4'    | 'pending-held': The Job is not a candidate for           |
   |        | processing for any number of reasons but will return to  |
   |        | the 'pending' state as soon as the reasons are no longer |
   |        | present.  The Job's "job-state-reasons" attribute MUST   |
   |        | indicate why the Job is no longer a candidate for        |
   |        | processing.                                              |
   +--------+----------------------------------------------------------+
   | '5'    | 'processing': One or more of the following: (1) the Job  |
   |        | is using, or is attempting to use, one or more purely    |
   |        | software processes that are analyzing, creating, or      |
   |        | interpreting a PDL, etc.; (2) the Job is using, or is    |
   |        | attempting to use, one or more hardware devices that are |
   |        | interpreting a PDL; making marks on a medium; and/or     |
   |        | performing finishing, such as stapling, etc.; (3) the    |
   |        | Printer has made the Job ready for printing, but the     |
   |        | Output Device is not yet printing it, either because the |
   |        | Job hasn't reached the Output Device or because the Job  |
   |        | is queued in the Output Device or some other spooler,    |
   |        | waiting for the Output Device to print it.  When the Job |
   |        | is in the 'processing' state, the entire Job state       |
   |        | includes the detailed status represented in the          |
   |        | Printer's "printer-state", "printer-state-reasons", and  |
   |        | "printer-state-message" attributes.  Implementations MAY |
   |        | include additional values in the Job's "job-state-       |
   |        | reasons" attribute to indicate the progress of the Job,  |
   |        | such as adding the 'job-printing' value to indicate when |
   |        | the Output Device is actually making marks on paper      |
   |        | and/or the 'processing-to-stop-point' value to indicate  |
   |        | that the Printer is in the process of canceling or       |
   |        | aborting the Job.                                        |

Top      Up      ToC       Page 131 
   +--------+----------------------------------------------------------+
   | '6'    | 'processing-stopped': The Job has stopped while          |
   |        | processing for any number of reasons and will return to  |
   |        | the 'processing' state as soon as the reasons are no     |
   |        | longer present.  The Job's "job-state-reasons" attribute |
   |        | MAY indicate why the Job has stopped processing.  For    |
   |        | example, if the Output Device is stopped, the 'printer-  |
   |        | stopped' value MAY be included in the Job's "job-state-  |
   |        | reasons" attribute.  Note: When an Output Device is      |
   |        | stopped, the device usually indicates its condition in   |
   |        | human-readable form locally at the device.  A Client can |
   |        | obtain more complete device status remotely by querying  |
   |        | the Printer's "printer-state", "printer-state-reasons",  |
   |        | and "printer-state-message" attributes.                  |
   +--------+----------------------------------------------------------+
   | '7'    | 'canceled':  The Job has been canceled by a Cancel-Job   |
   |        | operation, and the Printer has completed canceling the   |
   |        | Job.  All Job Status attributes have reached their final |
   |        | values for the Job.  While the Printer is canceling the  |
   |        | Job, the Job remains in its current state, but the Job's |
   |        | "job-state-reasons" attribute SHOULD contain the         |
   |        | 'processing-to-stop-point' value and one of the          |
   |        | 'canceled-by-user', 'canceled-by-operator', or           |
   |        | 'canceled-at-device' values.  When the Job moves to the  |
   |        | 'canceled' state, the 'processing-to-stop-point' value,  |
   |        | if present, MUST be removed, but 'canceled-by-xxx', if   |
   |        | present, MUST remain.                                    |
   +--------+----------------------------------------------------------+
   | '8'    | 'aborted': The Job has been aborted by the system,       |
   |        | usually while the Job was in the 'processing' or         |
   |        | 'processing-stopped' state, and the Printer has          |
   |        | completed aborting the Job; all Job Status attributes    |
   |        | have reached their final values for the Job.  While the  |
   |        | Printer is aborting the Job, the Job remains in its      |
   |        | current state, but the Job's "job-state-reasons"         |
   |        | attribute SHOULD contain the 'processing-to-stop-point'  |
   |        | and 'aborted-by-system' values.  When the Job moves to   |
   |        | the 'aborted' state, the 'processing-to-stop-point'      |
   |        | value, if present, MUST be removed, but the 'aborted-by- |
   |        | system' value, if present, MUST remain.                  |

Top      Up      ToC       Page 132 
   +--------+----------------------------------------------------------+
   | '9'    | 'completed': The Job has completed successfully or with  |
   |        | warnings or errors after processing, all of the Job      |
   |        | Media Sheets have been successfully stacked in the       |
   |        | appropriate output bin(s), and all Job Status attributes |
   |        | have reached their final values for the Job.  The Job's  |
   |        | "job-state-reasons" attribute SHOULD contain one of the  |
   |        | 'completed-successfully', 'completed-with-warnings', or  |
   |        | 'completed-with-errors' values.                          |
   +--------+----------------------------------------------------------+

                     Table 15: "job-state" Enum Values

5.3.7.1.  Forwarding Servers

   As with all other IPP attributes, if the implementation cannot
   determine the correct value for this attribute, it SHOULD respond
   with the out-of-band 'unknown' value (see Section 5.1) rather than
   try to guess at some possibly incorrect value and confuse the
   End User about the state of the Job.  For example, if the
   implementation is just a gateway into some printing system from which
   it can normally get status, but temporarily is unable, then the
   implementation should return the 'unknown' value.  However, if the
   implementation is a gateway to a printing system that never provides
   detailed status about the Print Job, the implementation MAY set the
   IPP Job's state to 'completed', provided that it also sets the
   'queued-in-device' value in the Job's "job-state-reasons" attribute
   (see Section 5.3.8).

5.3.7.2.  Partitioning of Job States

   This section describes the partitioning of the seven Job states into
   phases: Job Not Completed, Job Retention, Job History, and Job
   Removal.  This section also explains the 'job-restartable' value of
   the "job-state-reasons" Job Status attribute for use with the
   Restart-Job and Resubmit-Job [PWG5100.11] operations.

   Job Not Completed: When a Job is in the 'pending', 'pending-held',
   'processing', or 'processing-stopped' state, the Job is not
   completed.

   Job Retention: When a Job enters one of the three terminal Job states
   -- 'completed', 'canceled', or 'aborted' -- the IPP Printer MAY
   "retain" the Job in a restartable condition for an implementation-
   defined time period.  This time period MAY be zero seconds and MAY
   depend on the terminal Job state.  This phase is called "Job
   Retention".  While in the Job Retention phase, the Job's Document
   data is retained and a Client can restart the Job using the

Top      Up      ToC       Page 133 
   Restart-Job operation.  If the Printer supports the Restart-Job or
   Resubmit-Job operation, then it SHOULD indicate that the Job is
   restartable by adding the 'job-restartable' value to the Job's
   "job-state-reasons" attribute (see Section 5.3.8) during the Job
   Retention phase.

   Job History: After the Job Retention phase expires for a Job, the
   Printer deletes the Document data for the Job and the Job becomes
   part of the Job History.  The Printer MAY also delete any number of
   the Job attributes.  Since the Job is no longer restartable, the
   Printer MUST remove the 'job-restartable' value from the Job's
   "job-state-reasons" attribute, if present.  Printers SHOULD keep the
   Job in the Job History phase for at least 60 seconds to allow Clients
   to discover the final disposition of the Job.

   Job Removal: After the Job has remained in the Job History for an
   implementation-defined time, such as when the number of Jobs exceeds
   a fixed number or after a fixed time period (which MAY be
   zero seconds), the IPP Printer removes the Job from the system.

   Using the Get-Jobs operation and supplying the 'not-completed' value
   for the "which-jobs" operation attribute, a Client is requesting Jobs
   in the Job Not Completed phase.  Using the Get-Jobs operation and
   supplying the 'completed' value for the "which-jobs" operation
   attribute, a Client is requesting Jobs in the Job Retention and Job
   History phases.  Using the Get-Job-Attributes operation, a Client is
   requesting a Job in any phase except Job Removal.  After Job Removal,
   the Get-Job-Attributes and Get-Jobs operations no longer are capable
   of returning any information about a Job.

5.3.8.  job-state-reasons (1setOf type2 keyword)

   This REQUIRED attribute provides additional information about the
   Job's current state, i.e., information that augments the value of the
   Job's "job-state" attribute.

   These values MAY be used with any Job state or states for which the
   reason makes sense.  Some of these value definitions indicate
   conformance requirements; the rest are OPTIONAL.  Furthermore, when
   implemented, the Printer MUST return these values when the reason
   applies and MUST NOT return them when the reason no longer applies,
   whether the value of the Job's "job-state" attribute changed or not.
   When the Job does not have any reasons for being in its current
   state, the value of the Job's "job-state-reasons" attribute MUST be
   'none'.

Top      Up      ToC       Page 134 
   Note: While values cannot be added to the "job-state" attribute
   without impacting deployed Clients that take actions upon receiving
   "job-state" values, it is the intent that additional
   "job-state-reasons" values can be defined and registered without
   impacting such deployed Clients.  In other words, the
   "job-state-reasons" attribute is intended to be extensible.

   The following standard 'keyword' values are defined.  For ease of
   understanding, the values are presented in the order in which the
   reasons are likely to occur (if implemented):

   o  'none': There are no reasons for the Job's current state.  This
      state reason is semantically equivalent to "job-state-reasons"
      without any value and MUST be used when there is no other value,
      since the '1setOf' attribute syntax requires at least one value.

   o  'job-incoming': Either (1) the Printer has accepted the Create-Job
      operation and is expecting additional Send-Document and/or
      Send-URI operations or (2) the Printer is retrieving/accepting
      Document data as a result of a Print-Job, Print-URI,
      Send-Document, or Send-URI operation.

   o  'job-data-insufficient': The Create-Job operation has been
      accepted by the Printer, but the Printer is expecting additional
      Document data before it can move the Job into the 'processing'
      state.  If a Printer starts processing before it has received all
      data, the Printer removes the 'job-data-insufficient' reason, but
      the 'job-incoming' reason remains.  If a Printer starts processing
      after it has received all data, the Printer removes the
      'job-data-insufficient' reason and the 'job-incoming' reason at
      the same time.

   o  'document-access-error': After accepting a Print-URI or Send-URI
      request, the Printer could not access one or more Documents passed
      by reference.  This reason is intended to cover any file access
      problem, including 'file does not exist' and 'access denied'
      because of an access control problem.  The Printer MAY also
      indicate the Document access error using the
      "job-document-access-errors" Job Status attribute (see
      Section 5.3.11).  The Printer can (1) abort the Job and move the
      Job to the 'aborted' Job state or (2) print all Documents that are
      accessible and move the Job to the 'completed' Job state with the
      'completed-with-errors' value in the Job's "job-state-reasons"
      attribute.  This value SHOULD be supported if the Print-URI or
      Send-URI operations are supported.

Top      Up      ToC       Page 135 
   o  'submission-interrupted': The Job was not completely submitted for
      some unforeseen reason, such as (1) the Printer has crashed before
      the Job was closed by the Client, (2) the Printer or the Document
      transfer method has crashed in some non-recoverable way before the
      Document data was entirely transferred to the Printer, or (3) the
      Client crashed or failed to close the Job before the time-out
      period.  See Section 5.4.31.

   o  'job-outgoing': The Printer is transmitting the Job to the Output
      Device.

   o  'job-hold-until-specified': The value of the Job's
      "job-hold-until" attribute was specified with a time period that
      is still in the future.  The Job MUST NOT be a candidate for
      processing until this reason is removed and there are no other
      reasons to hold the Job.  This value SHOULD be supported if the
      "job-hold-until" Job Template attribute is supported.

   o  'resources-are-not-ready': At least one of the resources needed by
      the Job, such as media, fonts, resource objects, etc., is not
      ready on any of the physical Output Devices for which the Job is a
      candidate.  This condition MAY be detected when the Job is
      accepted, or subsequently while the Job is pending or processing,
      depending on implementation.  The Job can remain in its current
      state or be moved to the 'pending-held' state, depending on
      implementation and/or Job scheduling policy.

   o  'printer-stopped-partly': The value of the Printer's
      "printer-state-reasons" attribute contains the value
      'stopped-partly'.

   o  'printer-stopped': The value of the Printer's "printer-state"
      attribute is 'stopped'.

   o  'job-interpreting': The Job is in the 'processing' state, but,
      more specifically, the Printer is interpreting the Document data.

   o  'job-queued': The Job is in the 'processing' state, but, more
      specifically, the Printer has queued the Document data.

   o  'job-transforming': The Job is in the 'processing' state, but,
      more specifically, the Printer is interpreting Document data and
      producing another electronic representation.

   o  'job-queued-for-marker': The Job is in any of the 'pending-held',
      'pending', or 'processing' states, but, more specifically, the
      Printer has completed enough processing of the Document to be able
      to start marking, and the Job is waiting for the marker.  Systems

Top      Up      ToC       Page 136 
      that require human intervention to release Jobs using the
      Release-Job operation put the Job into the 'pending-held' Job
      state.  Systems that automatically select a Job to use the marker
      put the Job into the 'pending' Job state or keep the Job in the
      'processing' Job state while waiting for the marker, depending on
      implementation.  All implementations put the Job into the
      'processing' state when marking does begin.

   o  'job-printing': The Output Device is marking media.  This value is
      useful for Printers that spend a great deal of time processing
      (1) when no marking is happening and they want to show that
      marking is now happening or (2) when the Job is in the process of
      being canceled or aborted while the Job remains in the
      'processing' state, but the marking has not yet stopped so that
      Impression or sheet counts are still increasing for the Job.

   o  'job-canceled-by-user': The Job was canceled by the owner of the
      Job using the Cancel-Job request, i.e., by a user whose
      authenticated identity is the same as the value of the originating
      user that created the Job, or by some other authorized End User,
      such as a member of the Job owner's security group.  This value
      SHOULD be supported.

   o  'job-canceled-by-operator': The Job was canceled by the Operator
      using the Cancel-Job request, i.e., by a user who has been
      authenticated as having Operator privileges (whether local or
      remote).  If the security policy is to allow anyone to cancel
      anyone's Job, then this value can be used when the Job is canceled
      by other than the owner of the Job.  For such a security policy,
      in effect, everyone is an Operator as far as canceling Jobs with
      IPP is concerned.  This value SHOULD be supported if the
      implementation permits canceling by other than the owner of
      the Job.

   o  'job-canceled-at-device': The Job was canceled by an unidentified
      local user, i.e., a user at a console at the device.  This value
      SHOULD be supported if the implementation supports canceling Jobs
      at the console.

   o  'aborted-by-system': The Job (1) is in the process of being
      aborted, (2) has been aborted by the system and placed in the
      'aborted' state, or (3) has been aborted by the system and placed
      in the 'pending-held' state, so that a user or Operator can
      manually try the Job again.  This value SHOULD be supported.

Top      Up      ToC       Page 137 
   o  'unsupported-compression': The Job was aborted by the system
      because the Printer determined, while attempting to decompress the
      Document data, that the compression algorithm is actually not
      among those supported by the Printer.  This value MUST be
      supported, since "compression" is a REQUIRED operation attribute.

   o  'compression-error': The Job was aborted by the system because the
      Printer encountered an error in the Document data while
      decompressing it.  If the Printer posts this reason, the Document
      data has already passed any tests that would have led to the
      'unsupported-compression' "job-state-reasons" value.

   o  'unsupported-document-format': The Job was aborted by the system
      because the Document data's "document-format" attribute is not
      among those supported by the Printer.  If the Client specifies
      "document-format" as 'application/octet-stream', the Printer MAY
      abort the Job and post this reason even though the
      "document-format" value is among the values of the Printer's
      "document-format-supported" Printer attribute but not among the
      auto-sensed Document formats.  This value MUST be supported, since
      "document-format" is a REQUIRED operation attribute.

   o  'document-format-error': The Job was aborted by the system because
      the Printer encountered an error in the Document data while
      processing it.  If the Printer posts this reason, the Document
      data has already passed any tests that would have led to the
      'unsupported-document-format' "job-state-reasons" value.

   o  'processing-to-stop-point': The requester has issued a Cancel-Job
      operation or the Printer has aborted the Job, but the Printer is
      still performing some actions on the Job until a specified stop
      point occurs or Job termination/cleanup is completed.

      If the implementation requires some measurable time to cancel the
      Job in the 'processing' or 'processing-stopped' Job state, the
      Printer MUST use this value to indicate that the Printer is still
      performing some actions on the Job while the Job remains in the
      'processing' or 'processing-stopped' state.  Once at the stop
      point, the Printer moves the Job from the 'processing' state to
      the 'canceled' or 'aborted' Job state.

   o  'service-off-line': The Printer is offline and accepting no Jobs.
      All 'pending' Jobs are put into the 'pending-held' state.  This
      situation could be true if the service's or Document transform's
      input is impaired or broken.

   o  'job-completed-successfully': The Job completed successfully.
      This value SHOULD be supported.

Top      Up      ToC       Page 138 
   o  'job-completed-with-warnings': The Job completed with warnings.
      This value SHOULD be supported if the implementation detects
      warnings.

   o  'job-completed-with-errors': The Job completed with errors (and
      possibly warnings too).  This value SHOULD be supported if the
      implementation detects errors.

   o  'job-restartable': This Job is retained (see Section 5.3.7.2) and
      is currently able to be restarted using the Restart-Job (see
      Section 4.3.7) or Resubmit-Job [PWG5100.11] operation.  If
      'job-restartable' is a value of the Job's "job-state-reasons"
      attribute, then the Printer MUST accept a Restart-Job operation
      for that Job.  This value SHOULD be supported if the Restart-Job
      operation is supported.

   o  'queued-in-device': The Job has been forwarded to a device or
      print system that is unable to send back status.  The Printer sets
      the Job's "job-state" attribute to 'completed' and adds the
      'queued-in-device' value to the Job's "job-state-reasons"
      attribute to indicate that the Printer has no additional
      information about the Job and never will have any better
      information.  See Section 5.3.7.1.

5.3.9.  job-state-message (text(MAX))

   This RECOMMENDED attribute specifies information about the
   "job-state" and "job-state-reasons" attributes in human-readable
   text.  If the Printer supports this attribute, the Printer MUST be
   able to generate this message in any of the natural languages
   identified by the Printer's "generated-natural-language-supported"
   attribute (see the "attributes-natural-language" operation attribute
   specified in Section 4.1.4.1).

   The value SHOULD NOT contain additional information not contained in
   the values of the "job-state" and "job-state-reasons" attributes,
   such as interpreter error information.  Otherwise, application
   programs might attempt to parse the (localized) text.  For such
   additional information, such as interpreter errors for application
   program consumption or specific Document access errors, new
   attributes with 'keyword' values need to be developed and registered.

Top      Up      ToC       Page 139 
5.3.10.  job-detailed-status-messages (1setOf text(MAX))

   This attribute specifies additional detailed and technical
   information about the Job.  The Printer SHOULD localize the message,
   unless such localization would obscure the technical meaning of the
   message.  Clients MUST NOT attempt to parse the value of this
   attribute.  See "job-document-access-errors" (Section 5.3.11) for
   additional errors that a program can process.

5.3.11.  job-document-access-errors (1setOf text(MAX))

   This attribute provides additional information about each Document
   access error for this Job encountered by the Printer after it
   returned a response to the Print-URI or Send-URI operation and
   subsequently attempted to access document(s) supplied in the
   Print-URI or Send-URI operation.  For errors in the protocol that is
   identified by the URI scheme in the "document-uri" operation
   attribute, such as 'http:' or 'ftp:', the error code is returned in
   parentheses, followed by the URI.  For example:

   (404) http://www.example.com/filename.pdf

   Most Internet protocols use decimal error codes (unlike IPP), so the
   ASCII error code representation is in decimal.

5.3.12.  number-of-documents (integer(0:MAX))

   This attribute indicates the number of Documents in the Job, i.e.,
   the number of Send-Document, Send-URI, Print-Job, or Print-URI
   operations that the Printer has accepted for this Job, regardless of
   whether the Document data has reached the Printer.

   Implementations supporting the RECOMMENDED Create-Job/Send-Document/
   Send-URI operations SHOULD support this attribute so that Clients can
   query the number of Documents in each Job.

5.3.13.  output-device-assigned (name(127))

   This attribute identifies the Output Device to which the Printer has
   assigned this Job.  If an Output Device implements an embedded
   Printer, the Printer SHOULD set this attribute.  If a print server
   implements a Printer, the value MAY be empty (zero-length string) or
   not returned until the Printer assigns an Output Device to the Job.
   This attribute is particularly useful when a single Printer supports
   multiple devices (so-called "fan-out" -- see Section 3.1).

Top      Up      ToC       Page 140 
5.3.14.  Event Time Job Status Attributes

   This section defines the Job Status attributes that indicate the time
   at which certain events occur for a Job.  If the Job event has not
   yet occurred, then the Printer MUST return the 'no-value' out-of-band
   value (see the beginning of Section 5.1).  The
   "time-at-xxx (integer)" attributes represent time as an 'integer'
   representing the number of seconds since the device was powered up
   (informally called "time ticks").  The "date-time-at-xxx (dateTime)"
   attributes represent time as 'dateTime' representing date and time
   (including an offset from UTC).

   In order to populate these attributes, the Printer copies the
   value(s) of the following Printer Status attributes at the time the
   event occurs:

   1.  the value in the Printer's "printer-up-time" attribute for the
       "time-at-xxx (integer)" attributes.

   2.  the value in the Printer's "printer-current-time" attribute for
       the "date-time-at-xxx (dateTime)" attributes.

   If the Printer resets its "printer-up-time" attribute to 1 on
   power-up (see Section 5.4.29) and has persistent Jobs, then it MUST
   change all of those Jobs' "time-at-xxx (integer)" (time tick) Job
   attributes whose events have occurred either to:

   1.  0 to indicate that the event happened before the most recent
       power-up, or

   2.  the negative of the number of seconds before the most recent
       power-up that the event took place, if the Printer knows the
       exact number of seconds.

   If a Client queries a "time-at-xxx (integer)" time tick Job attribute
   and finds the value to be 0 or negative, the Client MUST assume that
   the event occurred in some life other than the Printer's current
   life.

   Note: A Printer does not change the values of any
   "date-time-at-xxx (dateTime)" Job attributes on power-up.

5.3.14.1.  time-at-creation (integer(MIN:MAX))

   This REQUIRED attribute indicates the time at which the Job was
   created.

Top      Up      ToC       Page 141 
5.3.14.2.  time-at-processing (integer(MIN:MAX))

   This REQUIRED attribute indicates the time at which the Job first
   began processing after the Job Creation request or the most recent
   Restart-Job operation.  The out-of-band 'no-value' value is returned
   if the Job has not yet been in the 'processing' state (see the
   beginning of Section 5.1).

5.3.14.3.  time-at-completed (integer(MIN:MAX))

   This REQUIRED attribute indicates the time at which the Job entered a
   Terminating State ('completed', 'canceled', or 'aborted').  The
   out-of-band 'no-value' value is returned if the Job has not yet
   completed, been canceled, or aborted (see the beginning of
   Section 5.1).

5.3.14.4.  job-printer-up-time (integer(1:MAX))

   This REQUIRED Job Status attribute indicates the amount of time (in
   seconds) that the Printer implementation has been up and running.
   This attribute is an alias for the "printer-up-time" Printer Status
   attribute (see Section 5.4.29).

   A Client MAY request this attribute in a Get-Job-Attributes or
   Get-Jobs request and use the value returned in combination with other
   requested Event Time Job Status attributes in order to display time
   attributes to a user.  The difference between this attribute and the
   'integer' value of a "time-at-xxx" attribute is the number of seconds
   ago that the "time-at-xxx" event occurred.  A Client can compute the
   wall-clock time at which the "time-at-xxx" event occurred by
   subtracting this difference from the Client's wall-clock time.

5.3.14.5.  date-time-at-creation (dateTime|unknown)

   This RECOMMENDED attribute indicates the date and time at which the
   Job was created.

5.3.14.6.  date-time-at-processing (dateTime|unknown|no-value)

   This RECOMMENDED attribute indicates the date and time at which the
   Job first began processing after the Job Creation request or the most
   recent Restart-Job operation.

5.3.14.7.  date-time-at-completed (dateTime|unknown|no-value)

   This RECOMMENDED attribute indicates the date and time at which the
   Job entered a Terminating State ('completed', 'canceled', or
   'aborted').

Top      Up      ToC       Page 142 
5.3.15.  number-of-intervening-jobs (integer(0:MAX))

   This attribute indicates the number of Jobs that are "ahead" of this
   Job in the relative chronological order of expected time to complete
   (i.e., the current scheduled order).  For efficiency, it is only
   necessary to calculate this value when an operation is performed that
   requests this attribute.

5.3.16.  job-message-from-operator (text(127))

   This attribute provides a message from an Operator, Administrator, or
   "intelligent" process to indicate to the End User the reasons for
   modification or other management action taken on a Job.

5.3.17.  Job Size Attributes

   This subsection defines Job attributes that describe the size of the
   Job.  These attributes are not intended to be counters; they are
   intended to be useful routing and scheduling information if known.
   For these attributes, the Printer can try to compute the value if it
   is not supplied in the Job Creation request.  Even if the Client does
   supply a value for these three attributes in the Job Creation
   request, the Printer MAY choose to change the value if the Printer is
   able to compute a value that is more accurate than the
   Client-supplied value.  The Printer can determine the correct value
   for these attributes either right at Job submission time or at any
   later point in time.

5.3.17.1.  job-k-octets (integer(0:MAX))

   This attribute specifies the total size of the Document(s) in
   K octets, i.e., in units of 1024 octets requested to be processed
   in the Job.  The value MUST be rounded up, so that a Job between
   1 and 1024 octets MUST be indicated as being 1, 1025 to 2048 MUST
   be 2, etc.

   This value MUST NOT include the multiplicative factors contributed by
   the number of copies specified by the "copies" attribute, independent
   of whether the device can process multiple copies without making
   multiple passes over the Job or Document data and independent of
   whether the output is collated or not.  Thus, the value is
   independent of the implementation and indicates the size of the
   Document(s) measured in K octets independent of the number of copies.

Top      Up      ToC       Page 143 
   This value also MUST NOT include the multiplicative factor due to a
   copies instruction embedded in the Document data.  If the Document
   data actually includes replications of the Document data, this value
   will include such replication.  In other words, this value is always
   the size of the source Document data, rather than a measure of the
   hardcopy output to be produced.

5.3.17.2.  job-impressions (integer(0:MAX))

   This RECOMMENDED attribute specifies the total size in number of
   Impressions of the Document(s) being submitted (see the definition of
   "Impression" in Section 2.3.4).

   As with "job-k-octets", this value MUST NOT include the
   multiplicative factors contributed by the number of copies specified
   by the "copies" attribute, independent of whether the device can
   process multiple copies without making multiple passes over the Job
   or Document data and independent of whether the output is collated or
   not.  Thus, the value is independent of the implementation and
   reflects the size of the Document(s) measured in Impressions
   independent of the number of copies.

   As with "job-k-octets", this value also MUST NOT include the
   multiplicative factor due to a copies instruction embedded in the
   Document data.  If the Document data actually includes replications
   of the Document data, this value will include such replication.  In
   other words, this value is always the number of Impressions in the
   source Document data, rather than a measure of the number of
   Impressions to be produced by the Job.

5.3.17.3.  job-media-sheets (integer(1:MAX))

   This RECOMMENDED attribute specifies the total number of Media Sheets
   to be produced for this Job.

   Unlike the "job-k-octets" and the "job-impressions" attributes, this
   value MUST include the multiplicative factors contributed by the
   number of copies specified by the "copies" attribute and a 'number of
   copies' instruction embedded in the Document data, if any.  This
   difference allows the Administrator to control the lower and upper
   bounds of both (1) the size of the Document(s) with
   "job-k-octets-supported" and "job-impressions-supported" and
   (2) the size of the Job with "job-media-sheets-supported".

Top      Up      ToC       Page 144 
5.3.18.  Job Progress Attributes

   This subsection defines Job attributes that describe the progress of
   the Job.  These attributes are intended to be counters.  That is, the
   values for a Job that has not started processing MUST be 0.  When the
   Job's "job-state" is 'processing' or 'processing-stopped', this value
   is intended to contain the amount of the Job that has been processed
   to the time at which the attributes are requested.  When the Job
   enters the 'completed', 'canceled', or 'aborted' states, these values
   are the final values for the Job.

5.3.18.1.  job-k-octets-processed (integer(0:MAX))

   This attribute specifies the total number of octets processed in
   K octets, i.e., in units of 1024 octets so far.  The value MUST be
   rounded up, so that a Job between 1 and 1024 octets inclusive MUST be
   indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc.

   For implementations where multiple copies are produced by the
   interpreter with only a single pass over the data, the final value
   MUST be equal to the value of the "job-k-octets" attribute.  For
   implementations where multiple copies are produced by the interpreter
   by processing the data for each copy, the final value MUST be a
   multiple of the value of the "job-k-octets" attribute.

5.3.18.2.  job-impressions-completed (integer(0:MAX))

   This RECOMMENDED attribute specifies the number of Impressions
   completed for the Job so far.  For printing devices, the Impressions
   completed includes interpreting, marking, and stacking the output.

5.3.18.3.  job-media-sheets-completed (integer(0:MAX))

   This RECOMMENDED Job attribute specifies the number of Media Sheets
   that have been marked and stacked for the entire Job so far, whether
   those sheets have been processed on one side or on both.

5.3.19.  attributes-charset (charset)

   This REQUIRED attribute is populated using the value in the
   Client-supplied "attributes-charset" attribute in the Job Creation
   request.  It identifies the charset (coded character set and encoding
   method) used by any Job attributes with attribute syntaxes 'text' and
   'name' that were supplied by the Client in the Job Creation request.
   See Section 4.1.4 for a complete description of the
   "attributes-charset" operation attribute.

Top      Up      ToC       Page 145 
   This attribute does not indicate the charset in which the 'text' and
   'name' values are stored internally in the Job.  The internal charset
   is implementation defined.  The Printer MUST convert from whatever
   the internal charset is to that being requested in an operation as
   specified in Section 4.1.4.

5.3.20.  attributes-natural-language (naturalLanguage)

   This REQUIRED attribute is populated using the value in the
   Client-supplied "attributes-natural-language" attribute in the Job
   Creation request.  It identifies the natural language used for any
   Job attributes with attribute syntaxes 'text' and 'name' that were
   supplied by the Client in the Job Creation request.  See
   Section 4.1.4 for a complete description of the
   "attributes-natural-language" operation attribute.  See
   Sections 5.1.2.2 and 5.1.3.2 for how a Natural Language Override can
   be supplied explicitly for each 'text' and 'name' attribute value
   that differs from the value identified by the
   "attributes-natural-language" attribute.



(page 145 continued on part 9)

Next Section