tech-invite   World Map     

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

RFC 2911

 
 
 

Internet Printing Protocol/1.1: Model and Semantics

Part 6 of 9, p. 119 to 147
Prev RFC Part       Next RFC Part

 


prevText      Top      Up      ToC       Page 119 
4.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 object or not.

   Implementations supporting the OPTIONAL Create-Job/Send-
   Document/Send-URI operations SHOULD support this attribute so that
   clients can query the number of documents in each job.

4.3.13 output-device-assigned (name(127))

   This attribute identifies the output device to which the Printer
   object has assigned this job.  If an output device implements an
   embedded Printer object, the Printer object NEED NOT set this
   attribute.  If a print server implements a Printer object, the value
   MAY be empty (zero- length string) or not returned until the Printer
   object assigns an output device to the job.  This attribute is
   particularly useful when a single Printer object supports multiple
   devices (so called "fan-out" - see section 2.1).

4.3.14 Event Time Job Description Attributes

   This section defines the Job Description attributes that indicate the
   time at which certain events occur for a job.  If the job event has
   not yet occurred, then the IPP object MUST return the 'no-value'
   out-of-band value (see the beginning of Section 4.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 object copies the
   value(s) of the following Printer Description 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 4.4.29) and has persistent jobs, then it MUST change
   all of jobs' "time-at-xxx(integer)" (time tick) job attributes whose
   events have occurred either to:

Top      Up      ToC       Page 120 
      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, though the negative number
         NEED NOT reflect 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.

4.3.14.1 time-at-creation (integer(MIN:MAX))

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

4.3.14.2 time-at-processing (integer(MIN:MAX))

   This REQUIRED attribute indicates the time at which the Job object
   first began processing after the create operation 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 4.1).

4.3.14.3 time-at-completed (integer(MIN:MAX))

   This REQUIRED attribute indicates the time at which the Job object
   completed (or was 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 4.1).

