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:
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
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.
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.
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.
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.
+----------------------------+---------------------------+-----------+ | 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 |
+----------------------------+---------------------------+-----------+ | 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
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.
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".
- 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".
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.
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.
- '-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
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.
'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.
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:
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.
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
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.
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.
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
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].
'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
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
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.
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 Object5.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
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).
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.