Internet Printing Protocol Working Group                    Tom Hastings
INTERNET DRAFT                                                     Xerox
Expires 7 March 2001                                        Ira McDonald
                                                              High North
[Target Category: Standards Track]                      7 September 2000

                   Internet Printing Protocol (IPP):
                            Resource Objects
                  <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 IPP Resource 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 current IPP object model with a passive polymorphic
   object type - Resource - to support the long-term evolution of IPP.

   This document defines:
   - Resource object (passive polymorphic object);
   - Resource query 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").




Hastings, McDonald             Expires 7 March 2001             [Page 1]


Internet Draft           IPP Resource Objects           7 September 2000

                           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.  Resource Query Package - REQUIRED ......................       7
    4.1.1.  Get-Resource-Attributes Operation ..................       7
      4.1.1.1.  Get-Resource-Attributes Request ................       8
      4.1.1.2.  Get-Resource-Attributes Response ...............       9
    4.1.2.  Get-Resource-Data Operation ........................      10
      4.1.2.1.  Get-Resource-Data Request ......................      10
      4.1.2.2.  Get-Resource-Data Response .....................      11
    4.1.3.  Get-Resources Operation ............................      11
      4.1.3.1.  Get-Resources Request ..........................      12
      4.1.3.2.  Get-Resources Response .........................      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 ...............      22
5.  Resource Attributes ........................................      23
  5.1.  Table of Resource Template Attributes ..................      23
  5.2.  Table of Resource Description Attributes ...............      24
  5.3.  Resource Template Attributes ...........................      24
    5.3.1.  resource-charset (charset) .........................      24
    5.3.2.  resource-natural-language (naturalLanguage) ........      25
    5.3.3.  resource-info (text(127)) ..........................      25
    5.3.4.  resource-document-formats (1setOf mimeMediaType) ...      25
    5.3.5.  resource-create-date-time (dateTime) ...............      25
    5.3.6.  resource-lease-duration (integer(0:MAX)) ...........      26
    5.3.7.  resource-data-present (boolean) ....................      26
    5.3.8.  resource-data-uri (1setOf uri) .....................      27
    5.3.9.  resource-data-k-octets (integer(0:MAX)) ............      27
    5.3.10.  resource-data-compression (type3 keyword) .........      28
  5.4.  Resource Description Attributes ........................      28
    5.4.1.  resource-type (type2 keyword) ......................      28

Hastings, McDonald             Expires 7 March 2001             [Page 2]


Internet Draft           IPP Resource Objects           7 September 2000

    5.4.2.  resource-name (name(127)) ..........................      28
    5.4.3.  resource-id (integer(1:MAX)) .......................      29
    5.4.4.  resource-printer-uri (uri) .........................      29
    5.4.5.  resource-create-user-name (name(MAX)) ..............      30
    5.4.6.  resource-create-time (integer(0:MAX)) ..............      30
    5.4.7.  resource-expiration-time (integer(0:MAX)) ..........      30
  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.  Rules for Resource Type Definitions ........................      32
  6.1.  Do NOT define new operations for Resource ..............      32
  6.2.  Define new type keyword for Resource ...................      32
  6.3.  Define new type-specific attributes for Resource .......      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 ...................................      34
  7.1.  IPP Client Conformance Requirements ....................      34
  7.2.  IPP Printer Conformance Requirements ...................      34
    7.2.1.  Resource Operations ................................      34
    7.2.2.  Resource Attributes ................................      35
8.  IANA Considerations ........................................      36
9.  Internationalization Considerations ........................      36
10.  Security Considerations ...................................      36
11.  Encodings of Additional Protocol Tags .....................      36
  11.1.  Encodings of Additional Attribute Tags ................      36
  11.2.  Encodings of Additional Operation Tags ................      36
12.  References ................................................      37
13.  Authors' Addresses ........................................      37
14.  Appendix A - Change History ...............................      38
15.  Full Copyright Statement ..................................      38





















Hastings, McDonald             Expires 7 March 2001             [Page 3]


Internet Draft           IPP Resource Objects           7 September 2000



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 IPP Resource Object documents specifies an extension to IPP/1.0
   [RFC-2565] [RFC-2566] and IPP/1.1 [IPP-MOD] [IPP-PRO].  This document
   extends the current IPP object model with a passive polymorphic
   object type - Resource - to support the long-term evolution of IPP.

   This document defines:
   - Resource object (passive polymorphic object);
   - Resource query 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").

   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 the rules for defining new Resource 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.




Hastings, McDonald             Expires 7 March 2001             [Page 4]