4.3.14.4 job-printer-up-time (integer(1:MAX))

   This REQUIRED Job Description attribute indicates the amount of time
   (in seconds) that the Printer implementation has been up and running.
   This attribute is an alias for the "printer-up-time" Printer
   Description attribute (see Section 4.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 Description Attributes in order to display
   time attributes to a user.  The difference between this attribute and
   the 'integer' value of a "time-at-xxx" attribute is the number of

Top      Up      ToC       Page 121 
   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.

4.3.14.5 date-time-at-creation (dateTime)

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

4.3.14.6 date-time-at-processing (dateTime)

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

4.3.14.7 date-time-at-completed (dateTime)

   This attribute indicates the date and time at which the Job object
   completed (or was canceled or aborted).

4.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.

4.3.16 job-message-from-operator (text(127))

   This attribute provides a message from an operator, system
   administrator or "intelligent" process to indicate to the end user
   the reasons for modification or other management action taken on a
   job.

4.3.17 Job Size Attributes

   This sub-section 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 object may try to compute the value
   if it is not supplied in the create request.  Even if the client does
   supply a value for these three attributes in the create request, the
   Printer object MAY choose to change the value if the Printer object
   is able to compute a value which is more accurate than the client
   supplied value.  The Printer object may be able to determine the
   correct value for these attributes either right at job submission
   time or at any later point in time.

Top      Up      ToC       Page 122 
4.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.

   This value MUST also 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.

4.3.17.2 job-impressions (integer(0:MAX))

   This attribute specifies the total size in number of impressions of
   the document(s) being submitted (see the definition of impression in
   section 12.2.5).

   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 MUST also 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.

Top      Up      ToC       Page 123 
4.3.17.3 job-media-sheets (integer(0:MAX))

   This 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 system 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".

4.3.18 Job Progress Attributes

   This sub-section defines job attributes that describe the progress of
   the job.  These attributes are intended to be counters.  That is, the
   value 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.

4.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.

4.3.18.2 job-impressions-completed (integer(0:MAX))

   This job 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.

Top      Up      ToC       Page 124 
4.3.18.3 job-media-sheets-completed (integer(0:MAX))

   This job attribute specifies the media-sheets completed marking and
   stacking for the entire job so far whether those sheets have been
   processed on one side or on both.

4.3.19 attributes-charset (charset)

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

   This attribute does not indicate the charset in which the 'text' and
   'name' values are stored internally in the Job object.  The internal
   charset is implementation-defined.  The IPP object MUST convert from
   whatever the internal charset is to that being requested in an
   operation as specified in Section 3.1.4.

4.3.20 attributes-natural-language (naturalLanguage)

   This REQUIRED attribute is populated using the value in the client
   supplied "attributes-natural-language" attribute in the create
   request.  It identifies the natural language used for any Job
   attributes with attribute syntax 'text' and 'name' that were supplied
   by the client in the create request.  See Section 3.1.4 for a
   complete description of the "attributes-natural-language" operation
   attribute.  See Sections 4.1.1.2 and 4.1.2.2 for how a Natural
   Language Override may be supplied explicitly for each 'text' and
   'name' attribute value that differs from the value identified by the
   "attributes-natural-language" attribute.

4.4 Printer Description Attributes

   These attributes form the attribute group called "printer-
   description".  The following table summarizes these attributes, their
   syntax, and whether or not they are REQUIRED for a Printer object to
   support.  If they are not indicated as REQUIRED, they are OPTIONAL.
   The maximum size in octets for 'text' and 'name' attributes is
   indicated in parenthesizes.

   Note: How these attributes are set by an Administrator is outside the
   scope of this IPP/1.1 document.

Top      Up      ToC       Page 125 
  +----------------------------+---------------------------+-----------+
  |      Attribute             |     Syntax                | REQUIRED? |
  +----------------------------+---------------------------+-----------+
  | printer-uri-supported      | 1setOf uri                |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | uri-security-supported     | 1setOf type2 keyword      |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | uri-authentication-        | 1setOf type2 keyword      |  REQUIRED |
  |     supported              |                           |           |
  +----------------------------+---------------------------+-----------+
  | printer-name               | name (127)                |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-location           | text (127)                |           |
  +----------------------------+---------------------------+-----------+
  | printer-info               | text (127)                |           |
  +----------------------------+---------------------------+-----------+
  | printer-more-info          | uri                       |           |
  +----------------------------+---------------------------+-----------+
  | printer-driver-installer   | uri                       |           |
  +----------------------------+---------------------------+-----------+
  | printer-make-and-model     | text (127)                |           |
  +----------------------------+---------------------------+-----------+
  | printer-more-info-         | uri                       |           |
  | manufacturer               |                           |           |
  +----------------------------+---------------------------+-----------+
  | printer-state              | type1 enum                |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-state-reasons      | 1setOf type2 keyword      |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-state-message      | text (MAX)                |           |
  +----------------------------+---------------------------+-----------+
  | ipp-versions-supported     | 1setOf type2 keyword      |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | operations-supported       | 1setOf type2 enum         |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | multiple-document-jobs-    | boolean                   |           |
  |     supported              |                           |           |
  +----------------------------+---------------------------+-----------+
  | charset-configured         | charset                   |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | charset-supported          | 1setOf charset            |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | natural-language-configured| naturalLanguage           |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | generated-natural-language-| 1setOf naturalLanguage    |  REQUIRED |
  | supported                  |                           |           |
  +----------------------------+---------------------------+-----------+
  | document-format-default    | mimeMediaType             |  REQUIRED |

Top      Up      ToC       Page 126 
  +----------------------------+---------------------------+-----------+
  | document-format-supported  | 1setOf mimeMediaType      |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-is-accepting-jobs  | boolean                   |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | queued-job-count           | integer (0:MAX)           |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-message-from-      | text (127)                |           |
  | operator                   |                           |           |
  +----------------------------+---------------------------+-----------+
  | color-supported            | boolean                   |           |
  +----------------------------+---------------------------+-----------+
  | reference-uri-schemes-     | 1setOf uriScheme          |           |
  |   supported                |                           |           |
  +----------------------------+---------------------------+-----------+
  | pdl-override-supported     | type2 keyword             |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-up-time            | integer (1:MAX)           |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | printer-current-time       | dateTime                  |           |
  +----------------------------+---------------------------+-----------+
  | multiple-operation-time-out| integer (1:MAX)           |           |
  +----------------------------+---------------------------+-----------+
  | compression-supported      | 1setOf type3 keyword      |  REQUIRED |
  +----------------------------+---------------------------+-----------+
  | job-k-octets-supported     | rangeOfInteger (0:MAX)    |           |
  +----------------------------+---------------------------+-----------+
  | job-impressions-supported  | rangeOfInteger (0:MAX)    |           |
  +----------------------------+---------------------------+-----------+
  | job-media-sheets-supported | rangeOfInteger (0:MAX)    |           |
  +----------------------------+---------------------------+-----------+
  | pages-per-minute           | integer(0:MAX)            |           |
  +----------------------------+---------------------------+-----------+
  | pages-per-minute-color     | integer(0:MAX)            |           |
  +----------------------------+---------------------------+-----------+

4.4.1 printer-uri-supported (1setOf uri)

   This REQUIRED Printer attribute contains at least one URI for the
   Printer object.  It OPTIONALLY contains more than one URI for the
   Printer object.    An administrator determines a Printer object's
   URI(s) and configures this attribute to contain those URIs by some
   means outside the scope of this IPP/1.1 document.  The precise format
   of this URI is implementation dependent and depends on the protocol.
   See the next two sections for a description of the "uri-security-
   supported" and "uri-authentication-supported" attributes, both of

Top      Up      ToC       Page 127 
   which are the REQUIRED companion attributes to this "printer-uri-
   supported" attribute.  See section 2.4 on Printer object identity and
   section 8.2 on security and URIs for more information.

4.4.2 uri-authentication-supported (1setOf type2 keyword)

   This REQUIRED Printer attribute MUST have the same cardinality
   (contain the same number of values) as the "printer-uri-supported"
   attribute.  This attribute identifies the Client Authentication
   mechanism associated with each URI listed in the "printer-uri-
   supported" attribute. The Printer object uses the specified mechanism
   to identify the authenticated user (see section 8.3).  The "i th"
   value in "uri-authentication-supported" corresponds to the "i th"
   value in "printer-uri-supported" and it describes the authentication
   mechanisms used by the Printer when accessed via that URI.  See
   [RFC2910] for more details on Client Authentication.

   The following standard keyword values are defined:

      'none': There is no authentication mechanism associated with the
         URI.  The Printer object assumes that the authenticated user is
         "anonymous".
      'requesting-user-name': When a client performs an operation whose
         target is the associated URI, the Printer object assumes that
         the authenticated user is specified by the "requesting-user-
         name" Operation attribute (see section 8.3). If the
         "requesting-user-name" attribute is absent in a request, the
         Printer object assumes that the authenticated user is
         "anonymous".
      'basic': When a client performs an operation whose target is the
         associated URI, the Printer object challenges the client with
         HTTP basic authentication [RFC2617]. The Printer object assumes
         that the authenticated user is the name received via the basic
         authentication mechanism.
      'digest': When a client performs an operation whose target is the
         associated URI, the Printer object challenges the client with
         HTTP digest authentication [RFC2617]. The Printer object
         assumes that the authenticated user is the name received via
         the digest authentication mechanism.
      'certificate': When a client performs an operation whose target is
         the associated URI, the Printer object expects the client to
         provide a certificate. The Printer object assumes that the
         authenticated user is the textual name contained within the
         certificate.

Top      Up      ToC       Page 128 
4.4.3 uri-security-supported (1setOf type2 keyword)

   This REQUIRED Printer attribute MUST have the same cardinality
   (contain the same number of values) as the "printer-uri-supported"
   attribute.  This attribute identifies the security mechanisms used
   for each URI listed in the "printer-uri-supported" attribute.  The "i
   th" value in "uri-security-supported" corresponds to the "i th" value
   in "printer-uri-supported" and it describes the security mechanisms
   used for accessing the Printer object via that URI.  See [RFC2910]
   for more details on security mechanisms.

   The following standard keyword values are defined:

      'none': There are no secure communication channel protocols in use
         for the given URI.
      'ssl3': SSL3 [SSL] is the secure communications channel protocol
         in use for the given URI.
      'tls':  TLS [RFC2246] is the secure communications channel
         protocol in use for the given URI.

   This attribute is orthogonal to the definition of a Client
   Authentication mechanism.  Specifically, 'none' does not exclude
   Client Authentication. See section 4.4.2.

   Consider the following example.  For a single Printer object, an
   administrator configures the "printer-uri-supported",  "uri-
   authentication-supported" and "uri-security-supported" attributes as
   follows:

     "printer-uri-supported": 'xxx://acme.com/open-use-printer',
        'xxx://acme.com/restricted-use-printer',
        'xxx://acme.com/private-printer'
     "uri-authentication-supported": 'none', 'digest', 'basic'
     "uri-security-supported": 'none', 'none', 'tls'

   Note:  'xxx'  is not a valid scheme.  See the IPP/1.1 "Transport and
   Encoding" document [RFC2910] for the actual URI schemes to be used in
   object target attributes.

   In this case, one Printer object has three URIs.

      - For the first URI, 'xxx://acme.com/open-use-printer', the value
        'none' in "uri-security-supported" indicates that there is no
        secure channel protocol configured to run under HTTP.  The value
        of 'none' in "uri-authentication-supported" indicates that all
        users are 'anonymous'.  There will be no challenge and the
        Printer will ignore "requesting-user-name".

Top      Up      ToC       Page 129 
      - For the second URI, 'xxx://acme.com/restricted-use-printer', the
        value 'none' in "uri-security-supported" indicates that there is
        no secure channel protocol configured to run under HTTP. The
        value of 'digest' in "uri-authentication-supported" indicates
        that the Printer will issue a challenge and that the Printer
        will use the name supplied by the digest mechanism to determine
        the authenticated user (see section 8.3).
      - For the third URI, 'xxx://acme.com/private-printer', the value
        'tls' in "uri-security-supported" indicates that TLS is being
        used to secure the channel.  The client SHOULD be prepared to
        use TLS framing to negotiate an acceptable ciphersuite to use
        while communicating with the Printer object.  In this case, the
        name implies the use of a secure communications channel, but the
        fact is made explicit by the presence of the 'tls' value in
        "uri-security-supported".  The client does not need to resort to
        understanding which security it must use by following naming
        conventions or by parsing the URI to determine which security
        mechanisms are implied.  The value of 'basic' in "uri-
        authentication-supported" indicates that the Printer will issue
        a challenge and that the Printer will use the name supplied by
        the digest mechanism to determine the authenticated user (see
        section 8.3).  Because this challenge occurs in a tls session,
        the channel is secure.

   It is expected that many IPP Printer objects will be configured to
   support only one channel (either configured to use TLS access or not)
   and only one authentication mechanism. Such Printer objects only have
   one URI listed in the "printer-uri-supported" attribute.  No matter
   the configuration of the Printer object (whether it has only one URI
   or more than one URI), a client MUST supply only one URI in the
   target "printer-uri" operation attribute.

4.4.4 printer-name (name(127))

   This REQUIRED Printer attribute contains the name of the Printer
   object.  It is a name that is more end-user friendly than a URI. An
   administrator determines a printer's name and sets this attribute to
   that name. This name may be the last part of the printer's URI or it
   may be unrelated.  In non-US-English locales, a name may contain
   characters that are not allowed in a URI.

4.4.5 printer-location (text(127))

   This Printer attribute identifies the location of the device. This
   could include things like: "in Room 123A, second floor of building
   XYZ".

Top      Up      ToC       Page 130 
4.4.6 printer-info (text(127))

   This Printer attribute identifies the descriptive information about
   this Printer object.  This could include things like: "This printer
   can be used for printing color transparencies for HR presentations",
   or "Out of courtesy for others, please print only small (1-5 page)
   jobs at this printer", or even "This printer is going away on July 1,
   1997, please find a new printer".

4.4.7 printer-more-info (uri)

   This Printer attribute contains a URI used to obtain more information
   about this specific Printer object.  For example, this could be an
   HTTP type URI referencing an HTML page accessible to a Web Browser.
   The information obtained from this URI is intended for end user
   consumption.  Features outside the scope of IPP can be accessed from
   this URI.  The information is intended to be specific to this printer
   instance and site specific services (e.g. job pricing, services
   offered, end user assistance). The device manufacturer may initially
   populate this attribute.

4.4.8 printer-driver-installer (uri)

   This Printer attribute contains a URI to use to locate the driver
   installer for this Printer object.   This attribute is intended for
   consumption by automata.  The mechanics of print driver installation
   is outside the scope of this IPP/1.1 document.  The device
   manufacturer may initially populate this attribute.

4.4.9 printer-make-and-model (text(127))

   This Printer attribute identifies the make and model of the device.
   The device manufacturer may initially populate this attribute.

4.4.10 printer-more-info-manufacturer (uri)

   This Printer attribute contains a URI used to obtain more information
   about this type of device.  The information obtained from this URI is
   intended for end user consumption.  Features outside the scope of IPP
   can be accessed from this URI (e.g., latest firmware, upgrades, print
   drivers, optional features available, details on color support).  The
   information is intended to be germane to this printer without regard
   to site specific modifications or services. The device manufacturer
   may initially populate this attribute.

Top      Up      ToC       Page 131 
4.4.11 printer-state (type1 enum)

   This REQUIRED Printer attribute identifies the current state of the
   device.  The "printer-state reasons" attribute augments the
   "printer-state" attribute to give more detailed information about the
   Printer in the given printer state.

   A Printer object need only update this attribute before responding to
   an operation which requests the attribute; the Printer object NEED
   NOT update this attribute continually, since asynchronous event
   notification is not part of IPP/1.1.  A Printer NEED NOT implement
   all values if they are not applicable to a given implementation.

   The following standard enum values are defined:

   Value  Symbolic Name and Description

   '3'    'idle':  Indicates that new jobs can start processing without
                waiting.
   '4'    'processing':  Indicates that jobs are processing; new jobs
                will wait before processing.
   '5'    'stopped':  Indicates that no jobs can be processed and
                intervention is required.

   Values of "printer-state-reasons", such as 'spool-area-full' and
   'stopped-partly', MAY be used to provide further information.

4.4.12 printer-state-reasons (1setOf type2 keyword)

   This REQUIRED Printer attribute supplies additional detail about the
   device's state.  Some of the these value definitions indicate
   conformance requirements; the rest are OPTIONAL.

   Each keyword value MAY have a suffix to indicate its level of
   severity.  The three levels are: report (least severe), warning, and
   error (most severe).

      - '-report':  This suffix indicates that the reason is a "report".
        An implementation may choose to omit some or all reports. Some
        reports specify finer granularity about the printer state;
        others serve as a precursor to a warning. A report MUST contain
        nothing that could affect the printed output.
      - '-warning': This suffix indicates that the reason is a
        "warning".  An implementation may choose to omit some or all
        warnings. Warnings serve as a precursor to an error. A warning
        MUST contain nothing that prevents a job from completing, though
        in some cases the output may be of lower quality.

Top      Up      ToC       Page 132 
      - '-error': This suffix indicates that the reason is an "error".
        An implementation MUST include all errors. If this attribute
        contains one or more errors, printer MUST be in the stopped
        state.

   If the implementation does not add any one of the three suffixes, all
   parties MUST assume that the reason is an "error".

   If a Printer object controls more than one output device, each value
   of this attribute MAY apply to one or more of the output devices.  An
   error on one output device that does not stop the Printer object as a
   whole MAY appear as a warning in the Printer's "printer-state-reasons
   attribute".  If the "printer-state" for such a Printer has a value of
   'stopped', then there MUST be an error reason among the values in the
   "printer-state-reasons" attribute.

   The following standard keyword values are defined:

      'other': The device has detected an error other than one listed in
         this document.
      'none': There are not reasons. This state reason is semantically
         equivalent to "printer-state-reasons" without any value and
         MUST be used, since the 1setOf attribute syntax requires at
         least one value.
      'media-needed': A tray has run out of media.
      'media-jam': The device has a media jam.
      'moving-to-paused':  Someone has paused the Printer object using
         the Pause-Printer operation (see section 3.2.7) or other means,
         but the device(s) are taking an appreciable time to stop.
         Later, when all output has stopped, the "printer-state" becomes
         'stopped', and the 'paused' value replaces the 'moving-to-
         paused' value in the "printer-state-reasons" attribute.  This
         value MUST be supported, if the Pause-Printer operation is
         supported and the implementation takes significant time to
         pause a device in certain circumstances.
      'paused': Someone has paused the Printer object using the Pause-
         Printer operation (see section 3.2.7) or other means and the
         Printer object's "printer-state" is 'stopped'.  In this state,
         a Printer MUST NOT produce printed output, but it MUST perform
         other operations requested by a client.  If a Printer had been
         printing a job when the Printer was paused, the Printer MUST
         resume printing that job when the Printer is no longer paused
         and leave no evidence in the printed output of such a pause.
         This value MUST be supported, if the Pause-Printer operation is
         supported.
      'shutdown': Someone has removed a Printer object from service, and
         the device may be powered down or physically removed.  In this
         state, a Printer object MUST NOT produce printed output, and

Top      Up      ToC       Page 133 
         unless the Printer object is realized by a print server that is
         still active, the Printer object MUST perform no other
         operations requested by a client, including returning this
         value. If a Printer object had been printing a job when it was
         shutdown, the Printer NEED NOT resume printing that job when
         the Printer is no longer shutdown. If the Printer resumes
         printing such a job, it may leave evidence in the printed
         output of such a shutdown, e.g. the part printed before the
         shutdown may be printed a second time after the shutdown.
      'connecting-to-device': The Printer object has scheduled a job on
         the output device and is in the process of connecting to a
         shared network output device (and might not be able to actually
         start printing the job for an arbitrarily long time depending
         on the usage of the output device by other servers on the
         network).
      'timed-out': The server was able to connect to the output device
         (or is always connected), but was unable to get a response from
         the output device.
      'stopping': The Printer object is in the process of stopping the
         device and will be stopped in a while. When the device is
         stopped, the Printer object will change the Printer object's
         state to 'stopped'.  The 'stopping-warning' reason is never an
         error, even for a Printer with a single output device.  When an
         output-device ceases accepting jobs, the Printer will have this
         reason while the output device completes printing.
      'stopped-partly': When a Printer object controls more than one
         output device, this reason indicates that one or more output
         devices are stopped.  If the reason is a report, fewer than
         half of the output devices are stopped.  If the reason is a
         warning, fewer than all of the output devices are stopped.
      'toner-low': The device is low on toner.
      'toner-empty':  The device is out of toner.
      'spool-area-full': The limit of persistent storage allocated for
         spooling has been reached.  The Printer is temporarily unable
         to accept more jobs.  The Printer will remove this value when
         it is able to accept more jobs.  This value SHOULD be used by a
         non-spooling Printer that only accepts one or a small number
         jobs at a time or a spooling Printer that has filled the spool
         space.
      'cover-open': One or more covers on the device are open.
      'interlock-open': One or more interlock devices on the printer are
         unlocked.
      'door-open': One or more doors on the device are open.
      'input-tray-missing': One or more input trays are not in the
         device.
      'media-low': At least one input tray is low on media.
      'media-empty': At least one input tray is empty.

Top      Up      ToC       Page 134 
      'output-tray-missing': One or more output trays are not in the
         device
      'output-area-almost-full': One or more output area is almost full
         (e.g. tray, stacker, collator).
      'output-area-full': One or more output area is full. (e.g. tray,
         stacker, collator)
      'marker-supply-low': The device is low on at least one marker
         supply.  (e.g. toner, ink, ribbon)
      'marker-supply-empty: The device is out of at least one marker
         supply. (e.g. toner, ink, ribbon)
      'marker-waste-almost-full': The device marker supply waste
         receptacle is almost full.
      'marker-waste-full': The device marker supply waste receptacle is
         full.
      'fuser-over-temp': The fuser temperature is above normal.
      'fuser-under-temp': The fuser temperature is below normal.
      'opc-near-eol': The optical photo conductor is near end of life.
      'opc-life-over': The optical photo conductor is no longer
         functioning.
      'developer-low': The device is low on developer.
      'developer-empty: The device is out of developer.
      'interpreter-resource-unavailable': An interpreter resource is
         unavailable (i.e. font, form)

4.4.13 printer-state-message (text(MAX))

   This Printer attribute specifies information about the "printer-
   state" and "printer-state-reasons" attributes in human readable text.
   If the Printer object supports this attribute, the Printer object
   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 3.1.4.1).

