Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 8011

Internet Printing Protocol/1.1: Model and Semantics

Pages: 221
Internet Standard: 92
Errata
Obsoletes:  291133813382
Part 8 of 12 – Pages 124 to 145
First   Prev   Next

Top   ToC   RFC8011 - Page 124   prevText

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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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   ToC   RFC8011 - 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