Internet Draft           IPP Resource Objects           7 September 2000



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.



























Hastings, McDonald             Expires 7 March 2001             [Page 5]


Internet Draft           IPP Resource Objects           7 September 2000



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
































Hastings, McDonald             Expires 7 March 2001             [Page 6]


Internet Draft           IPP Resource Objects           7 September 2000



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.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 Resource objects
     (see section 5.1).
   - 'resource-description':  the subset of the Resource Description
     attributes that the implementation supports for Resource 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

Hastings, McDonald             Expires 7 March 2001             [Page 7]


Internet Draft           IPP Resource Objects           7 September 2000

   in the response even if it is requested multiple times.  The IPP
   Client SHOULD NOT request the same attribute in multiple ways.



   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 attributes as part of
   the Get-Resource-Attributes 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 for
     ALL 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
     section 5.4.1.  The IPP Client MUST supply "resource-type" in 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 section
     5.4.2 in this document
     <OR>
     the "resource-id (integer(1:MAX))" attribute as described in
     section 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.

Hastings, McDonald             Expires 7 March 2001             [Page 8]


Internet Draft           IPP Resource Objects           7 September 2000

     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.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
     current 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 the
     Resource object instance.  However, the IPP Printer MUST respond

Hastings, McDonald             Expires 7 March 2001             [Page 9]


Internet Draft           IPP Resource Objects           7 September 2000

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

     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' 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 only supported for the "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
   '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 that some Resource types (e.g, 'font') MAY
   have have copyright and intellectual property considerations with
   respect to IPP Clients reading their associated data.


   4.1.2.1.  Get-Resource-Data Request

   See section 4.1.1.1 'Get-Resource-Attributes Request'.

   The IPP Client submits the Get-Resource-Data request to an IPP
   Printer object.

   The IPP Client supplies the following groups of attributes as part of
   the Get-Resource-Data Request:


   Group 1:  Operation Attributes

     See 'Group 1:  Operation Attributes' in section 4.1.1.1
     'Get-Resource-Attributes Request'.

Hastings, McDonald            Expires 7 March 2001             [Page 10]


Internet Draft           IPP Resource Objects           7 September 2000



   4.1.2.2.  Get-Resource-Data 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

     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 4:  Resource Object Data

     See section 5.x 'resource-data-present'.
     See section 3.2.1.1 'Print-Job Request' in [IPP-MOD].

     The IPP Printer MUST return the Resource data (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.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,

Hastings, McDonald            Expires 7 March 2001             [Page 11]


Internet Draft           IPP Resource Objects           7 September 2000

   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.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 attributes as part of
   the Get-Resources 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 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
     MUST support 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

     See 'Group 3:  Resource Object Attributes' in section 4.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).

     ISSUE_2:  What mechanism should we use for filters?

Hastings, McDonald            Expires 7 March 2001             [Page 12]


Internet Draft           IPP Resource Objects           7 September 2000

     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 section 4.1.1.2
     'Get-Resource-Attributes Response'.


   Groups 3 to N:  Resource Object Attributes

Hastings, McDonald            Expires 7 March 2001             [Page 13]


Internet Draft           IPP Resource Objects           7 September 2000


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

     Resource object instances MUST be returned sorted by "resource-id".

   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:


Hastings, McDonald            Expires 7 March 2001             [Page 14]


Internet Draft           IPP Resource Objects           7 September 2000



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



Hastings, McDonald            Expires 7 March 2001             [Page 15]


Internet Draft           IPP Resource Objects           7 September 2000


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


Hastings, McDonald            Expires 7 March 2001             [Page 16]


Internet Draft           IPP Resource Objects           7 September 2000


     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:


Hastings, McDonald            Expires 7 March 2001             [Page 17]


Internet Draft           IPP Resource Objects           7 September 2000

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



Hastings, McDonald            Expires 7 March 2001             [Page 18]


Internet Draft           IPP Resource Objects           7 September 2000



   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:


Hastings, McDonald            Expires 7 March 2001             [Page 19]


Internet Draft           IPP Resource Objects           7 September 2000

     "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


Hastings, McDonald            Expires 7 March 2001             [Page 20]


Internet Draft           IPP Resource Objects           7 September 2000


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


Hastings, McDonald            Expires 7 March 2001             [Page 21]


Internet Draft           IPP Resource Objects           7 September 2000


   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

















Hastings, McDonald            Expires 7 March 2001             [Page 22]


Internet Draft           IPP Resource Objects           7 September 2000



5.  Resource Attributes