4.4.14 ipp-versions-supported (1setOf type2 keyword)

   This REQUIRED attribute identifies the IPP protocol version(s) that
   this Printer supports, including major and minor versions, i.e., the
   version numbers for which this Printer implementation meets the
   conformance requirements.  For version number validation, the Printer
   matches the (two-octet binary) "version-number" parameter supplied by
   the client in each request (see sections 3.1.1 and 3.1.8) with the
   (US-ASCII) keyword values of this attribute.

Top      Up      ToC       Page 135 
   The following standard keyword values are defined:

      '1.0': Meets the conformance requirement of IPP version 1.0 as
         specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565]
         including any extensions registered according to Section 6 and
         any extension defined in this version or any future version of
         the IPP "Model and Semantics" document or the IPP "Encoding and
         Transport" document following the rules, if any, when the
         "version-number" parameter is '1.0'.
      '1.1': Meets the conformance requirement of IPP version 1.1 as
         specified in this document and [RFC2910] including any
         extensions registered according to Section 6 and any extension
         defined in any future versions of the IPP "Model and Semantics"
         document or the IPP Encoding and Transport document following
         the rules, if any, when the "version-number" parameter is
         '1.1'.

4.4.15 operations-supported (1setOf type2 enum)

   This REQUIRED Printer attribute specifies the set of supported
   operations for this Printer object and contained Job objects.

   This attribute is encoded as any other enum attribute syntax
   according to [RFC2910] as 32-bits.  However, all 32-bit enum values
   for this attribute MUST NOT exceed 0x00008FFF, since these same
   values are also passed in two octets in the "operation-id" parameter
   (see section 3.1.1) in each Protocol request with the two high order
   octets omitted in order to indicate the operation being performed
   [RFC2910].

   The following standard enum and "operation-id" (see section 3.1.2)
   values are defined:

