Tech-invite3GPPspaceIETFspace
96959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 2911

Internet Printing Protocol/1.1: Model and Semantics

Pages: 224
Obsoletes:  2566
Obsoleted by:  8011
Updated by:  33803382399639957472
Part 6 of 9 – Pages 119 to 147
First   Prev   Next

ToP   noToC   RFC2911 - Page 119   prevText

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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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   noToC   RFC2911 - 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 page on part 7)

Next Section