All IPP Resource attributes presently defined are REQUIRED for all IPP
Printer implementations of Resource objects.



   5.1.  Table of Resource 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 Printer object as
   specified below).

   All Resource Template attributes are passed in a Resource Attributes
   Group in IPP Resource operations.

   Resource Object Attribute               Resource Attribute Type
       Printer Object Attribute(s)             Printer Attribute Type(s)
   -----------------------------------     -----------------------------
   resource-charset                        (charset)
       charset-configured                      (charset)
       charset-supported                       (1setOf charset)

   resource-natural-language               (naturalLanguage)
       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)
       [no default on Printer]
       resource-data-present-supported         (1setOf boolean)

   resource-data-uri                       (1setOf uri)
       [no default on Printer]
       reference-uri-schemes-supported         (1setOf uriScheme)

Hastings, McDonald            Expires 7 March 2001             [Page 23]


Internet Draft           IPP Resource Objects           7 September 2000


   resource-data-k-octets                  (integer(0:MAX))
       [no default on Printer]
       resource-data-k-octets-supported        (rangeOfInteger (0:MAX))

   resource-data-compression               (type3 keyword)
       [no default on Printer]
       compression-supported                   (1setOf type3 keyword)


   5.2.  Table of Resource Description Attributes

   All IPP Printers that support IPP Resource objects MUST implement ALL
   of the following REQUIRED Resource Description attributes defined in
   this specification (on the Resource object or the Printer object as
   specified below).

   All Resource Description attributes that MAY be supplied by an IPP
   Client are passed in an Operation Attributes Group in IPP Resource
   operations.

   Resource Description Attribute          Resource Attribute Type
   -----------------------------------     --------------------------
   resource-type                           (type2 keyword)

   resource-name                           (name(127))

   resource-id                             (integer(1:MAX))

   resource-printer-uri                    (uri)

   resource-create-user-name               (name(MAX))

   resource-create-time                    (integer(0:MAX))

   resource-expiration-time                (integer(0:MAX))


   5.3.  Resource Template Attributes



   5.3.1.  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).



Hastings, McDonald            Expires 7 March 2001             [Page 24]


Internet Draft           IPP Resource Objects           7 September 2000



   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)

   REQUIRED - for IPP Printers to implement.

   This attribute specifies the list of document formats supported by
   the Resource (e.g., 'application/postscript' for a Resource of type
   'font').



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

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

Hastings, McDonald            Expires 7 March 2001             [Page 25]


Internet Draft           IPP Resource Objects           7 September 2000


   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.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 section 4.2.3 'Refresh-Resource Operation'.

Hastings, McDonald            Expires 7 March 2001             [Page 26]


Internet Draft           IPP Resource Objects           7 September 2000




   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' and set
   (REQUIRED) "resource-data-k-octets" to the actual 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 to PREVENT this 'lazy refresh' behavior?

   See section 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.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 section 5.x 'resource-data-uri' of this
   document for IPP Printer behavior with respect to
   "resource-data-k-octets".

   See section 4.2.3 'Refresh-Resource Operation'.
   See section 5.x 'resource-data-present'.




Hastings, McDonald            Expires 7 March 2001             [Page 27]


Internet Draft           IPP Resource Objects           7 September 2000



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

       'font':  The Resource contains 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 for a
       single medium and MUST NOT contain media data.

   See section 5.5 'Job Template Attributes for Resources'.



   5.4.2.  resource-name (name(127))

   REQUIRED - for IPP Printers to implement.


Hastings, McDonald            Expires 7 March 2001             [Page 28]


Internet Draft           IPP Resource Objects           7 September 2000


   This attribute is the human-readable name of the Resource object
   instance.  This name is more user-friendly than the integer
   "resource-id" 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.

   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 of a 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 the Resource object instance.

   The IPP Printer, on creation of a new Resource object instance, (by
   means outside of this specification) generates an ID which identifies
   the new Resource object instance on the 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
   object 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].




Hastings, McDonald            Expires 7 March 2001             [Page 29]


Internet Draft           IPP Resource Objects           7 September 2000



   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 was created (i.e., the value of "printer-up-time" when the
   Resource object instance was created).

   If this Resource was created prior to the most recent system startup,
   then the IPP Printer MUST set this 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-expiration-time (integer(0:MAX))

   REQUIRED - for IPP Printers to implement.

   This attribute indicates the time at which the Resource object
   instance 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 section 5.x 'resource-create-time'.
   See section 5.x 'resource-lease-duration'.


Hastings, McDonald            Expires 7 March 2001             [Page 30]