Top      Up      ToC       Page 136 
     Value               Operation Name
     -----------------   -------------------------------------

     0x0000              reserved, not used
     0x0001              reserved, not used
     0x0002              Print-Job
     0x0003              Print-URI
     0x0004              Validate-Job
     0x0005              Create-Job
     0x0006              Send-Document
     0x0007              Send-URI
     0x0008              Cancel-Job
     0x0009              Get-Job-Attributes
     0x000A              Get-Jobs
     0x000B              Get-Printer-Attributes
     0x000C              Hold-Job
     0x000D              Release-Job
     0x000E              Restart-Job
     0x000F              reserved for a future operation
     0x0010              Pause-Printer
     0x0011              Resume-Printer
     0x0012              Purge-Jobs
     0x0013-0x3FFF       reserved for future IETF standards track
                         operations (see section 6.4)
     0x4000-0x8FFF       reserved for vendor extensions (see section 6.4)

4.4.16 multiple-document-jobs-supported (boolean)

   This Printer attribute indicates whether or not the Printer supports
   more than one document per job, i.e., more than one Send-Document or
   Send-Data operation with document data.  If the Printer supports the
   Create-Job and Send-Document operations (see section 3.2.4 and
   3.3.1), it MUST support this attribute.

4.4.17 charset-configured (charset)

   This REQUIRED Printer attribute identifies the charset that the
   Printer object has been configured to represent 'text' and 'name'
   Printer attributes that are set by the operator, system
   administrator, or manufacturer, i.e., for "printer-name" (name),
   "printer-location" (text), "printer-info" (text), and "printer-make-
   and-model" (text).  Therefore, the value of the Printer object's
   "charset-configured" attribute MUST also be among the values of the
   Printer object's "charset-supported" attribute.

