There (3) issues in this document, each beginning 'ISSUE_n:'.Internet Printing Protocol Working Group Tom Hastings INTERNET DRAFT Xerox Expires 7JanuaryMarch 2001 Ira McDonald High North [Target Category: Standards Track] 7JulySeptember 2000 Internet Printing Protocol (IPP): Resource Objectsand Get Resource Operations <draft-ietf-ipp-get-resource-00.txt><draft-ietf-ipp-get-resource-01.txt> Copyright (C) The Internet Society (2000). All Rights Reserved. Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract This document is a submission to the Internet Printing Protocol Working Group of the Internet Engineering Task Force (IETF). The open issues in this document each begin 'ISSUE_n:'. Comments should be submitted to the ipp@pwg.org mailing list. This IPPGetResource Objects document specifies an extension to IPP/1.0 [RFC-2565] [RFC-2566] and IPP/1.1 [IPP-MOD] [IPP-PRO]. This document extends the currentclosedIPP object model with a passive polymorphic objectthat is intendedtype - Resource - tosatisfy most needs for new object types insupport the long-term evolution ofIPP via an extensible object framework.IPP. This document defines: - Resource object (passive polymorphic object); - Resourcegetquery operations (e.g., Get-Resource-Attributes); - Resource admin operations (e.g., Create-Resource); - Resource template attributes (e.g., "resource-charset"); - Resource description attributes (e.g., "resource-name"); and - new Printer attributes (e.g.,"resource-type-supported"); Resource type of Driver (a morph of the Resource object); methods for supporting 'driver download' to IPP Client systems."resource-type-supported"). Table of Contents 1. Introduction ............................................... 4 2. IPP Model for Resources .................................... 5 2.1. Resource Object ........................................ 5 3. Terminology ................................................ 6 3.1. Conformance Terminology ................................ 6 3.2. Model Terminology ...................................... 6 4. Resource Operations ........................................ 7 4.1.Get-Resource-Attributes OperationResource Query Package - REQUIRED ...................... 7 4.1.1. Get-Resource-Attributes Operation .................. 7 4.1.1.1. Get-Resource-Attributes Request.................................... 84.1.2.4.1.1.2. Get-Resource-Attributes Response.................................. 94.2.4.1.2. Get-Resource-Data Operation.................................................... 104.2.1.4.1.2.1. Get-Resource-Data Request................................................ 104.2.2.4.1.2.2. Get-Resource-Data Response......................... 10 4.3...................... 11 4.1.3. Get-Resources Operation............................................................ 114.3.1.4.1.3.1. Get-Resources Request.............................. 11 4.3.2........................... 12 4.1.3.2. Get-Resources Response............................. 12......................... 13 4.2. Resource Admin Package - OPTIONAL ...................... 14 4.2.1. Create-Resource Operation .......................... 14 4.2.1.1. Create-Resource Request ........................ 14 4.2.1.2. Create-Resource Response ....................... 16 4.2.2. Delete-Resource Operation .......................... 17 4.2.2.1. Delete-Resource Request ........................ 17 4.2.2.2. Delete-Resource Response ....................... 18 4.2.3. Refresh-Resource Operation ......................... 18 4.2.3.1. Refresh-Resource Request ....................... 19 4.2.3.2. Refresh-Resource Response ...................... 19 4.2.4. Renew-Resource Operation ........................... 20 4.2.4.1. Renew-Resource Request ......................... 20 4.2.4.2. Renew-Resource Response ........................ 21 4.3. Printer Operation Extensions - REQUIRED ................ 21 4.3.1. Get-Printer-Attributes Operation ................... 21 4.4. Resource Operation Response Status Codes ...............1322 5. Resource Attributes ........................................1423 5.1. Table ofRequiredResource Template Attributes ..................1423 5.2. Table ofOptionalResource Description Attributes.................. 15............... 24 5.3. Resource Template Attributes ...........................1624 5.3.1.resource-info (text(127)) .......................... 16 5.3.2.resource-charset (charset) .........................16 5.3.3.24 5.3.2. resource-natural-language (naturalLanguage) ........1625 5.3.3. resource-info (text(127)) .......................... 25 5.3.4. resource-document-formats (1setOf mimeMediaType) ...1725 5.3.5.resource-os-types (1setOf type2 keyword) ........... 17resource-create-date-time (dateTime) ............... 25 5.3.6. resource-lease-duration (integer(0:MAX)) ........... 26 5.3.7. resource-data-present (boolean) ....................17 5.3.7.26 5.3.8. resource-data-uri (1setOf uri) .....................18 5.3.8.27 5.3.9. resource-data-k-octets (integer(0:MAX)) ............18 5.3.9.27 5.3.10. resource-data-compression (type3 keyword).......... 18 5.3.10. resource-create-date-time (dateTime) .............. 19 5.3.11. resource-duration (integer(0:MAX)) ................ 19 5.3.12. resource-persistence (boolean) .................... 19......... 28 5.4. Resource Description Attributes ........................2028 5.4.1. resource-type (type2 keyword) ......................2028 5.4.2. resource-name (name(127)) ..........................2028 5.4.3. resource-id (integer(1:MAX)) .......................2029 5.4.4. resource-printer-uri (uri) .........................2129 5.4.5. resource-create-user-name (name(MAX)) ..............2130 5.4.6. resource-create-time (integer(0:MAX)) ..............2130 5.4.7.resource-change-time (integer(0:MAX)) .............. 22 5.4.8. resource-refresh-time (integer(0:MAX)) ............. 22 5.4.9.resource-expiration-time (integer(0:MAX)) ..........2230 5.5. Job Template Attributes for Resources .................. 31 5.5.1. restype (name (127)) ............................... 31 5.5.2. restype-required (1setOf name(127)) ................ 31 6.DriverRules for Resource Type....................................... 23Definitions ........................ 32 6.1.Table of Required DriverDo NOT define new operations for ResourceAttributes ........... 23.............. 32 6.2.Table of Optional DriverDefine new type keyword for ResourceAttributes ........... 23................... 32 6.3.DriverDefine new type-specific attributes for ResourceTemplate Attributes .................... 24 6.3.1. driver-charset (1setOf charset) .................... 24 6.3.2. driver-natural-language (1setOf naturalLanguage) ... 24 6.3.3. driver-file-type (type2 keyword) ................... 24 6.3.4. driver-file-name (name(MAX)) ....................... 25....... 32 6.4. Define new Printer attributes for Resource ............. 32 6.5. Define new Job attributes for Resource ................. 32 6.6. Define Printer operation extensions for Resource ....... 33 7. Conformance Requirements ...................................2634 7.1. IPP Client Conformance Requirements ....................2634 7.2. IPP Printer Conformance Requirements ...................2634 7.2.1. Resource Operations ................................2634 7.2.2. Resource Attributes ................................27 7.2.3. Driver Resource Attributes ......................... 2735 8. IANA Considerations ........................................2836 9. Internationalization Considerations ........................2836 10. Security Considerations ...................................2836 11. Encodings of AdditionalResourceProtocol Tags .....................2836 11.1. Encodings of Additional Attribute Tags ................ 36 11.2. Encodings of Additional Operation Tags ................ 36 12. References ................................................2837 13. Authors' Addresses ........................................2937 14. Appendix A - Change History ...............................30 14.1. 7 July 2000 - draft-ietf-ipp-get-resource-00.txt ...... 3038 15. Full Copyright Statement ..................................3038 1. Introduction See section 1 'Introduction' in [IPP-MOD] for a full description of the IPP document set and overview information about IPP. This document is a submission to the Internet Printing Protocol Working Group of the Internet Engineering Task Force (IETF). The open issues in this document each begin 'ISSUE_n:'. Comments should be submitted to the ipp@pwg.org mailing list. This IPPGetResourcedocumentObject documents specifies an extension to IPP/1.0 [RFC-2565] [RFC-2566] and IPP/1.1 [IPP-MOD] [IPP-PRO]. This document extends the currentclosedIPP object model with a passive polymorphic objectwhich is intendedtype - Resource - tosatisfy most growth needs for new object types insupport the long-term evolution ofIPP via an extensible object framework.IPP. This document defines: - Resource object (passive polymorphic object); - Resourcegetquery operations (e.g., Get-Resource-Attributes); - Resource admin operations (e.g., Create-Resource); - Resource template attributes (e.g., "resource-charset"); - Resource description attributes (e.g., "resource-name"); and - new Printer attributes (e.g.,"resource-type-supported"); Resource type of Driver (a morph of the Resource object); methods for supporting 'driver download' to IPP Client systems. This document does not specify other possible Resource operations (e.g., 'Create-Resource') or Resource types (e.g., 'font'). A future document may specify a complete set of system admin operations for Resource objects."resource-type-supported"). This document is laid out as follows: - Section 2 adds the Resource object to the IPP object model. - Section 3 is the terminology used throughout the document. - Section 4 specifies the operations on Resource objects, including new status codes for Resource operations. - Section 5 specifies the attributes common to all Resource objects. - Section 6 specifies theDriverrules for defining new Resourcetype and its additional attributes - to allow client print support (e.g., driver) download (all or part of an IPP Client) from an IPP Printer.object types. - Section 7 specifies the conformance requirements for this document. - Section 8, 9, and 10 specify IANA, internationalization, and security considerations. - Section 11 allocates new protocol encoding values for this document. - Sections 12, 13, 14, and 15 list references, authors' addresses, change history, and full IETF copyright statement. 2. IPP Model for Resources See section 2 'IPP Objects' in [IPP-MOD] for a full description of the IPP object model and terminology. 2.1. Resource Object IPP Resource objects are used to model installed features or capabilities of IPP Printers (e.g., 'font'). All Resource object instances contain a common set of base Resource object attributes. Resource object instances MAY have an additional set of attributes, according to their "resource-type" and IPP Printer implementation. Resource objects instances MAY also have associated data, according to their "resource-type" and IPP Printer implementation. Resource data (if any) is available by reference in "resource-data-uri" or by value if "resource-data-present" is 'true' (i.e., a local copy of the Resource data is available on the IPP Printer). Section 4 describes each of the Resource operations in detail. 3. Terminology This specification document uses the terminology defined in this section. 3.1. Conformance Terminology The terms "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC-2119]. These terms are used to specify conformance requirements which apply if this specification is implemented (in addition to IPP/1.0 or higher). 3.2. Model Terminology See section 12.2 'Model Terminology' in [IPP-MOD]. 4. Resource Operations The common semantics of all IPP Resource operations are the ones defined for all IPP operations in [IPP-MOD], e.g., "operation-id", "status-code", "attributes-charset", etc. See section 3.1 'Common Semantics' in [IPP-MOD]. 4.1. Resource Query Package - REQUIRED The following three Resource query operations are REQUIRED for all IPP Printers to implement, if they implement Resource objects.4.1.4.1.1. Get-Resource-Attributes Operation REQUIRED - for IPP Printers to implement. This operation allows an IPP Client to request the values of attributes of a Resource object instance and is similar to the Get-Job-Attributes operation (see section 3.2.5 in [IPP-MOD]). The only differences are that the operation is directed at a Resource object instance rather than a Job object instance, there is a "resource-type" operation attribute required when querying a Resource object, and the returned attribute group is a set of Resource object attributes rather than a set of Job object attributes. For Resources, the possible names of attribute groups are: - 'resource-template': the subset of the Resource Template attributes that the implementation supports for Resourceobjects.objects (see section 5.1). - 'resource-description': the subset of the Resource Description attributes that the implementation supports for Resourceobjects.objects (see section 5.2). - 'all': the special group 'all' that includes all attributes that the implementation supports for Resource objects. Since an IPP Client MAY request specific attributes or named groups, there is a potential that there is some overlap. For example, if an IPP Client requests 'resource-create-time' and 'resource-description', the IPP Client is actually requesting the "resource-create-time" attribute once by naming it explicitly, and once by inclusion in the 'resource-description' group. In such cases, the IPP Printer object NEED NOT return the attribute only once in the response even if it is requested multiple times. The IPP Client SHOULD NOT request the same attribute in multiple ways.It is NOT REQUIRED that a Resource object instance support all attributes belonging to a group (since some attributes are OPTIONAL). However it is REQUIRED that each Resource object instance support all group names. 4.1.1.4.1.1.1. Get-Resource-Attributes Request The IPP Client submits the Get-Resource-Attributes request to an IPP Printer object. The IPP Client supplies the following groups of attributesareas part of the Get-Resource-AttributesRequest when the request is directed at a Resource object:Request: Group 1: Operation Attributes Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 in [IPP-MOD]. Target: The "printer-uri" (uri) operation attribute which is the target forthis operationALL Resource operations as described in section 3.1.5 in [IPP-MOD]. ISSUE_1: The target of all IPP Resource operations is always simply "printer-uri" and separate required operation attributes are used to specify resource type and name or ID. This is like IPP Subscription objects but unlike the earlier IPP Job objects. Should we continue to follow the IPP Subscription object model? Resource Type: The "resource-type (type2 keyword)" attribute as described in section5.2.15.4.1. The IPP Client MUST supply "resource-type" inthis document.all IPP Resource operation requests. The IPP Printer MUST support and validate "resource-type" in all IPP Resource operation requests. Resource Name or ID: The "resource-name (name(127))" attribute as described in section5.2.25.4.2 in this documentOR<OR> the "resource-id (integer(1:MAX))" attribute as described in section5.2.3 in this document.5.4.3. Requesting User Name: The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the IPP Client as described in section 8.3 in [IPP-MOD]. "requested-attributes" (1setOf keyword): The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUST support this attribute. It is a set of attribute names and/or attribute group names in whose values the requester is interested. If the IPP Client omits this attribute, the IPP Printer MUST respond as if this attribute had been supplied with a value of 'all'.4.1.2.4.1.1.2. Get-Resource-Attributes Response The Printer object returns the following sets of attributes as part of the Get-Resource-Attributes Response: Group 1: Operation Attributes Status Message: In addition to the REQUIRED status code returned in every response, the response OPTIONALLY includes a "status-message" (text(255)) and/or a "detailed-status-message" (text(MAX)) operation attribute as described in sections 13 and 3.1.6 in [IPP-MOD]. Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 in [IPP-MOD]. The "attributes-natural-language" MAY be the natural language of the Resource object, rather than the one requested. Group 2: Unsupported Attributes See section 3.1.7 in [IPP-MOD] for details on returning Unsupported Attributes. The response NEED NOT contain the "requested-attributes" operation attribute with any supplied values (attribute keywords) that were requested by the IPP Client but are not supported by the IPP Printer. If the Printer object does include unsupported attributes referenced in "requested-attributes" and such attributes include group names, such as 'all', the unsupported attributes MUST NOT include attributes described in this document but not supported by the implementation. Group 3: Resource Object Attributes This is the set of requested Resource object attributes and their currentvalues.values, i.e., any of the Resource object attributes in the tables in sections 5.1 and 5.2. The IPP Printer ignores (does not respond with) any requested attribute or value which is not supported or which is restricted by the security policy in force, including whether the requesting user is the user that created theResource.Resource object instance. However, the IPP Printer MUST respond with the 'unknown' value for any supported attribute (including all REQUIRED attributes) for which the IPP Printer does not know the value, unless it would violate the security policy. See the description of the "out-of-band" values in the beginning of Section 4.1 in [IPP-MOD].4.2.See section 5.1 'Table of Resource Template Attributes'. See section 5.2 'Table of Resource Description Attributes'. 4.1.2. Get-Resource-Data Operation REQUIRED - for IPP Printers to implement. This operation allows an IPP Client to request the values of attributes of a Resource object instance AND the value of associated Resource data (i.e., this operation is like'Print-Job').'Print-Job' except that the opaque data is transferred in the opposite direction). This operation is a strict superset of the Get-Resource-Attributes operation above. The only difference is that the operation returns Resource data in addition to Resource attributes. This operation is onlylegalsupported forcertainthe "resource-type" values for which the Resource is defined to allow data (e.g., 'form'). If the IPP Client supplies a value for "resource-type" that does NOT allow Resource data, the IPP Printer MUST return a status code of"resource-type".'client-error-not-possible'. Note: This separate operation is defined (rather than overloading the 'Get-Resource-Attributes' operation above) to simplify access control policies. Note thatmany possible futuresome Resource types (e.g, 'font') MAY have have copyright and intellectual property considerations with respect to IPP Clients reading their associated data.4.2.1.4.1.2.1. Get-Resource-Data Request See section4.1.14.1.1.1 'Get-Resource-AttributesRequest' in this document.Request'. The IPP Client submits the Get-Resource-Data request to an IPP Printer object. The IPP Client supplies the following groups of attributesareas part of theGet-Resources request:Get-Resource-Data Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section4.1.14.1.1.1 'Get-Resource-Attributes Request'.4.2.2.4.1.2.2. Get-Resource-Data Response See section4.1.24.1.1.2 'Get-Resource-AttributesResponse' in this document.Response'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. Group 2: Unsupported Attributes See 'Group 2: Unsupported Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. Group 3: Resource Object Attributes See 'Group 3: Resource Object Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. See section 5.1 'Table of Resource Template Attributes'. Group 4: Resource Object DataContentSee section5.3.6 'resource-data-present' in this document.5.x 'resource-data-present'. See section 3.2.1.1 'Print-Job Request' in [IPP-MOD]. The IPP Printer MUST return the Resource datacontent(if any) to the IPP Client, within the constraints of administratively configured access control policies and any applicable copyright or other intellectual property considerations.4.3.4.1.3. Get-Resources Operation REQUIRED - for IPP Printers to implement. This operation allows an IPP Client to retrieve the list of Resource object instances (of a specified resource type) belonging to the target Printer object. The IPP Client may also supply a list of Resource attribute names and/or attribute group names. A group of Resource object attributes will be returned for each Resource object instance that is returned. This operation is similar to the Get-Resource-Attributes operation, except that this Get-Resources operation returns attributes from possibly more than one object. See section 3.2.6 'Get-Jobs Operation' in [IPP-MOD].4.3.1.4.1.3.1. Get-Resources Request The IPP Client submits the Get-Resources request to an IPP Printer object. The IPP Client supplies the following groups of attributesareas part of the Get-Resourcesrequest:Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section4.1.14.1.1.1 'Get-Resource-Attributes Request'. Resource Name or ID:[omitted]The IPP Client MUST NOT send either "resource-name" or "resource-id". The IPP Printer MUST return them as Unsupported Attributes if supplied and MUST reject the Get-Resources operation. "limit" (integer(1:MAX)): [added] The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUSTMUSTsupport this attribute. It is an integer value that determines the maximum number of resources that an IPP Client will receive from the IPP Printer. Groups 2 to N: Resource Filter Attributes[added]See 'Group 3: Resource Object Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. This is the set of filter attributes and their filter values. The IPP Printer ignores Resources which do not satisfy the specified filter. A multi-valued filter attribute matches if the corresponding Resource object instance attribute contains all of the one or more values of the multi-valued filter attribute. The filter criteria in each Resource Filter Attribute group MUST all be true for a match (logical AND within the set). But only ONE Resource Filter Group need be true for a match (logical OR across the sets).4.3.2.ISSUE_2: What mechanism should we use for filters? 1. Group mechanism with multiple new Resource Filter Attributes groups, limited to simple logical AND and OR filters? 2. Simple mechanism with new "resource-filter (collection)" operation attribute in Get-Resources operations, limited to one simple logical AND filter? 3. Robust mechanism with new "resource-filter (text)" operation attribute in Get-Resources operations, supporting full LDAPv3 string attribute filters or a profile (subset) of LDAPv3 filters? See 'String Representation of LDAP Search Filters' [RFC-2254]. [Editor - favors solution 3 at this writing] 4.1.3.2. Get-Resources Response The Printer object returns all of the Resource object instances, up to the number specified by the "limit" attribute, that match the criteria as defined by the filter attribute values supplied by the IPP Client in the request. It is possible that no Resource objects are returned since there may literally be none at the Printer, or there may be no Resource objects that match the criteria supplied by the IPP Client. If the IPP Client requests any Resource attributes at all, there is a set of Resource Object Attributes returned for each Resource object instance. It is not an error for the IPP Printer to return 0 Resources. If the response returns 0 Resources because there are no Resources matching the criteria, and the request would have returned 1 or more Resources with a status code of 'successful-ok' if there had been Resources matching the criteria, then the status code for 0 Resources MUST be 'successful-ok'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.3.1 'Get-Resources Request'. Group 2: Unsupported Attributes See 'Group 2: Unsupported Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. Groups 3 to N: Resource Object Attributes See 'Group 3: Resource Object Attributes' in section4.1.24.1.1.2 'Get-Resource-Attributes Response'. See section 5.1 'Table of Resource Template Attributes'. Resource object instancesareMUST be returned sorted by "resource-id".ISSUE_2:ISSUE_3: Should we require that Resource object instances are always returned sorted by "resource-id" (as stated above) and not by "resource-name" (more user-friendly). Should we add an operation attribute to control the choice of sort order? 4.2. Resource Admin Package - OPTIONAL The following four Resource admin operations are OPTIONAL for all IPP Printers to implement, if they implement Resource objects. However, when implemented, these four Resource admin operations MUST be implemented as a package (all four). Note: The Set-Resource operation is intentionally NOT defined here. For simplicity and robustness, Resource object instances are entirely static, except that their leases MAY be renewed with the Renew-Resource operation. 4.2.1. Create-Resource Operation OPTIONAL - for IPP Printers to implement. This operation allows an authorized IPP Client to create a Resource object instance on this IPP Printer and to send OPTIONAL Resource data for local storage on the IPP Printer along with the Resource object attributes for those values of "resource-type" which are defined to allow Resource data. Note: Specific Resource types (values of "resource-type") constrain whether Resource data may be sent with the Create-Resource operation. 4.2.1.1. Create-Resource Request The IPP Client submits the Create-Resource request to an IPP Printer object. The IPP Client supplies the following groups of attributes as part of the Create-Resource Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.1 'Get-Resource-Attributes Request'. "resource-name" (name(127)): The IPP Client MUST supply this attribute. Note: Unlike the "job-name" attribute, the value of "resource-name" MUST be unique among Resources of the SAME "resource-type". IPP Printers MUST not allow Resource object instances of the SAME "resource-type" to exist with duplicate "resource-name" values. IPP Printers MUST reject Create-Resource operations that specify duplicate "resource-name" values. "resource-id" (integer(1:MAX)): [omitted] The IPP Client MUST NOT send "resource-id" and the IPP Printer MUST return it in Unsupported Attributes if supplied. "requested-attributes" (1setOf keyword): The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUST support this attribute. It is a set of attribute names and/or attribute group names in whose values the requester is interested. If the IPP Client omits this attribute, the IPP Printer MUST respond as if this attribute had been supplied with a value of 'all'. ISSUE_4: Should we make Resources more Subscriptions (and Jobs) and just drop the "requested-attributes" from all of the Resource admin operations? Then "requested-attributes" would only be permitted in the Resource query operations. Group 2: Resource Object Attributes This is the set of IPP Client supplied Resource Template attributes and their new values, i.e., any of the Resource object attributes in section 5.1. The IPP Client MUST supply the "resource-create-date-time" attribute (see section 5.3.5). All other Resource attributes are OPTIONAL for the IPP Client to supply. See 'Group 3: Resource Object Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. See section 5.1 'Table of Resource Template Attributes'. Group 3: Resource Object Data See section 5.x 'resource-data-present'. See section 3.2.1.1 'Print-Job Request' in [IPP-MOD]. The IPP Client OPTIONALLY sends the Resource data (if any) to the IPP Printer, within the constraints of administratively configured access control policies and any applicable copyright or other intellectual property considerations. If the IPP Client supplies Resource data for a Resource type that is not defined to allow Resource data, the IPP Printer MUST reject the request and return a status code of 'client-error-not-possible'. 4.2.1.2. Create-Resource Response See section 4.1.1.2 'Get-Resource-Attributes Response'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. Group 2: Unsupported Attributes See 'Group 2: Unsupported Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. Group 3: Resource Object Attributes This group MUST be returned if and only if the "status-code" parameter returned in Group 1 has the value 'successful-ok' or 'successful-ok-ignored-or-substituted-attributes'. All IPP Printers MUST return the following Resource attributes in successful Create-Resource responses: "resource-id" (integer(1:MAX)) -- generated by the IPP Printer "resource-lease-duration" (integer(0:MAX)) -- lease actually granted All IPP Printers MUST support the "requested-attributes" operation attribute and conform to the behavior described in section 4.1.1.1 'Get-Resource-Attributes Request'. See 'Group 3: Resource Object Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. See section 5.1 'Table of Resource Template Attributes'. In addition to the MANDATORY parameters required for every operation request, the simplest Create-Resource Request consists of just the "attributes-charset", "attributes-natural-language", "resource-type", and "resource-name" operation attributes; the "printer-uri" target operation attribute; the OPTIONAL Resource data (if any) and nothing else. In this simplest case, the IPP Printer object: - creates a new Resource object (the Resource object MAY contain Resource data); - generates a locally unique "resource-id" for the new Resource; - stores the name supplied by the IPP Client in the "resource-name" attribute in the natural language and charset requested (see Section 3.1.4.1 of [IPP-MOD]) (if those are supported, otherwise using the Printer object's default natural language and charset); and - uses its corresponding default value attributes (e.g., "resource-lease-duration-default") for the supported Resource Template attributes that were not supplied by the IPP Client in the Create-Resource operation. 4.2.2. Delete-Resource Operation OPTIONAL - for IPP Printers to implement. This operation allows an authorized IPP Client to delete a Resource object instance on this IPP Printer. 4.2.2.1. Delete-Resource Request The IPP Client submits the Delete-Resource request to an IPP Printer object. The IPP Client supplies the following groups of attributes as part of the Delete-Resource Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.1 'Get-Resource-Attributes Request'. Resource Name or ID: The "resource-name (name(127))" attribute as described in section 5.4.2 in this document <OR> the "resource-id (integer(1:MAX))" attribute as described in section 5.4.3. "requested-attributes" (1setOf keyword): The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUST support this attribute. It is a set of attribute names and/or attribute group names in whose values the requester is interested. If the IPP Client omits this attribute, the IPP Printer MUST respond as if this attribute had been supplied with a value of 'all'. 4.2.2.2. Delete-Resource Response See section 4.1.1.2 'Get-Resource-Attributes Response'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. Group 2: Resource Object Attributes This group MUST be returned if and only if the "status-code" parameter returned in Group 1 has the value 'successful-ok'. All IPP Printers MUST return the following Resource attribute in successful Delete-Resource responses: "resource-id" (integer(1:MAX)) All IPP Printers MUST support the "requested-attributes" operation attribute and conform to the behavior described in section 4.1.1.1 'Get-Resource-Attributes Request'. 4.2.3. Refresh-Resource Operation OPTIONAL - for IPP Printers to implement. This operation allows an authorized IPP Client to refresh a Resource object instance on this IPP Printer (i.e., fetch the Resource data and locally cache it, setting "resource-data-present" to 'true' and "resource-data-k-octets" to the actual size). 4.2.3.1. Refresh-Resource Request The IPP Client submits the Refresh-Resource request to an IPP Printer object. The IPP Client supplies the following groups of attributes as part of the Refresh-Resource Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.1 'Get-Resource-Attributes Request'. Resource Name or ID: The "resource-name (name(127))" attribute as described in section 5.4.2 in this document <OR> the "resource-id (integer(1:MAX))" attribute as described in section 5.4.3. "requested-attributes" (1setOf keyword): The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUST support this attribute. It is a set of attribute names and/or attribute group names in whose values the requester is interested. If the IPP Client omits this attribute, the IPP Printer MUST respond as if this attribute had been supplied with a value of 'all'. 4.2.3.2. Refresh-Resource Response See section 4.1.1.2 'Get-Resource-Attributes Response'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. Group 2: Resource Object Attributes This group MUST be returned if and only if the "status-code" parameter returned in Group 1 has the value 'successful-ok'. All IPP Printers MUST return the following Resource attribute in successful Refresh-Resource responses: "resource-id" (integer(1:MAX)) All IPP Printers MUST support the "requested-attributes" operation attribute and conform to the behavior described in section 4.1.1.1 'Get-Resource-Attributes Request'. 4.2.4. Renew-Resource Operation OPTIONAL - for IPP Printers to implement. This operation allows an authorized IPP Client to renew the (finite) lease of a Resource object instance on this IPP Printer (i.e., renew the Resource lease for "resource-duration" forward from the current time). 4.2.4.1. Renew-Resource Request The IPP Client submits the Renew-Resource request to an IPP Printer object. The IPP Client supplies the following groups of attributes as part of the Renew-Resource Request: Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.1 'Get-Resource-Attributes Request'. Resource Name or ID: The "resource-name (name(127))" attribute as described in section 5.4.2 in this document <OR> the "resource-id (integer(1:MAX))" attribute as described in section 5.4.3. "requested-attributes" (1setOf keyword): The IPP Client OPTIONALLY supplies this attribute. The IPP Printer MUST support this attribute. It is a set of attribute names and/or attribute group names in whose values the requester is interested. If the IPP Client omits this attribute, the IPP Printer MUST respond as if this attribute had been supplied with a value of 'all'. Group 2: Resource Object Attributes "resource-lease-duration" (integer(0:MAX)) Note: Even though Resource objects are static (i.e, there is no Set-Resource operation defined, intentionally), an IPP Client MAY supply a new (possibly different) value for "resource-lease-duration". As always, the IPP Printer MAY grant a shorter lease according to the value of the Printer attribute "resource-lease-duration-supported". in a Renew-Resource operation. 4.2.4.2. Renew-Resource Response See section 4.1.1.2 'Get-Resource-Attributes Response'. Group 1: Operation Attributes See 'Group 1: Operation Attributes' in section 4.1.1.2 'Get-Resource-Attributes Response'. Group 2: Resource Object Attributes This group MUST be returned if and only if the "status-code" parameter returned in Group 1 has the value 'successful-ok'. All IPP Printers MUST return the following Resource attributes in successful Renew-Resource responses: "resource-id" (integer(1:MAX)) "resource-lease-duration" (integer(0:MAX)) All IPP Printers MUST support the "requested-attributes" operation attribute and conform to the behavior described in section 4.1.1.1 'Get-Resource-Attributes Request'. 4.3. Printer Operation Extensions - REQUIRED 4.3.1. Get-Printer-Attributes Operation This operation is extended so that it returns Printer attributes defined . All IPP Printers that support IPP Resource objects MUST implement this extension to the 'Get-Printer-Attributes' operation. In addition to the requirements of [IPP-MOD] section 3.2.5, an IPP Printer MUST support the following additional values for the "requested-attributes" Operation attribute in this operation and return such attributes in the Printer Object Attributes group of its response. 1. Resource Template Attributes: ALL "xxx-default" attributes in column 1 of section 5.1 'Table of Resource Template Attributes'. 2. New Printer Description Attributes: ALL "xxx-supported" attributes in column 1 of section 5.1 'Table of Resource Template Attributes'. 3. New Group Name: The 'resource-template' group name, which names all supported Resource Template attributes in section 5.1 'Table of Resource Template Attributes'. This group name is also used in the Get-Resources-Attributes and Get-Resources operation with an analogous meaning. 4. Extended Group Name: The 'all' group name, which names all IPP Printer attributes according to [IPP-MOD] section 3.2.5. In this extension 'all' names all attributes specified in [IPP-MOD] plus those named in items 1 and 2 of this list. 4.4. Resource Operation Response Status Codes client-error-not-authenticated client-error-not-authorized client-error-resource-type-not-supported client-error-resource-data-not-supported client-error-resource-data-not-present 5. Resource Attributes All IPP Resource attributes presently defined are REQUIRED for all IPP Printer implementations of Resource objects. 5.1. Table ofRequiredResource Template Attributes All IPP Printers that support IPP Resource objects MUST implement ALL of the following REQUIRED Resource Template attributes defined in this specification (on the Resource object or the Printerobject):object as specified below). All Resource Template attributes are passed in a Resource Attributes Group in IPP Resource operations. Resource Object Attribute Resource Attribute TypeOperation or Resource GroupPrinterAttributeObject Attribute(s) Printer AttributeTypeType(s) ------------------------------------------------------------- resource-type (type2 keyword) resource-type [Operation group] resource-type-supported (1setOf type2 keyword) resource-name (name(127)) resource-name [Operation group] [none] resource-id (integer(1:MAX)) resource-id [Operation group] max-resources-supported (integer(0:MAX)) resource-printer-uri (uri) printer-uri [Operation group] printer-uri-supported (1setOf uri)----------------------------- resource-charset (charset)attributes-charset [Operation group]charset-configured (charset) charset-supported (1setOf charset) resource-natural-language (naturalLanguage)attributes-natural-language [Operation group]natural-language-configured (naturalLanguage) generated-natural-language-supported (1setOf naturalLanguage) resource-info (text(127)) [no default/supported on Printer] resource-document-formats (1setOf mimeMediaType) document-format-default (mimeMediaType) document-format-supported (1setOf mimeMediaType) resource-create-date-time (dateTime) [no default/supported on Printer] resource-lease-duration (integer(0:MAX)) resource-lease-duration-default (integer(0:MAX)) resource-lease-duration-supported (rangeOfInteger(0:MAX)) resource-data-present (boolean)resource-data-present [Resource group][no default on Printer] resource-data-present-supported (1setOf boolean) resource-data-uri (1setOf uri)resource-data-uri [Resource group] resource-data-schemes-supported[no default on Printer] reference-uri-schemes-supported (1setOfuri)uriScheme) resource-data-k-octets (integer(0:MAX))resource-data-k-octets [Resource group][no default on Printer] resource-data-k-octets-supported (rangeOfInteger (0:MAX)) resource-data-compression (type3 keyword)resource-data-compression [Resource group][no default on Printer] compression-supported (1setOf type3 keyword)resource-create-user-name (name(MAX)) requesting-user-name [Operation group] [none] resource-create-date-time (dateTime) resource-create-date-time [Resource group] [none] resource-create-time (integer(0:MAX)) [none] printer-current-time (integer(0:MAX)) resource-expiration-time (integer(0:MAX)) [none] [printer-current-time + duration] resource-duration (integer(0:MAX)) resource-duration [Resource group] resource-duration-default (integer(0:MAX)) resource-duration-supported (rangeOfInteger(0:MAX)) resource-persistence (boolean) resource-persistence [Resource group] resource-persistence-supported (boolean)5.2. Table ofOptionalResource Description Attributes All IPP Printers that support IPP Resource objectsMAYMUST implement ALL of the followingOPTIONALREQUIRED Resource Description attributes defined in this specification (on the Resource object or the Printerobject): Resource Attributeobject as specified below). All ResourceAttribute TypeDescription attributes that MAY be supplied by an IPP Client are passed in an Operationor ResourceAttributes GroupPrinterin IPP Resource operations. Resource Description AttributePrinterResource Attribute Type ----------------------------------- --------------------------resource-info (text(127)) resource-info [Resource group] [none] resource-document-formats (1setOf mimeMediaType) document-format-default (mimeMediaType) document-format-supported (1setOf mimeMediaType) resource-os-types (1setOf type2 keyword) resource-os-types-default (1setOf type2 keyword) resource-os-types-supported (1setOf type2resource-type (type2 keyword)resource-change-timeresource-name (name(127)) resource-id (integer(1:MAX)) resource-printer-uri (uri) resource-create-user-name (name(MAX)) resource-create-time (integer(0:MAX))[none] [none] resource-refresh-timeresource-expiration-time (integer(0:MAX))[none] [none]5.3. Resource Template Attributes 5.3.1.resource-info (text(127)) OPTIONAL - for IPP Printers to implement. This attribute specifies descriptive information about this Resource object. This may include manufacturer, version, copyright, etc. See section 4.4.6 'printer-info' and section 4.4.9 'printer-make-and-model' in [IPP-MOD]. 5.3.2.resource-charset (charset) REQUIRED - for IPP Printers to implement. This attribute specifies the charset of 'text' and 'name' attributes of the Resource and of textual data in the associated Resource data (if any).5.3.3.5.3.2. resource-natural-language (naturalLanguage) REQUIRED - for IPP Printers to implement. This attribute specifies the natural language of 'text' and 'name' attributes of the Resource and of textual data in the associated Resource data (if any). 5.3.3. resource-info (text(127)) REQUIRED - for IPP Printers to implement. This attribute specifies descriptive information about this Resource object. This may include manufacturer, version, copyright, etc. See section 4.4.6 'printer-info' in [IPP-MOD]. See section 4.4.9 'printer-make-and-model' in [IPP-MOD]. 5.3.4. resource-document-formats (1setOf mimeMediaType)OPTIONALREQUIRED - for IPP Printers to implement. This attribute specifies the list of document formats supported by theResource.Resource (e.g., 'application/postscript' for a Resource of type 'font'). 5.3.5.resource-os-types (1setOf type2 keyword) OPTIONALresource-create-date-time (dateTime) REQUIRED - for IPP Printers to implement. This attributespecifiesindicates thelist of target operating system typesdate and time at which the Resource object instance was created. IPP Resource objects created during product manufacturing (via software download to the IPP Printer, for example) MUST include a vendor-supplied value for "resource-create-date-time". This value SHOULD reflect the actual 'build date' of theResource.Resource, rather than simply the 'install date' on the IPP Printer, because this is more informative for the end user. IPP Resource objects created with the Create-Resource operation MUST include an IPP Client-supplied value for "resource-create-date-time" in the create request. SeeIANA registry of operating system names at [OS-TYPE].section 4.4.30 'printer-current-time' in [IPP-MOD]. See section 4.3.14.5 'date-time-at-creation' in [IPP-MOD]. 5.3.6. resource-lease-duration (integer(0:MAX)) REQUIRED - for IPP Printers to implement. This attribute indicates length of the Resource object instance lease in seconds. If this attribute is zero '0', then the lease on this Resource object instance is infinite (i.e., the lease never expires). If this attribute is non-zero, then this Resource object instance has a finite lease and expires according to "resource-expiration-time" granted by the IPP Printer. See section 5.x 'resource-create-time'. See section 5.x 'resource-expiration-time'. 5.3.7. resource-data-present (boolean) REQUIRED - for IPP Printers to implement. The attribute indicates whether or not a local copy of the Resource data is present at the IPP Printer. This attribute MUST default to 'false', if not supplied by the IPP Client in the Create-Resource operation. When "resource-data-present" is 'true' on a Resource object instance, it indicates that the IPP Printer has stored a local copy of the Resource data or has fetched a local copy of the Resource data that was specified by reference in "resource-data-uri". When "resource-data-present" is 'false' on a Resource object instance and "resource-data-uri" is empty, it indicates that there is no Resource data. When "resource-data-present" is 'false' on a Resource object instance and "resource-data-uri" is non-empty, it indicates that the IPP Printer has NOT yet fetched a local copy of the Resource data that was specified by reference and the value of "resource-data-k-octets" is unverified. See section5.3.7 "resource-data-uri" in this document. See section 5.3.8 "resource-data-k-octets" in this document. 5.3.7.4.2.3 'Refresh-Resource Operation'. 5.3.8. resource-data-uri (1setOf uri) REQUIRED - for IPP Printers to implement. This attribute contains the URI of associated Resource data (if any) as a reference. Lazy Refresh: An IPP Printer NEED NOT immediately fetch a local copy of the Resource data specified by reference in "resource-data-uri", but MUST set "resource-data-present" to 'false' until a local copy is fetched. When an IPP Printer does fetch a local copy of the Resource data, it MUST set (REQUIRED) "resource-data-present" to'true','true' and set (REQUIRED) "resource-data-k-octets" to the actualsize, and update the timestamp in the (OPTIONAL) "resource-refresh-time" attribute. ISSUE_3:size. ISSUE_5: This 'lazy refresh' behavior may have performance and 'stale data' consequences for IPP Clients. Because the manufacturer may also be slow to inform installed IPP Printers of a new version of a Resource (for update by means outside of this specification) the 'stale data' problem may also apply to IPP Printers. Should we add an operation attribute topreventPREVENT this 'lazy refresh' behavior? See section5.3.6 "resource-data-present" in this document.4.2.3 'Refresh-Resource Operation'. See section 5.x 'resource-data-present'. See section 4.4.27 'reference-uri-schemes-supported' in [IPP-MOD]. See section 3.2.2 'Print-URI' in [IPP-MOD].5.3.8.5.3.9. resource-data-k-octets (integer(0:MAX)) REQUIRED - for IPP Printers to implement. This attribute contains the size of associated Resource data (if any). An IPP Printer MUST set this attribute to zero for Resource types that MUST not have Resource data supplied by reference in "resource-data-uri" or by value in a Create-Resource operation. See 'Lazy Refresh' in section5.3.75.x 'resource-data-uri' of this document for IPP Printer behavior with respect to "resource-data-k-octets". See section5.3.6 "resource-data-present" in this document. 5.3.9.4.2.3 'Refresh-Resource Operation'. See section 5.x 'resource-data-present'. 5.3.10. resource-data-compression (type3 keyword) REQUIRED - for IPP Printers to implement. This attribute identifies the compression of the associated Resource data (if any). See section 4.4.32 'compression-supported' in [IPP-MOD] for standard keyword values.5.3.10. resource-create-date-time (dateTime) REQUIRED - for IPP Printers to implement. This attribute indicates the date and time at which the Resource object instance was created. Note: This time SHOULD reflect the actual 'build date' of the Resource data rather than simply the 'install date' on the IPP Printer, because this is more informative for the end user. See section 4.4.30 'printer-current-time' in [IPP-MOD]. See section 4.3.14.5 'date-time-at-creation' in [IPP-MOD]. 5.3.11. resource-duration (integer(0:MAX)) REQUIRED - for IPP Printers to implement. This attribute indicates length of the Resource object instance lease in seconds. See section 5.4.6 "resource-create-time" in this document. See section 5.4.9 "resource-expiration-time" in this document. 5.3.12. resource-persistence (boolean) REQUIRED - for IPP Printers to implement. This attribute indicates whether or not this Resource object instance is persistent (preserved by the IPP Printer across power cycles). A 'true' value specifies an infinite lease and supersedes "resource-duration" and "resource-expiration-time". A 'false' value specifies a finite lease and selects use of "resource-duration" and "resource-expiration-time". See section 5.3.11 "resource-duration" in this document. See section 5.4.9 "resource-expiration-time" in this document.5.4. Resource Description Attributes 5.4.1. resource-type (type2 keyword) REQUIRED - for IPP Printers to implement. This attribute identifies the type of this Resource object instance which determines additional Resource attributes specific to the named type. The following standard keyword values are defined:'driver':'font': The Resource containsclient print support files (e.g., a driver)font characteristics and (OPTIONALLY) font data. 'form': The Resource contains form characteristics and (OPTIONALLY) form data. 'image': The Resource contains image characteristics and (OPTIONALLY) image data. 'logo': The Resource contains logo characteristics and (OPTIONALLY) logo data. 'media': The Resource contains media characteristics foran IPP Client (seea single medium and MUST NOT contain media data. See section6 'Driver Resource Type' in this document)5.5 'Job Template Attributes forthis IPP Printer.Resources'. 5.4.2. resource-name (name(127)) REQUIRED - for IPP Printers to implement. This attribute is the human-readable name of theResource.Resource object instance. This name is more user-friendly than the integer "resource-id" attribute.This nameNote: Unlike the "job-name" attribute, the value of "resource-name" MUST be unique among Resources of the SAME "resource-type". IPP Printers MUST not allow Resource object instances of the SAME "resource-type" to exist with duplicate "resource-name" values. IPP Printers MUST reject Create-Resource operations that specify duplicate "resource-name" values. Note: This attribute has been specified as REQUIRED (unlike "job-name") in the interests of ease-of-use. IPP Printers are expected to implement large numbers of Resource objects and the guaranteed presence ofthea user-friendly name will benefit ease-of-use. See section 4.3.5 'job-name' in [IPP-MOD]. 5.4.3. resource-id (integer(1:MAX)) REQUIRED - for IPP Printers to implement. This attribute contains the locally unique ID (for a given value of "resource-type") of theResource.Resource object instance. The IPP Printer, on creation of a new Resource object instance, (by means outside of thisspecification),specification) generates an ID which identifies the new Resource object instance onthatthe Printer specified by the value of "resource-printer-uri" (but not globally). The zero '0' value is not included to allow for compatibility with SNMP index values which also cannot be zero '0'. See section 4.3.2 'job-id' in [IPP-MOD]. 5.4.4. resource-printer-uri (uri) REQUIRED - for IPP Printers to implement. This attribute identifies the IPP Printer that hosts this Resource objectinstance.instance (i.e., records the value of the "printer-uri" target attribute from a Create-Resource operation). See section 4.3.3 'job-printer-uri' in [IPP-MOD]. 5.4.5. resource-create-user-name (name(MAX)) REQUIRED - for IPP Printers to implement. This attribute contains the name of the end user that created this Resource object instance. For factory-installed resources, "resource-create-user-name" MUST be set to the empty string to prevent namespace conflicts in end user networks. See section 4.3.6 'job-originating-user-name' in [IPP-MOD]. 5.4.6. resource-create-time (integer(0:MAX)) REQUIRED - for IPP Printers to implement. This attribute indicates the time at which the Resource object instance wascreated. Note: This time SHOULD reflectcreated (i.e., theactual 'build time'value of "printer-up-time" when the Resourcedata rather than simplyobject instance was created). If this Resource was created prior to the'install time' onmost recent system startup, then the IPPPrinter, becausePrinter MUST set thisis more informative for the end user.attribute to zero '0'. See section 5.x 'resource-expiration-time'. See section 5.x 'resource-lease-duration'. See section 4.4.29 'printer-up-time' in [IPP-MOD]. See section 4.3.14.1 'time-at-creation' in [IPP-MOD]. 5.4.7.resource-change-timeresource-expiration-time (integer(0:MAX)) REQUIRED - for IPP Printers to implement. This attribute indicates the time at which the Resource object instancewas last changed.lease will expire. (i.e., the value of "printer-up-time" when the Resource object instance will be deleted by the IPP Printer). If "resource-lease-duration" is zero '0', then the IPP Printer MUST set "resource-expiration-time" also to zero '0' (i.e., infinite lease). See section5.4.6 "resource-create-time" in this document.5.x 'resource-create-time'. See section 5.x 'resource-lease-duration'. See section 4.4.29 'printer-up-time' in [IPP-MOD].5.4.8. resource-refresh-time (integer(0:MAX)) REQUIRED -See section 4.3.14.3 'time-at-completed' in [IPP-MOD]. 5.5. Job Template Attributes forIPP PrintersResources Each Resource Type Definition MUST specify whether or not the Resource type MAY be associated with a Job object. If so, then two new Job Description attributes are algorithmically added toimplement.the definition of a Job object: 5.5.1. restype (name (127)) Where 'restype' is a standard keyword for "resource-type" (e.g., 'media' yields the Job attribute named simply "media"). This Job attributeindicates the time at whichspecifies the "resource-name" value of a single Resource object instancewas last refreshed (i.e., a local copywith "resource-type" of 'restype' that is REQUIRED for this Job and that SHOULD override any PDL instructions in theResource data was made).Job datastream. This attribute supplies advice for job scheduling to the IPP Printer. See section5.4.6 "resource-create-time"4.2.1 "media" inthis document.[IPP-MOD]. See 'media-needed' keyword in section4.4.29 'printer-up-time'4.4.12 "printer-state-reasons" in [IPP-MOD].5.4.9. resource-expiration-time (integer(0:MAX)) REQUIRED -5.5.2. restype-required (1setOf name(127)) Where 'restype' is a standard keyword forIPP Printers to implement."resource-type" (e.g., 'media' yields the Job attribute named "media-required"). This Job attributeindicates the time at whichspecifies the "resource-name" values of a set of Resource objectinstance lease will expire. See section 5.4.6 "resource-create-time" ininstances with "resource-type" of 'restype' that are REQUIRED for thisdocument. See section 5.3.11 "resource-duration"Job and that SHOULD override any PDL instructions inthis document.the Job datastream. This attribute supplies advice for job scheduling to the IPP Printer. See section4.4.29 'printer-up-time'4.2.1 "media" in [IPP-MOD]. See 'media-needed' keyword in section4.3.14.5 'date-time-at-creation'4.4.12 "printer-state-reasons" in [IPP-MOD]. 6.DriverRules for Resource Type Definitions 6.1.Table of Required Driver Resource Attributes All IPP Printers that support DriverDo NOT define new operations for Resourceobjects MUST implement the followingREQUIREDattributes defined in this specification (on the Driver Resource object or- Do NOT define any new operations for thePrinter object): Driver Resource Attribute Driver Attribute Type Operation or Resource Group Printer Attribute Printer Attribute Type ------------------------------- -------------------------- driver-file-type (type2 keyword) driver-file-type [Resource group] driver-file-type-default (type2 keyword) driver-file-type-supported (1setOf type2 keyword) driver-file-name (name(MAX)) driver-file-name [Resource group] [none]Resource. 6.2.Table of Optional Driver Resource Attributes All IPP Printers that support Driver Resource objects MAY implement the following OPTIONAL attributes defined in this specification (on the DriverDefine new type keyword for Resourceobject orREQUIRED - Define a new type keyword 'restype' for thePrinter object): Driver Resource Attribute Driver Attribute Type Operation or Resource Group Printer Attribute Printer Attribute Type ------------------------------- -------------------------- driver-charset (1setOf charset) driver-charset [Resource group] charset-configured (charset) charset-supported (1setOf charset) driver-natural-language (1setOf naturalLanguage) driver-natural-language [Resource group] natural-language-configured (naturalLanguage) generated-natural-language-configured (1setOf naturalLanguage)Resource. 6.3.DriverDefine new type-specific attributes for ResourceTemplate Attributes 6.3.1. driver-charset (1setOf charset)OPTIONAL - Define type-specific attributes forIPP Printers to implement. This attribute specifiesthelistResource with names ofclient charsets supported bytheDriver Resource (when installed onform "restype-yyy" (e.g., "media-size"), using theclient system 6.3.2. driver-natural-language (1setOf naturalLanguage) OPTIONAL - for IPP Printers to implement. This'restype' keyword chosen above. is a simple attributespecifies the list of client natural languages supported by the Drivername for this Resource type. 6.4. Define new Printer attributes for Resource(when installed on the client system 6.3.3. driver-file-type (type2 keyword)REQUIRED -for IPP Printers to implement. This attribute specifies the client file type of this DriverDefine new Resource(when installedTemplate attributes on theclient system). The following standardPrinter object for the Resource, named "restype-default" and "restype-supported", using the 'restype' keyword chosen above (e.g., "media-default" and "media-supported"). "restype-supported" lists all the current valuesare defined: 'none': The Driver Resource contains client print support files i unspecified (opaque) format. 'exec': The Driver Resource contains client print support files i native executable formatofthe operating system(s) specified in "resource-os-types" attribute,"resource-name" forexample '.exe' on Microsoft sy 'gpd': The Driver Resource contains client print support files in Microsoft GPD format. 'java': The Driver Resource contains client print support files i 'ppd': The Driver Resource contains client print support files in Adobe PPD format. 'printcap': The Driverthis Resourcecontains client print support fil the UNIX 'printcap' format. 'script': The Drivertype. OPTIONAL - Define new Resourcecontains client print support files native script format ofTemplate attributes on theoperating system(s) specified inPrinter object for the"resource-os-types" attribute,Resource, if this Resource has type-specific attributes (e.g., "media-size-default"). 6.5. Define new Job attributes forexample Bourne shell on UNIX s Note: This type may be ambiguous on some target operating system 'updf': The DriverResourcecontains client print support files i (work-in-progress) PWG UPDF format. 6.3.4. driver-file-name (name(MAX)) REQUIREDOPTIONAL - Define new Job Template attributes forIPP Printers to implement. This attribute specifiestheclient file name ofResource, if thisDriverResource(when installed on the client system) or the empty string (if none configured). If this DriverMAY be associated with a Job (e.g., "media-required"). See section 5.5 'Job Template Attributes for Resources'. 6.6. Define Printer operation extensions for Resourcecontains multiple client print support files, then "driver-file-name" SHOULD specify an 'install directory path'.7. Conformance Requirements 7.1. IPP Client Conformance Requirements IPP Clients MUST supply the required operation attributes in Resource operations. 7.2. IPP Printer Conformance Requirements 7.2.1. Resource Operations All IPP Printers that support IPP Resource objects MUST implement the following REQUIRED operations defined in this specification: Resource Operation ------------------Get-ResourcesGet-Resource-Attributes Get-Resource-Data Get-Resources 7.2.2. Resource AttributesSee section 5.1 'Table of RequiredAll IPP ResourceAttributes' and section 5.2 'Tableattributes presently defined are REQUIRED for all IPP Printer implementations ofOptionalResourceAttributes'. 7.2.3. Driver Resource Attributesobjects. See section6.15.1 'Table ofRequired DriverResource Template Attributes'andSee section6.25.2 'Table ofOptional DriverResource Description Attributes'. 8. IANA Considerations See section 6 'IANA Considerations' in [IPP-MOD]. 9. Internationalization Considerations This IPP Resource Objectsand Get Resource Operationsspecification continues support for the internationalization in [IPP-MOD] attributes containing text strings and names. See section 7 'Internationalization Considerations' in [IPP-MOD]. 10. Security Considerations This IPP Resource Objectsand Get Resource Operationsspecification inherits the same security considerations for Resources as are specified for Jobs in [IPP-MOD]. See section 8 'Security Considerations' in [IPP-MOD]. 11. Encodings of AdditionalResourceProtocol Tags 11.1. Encodings of Additional Attribute Tags The section assignsvaluesa value to a newprotocol tagsattribute tag asextensionsan extension to the encoding defined in [IPP-PRO]. The resource-attributes-tag delimits Resource Template Attributes Groups in requests and Resource Attributes Groups in responses. Tag Value (Hex) Tag Meaning --------------- ----------- 0x08 resource-attributes-tag 11.2. Encodings of Additional Operation Tags The section assigns values to new operation tags as extensions to the encoding defined in [IPP-PRO]. Tag Value (Hex) Tag Meaning --------------- ----------- 0x1E Get-Resource-Attributesoperation0x1F Get-Resource-Dataoperation0x20 Get-Resourcesoperation[TBD] Create-Resource [TBD] Delete-Resource [TBD] Refresh-Resource [TBD] Renew-Resource 12. References See section 9 'References' in [IPP-MOD]. [IPP-MOD] R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell. IPP/1.1 Model and Semantics, <draft-ietf-ipp-model-v11-07.txt>, May 2000 (adopted by IESG as Proposed Standard in June 2000). [IPP-NOT] S. Isaacson, J. Martin, R. deBry, T. Hastings, M. Shepherd, R. Bergman. IPP Event Notification Specification, <draft-ietf-ipp-not-spec-02.txt> (work-in-progress), March 2000. [OS-TYPE] IANA Registry of Operating System Names at ftp://ftp.isi.edu/in-notes/iana/assignments/operating-system-names. 13. Authors' Addresses Tom Hastings Xerox Corporation 701 S Aviation Blvd, MS 834-03E El Segundo, CA 90245 Phone: +1 310-333-6413 Email: hastings@cp10.es.xerox.com Ira McDonald High North Inc 221 Ridge Ave Grand Marais, MI 49839 Phone: +1 906-494-2434 or +1 906-494-2697 Email: imcdonald@sharplabs.com Email: imcdonal@sdsp.mc.xerox.com 14. Appendix A - Change History [To be deleted before RFC publication]14.1.7 September 2000 - draft-ietf-ipp-get-resource-01.txt - revised Abstract and Introduction for admin operations - deleted all references to the resource type 'driver' - named package of Resource query (Get) operations in section 4 - added package of Resource system admin operations to section 4 - added Create-Resource to create (install) static resources - added Delete-Resource to delete (remove) static resources - added Refresh-Resource to refresh (locally cache) resource data - added Renew-Resource to renew (finite) resource leases - revised section 5.1 'Table of Resource Template Attributes' - revised section 5.2 'Table of Resource Description Attributes' - added section 6 'Rules for Resource Type Definitions' - deleted "resource-persistence" (redundant with zero lease) - renamed "resource-duration" to "resource-lease-duration" - deleted "resource-os-types" (was used for 'driver' resources) - deleted "resource-change-time" and "resource-refresh-time" 7 July 2000 - draft-ietf-ipp-get-resource-00.txt - initial version - Get operations and Driver resource type 15. Full Copyright Statement Copyright (C) The Internet Society (2000). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.