Internet Draft           IPP Resource Objects           7 September 2000

   See section 4.4.29 'printer-up-time' in [IPP-MOD].
   See section 4.3.14.3 'time-at-completed' in [IPP-MOD].



   5.5.  Job Template Attributes for Resources

   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 to 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 attribute specifies the "resource-name" value of a single
   Resource object instance with "resource-type" of 'restype' that is
   REQUIRED for this Job and that SHOULD override any PDL instructions
   in the Job datastream.

   This attribute supplies advice for job scheduling to the IPP Printer.

   See section 4.2.1 "media" in [IPP-MOD].
   See 'media-needed' keyword in section 4.4.12 "printer-state-reasons"
   in [IPP-MOD].



   5.5.2.  restype-required (1setOf name(127))

   Where 'restype' is a standard keyword for "resource-type" (e.g.,
   'media' yields the Job attribute named "media-required").

   This Job attribute specifies the "resource-name" values of a set of
   Resource object instances with "resource-type" of 'restype' that are
   REQUIRED for this Job and that SHOULD override any PDL instructions
   in the Job datastream.

   This attribute supplies advice for job scheduling to the IPP Printer.

   See section 4.2.1 "media" in [IPP-MOD].
   See 'media-needed' keyword in section 4.4.12 "printer-state-reasons"
   in [IPP-MOD].





Hastings, McDonald            Expires 7 March 2001             [Page 31]


Internet Draft           IPP Resource Objects           7 September 2000



6.  Rules for Resource Type Definitions



   6.1.  Do NOT define new operations for Resource

   REQUIRED - Do NOT define any new operations for the Resource.



   6.2.  Define new type keyword for Resource

   REQUIRED - Define a new type keyword 'restype' for the Resource.



   6.3.  Define new type-specific attributes for Resource

   OPTIONAL - Define type-specific attributes for the Resource with
   names of the form "restype-yyy" (e.g., "media-size"), using the
   'restype' keyword chosen above.  is a simple attribute name for this
   Resource type.



   6.4.  Define new Printer attributes for Resource

   REQUIRED - Define new Resource Template attributes on the Printer
   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 values of "resource-name" for this Resource type.

   OPTIONAL - Define new Resource Template attributes on the Printer
   object for the Resource, if this Resource has type-specific
   attributes (e.g., "media-size-default").



   6.5.  Define new Job attributes for Resource

   OPTIONAL - Define new Job Template attributes for the Resource, if
   this Resource MAY be associated with a Job (e.g., "media-required").

   See section 5.5 'Job Template Attributes for Resources'.





Hastings, McDonald            Expires 7 March 2001             [Page 32]


Internet Draft           IPP Resource Objects           7 September 2000



   6.6.  Define Printer operation extensions for Resource

















































Hastings, McDonald            Expires 7 March 2001             [Page 33]


Internet Draft           IPP Resource Objects           7 September 2000



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-Resource-Attributes
   Get-Resource-Data
   Get-Resources


























Hastings, McDonald            Expires 7 March 2001             [Page 34]


Internet Draft           IPP Resource Objects           7 September 2000



   7.2.2.  Resource Attributes

   All IPP Resource attributes presently defined are REQUIRED for all
   IPP Printer implementations of Resource objects.

   See section 5.1 'Table of Resource Template Attributes'
   See section 5.2 'Table of Resource Description Attributes'.











































Hastings, McDonald            Expires 7 March 2001             [Page 35]


Internet Draft           IPP Resource Objects           7 September 2000



8.  IANA Considerations

   See section 6 'IANA Considerations' in [IPP-MOD].



9.  Internationalization Considerations

   This IPP Resource Objects specification 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 Objects specification 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 Additional Protocol Tags



   11.1.  Encodings of Additional Attribute Tags

   The section assigns a value to a new attribute tag as an 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].



Hastings, McDonald            Expires 7 March 2001             [Page 36]


Internet Draft           IPP Resource Objects           7 September 2000

   Tag Value (Hex)     Tag Meaning
   ---------------     -----------
   0x1E                Get-Resource-Attributes
   0x1F                Get-Resource-Data
   0x20                Get-Resources
   [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




Hastings, McDonald            Expires 7 March 2001             [Page 37]


Internet Draft           IPP Resource Objects           7 September 2000



14.  Appendix A - Change History

   [To be deleted before RFC publication]

   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

Hastings, McDonald            Expires 7 March 2001             [Page 38]


Internet Draft           IPP Resource Objects           7 September 2000

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















































Hastings, McDonald            Expires 7 March 2001             [Page 39]