Top      Up      ToC       Page 137 
4.4.18 charset-supported (1setOf charset)

   This REQUIRED Printer attribute identifies the set of charsets that
   the Printer and contained Job objects support in attributes with
   attribute syntax 'text' and 'name'. At least the value 'utf-8' MUST
   be present, since IPP objects MUST support the UTF-8 [RFC2279]
   charset.  If a Printer object supports a charset, it means that for
   all attributes of syntax 'text' and 'name' the IPP object MUST (1)
   accept the charset in requests and return the charset in responses as
   needed.

   If more charsets than UTF-8 are supported, the IPP object MUST
   perform charset conversion between the charsets as described in
   Section 3.1.4.2.

4.4.19 natural-language-configured (naturalLanguage)

   This REQUIRED Printer attribute identifies the natural language that
   the Printer object has been configured to represent 'text' and 'name'
   Printer attributes that are set by the operator, system
   administrator, or manufacturer, i.e., for "printer-name" (name),
   "printer-location" (text), "printer-info" (text), and "printer-make-
   and-model" (text).  When returning these Printer attributes, the
   Printer object MAY return them in the configured natural language
   specified by this attribute, instead of the natural language
   requested by the client in the "attributes-natural-language"
   operation attribute.  See Section 3.1.4.1 for the specification of
   the OPTIONAL multiple natural language support.  Therefore, the value
   of the Printer object's "natural-language-configured" attribute MUST
   also be among the values of the Printer object's "generated-natural-
   language-supported" attribute.

4.4.20 generated-natural-language-supported (1setOf naturalLanguage)

   This REQUIRED Printer attribute identifies the natural language(s)
   that the Printer object and contained Job objects support in
   attributes with attribute syntax 'text' and 'name'.  The natural
   language(s) supported depends on implementation and/or configuration.
   Unlike charsets, IPP objects MUST accept requests with any natural
   language or any Natural Language Override whether the natural
   language is supported or not.

   If a Printer object supports a natural language, it means that for
   any of the attributes for which the Printer or Job object generates
   messages, i.e., for the "job-state-message" and "printer-state-
   message" attributes and Operation Messages (see Section 3.1.5) in
   operation responses, the Printer and Job objects MUST be able to

Top      Up      ToC       Page 138 
   generate messages in any of the Printer's supported natural
   languages.  See section 3.1.4 for the definition of 'text' and 'name'
   attributes in operation requests and responses.

   Note: A Printer object that supports multiple natural languages,
   often has separate catalogs of messages, one for each natural
   language supported.

4.4.21 document-format-default (mimeMediaType)

   This REQUIRED Printer attribute identifies the document format that
   the Printer object has been configured to assume if the client does
   not supply a "document-format" operation attribute in any of the
   operation requests that supply document data.  The standard values
   for this attribute are Internet Media types (sometimes called MIME
   types).  For further details see the description of the
   'mimeMediaType' attribute syntax in Section 4.1.9.

4.4.22 document-format-supported (1setOf mimeMediaType)

   This REQUIRED Printer attribute identifies the set of document
   formats that the Printer object and contained Job objects can
   support. For further details see the description of the
   'mimeMediaType' attribute syntax in Section 4.1.9.

4.4.23 printer-is-accepting-jobs (boolean)

   This REQUIRED Printer attribute indicates whether the printer is
   currently able to accept jobs, i.e., is accepting Print-Job, Print-
   URI, and Create-Job requests.  If the value is 'true', the printer is
   accepting jobs.  If the value is 'false', the Printer object is
   currently rejecting any jobs submitted to it.  In this case, the
   Printer object returns the 'server-error-not-accepting-jobs' status
   code.

   This value is independent of the "printer-state" and "printer-state-
   reasons" attributes because its value does not affect the current
   job; rather it affects future jobs.  This attribute, when 'false',
   causes the Printer to reject jobs even when the "printer-state" is
   'idle' or, when 'true', causes the Printer object to accepts jobs
   even when the "printer-state" is 'stopped'.

4.4.24 queued-job-count (integer(0:MAX))

   This REQUIRED Printer attribute contains a count of the number of
   jobs that are either 'pending', 'processing', 'pending-held', or
   'processing-stopped' and is set by the Printer object.

Top      Up      ToC       Page 139 
4.4.25 printer-message-from-operator (text(127))

   This Printer attribute provides a message from an operator, system
   administrator or "intelligent" process to indicate to the end user
   information or status of the printer, such as why it is unavailable
   or when it is expected to be available.

4.4.26 color-supported (boolean)

   This Printer attribute identifies whether the device is capable of
   any type of color printing at all, including highlight color.  All
   document instructions having to do with color are embedded within the
   document PDL (none are external IPP attributes in IPP/1.1).

   Note:  end-users are able to determine the nature and details of the
   color support by querying the "printer-more-info-manufacturer"
   Printer attribute.

4.4.27 reference-uri-schemes-supported (1setOf uriScheme)

   This Printer attribute specifies which URI schemes are supported for
   use in the "document-uri" operation attribute of the Print-URI or
   Send-URI operation.  If a Printer object supports these optional
   operations, it MUST support the "reference-uri-schemes-supported"
   Printer attribute with at least the following schemed URI value:

      'ftp':  The Printer object will use an FTP 'get' operation as
         defined in RFC 2228 [RFC2228] using FTP URLs as defined by
         [RFC2396] and [RFC2316].

   The Printer object MAY OPTIONALLY support other URI schemes (see
   section 4.1.6).

4.4.28 pdl-override-supported (type2 keyword)

   This REQUIRED Printer attribute expresses the ability for a
   particular Printer implementation to either attempt to override
   document data instructions with IPP attributes or not.

   This attribute takes on the following keyword values:

      - 'attempted': This value indicates that the Printer object
         attempts to make the IPP attribute values take precedence over
         embedded instructions in the document data, however there is no
         guarantee.
      - 'not-attempted': This value indicates that the Printer object
         makes no attempt to make the IPP attribute values take
         precedence over embedded instructions in the document data.

Top      Up      ToC       Page 140 
   Section 15 contains a full description of how this attribute
   interacts with and affects other IPP attributes, especially the
   "ipp-attribute-fidelity" attribute.

4.4.29 printer-up-time (integer(1:MAX))

   This REQUIRED Printer attribute indicates the amount of time (in
   seconds) that this Printer instance has been up and running.  The
   value is a monotonically increasing value starting from 1 when the
   Printer object is started-up (initialized, booted, etc.).  This value
   is used to populate the Event Time Job Description Job attributes
   "time-at-creation", "time-at-processing", and "time-at-completed"
   (see section 4.3.14).

   If the Printer object goes down at some value 'n', and comes back up,
   the implementation MAY:

      1. Know how long it has been down, and resume at some value
         greater than 'n', or
      2. Restart from 1.

   In other words, if the device or devices that the Printer object is
   representing are restarted or power cycled, the Printer object MAY
   continue counting this value or MAY reset this value to 1 depending
   on implementation.  However, if the Printer object software ceases
   running, and restarts without knowing the last value for "printer-
   up-time", the implementation MUST reset this value to 1.  If this
   value is reset and the Printer has persistent jobs, the Printer MUST
   reset the "time-at-xxx(integer) Event Time Job Description attributes
   according to Section 4.3.14.  An implementation MAY use both
   implementation alternatives, depending on warm versus cold start,
   respectively.

4.4.30 printer-current-time (dateTime)

   This Printer attribute indicates the current date and time.  This
   value is used to populate the Event Time Job Description attributes:
   "date-time-at-creation", "date-time-at-processing", and "date-time-
   at-completed" (see Section 4.3.14).

   The date and time is obtained on a "best efforts basis" and does not
   have to be that precise in order to work in practice.  A Printer
   implementation sets the value of this attribute by obtaining the date
   and time via some implementation-dependent means, such as getting the
   value from a network time server, initialization at time of
   manufacture, or setting by an administrator.  See [IPP-IIG] for
   examples.  If an implementation supports this attribute and the
   implementation knows that it has not yet been set, then the

Top      Up      ToC       Page 141 
   implementation MUST return the value of this attribute using the
   out-of-band 'no-value' meaning not configured.  See the beginning of
   section 4.1.

   The time zone of this attribute NEED NOT be the time zone used by
   people located near the Printer object or device.  The client MUST
   NOT expect that the time zone of any received 'dateTime' value to be
   in the time zone of the client or in the time zone of the people
   located near the printer.

   The client SHOULD display any dateTime attributes to the user in
   client local time by converting the 'dateTime' value returned by the
   server to the time zone of the client, rather than using the time
   zone returned by the Printer in attributes that use the 'dateTime'
   attribute syntax.

4.4.31 multiple-operation-time-out (integer(1:MAX))

   This Printer attributes identifies the minimum time (in seconds) that
   the Printer object waits for additional Send-Document or Send-URI
   operations to follow a still-open Job object before taking  any
   recovery actions, such as the ones indicated in section 3.3.1.  If
   the Printer object supports the Create-Job and Send-Document
   operations (see section 3.2.4 and 3.3.1), it MUST support this
   attribute.

   It is RECOMMENDED that vendors supply a value for this attribute that
   is between 60 and 240 seconds.  An implementation MAY allow a system
   administrator to set this attribute (by means outside this IPP/1.1
   document).  If so, the system administrator MAY be able to set values
   outside this range.

4.4.32 compression-supported (1setOf type3 keyword)

   This REQUIRED Printer attribute identifies the set of supported
   compression algorithms for document data.  Compression only applies
   to the document data; compression does not apply to the encoding of
   the IPP operation itself.  The supported values are used to validate
   the client supplied "compression" operation attributes in Print-Job,
   Send-Document, and Send-URI requests.

   Standard keyword values are :

   'none': no compression is used.
   'deflate':  ZIP public domain inflate/deflate) compression technology
      in RFC 1951 [RFC1951]
   'gzip' GNU zip compression technology described in RFC 1952
      [RFC1952].

Top      Up      ToC       Page 142 
   'compress': UNIX compression technology in RFC 1977 [RFC1977]

4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))

   This Printer attribute specifies the upper and lower bounds of total
   sizes of jobs in K octets, i.e., in units of 1024 octets. The
   supported values are used to validate the client supplied "job-k-
   octets" operation attributes in create requests.  The corresponding
   job description attribute "job-k-octets" is defined in section
   4.3.17.1.

4.4.34 job-impressions-supported (rangeOfInteger(0:MAX))

   This Printer attribute specifies the upper and lower bounds for the
   number of impressions per job. The supported values are used to
   validate the client supplied "job-impressions" operation attributes
   in create requests.  The corresponding job description attribute
   "job-impressions" is defined in section 4.3.17.2.

4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))

   This Printer attribute specifies the upper and lower bounds for the
   number of media sheets per job. The supported values are used to
   validate the client supplied "job-media-sheets" operation attributes
   in create requests.  The corresponding Job attribute "job-media-
   sheets" is defined in section 4.3.17.3.

4.4.36 pages-per-minute (integer(0:MAX))

   This Printer attributes specifies the nominal number of pages per
   minute to the nearest whole number which may be generated by this
   printer (e.g., simplex, black-and-white).  This attribute is
   informative, not a service guarantee.  Generally, it is the value
   used in the marketing literature to describe the device.

   A value of 0 indicates a device that takes more than two minutes to
   process a page.

4.4.37 pages-per-minute-color (integer(0:MAX))

   This Printer attributes specifies the nominal number of pages per
   minute to the nearest whole number which may be generated by this
   printer when printing color (e.g., simplex, color).  For purposes of
   this attribute, "color" means the same as for the "color-supported"
   attribute, namely, the device is capable of any type of color
   printing at all, including highlight color.  This attribute is

Top      Up      ToC       Page 143 
   informative, not a service guarantee.  Generally, it is the value
   used in the marketing literature to describe the color capabilities
   of this device.

   A value of 0 indicates a device that takes more than two minutes to
   process a page.

   If a color device has several color modes, it MAY use the pages-per-
   minute value for this attribute that corresponds to the mode that
   produces the highest number.

   Black and white only printers MUST NOT support this attribute.  If
   this attribute is present, then the "color-supported" Printer
   description attribute MUST be present and have a 'true' value.

   The values of these two attributes returned by the Get-Printer-
   Attributes operation MAY be affected by the "document-format"
   attribute supplied by the client in the Get-Printer-Attributes
   request.  In other words, the implementation MAY have different
   speeds depending on the document format being processed.  See section
   3.2.5.1 Get-Printer-Attributes.

5. Conformance

   This section describes conformance issues and requirements. This
   document introduces model entities such as objects, operations,
   attributes, attribute syntaxes, and attribute values.  These
   conformance sections describe the conformance requirements which
   apply to these model entities.

5.1 Client Conformance Requirements

   This section describes the conformance requirements for a client (see
   section 2.1), whether it be:

      1. contained within software controlled by an end user, e.g.
         activated by the "Print" menu item in an application that sends
         IPP requests or

      2. the print server component that sends IPP requests to either an
         output device or another "downstream" print server.

   A conforming client MUST support all REQUIRED operations as defined
   in this document.  For each attribute included in an operation
   request, a conforming client MUST supply a value whose type and value
   syntax conforms to the requirements of the Model document as
   specified in Sections 3 and 4.  A conforming client MAY supply any

Top      Up      ToC       Page 144 
   IETF standards track extensions and/or vendor extensions in an
   operation request, as long as the extensions meet the requirements in
   Section 6.

   Otherwise, there are no conformance requirements placed on the user
   interfaces provided by IPP clients or their applications.  For
   example, one application might not allow an end user to submit
   multiple documents per job, while another does.  One application
   might first query a Printer object in order to supply a graphical
   user interface (GUI) dialogue box with supported and default values
   whereas a different implementation might not.

   When sending a request, an IPP client NEED NOT supply any attributes
   that are indicated as OPTIONALLY supplied by the client.

   A client MUST be able to accept any of the attribute syntaxes defined
   in Section 4.1, including their full range, that may be returned to
   it in a response from a Printer object.  In particular for each
   attribute that the client supports whose attribute syntax is 'text',
   the client MUST accept and process both the 'textWithoutLanguage' and
   'textWithLanguage' forms.  Similarly, for each attribute that the
   client supports whose attribute syntax is 'name', the client MUST
   accept and process both the 'nameWithoutLanguage' and
   'nameWithLanguage' forms.  For presentation purposes, truncation of
   long attribute values is not recommended.  A recommended approach
   would be for the client implementation to allow the user to scroll
   through long attribute values.

   A response MAY contain attribute groups, attributes, attribute
   syntaxes, values, and status codes that the client does not expect.
   Therefore, a client implementation MUST gracefully handle such
   responses and not refuse to inter-operate with a conforming Printer
   that is returning IETF standards track extension or vendor
   extensions, including attribute groups, attributes, attribute
   syntaxes, attribute values, status codes, and out-of-band attribute
   values that conform to Section 6.  Clients may choose to ignore any
   parameters, attribute groups, attributes, attribute syntaxes, or
   values that they do not understand.

   While a client is sending data to a printer, it SHOULD do its best to
   prevent a channel from being closed by a lower layer when the channel
   is blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out
   of paper' or 'job ahead hasn't freed up enough memory'.  However, the
   layer that launched the print submission (e.g. an end user) MAY close
   the channel in order to cancel the job.  When a client closes a
   channel, a Printer MAY print all or part of the received portion of
   the document.  See the "Encoding and Transport" document [RFC2910]
   for more details.

Top      Up      ToC       Page 145 
   A client MUST support Client Authentication as defined in the IPP/1.1
   Encoding and Transport document [RFC2910].  A client SHOULD support
   Operation Privacy and Server Authentication as defined in the IPP/1.1
   Encoding and Transport document [RFC2910].  See also section 8 of
   this document.

5.2 IPP Object Conformance Requirements

   This section specifies the conformance requirements for conforming
   implementations of IPP objects (see section 2).  These requirements
   apply to an IPP object whether it is:

      (1) an (embedded) device component that accepts IPP requests and
      controls the device or

      (2) a component of a print server that accepts IPP requests (where
      the print server control one or more networked devices using IPP or
      other protocols).

5.2.1 Objects

   Conforming implementations MUST implement all of the model objects as
   defined in this document in the indicated sections:

      Section 2.1 - Printer Object
      Section 2.2 - Job Object

5.2.2 Operations

   Conforming IPP object implementations MUST implement all of the
   REQUIRED model operations, including REQUIRED responses, as defined
   in this document in the indicated sections:

      For a Printer object:
         Print-Job (section 3.2.1)               REQUIRED
         Print-URI (section 3.2.2)               OPTIONAL
         Validate-Job (section 3.2.3)            REQUIRED
         Create-Job (section 3.2.4)              OPTIONAL
         Get-Printer-Attributes (section 3.2.5)  REQUIRED
         Get-Jobs (section 3.2.6)                REQUIRED
         Pause-Printer (section 3.2.7)           OPTIONAL
         Resume-Printer (section 3.2.8)          OPTIONAL
         Purge-Jobs (section 3.2.9)              OPTIONAL

Top      Up      ToC       Page 146 
      For a Job object:
         Send-Document (section 3.3.1)           OPTIONAL
         Send-URI (section 3.3.2)                OPTIONAL
         Cancel-Job (section 3.3.3)              REQUIRED
         Get-Job-Attributes (section 3.3.4)      REQUIRED
         Hold-Job (section 3.3.5)                OPTIONAL
         Release-Job (section 3.3.6)             OPTIONAL
         Restart-Job (section 3.3.7)             OPTIONAL

   Conforming IPP objects MUST support all REQUIRED operation attributes
   and all values of such attributes if so indicated in the description.
   Conforming IPP objects MUST ignore all unsupported or unknown
   operation attributes or operation attribute groups received in a
   request, but MUST reject a request that contains a supported
   operation attribute that contains an unsupported value.

   Conforming IPP objects MAY return operation responses that contain
   attributes groups, attributes names,  attribute syntaxes, attribute
   values, and status codes that are extensions to this standard.  The
   additional attribute groups MAY occur in any order.

   The following section on object attributes specifies the support
   required for object attributes.

5.2.3 IPP Object Attributes

   Conforming IPP objects MUST support all of the REQUIRED object
   attributes, as defined in this document in the indicated sections.

   If an object supports an attribute, it MUST support only those values
   specified in this document or through the extension mechanism
   described in section 5.2.4. It MAY support any non-empty subset of
   these values.  That is, it MUST support at least one of the specified
   values and at most all of them.

5.2.4 Versions

   IPP/1.1 clients MUST meet the conformance requirements for clients
   specified in this document and [RFC2910].  IPP/1.1 clients MUST send
   requests containing a "version-number" parameter with a '1.1' value.

   IPP/1.1 Printer and Job objects MUST meet the conformance
   requirements for IPP objects specified in this document and
   [RFC2910].   IPP/1.1 objects MUST accept requests containing a
   "version-number" parameter with a '1.1' value (or reject the request
   if the operation is not supported).

Top      Up      ToC       Page 147 
   It is beyond the scope of this specification to mandate conformance
   with previous versions.  IPP/1.1 was deliberately designed, however,
   to make supporting previous versions easy.  It is worth noting that,
   at the time of composing this specification (1999), we would expect
   IPP/1.1 Printer implementations to:

     understand any valid request in the format of IPP/1.0, or 1.1;

     respond appropriately with a response containing the same
     "version-number" parameter value used by the client in the request.

   And we would expect IPP/1.1 clients to:

     understand any valid response in the format of IPP/1.0, or 1.1.

   It is recommended that IPP/1.1 clients try supplying alternate
   version numbers if they receive a 'server-error-version-not-
   supported' error return in a response.

5.2.5 Extensions

   A conforming IPP object MAY support IETF standards track extensions
   and vendor extensions, as long as the extensions meet the
   requirements specified in Section 6.

   For each attribute included in an operation response, a conforming
   IPP object MUST return a value whose type and value syntax conforms
   to the requirement of the Model document as specified in Sections 3
   and 4.

5.2.6 Attribute Syntaxes

   An IPP object MUST be able to accept any of the attribute syntaxes
   defined in Section 4.1, including their full range, in any operation
   in which a client may supply attributes or the system administrator
   may configure attributes (by means outside the scope of this IPP/1.1
   document).  In particular for each attribute that the IPP object
   supports whose attribute syntax is 'text', the IPP object MUST accept
   and process both the 'textWithoutLanguage' and 'textWithLanguage'
   forms.  Similarly, for each attribute that the IPP object supports
   whose attribute syntax is 'name', the IPP object MUST accept and
   process both the 'nameWithoutLanguage' and 'nameWithLanguage' forms.
   Furthermore, an IPP object MUST return attributes to the client in
   operation responses that conform to the syntax specified in Section
   4.1, including their full range if supplied previously by a client.


Next RFC Part