Movatterモバイル変換


[0]ホーム

URL:


[RFC Home] [TEXT|PDF|HTML] [Tracker] [IPR] [Errata] [Info page]

PROPOSED STANDARD
Errata Exist
Network Working Group                                         R. HerriotRequest for Comments: 3995                     Global Workflow SolutionsCategory: Standards Track                                    T. HastingsUpdates:2911,2910                                    Xerox Corporation                                                              March 2005Internet Printing Protocol (IPP):Event Notifications and SubscriptionsStatus of This Memo   This document specifies an Internet standards track protocol for the   Internet community, and requests discussion and suggestions for   improvements.  Please refer to the current edition of the "Internet   Official Protocol Standards" (STD 1) for the standardization state   and status of this protocol.  Distribution of this memo is unlimited.Copyright Notice   Copyright (C) The Internet Society (2005).Abstract   This document describes an OPTIONAL extension to the Internet   Printing Protocol/1.1: Model and Semantics (RFC 2911,RFC 2910).   This extension allows a client to subscribe to printing related   Events.  Subscriptions are modeled as Subscription Objects.  The   Subscription Object specifies that when one of the specified Events   occurs, the Printer delivers an asynchronous Event Notification to   the specified Notification Recipient via the specified Push or Pull   Delivery Method (i.e., protocol).   A client associates Subscription Objects with a particular Job by   performing the Create-Job-Subscriptions operation or by submitting a   Job with subscription information.  A client associates Subscription   Objects with the Printer by performing a Create-Printer-Subscriptions   operation.  Four other operations are defined for Subscription   Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Renew-   Subscription, and Cancel-Subscription.Herriot & Hastings          Standards Track                     [Page 1]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005Table of Contents1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .51.1.  Notification Overview. . . . . . . . . . . . . . . . . .52.  Models for Notification. . . . . . . . . . . . . . . . . . . .82.1.  Model for Simple Notification (Normative). . . . . . . .82.2.  Additional Models for Notification (Informative) . . . .93.  Terminology. . . . . . . . . . . . . . . . . . . . . . . . . .93.1.  Conformance Terminology. . . . . . . . . . . . . . . . .93.2.  Other Terminology. . . . . . . . . . . . . . . . . . . .104.  Object Relationships . . . . . . . . . . . . . . . . . . . . .124.1.  Printer and Per-Printer Subscription Objects . . . . . .134.2.  Printer, Job and Per-Job Subscription Objects. . . . . .135.  Subscription Object. . . . . . . . . . . . . . . . . . . . . .135.1.  Rules for Support of Subscription Template Attributes. .145.2.  Rules for Processing Subscription Template Attributes. .155.3.  Subscription Template Attributes . . . . . . . . . . . .185.3.1.  notify-recipient-uri (uri) . . . . . . . . . . .205.3.2.  notify-pull-method (type2 keyword) . . . . . . .215.3.3.  notify-events (1setOf type2 keyword) . . . . . .225.3.4.  notify-attributes (1setOf type2 keyword) . . . .295.3.5.  notify-user-data (octetString(63)) . . . . . . .305.3.6.  notify-charset (charset) . . . . . . . . . . . .315.3.7.  notify-natural-language (naturalLanguage). . . .315.3.8.  notify-lease-duration (integer(0:67108863)). . .325.3.9.  notify-time-interval (integer(0:MAX)). . . . . .335.4.  Subscription Description Attributes. . . . . . . . . . .345.4.1.  notify-subscription-id  (integer (1:MAX)). . . .355.4.2.  notify-sequence-number (integer (0:MAX)) . . . .355.4.3.  notify-lease-expiration-time (integer(0:MAX)). .365.4.4.  notify-printer-up-time (integer(1:MAX)). . . . .375.4.5.  notify-printer-uri (uri) . . . . . . . . . . . .375.4.6.  notify-job-id (integer(1:MAX)) . . . . . . . . .375.4.7.  notify-subscriber-user-name (name(MAX)). . . . .386.  Printer Description Attributes Related to Notification . . . .386.1.  printer-state-change-time (integer(1:MAX)) . . . . . . .396.2.  printer-state-change-date-time (dateTime). . . . . . . .397.  New Values for Existing Printer Description Attributes . . . .397.1.  operations-supported (1setOf type2 enum) . . . . . . . .408.  Attributes Only in Event Notifications . . . . . . . . . . . .408.1.  notify-subscribed-event (type2 keyword). . . . . . . . .408.2.  notify-text (text(MAX)). . . . . . . . . . . . . . . . .419.  Event Notification Content . . . . . . . . . . . . . . . . . .419.1.  Content of Machine Consumable Event Notifications. . . .44             9.1.1.  Event Notification Content Common to All Events. 44             9.1.2.  Additional Event Notification Content for Job                     Events . . . . . . . . . . . . . . . . . . . . .45Herriot & Hastings          Standards Track                     [Page 2]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005             9.1.3.  Additional Event Notification Content for                     Printer Events . . . . . . . . . . . . . . . . .469.2.  Content of Human Consumable Event Notification . . . . .46             9.2.1.  Event Notification Content Common to All Events. 47             9.2.2.  Additional Event Notification Content for Job                     Events . . . . . . . . . . . . . . . . . . . . .49             9.2.3.  Additional Event Notification Content for                     Printer Events . . . . . . . . . . . . . . . . .4910. Delivery Methods . . . . . . . . . . . . . . . . . . . . . . .5011. Operations for Notification. . . . . . . . . . . . . . . . . .5211.1. Subscription Creation Operations . . . . . . . . . . . .5211.1.1. Create-Job-Subscriptions Operation . . . . . . .5211.1.2. Create-Printer-Subscriptions operation . . . . .55             11.1.3. Job Creation Operations - Extensions for                     Notification . . . . . . . . . . . . . . . . . .5611.2 Other Operations. . . . . . . . . . . . . . . . . . . . .58             11.2.1. Restart-Job Operation - Extensions for                     Notification . . . . . . . . . . . . . . . . . .58             11.2.2. Validate-Job Operation - Extensions for                     Notification . . . . . . . . . . . . . . . . . .59             11.2.3. Get-Printer-Attributes - Extensions for                     Notification . . . . . . . . . . . . . . . . . .5911.2.4. Get-Subscription-Attributes operation. . . . . .6011.2.5. Get-Subscriptions operation. . . . . . . . . . .6311.2.6. Renew-Subscription operation . . . . . . . . . .6611.2.7. Cancel-Subscription operation. . . . . . . . . .6812. Status Codes . . . . . . . . . . . . . . . . . . . . . . . . .7012.1. successful-ok-ignored-subscriptions (0x0003) . . . . . .7012.2. client-error-ignored-all-subscriptions (0x0414). . . . .7113. Status Codes in Subscription Attributes Groups . . . . . . . .7113.1. client-error-uri-scheme-not-supported (0x040C) . . . . .71       13.2. client-error-attributes-or-values-not-supported (0x040B) 7113.3. client-error-too-many-subscriptions (0x0415) . . . . . .7213.4. successful-ok-too-many-events (0x0005) . . . . . . . . .72       13.5. successful-ok-ignored-or-substituted-attributes (0x0001) 7214. Encodings of Additional Attribute Tags . . . . . . . . . . . .7215. Conformance Requirements . . . . . . . . . . . . . . . . . . .7215.1. Conformance requirements for clients . . . . . . . . . .7315.2. Conformance requirements for Printers. . . . . . . . . .73   16. Model for Notification with Cascading Printers (Informative) . 7417. Distributed Model for Notification (Informative) . . . . . . .7518. Extended Notification Recipient (Informative). . . . . . . . .7619. Object Model for Notification (Normative). . . . . . . . . . .7719.1. Object relationships . . . . . . . . . . . . . . . . . .7819.2. Printer Object and Per-Printer Subscription Objects. . .7919.3. Job Object and Per-Job Subscription Objects. . . . . . .7920. Per-Job versus Per-Printer Subscription Objects (Normative). .7921. Normative References . . . . . . . . . . . . . . . . . . . . .80Herriot & Hastings          Standards Track                     [Page 3]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200522. Informative References . . . . . . . . . . . . . . . . . . . .8023. IANA Considerations. . . . . . . . . . . . . . . . . . . . . .8123.1. Attribute Registrations. . . . . . . . . . . . . . . . .82       23.2. Additional Enum Attribute Value Registrations within             the IPP registry . . . . . . . . . . . . . . . . . . . .8323.3. Operation Registrations. . . . . . . . . . . . . . . . .8323.4. Status code Registrations. . . . . . . . . . . . . . . .8323.5. Attribute Group tag Registrations. . . . . . . . . . . .8423.6. Registration of Events . . . . . . . . . . . . . . . . .8423.7. Registration of Event Notification Delivery Methods. . .85             23.7.1. Requirements for Registration of Event                     Notification Delivery Methods. . . . . . . . . .8523.7.2. Registration Procedure . . . . . . . . . . . . .8623.7.3. Delivery Method Document Registrations . . . . .8723.7.4. Registration Template. . . . . . . . . . . . . .8824. Internationalization Considerations. . . . . . . . . . . . . .8925. Security Considerations. . . . . . . . . . . . . . . . . . . .8925.1. Client access rights . . . . . . . . . . . . . . . . . .8925.2. Printer security threats . . . . . . . . . . . . . . . .9125.3. Notification Recipient security threats. . . . . . . . .9126. Description of the base IPP documents (Informative). . . . . .9227. Contributors . . . . . . . . . . . . . . . . . . . . . . . . .93   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .94   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .95Tables   Table 1  - Subscription Template Attributes. . . . . . . . . . . .20   Table 2  - Subscription Description Attributes . . . . . . . . . .35   Table 3  - Printer Description Attributes Associated with              Notification. . . . . . . . . . . . . . . . . . . . . .39   Table 4  - Operation-id assignments. . . . . . . . . . . . . . . .40   Table 5  - Attributes in Event Notification Content. . . . . . . .45   Table 6  - Additional Event Notification Content for Job Events. .46   Table 7  - Combinations of Events and Subscribed Events for              "job-impressions-completed" . . . . . . . . . . . . . .46   Table 8  - Additional Event Notification Content for Printer              Events. . . . . . . . . . . . . . . . . . . . . . . . .46   Table 9  - Printer Name in Event Notification Content. . . . . . .48   Table 10 - Event Name in Event Notification Content. . . . . . . .48   Table 11 - Event Time in Event Notification Content. . . . . . . .48   Table 12 - Job Name in Event Notification Content. . . . . . . . .49   Table 13 - Job State in Event Notification Content . . . . . . . .49   Table 14 - Printer State in Event Notification Content . . . . . .50   Table 15 - Information about the Delivery Method . . . . . . . . .51   Table 16 - Printer Conformance Requirements for Operations . . . .74Herriot & Hastings          Standards Track                     [Page 4]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005Figures   Figure 1 - Model for Notification. . . . . . . . . . . . . . . . .9   Figure 2 - Model for Notification with Cascading Printers. . . . .75   Figure 3 - Opaque Use of a Notification Server Transparent to the              Client. . . . . . . . . . . . . . . . . . . . . . . . .76   Figure 4 - Use of an Extended Notification Recipient transparent              to the Printer. . . . . . . . . . . . . . . . . . . . .77   Figure 5 - Object Model for Notification . . . . . . . . . . . . .781.  Introduction   This IPP notification specification is an OPTIONAL extension to   Internet Printing Protocol/1.1: Model and Semantics [RFC2911,RFC2910].  See Appendix 29 for a description of the base IPP   documents.  This document in combination with the following documents   is intended to meet the most important notification requirements   described in [RFC3997]:      Internet Printing Protocol (IPP):  "Job Progress Attributes"      [RFC3381]      Internet Printing Protocol (IPP):  "The 'ippget' Delivery Method      for Event Notifications" [RFC3996]   This specification REQUIRES that clients and Printers support the   'ippget' Pull Delivery Method [RFC3996].  Conforming client and   Printer implementations MAY support additional Push or Pull Delivery   Methods as well.  Note: this document does not define any Delivery   Methods itself, but it does define the rules for conformance for   Delivery Method Documents and their registration with IANA (seesection 23.7.3).   Refer to the Table of Contents for the layout of this document.1.1.  Notification Overview   This document defines operations that a client can perform in order   to create Subscription Objects in a Printer and carry out other   operations on them.  A Subscription Object represents a Subscription   abstraction.  The Subscription Object specifies that when one of the   specified Events occurs, the Printer delivers an asynchronous Event   Notification to the specified Notification Recipient via the   specified Delivery Method (i.e., protocol).   When a client (called a Subscribing Client) performs an operation   that creates a Subscription Object, the operation contains one or   more Subscription Template Attributes Groups.  Each such group holdsHerriot & Hastings          Standards Track                     [Page 5]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   information used by the Printer to initialize a newly created   Subscription Object.  The Printer creates one Subscription Object for   each Subscription Template Attributes Group in the operation.  This   group is like the Job Template Attributes group defined in [RFC2911].   The following is an example of the information included in a   Subscription Template Attributes Group (seesection 5 for details on   the Subscription Object attributes):   1. The names of Subscribed Events that are of interest to the      Notification Recipient.   2. The address (URL) of one Notification Recipient for a Push      Delivery Method or the method for a Pull Delivery Method.   3. The Delivery Method (i.e., the protocol) which the Printer uses to      deliver the Event Notification.   4. Some opaque data that the Printer delivers to the Notification      Recipient in the Event Notification.  For example, the      Notification Recipient might use this opaque data as a forwarding      address for the Event Notification.   5. The charset to use in text fields within an Event Notification   6. The natural language to use in the text fields of the Event      Notification   7. The requested lease time in seconds for the Subscription Object   An operation that creates a Subscription Object is called a   Subscription Creation Operation.  These operations include the   following operations (seesection 11.1 for further details):      -  Job Creation operation: When a client performs such an         operation (Print-Job, Print-URI, and Create-Job), a client can         include zero or more Subscription Template Attributes Groups in         the request.  The Printer creates one Subscription Object for         each Subscription Template Attributes Group in the request, and         the Printer associates each such Subscription Object with the         newly created Job.  This document extends these operations'         definitions in [RFC2911] by adding Subscription Template         Attributes Groups in the request and Subscription Attributes         Groups in the response.      -  Create-Job-Subscriptions operation: A client can include one or         more Subscription Template Attributes Groups in the request.         The Printer creates one Subscription Object for eachHerriot & Hastings          Standards Track                     [Page 6]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005         Subscription Template Attributes Group and associates each with         the job that is the target of this operation.      -  Create-Printer-Subscriptions operation: A client can include         one or more Subscription Template Attributes Groups in the         request.  The Printer creates one Subscription Object for each         Subscription Template Attributes Group and associates each with         the Printer that is the target of this operation.   For each of the above operations:      -  the Printer associates a Subscription Object with the Printer         or a specific Job.  When a Subscription Object is associated         with a Job Object, it is called a Per-Job Subscription Object.         When a Subscription Object is associated with a Printer Object,         it is called a Per-Printer Subscription Object.      -  the response contains one Subscription Attributes Group for         each Subscription Template Attributes Group in the request and         in the same order.  When the Printer successfully creates a         Subscription Object, its corresponding Subscription Attributes         Group contains the "notify-subscription-id" attribute.  This         attribute uniquely identifies the Subscription Object and is         analogous to a "job-id" for a Job object.  Some operations         described below use the "notify-subscription-id" to identify         the target Subscription Object.   This document defines the following additional operations (seesection 11.2 for further details):   -  Restart-Job operation: When a client performs the Restart-Job      operation [RFC2911], the Printer re-uses the same Job and its      Subscription Objects.   -  Validate-Job operation: When a client performs this operation, a      client can include zero or more Subscription Template Attributes      Groups in the request.  The Printer determines if it could create      one Subscription Object for each Subscription Template Attributes      Group in the request.  This document extends this operation's      definition in [RFC2911] by adding Subscription Template Attributes      Groups in the request and Subscription Attributes Groups in the      response.   -  Get-Subscription-Attributes operation: This operation allows a      client to obtain the specified attributes of a target Subscription      Object.Herriot & Hastings          Standards Track                     [Page 7]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   -  Get-Subscriptions operation: This operation allows a client to      obtain the specified attributes of all Subscription Objects      associated with the Printer or a specified Job.   -  Renew-Subscription operation: This operation renews the lease on      the target Per-Printer Subscription Object before it expires.  A      newly created Per-Printer Subscription Object receives an initial      lease.  It is the duty of the client to use this operation      frequently enough to preserve a Per-Printer Subscription Object.      The Printer deletes a Per-Printer Subscription Object when its      lease expires.  A Per-Job Subscription Object last exactly as long      as its associated Job Object and thus doesn't have a lease.   -  Cancel-Subscription operation: This operation (1) cancels the      lease on the specified Per-Printer Subscription Object and thereby      deletes the Per-Printer Subscription Object or (2) deletes the      Per-Job Subscription Object.   When an Event occurs, the Printer finds all Subscription Objects   listening for the Event (seesection 9 for details on finding such   Subscription Objects).  For each such Subscription Object, the   Printer:   a) generates an Event Notification with information specified insection 9, AND   b) either:      i)  If the Delivery Method is a Push Delivery Method as indicated          by the presence of the Subscription Object's "notify-          recipient-uri" attribute, delivers the Event Notification          using the Delivery Method and target address identified in the          Subscription Object's "notify-recipient-uri" attribute, OR      ii) If the Delivery Method is a Pull Delivery Method as indicated          by the presence of the Subscription Object's "notify-pull-          method" attribute, saves Event Notification for a time period          called the Event Life defined by the Delivery Method, i.e.,          the Notification Recipient is expected to fetch the Event          Notifications.2.  Models for Notification2.1.  Model for Simple Notification (Normative)   As part of a Subscription Creation Operation, an IPP Printer (i.e.,   located in an output device or a server) creates one or more   Subscription Objects.  In a Subscription Creation Operation, theHerriot & Hastings          Standards Track                     [Page 8]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   client specifies the Notification Recipient to which the Printer is   to deliver Event Notifications.  A Notification Recipient can be the   Subscribing Client or a third party.   Figure 1 shows the Notification model for a simple Client-Printer   relationship.   embedded printer:                                        output device or server   PDA, desktop, or server                 +---------------+        +--------+                         |  ###########  |        | client |-----Subscription ---------># Printer #  |        +--------+  Creation Operation     |  # Object  #  |     +------------+                        |  #####|#####  |     |Notification|                        +-------|-------+     |Recipient   |<----IPP Event Notifications----+     +------------+    (Job and/or Printer Events)                  Figure 1 - Model for Notification2.2.  Additional Models for Notification (Informative)   Additional models have been proposed (see Appendices 16, 17, and 18).3.  Terminology   This section defines terminology used throughout this document.   Other terminology is defined in [RFC2911].3.1.  Conformance Terminology   Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD   NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to   conformance as defined inRFC 2119 [RFC2119] and [RFC2911]section12.1.  If an implementation supports the extension defined in this   document, then these terms apply; otherwise, they do not.  These   terms define conformance to this document only; they do not affect   conformance to other documents, unless explicitly stated otherwise.   Note: a feature that is OPTIONAL in this document becomes REQUIRED if   the Printer implements a Delivery Method that REQUIRES the feature.   READ-ONLY - an adjective used in an attribute definition to indicate   that an IPP Printer MUST NOT allow the attribute's value to be   modified.Herriot & Hastings          Standards Track                     [Page 9]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20053.2.  Other Terminology   This document uses the same terminology as [RFC2911], such as   "client", "Printer", "attribute", "attribute value", "keyword",   "operation", "request", "response", "administrator", "operator", and   "support".  In addition, the following terms are defined for use in   this document and the Delivery Method Documents:   Compound Event Notification - two or more Event Notifications that a   Printer delivers together as a single request or response.  The   Delivery Method Document specifies whether the Delivery Method   supports Compound Event Notifications.   Delivery Method - the mechanism by which the Printer delivers an   Event Notification.   Delivery Method Document - a document, separate from this document,   that defines a Delivery Method.   Event - some occurrence (either expected or unexpected) within the   printing system of a change of state, condition, or configuration of   a Job or Printer object.  An Event occurs only at one instant in time   and does not span the time the physical Event takes place.  For   example, jam-occurred and jam-cleared are two distinct, instantaneous   Events, even though the jam may last for a while.   Event Life - For a Pull Delivery Method, the length of time in   seconds after an Event occurs during which the Printer will retain   that Event for delivery in an Event Notification.  After the Event   Life expires, the Printer will no longer deliver an Event   Notification for that Event in such a response.   Event Notification - the information about an Event that the Printer   delivers when an Event occurs.   Event Notification Attributes Group - The attributes group which is   used to deliver an Event Notification in a request (Push Delivery   Methods) or a response (Pull Delivery Methods).   Human Consumable Event Notification - localized text for human   consumption only.  There is no standardized format and thus programs   should not try to parse this text.   Job Creation operation - One of the operations that creates a Job   object:  Print-Job, Print-URI and Create-Job.  The Restart-Job   operation [RFC2911] is not considered a Job Creation operation, since   the Printer re-uses the existing Job object.  The Validate-Job   operation is not considered a Job Creation operation because no JobHerriot & Hastings          Standards Track                    [Page 10]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   object is created.  Therefore, when a statement also applies to   either the Restart-Job and/or the Validate-Job operation, they are   mentioned explicitly.   Job Event - an Event caused by some change in a particular job on the   Printer, e.g., 'job-completed'.   Machine Consumable Event Notification - bytes for program   consumption.  The bytes are formatted according to the Delivery   Method document.   Notification - when not in the phrases 'Event Notification' and   'Notification Recipient' - the concepts of this specification, i.e.,   Events, Subscription Objects, and Event Notifications.   Notification Recipient - the entity to which the Printer delivers an   Event Notification.  For Push Delivery Methods, the IPP Printer sends   the Notifications to a Notification Recipient.  For Pull Delivery   Methods, the Notification Recipient is acting in the role of an IPP   client and requests Event Notifications and so the terms "client" and   "Notification Recipient" are used interchangeably with such Delivery   Methods.  For example, see [RFC3996].   Per-Job Subscription Object - A Subscription Object that is   associated with a single Job.  The Create-Job-Subscriptions operation   and Job Creation operations create such an object.   Per-Printer Subscription Object - A Subscription Object that is   associated with the Printer as a whole.  The Create-Printer-   Subscriptions operation creates such an object.   Printer Event - an Event caused by some change in the Printer that is   not specific to a job, e.g., 'printer-state-changed'.   Pull Delivery Method - The Printer saves Event Notifications for some   event life time and expects the Notification Recipient to request   Event Notifications.  The Printer delivers the Event Notifications in   a response to such a request.   Push Delivery Method -The Printer delivers the Event Notification   shortly after an Event occurs.   Subscribed Event - an Event that the Subscribing Client expresses   interest in by making it a value of the "notify-events" attribute on   a Subscription Object.   Subscribed Job Event - a Subscribed Event that is a Job Event.Herriot & Hastings          Standards Track                    [Page 11]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Subscribed Printer Event - a Subscribed Event that is a Printer   Event.   Subscribing Client - The client that creates the Subscription Object.   Subscription Attributes Group - The attributes group in a response   that contains Subscription Object attributes.   Subscription Creation Operation - An operation that creates a   Subscription Object:  Job Creation operations, Create-Job-   Subscriptions operation, Create-Printer-Subscriptions operation.  In   the context of a Job Creation operation, a Subscription Creation   Operation is the part of the Job Creation operation that creates one   or more Subscription objects.  The Restart-Job operation [RFC2911] is   not considered a Subscription Creation Operation, since the Printer   re-uses the Job's existing Subscription Objects, rather than creating   any new Subscription Objects.   Subscription Creation Request - The request portion of a Subscription   Creation Operation.   Subscription Description Attributes - Subscription Object attributes   that a Printer supplies during a Subscription Creation Operation.   Subscription Object - An object containing a set of attributes that   indicate:  the Notification Recipient (for Push Delivery Method   only), the Delivery Method, the Subscribed Events that cause the   Printer to deliver an Event Notification, and the information to   include in an Event Notification.   Subscription Template Attributes - Subscription Object attributes   that a client can supply in a Subscription Creation Operation and   associated Printer Object attributes that specify supported and   default values for the Subscription Object attributes.   Subscription Template Attributes Group - The attributes group in a   request that contains Subscription Object attributes that are   Subscription Template Attributes.4.  Object Relationships   This section defines the object relationships between the Printer,   Job, and Subscription Objects.  It does not define the   implementation.  For an illustration of these relationships, see   Appendix 19.Herriot & Hastings          Standards Track                    [Page 12]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20054.1.  Printer and Per-Printer Subscription Objects   1. A Printer object can be associated with zero or more Per-Printer      Subscription Objects.   2. Each Per-Printer Subscription Object is associated with exactly      one Printer object.4.2.  Printer, Job and Per-Job Subscription Objects   1. A Printer object is associated with zero or more Job objects.   2. Each Job object is associated with exactly one Printer object.   3. A Job object is associated with zero or more Per-Job Subscription      Objects.   4. Each Per-Job Subscription Object is associated with exactly one      Job object.5.  Subscription Object   A Subscribing Client creates a Subscription Object with a   Subscription Creation Operation in order to indicate its interest in   certain Events.  Seesection 11 for a description of these   operations.  When an Event occurs, the Subscription Object specifies   to the Printer where to deliver Event Notifications for Push Delivery   Methods only, how to deliver them, and what to include in them.  Seesection 9 for details on the contents of an Event Notification.   Using the IPP Job Template attributes as a model (see[RFC2911]   section 4.2), the attributes of a Subscription Object are divided   into two categories: Subscription Template Attributes and   Subscription Description Attributes.   Subscription Template attributes are, in turn, like the Job Template   attributes, divided into   1. Subscription Object attributes that a client can supply in a      Subscription Creation Request and   2. their associated Printer Object attributes that specify supported      and default values for the Subscription Object attributes   The remainder of this section specifies general rules for   Subscription Template Attributes and describes each attribute in a   Subscription Object.Herriot & Hastings          Standards Track                    [Page 13]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20055.1.  Rules for Support of Subscription Template Attributes   Subscription Template Attributes are fundamental to the Notification   model described in this specification.  The client supplies these   attributes in Subscription Creation Operations and the Printer uses   these attributes to populate a newly created Subscription Object.   Subscription Objects attributes that are Subscription Template   Attributes conform to the following rules:   1. Each attribute's name starts with the prefix string "notify-" and      this document calls such attributes "notify-xxx".   2. For each "notify-xxx" Subscription Object attribute defined in      column 1 of Table 1 insection 5.3, Table 1 specifies      corresponding Printer attributes: "notify-xxx-default", "notify-      xxx-supported", "yyy-supported" and "notify-max-xxx-supported"      defined in column 2 of Table 1.  Note "xxx" stands for the same      string in each case and "yyy" stands for some other string.   3. If a Printer supports "notify-xxx" in column 1 of Table 1, then      the Printer MUST support all associated attributes specified in      column 2 of Table 1.  For example, Table 1 shows that if the      Printer supports "notify-events", it MUST support "notify-events-      default", "notify-events-supported" and "notify-max-events-      supported".   4. If a Printer does not support "notify-xxx" in column 1 of Table 1,      then the Printer MUST NOT support any associated "notify-yyy"      attributes specified in column 2 of Table 1.  For example, Table 1      shows that if the Printer doesn't support "notify-events", it MUST      NOT support "notify-events-default", "notify-events-supported" and      "notify-max-events-supported".  Note this rule does not apply to      attributes whose names do not start with the string "notify-" and      are thus defined in another object and used by other attributes.   5. Most "notify-xxx" attributes have a corresponding "yyy-supported"      attribute that specifies the supported values for "notify-xxx".      Column 2 of Table 1 specifies the name of each "yyy-supported"      attribute.  The naming rules of IPP/1.1 (see [RFC2911]) are used      when "yyy-supported" is "notify-xxx-supported".   6. Some "notify-xxx" attributes have a corresponding "notify-xxx-      default" attribute that specifies the value for "notify-xxx" if      the client does not supply it.  Column 2 of Table 1 specifies the      name of each "notify-xxx-default" attribute.  The naming rules of      IPP/1.1 (see [RFC2911]) are used.Herriot & Hastings          Standards Track                    [Page 14]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   If a client wishes to present an end user with a list of supported   values from which to choose, the client SHOULD query the Printer for   its supported value attributes.  The client SHOULD also query the   default value attributes.  If the client then limits selectable   values to only those values that are supported, the client can   guarantee that the values supplied by the client in the create   request all fall within the set of supported values at the Printer.   When querying the Printer, the client MAY enumerate each attribute by   name in the Get-Printer-Attributes Request, or the client MAY just   supply the 'subscription-template' group name in order to get the   complete set of supported attributes (both supported and default   attributes - seesection 11.2.3).5.2.  Rules for Processing Subscription Template Attributes   This section defines a detailed set of rules that a Printer follows   when it processes Subscription Template Attributes in a Subscription   Creation Request.  These rules are similar to the rules for   processing Operation attributes in [RFC2911].  That is, the Printer   may or may not support an attribute and a client may or may not   supply the attribute.  Some combinations of these cases are OK.   Others return warnings or errors, and perhaps a list of unsupported   attributes.   A Printer MUST implement the following behavior for processing   Subscription Template Attributes in a Subscription Creation Request:   1. If a client supplies a "notify-xxx" attribute from column 1 of      Table 1 and the Printer supports it and its value, the Printer      MUST populate the attribute on the created Subscription Object.   2. If a client supplies a "notify-xxx" attribute from column 1 of      Table 1 and the Printer doesn't support it or its value, the      Printer MUST NOT populate the attribute on the created      Subscription Object with it.  The Printer MUST do one of the      following:      a) If the value of the "notify-xxx" attribute is unsupported, the         Printer MUST return the attribute with its value in the         Subscription Attributes Group of the response.      b) If "notify-xxx" is an unsupported attribute, the Printer MUST         return the attribute in the Subscription Attributes Group of         the response with the 'unsupported' out-of-band value.      Note:  The rules of this step are the same as for Unsupported      Attributes[RFC2911] section 3.1.7.  except that the unsupported      attributes are returned in the Subscription Attributes GroupHerriot & Hastings          Standards Track                    [Page 15]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      rather than the Unsupported Attributes Group because Subscription      Creation Operations can create more than one Subscription Object).   3. If a client is REQUIRED to supply a "notify-xxx" attribute from      column 1 of Table 1 and the Printer doesn't support the supplied      value, the Printer MUST NOT create a Subscription Object.  The      rules for Unsupported Attributes in step #2 still apply.   4. If a client does not supply a "notify-xxx" attribute from column 1      of Table 1 and the attribute is REQUIRED for the client to supply,      the Printer MUST reject the Subscription Creation Operation      (including Job Creation operations) without creating a      Subscription Object, and MUST return in the response:      a) the status code 'client-error-bad-request' AND      b) no Subscription Attribute Groups.   5. If a client does not supply a "notify-xxx" attribute from column 1      of Table 1 that is OPTIONAL for the client to supply, and column 2      of Table 1 either:      a) specifies a "notify-xxx-default" attribute, the Printer MUST         behave as if the client had supplied the "notify-xxx-default"         attribute (see step #1) and populate the Subscription object         with the value of the "notify-xxx-default" attribute as part of         the Subscription Creation operation (unlike Job Template         attributes where the Printer does not populate the Job object         with defaults - see [RFC2911]) OR      b) does not specify a "notify-xxx-default" attribute, the Printer         MUST populate the "notify-xxx" attribute on the Subscription         Object according to the definition of the "notify-xxx"         attribute in asection 5.3.  For some attributes, the "notify-         xxx" is populated with the value of some other attribute, and         for others, the "notify-xxx" is NOT populated on the         Subscription object at all.   6. A Printer MUST create a Subscription Object for each Subscription      Template Attributes group in a request unless the Printer:      a) encounters some attributes in a Subscription Template         Attributes Group that require the Printer not to create the         Subscription Object OR      b) would create a Per-Job Subscription Object when it doesn't have         space for another Per-Job Subscription Object ORHerriot & Hastings          Standards Track                    [Page 16]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      c) would create a Per-Printer Subscription Object when it doesn't         have space for another Per-Printer Subscription Object.   7. A response MUST contain one Subscription Attributes Group for each      Subscription Template Attributes Group in the request (and in the      same order) whether the Printer creates a Subscription Object from      the Subscription Template Attributes Group or not.  However, the      attributes in each Subscription Attributes Group can be in any      order.   8. The Printer MUST populate each Subscription Attributes Group of      the response such that each contains:      a) the "notify-subscription-id" attribute (seesection 5.4.1), if         and only if the Printer creates a Subscription Object.      b) the "notify-lease-duration" attribute (seesection 5.3.8), if         and only if the Printer creates a Per-Printer Subscription         Object.  The value of this attribute is the value of the         Subscription Object's "notify-lease-duration" attribute.  This         value MAY be different from the client-supplied value (seesection 5.3.8).  If a client supplies this attribute in the         creation of a Per-Job Subscription Object, it MUST appear in         this group with the out-of-band value 'unsupported' to indicate         that the Printer doesn't support it in this context.      c) all of the unsupported Subscription Template Attributes from         step #2.  Note, they are not returned in the Unsupported         Attributes Group in order to separate the unsupported         attributes for each Subscription Object.      d) the "notify-status-code" attribute if the Printer does not         create the Subscription Object or if there are unsupported         attributes from step #2.  The possible values of the "notify-         status-code" attribute are shown below (seesection 13 for more         details).  The Printer returns the first value in the list         below that describes the status.         'client-error-uri-scheme-not-supported':  the Subscription            Object was not created because the scheme of the "notify-            recipient-uri" attribute is not supported.  Seesection 13.1            for more details about this status code.  See step #3 in            this section for the case that causes this error, and the            resulting step #6a) that causes the Printer not to create            the Subscription Object.Herriot & Hastings          Standards Track                    [Page 17]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005         'client-error-attributes-or-values-not-supported':  the            Subscription Object was not created because the method of            the "notify-pull-method" attribute is not supported.  Seesection 13.1 for more details about this status code.  See            step #3 in this section for the case that causes this error,            and the resulting step #6a) that causes the Printer not to            create the Subscription Object.         'client-error-too-many-subscriptions':  the Subscription            Object was not created because the Printer has no space for            additional Subscription Objects.  The client MAY try again            later.  Seesection 13.3 for more details about this status            code.  See steps #6b) and #6c) in this section for the cases            that causes this error.         'successful-ok-too-many-events':  the Subscription Object was            created without the "notify-events" values included in this            Subscription Attributes Group because the "notify-events"            attribute contains too many values.  Seesection 13.4 for            more details about this status code.  See step #2 in this            section andsection 5.3.3 for the cases that cause this            status code.         'successful-ok-ignored-or-substituted-attributes':  the            Subscription Object was created but some supplied            Subscription Template Attributes are unsupported.  These            unsupported attributes are also in the Subscription            Attributes Group.  Seesection 13.5 for more details about            this status code.  See step #2 in this section for the cases            that cause this status code.   9. The Printer MUST validate all Subscription Template Attributes and      MUST return all unsupported attributes and values in the      corresponding Subscription Attributes Group of the response (see      step #2) unless it determines that it could not create additional      Subscription Objects because of condition #6b) or condition #6c).      Then, the Printer NEED NOT validate these additional Subscription      Template Attributes and the client MUST NOT expect to find      unsupported attributes from step #2 in such additional      Subscription Attribute Groups.5.3.  Subscription Template Attributes   This section contains the Subscription Template Attributes defined   for the Subscription and Printer objects.Herriot & Hastings          Standards Track                    [Page 18]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 1 below shows the Subscription Template Attributes and has two   columns:   -  Attribute in Subscription Object: the name and attribute syntax of      each Subscription Object Attribute that is a Subscription Template      Attribute   -  Default and Supported Printer Attributes: the default attribute      and supported Printer attributes that are associated with the      attribute in column 1.   The "notify-recipient-uri" attribute is for use with Push Delivery   Methods.  The "notify-pull-method" attribute is for use with Pull   Delivery Methods.   For Push Delivery Methods, a Printer MUST support all attributes in   Table 1 below except for "notify-pull-method" and "notify-attributes"   (and "notify-pull-method-supported" and "notify-attributes-   supported").  For Pull Delivery Methods, a Printer MUST support all   attributes in Table 1 below except for "notify-recipient-uri" and   "notify-attributes" (and "notify-schemes-supported" and "notify-   attributes-supported").  If a Printer supports both Push and Pull   Delivery Methods, then it MUST support both "notify-recipient-uri"   and "notify-pull-method" attributes.   For Pull Delivery Methods, a client MUST supply "notify-recipient-   uri" and MAY omit any of the rest of the attributes in column 1 of   Table 1 in a Subscription Creation Request.  For Push Delivery   Methods, a client MUST supply "notify-pull-method" and MAY omit any   of the rest of the attributes in column 1 of Table 1 in a   Subscription Creation Request.  A client MUST NOT supply both   "notify-recipient-uri" and "notify-pull-method" attributes in the   same Subscription Creation Request.   Note:  The Default and Supported Printer attributes listed in column   2 of Table 1 do not have separate sections in this specification   defining their semantics.  Instead, the section for the corresponding   Subscription Object attribute (column 1 of Table 1) contains the   semantics of these Printer attributes.  This approach follows the   precedence of the Job Template attributes insection 4.2 of [RFC2911]   where the corresponding "xxx-default" and "xxx-supported" Printer   attributes are defined in the same section as the "xxx" Job   attribute.Herriot & Hastings          Standards Track                    [Page 19]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 1 - Subscription Template Attributes   Attribute in Subscription     Default and Supported Printer   Object                        Attributes   notify-recipient-uri (uri) *  notify-schemes-supported  (1setOf                                 uriScheme)   notify-pull-method (type2     notify-pull-method-supported (1setOf   keyword) **                   type2 keyword)   notify-events (1setOf type2   notify-events-default (1setOf type2   keyword)                      keyword)                                 notify-events-supported (1setOf type2                                 keyword)                                 notify-max-events-supported                                 (integer(2:MAX))   notify-attributes (1setOf     notify-attributes-supported (1setOf   type2 keyword)                type2 keyword)   notify-user-data   (octetString(63))   notify-charset (charset)      charset-supported (1setOf charset)   notify-natural-language       generated-natural-language-supported   (naturalLanguage)             (1setOf naturalLanguage)   notify-lease-duration         notify-lease-duration-default   (integer(0:MAX))              (integer(0:67108863))                                 notify-lease-duration-supported                                 (1setOf (integer(0: 67108863) |                                 rangeOfInteger(0:67108863)))   notify-time-interval   (integer(0:MAX))   * "notify-recipient-uri" is for Push Delivery Methods only.   ** "notify-pull-method" is for Pull Delivery Methods only.5.3.1.  notify-recipient-uri (uri)   This attribute's value is a URL, which is a special case of a URI.   Its value consists of a scheme and an address.  The address specifies   the Notification Recipient and the scheme specifies the Push Delivery   Method for each Event Notification associated with this Subscription   Object.   If a Printer supports any Push Delivery Methods, a Printer MUST   support this attribute and return the value as supplied by the client   (no case conversion or other canonicalization) in any operation   response that includes this attribute.Herriot & Hastings          Standards Track                    [Page 20]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   For a Push Delivery Method, a client MUST supply this attribute in a   Subscription Creation Operation.  Thus there is no need for a default   Printer attribute.   The URI scheme of the value of this attribute on a Subscription   object MUST be a value of the "notify-schemes-supported (1setOf   uriScheme)" Printer attribute (seesection 5.3.1.1).  Note: According   to [RFC2396] the ":" terminates the scheme and so is not part of the   scheme.  Therefore, values of the "notify-schemes-supported" Printer   attribute do not include the ":" character.   If the client supplies an unsupported scheme in the value of this   attribute, then the Printer MUST NOT create the Subscription Object   and MUST return the "notify-status-code" attribute with the 'client-   error-uri-scheme-not-supported' value in the Subscription Attributes   Group in the response.5.3.1.1.  notify-schemes-supported(1setOf uriScheme)   This attribute contains the URI schemes supported in the "notify-   recipient-uri" Subscription Template attribute.  See sections5.1 and   5.2 for the behavior of "xxx-supported" Subscription Template Printer   attributes.5.3.2.  notify-pull-method (type2 keyword)   This attribute's value is a type2 keyword indicating which Pull   Delivery Method is to be used.   Since a Printer MUST support the 'ippget' Pull Delivery Method   [RFC3996] (seesection 15), a Printer MUST support this attribute and   return the value as supplied by the client in any operation response   that includes this attribute.   For a Pull Delivery Method, a client MUST supply this attribute in a   Subscription Creation Operation.  Thus there is no need for a default   Printer attribute.   The keyword value of this attribute on a Subscription object MUST be   a value of the "notify-pull-method-supported (1setOf type2 keyword)"   Printer attribute.   If the client supplies an unsupported method in the value of this   attribute, then the Printer MUST NOT create the Subscription Object   and MUST return the "notify-status-code" attribute with the 'client-   error-attributes-or-values-not-supported' value in the Subscription   Attributes Group in the response.Herriot & Hastings          Standards Track                    [Page 21]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20055.3.2.1.  notify-pull-method-supported (1setOf type2 keyword)   See sections5.1 and5.2 for the behavior of "xxx-supported"   Subscription Template Printer attributes.5.3.3.  notify-events (1setOf type2 keyword)   This attribute contains a set of Subscribed Events.  When an Event   occurs and it "matches" a value of this attribute, the Printer   delivers an Event Notification using information in the Subscription   Object.  The details of "matching" are described subsection 5.3.3.5.   A Printer MUST support this attribute.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in   Subscription Creation Operation, the Printer MUST populate this   attribute on the Subscription Object with its "notify-events-default"   attribute value.   Each keyword value of this attribute on a Subscription Object MUST be   a value of the  "notify-events-supported (1setOf type2 keyword)"   Printer attribute.   The number of values of this attribute MUST NOT exceed the value of   the "notify-max-events-supported" attribute.  A Printer MUST support   at least 2 values per Subscription Object.  If the number of values   supplied by a client in a Subscription Creation Operation exceeds the   value of this attribute, the Printer MUST treat extra values as   unsupported values and MUST use the value of 'successful-ok-too-   many-events' for the "notify-status-code" attribute in the   Subscription Attributes Group of the response.5.3.3.1.  notify-events-default (1setOf type2 keyword)   See sections5.1 and5.2 for the behavior of "xxx-default"   Subscription Template Printer attributes.5.3.3.2.  notify-events-supported (1setOf type2 keyword)   See sections5.1 and5.2 for the behavior of "xxx-supported"   Subscription Template Printer attributes.Herriot & Hastings          Standards Track                    [Page 22]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20055.3.3.3.  notify-max-events-supported (integer(2:MAX))   This attribute specified the maximum number of events that the   Printer supports for the "notify-events" Subscription Template   attribute.  See sections5.1 and5.2 for the behavior of "xxx-   supported" Subscription Template Printer attributes.5.3.3.4.  Standard Values for Subscribed Events   Each value of this attribute is a keyword and it specifies a   Subscribed Event that represents certain changes.  Some keywords   represent a subset of changes of another keyword, e.g., 'job-   completed' is an Event value which is a sub-value of 'job-state-   change'.  Seesection 5.3.3.5 for the case where this attribute   contains both a value and a sub-value.   The values in this section are divided into three categories: No   Events, Job Events and Printer Events.   A Printer MUST support the Events indicated as "REQUIRED" and MAY   support the Events indicated as "OPTIONAL".5.3.3.4.1.  No Events   The standard and only keyword value for No Events is:   'none':  REQUIRED - no Event Notifications for any Events.  As the      sole value of "notify-events-supported", this value means that the      Printer does not support the delivery of Event Notifications.  As      the sole value of "notify-events-default", this value means that a      client MUST specify the "notify-events" attribute in order for a      Subscription Creation Operation to succeed.  If the Printer      receives this value as the sole value of a Subscription Creation      Operation, it does not create a Subscription Object.  If a Printer      receives this value with other values of a Subscription Creation      Operation, the Printer MUST treat this value as an unsupported      value.5.3.3.4.2.  Subscribed Printer Events   The standard keyword values for Subscribed Printer Events are:   'printer-state-changed':  REQUIRED - the Printer changed state from      any state to any other state.  Specifically, the value of the      Printer's "printer-state", "printer-state-reasons" or "printer-      is-accepting-jobs" attributes changed.Herriot & Hastings          Standards Track                    [Page 23]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      This Subscribed Event value has the following sub-values:      'printer-restarted' and 'printer-shutdown'.  A client can listen      for any of these sub-values if it doesn't want to listen to all      printer-state changes:         'printer-restarted':  OPTIONAL - when the printer is powered            up.         'printer-shutdown':  OPTIONAL - when the device is being            powered down.         'printer-stopped:  REQUIRED - when the printer stops printing,            i.e., the value of the "printer-state" Printer attribute            becomes 'stopped'.   'printer-config-changed':  OPTIONAL - when the configuration of a      Printer has changed, i.e., the value of the "printer-message-      from-operator" or any "configuration" Printer attribute has      changed.  A "configuration" Printer attribute is an attribute      which can change value because of some human interaction either      direct or indirect, and which is not covered by one of the other      Events in this section.  Examples of "configuration" Printer      attributes are any of the Job Template attributes, such as "xxx-      supported", "xxx-ready" and "xxx-default".  The client has to      perform a Get-Printer-Attributes to find out the new values of      these changed attributes.  This Event is useful for GUI clients      and drivers to update the available printer capabilities to the      user.      This Event value has the following sub-values: 'printer-media-      changed' and 'printer-finishings-changed'.  A client can listen      for any of these sub-values if it doesn't want to listen to all      printer-configuration changes:         'printer-media-changed':  OPTIONAL - when the media loaded on            a printer has been changed, i.e., the "media-ready"            attribute has changed.  This Event includes two cases: an            input tray that goes empty and an input tray that receives            additional media of the same type or of a different type.            The client must check the "media-ready" Printer attribute            (see[RFC2911] section 4.2.11) separately to find out what            changed.         'printer-finishings-changed':  OPTIONAL - when the finisher on            a printer has been changed, i.e., the "finishings-ready"            attribute has changed.  This Event includes two cases: a            finisher that goes empty and a finisher that is refilled            (even if it is not full).  The client must check theHerriot & Hastings          Standards Track                    [Page 24]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005            "finishings-ready" Printer attribute separately to find out            what changed.   'printer-queue-order-changed': OPTIONAL - the order of jobs in the      Printer's queue has changed, so that an application that is      monitoring the queue can perform a Get-Jobs operation to determine      the new order.  This Event does not include when a job enters the      queue (the 'job-created' Event covers that) and does not include      when a job leaves the queue (the 'job-completed' Event covers      that).5.3.3.4.3.  Subscribed Job Events   The standard keyword values for Subscribed Job Events are:   'job-state-changed':  REQUIRED - the job has changed from any state      to any other state.  Specifically, the Printer delivers this Event      whenever the value of the "job-state" attribute or "job-state-      reasons" attribute changes.  When a Job is removed from the Job      Retention or Job History phases (see[RFC2911] section 4.3.7.1),      no Event is generated.      This Event value has the following sub-values: 'job-created',      'job-completed' and 'job-stopped'.  A client can listen for any of      these sub-values if it doesn't want to listen to all 'job-state      changes'.      'job-created':  REQUIRED - the Printer has accepted a Job         Creation operation, a Restart-Job operation [RFC2911], or any         job operation that creates a Job object from an existing Job         object.  The Printer populates the job's "time-at-creation"         attribute value (see[RFC2911] section 4.3.14.1).  The Printer         puts the job in the 'pending', 'pending-held' or 'processing'         states.      'job-completed':  REQUIRED - the job has reached one of the         completed states, i.e., the value of the job's "job-state"         attribute has changed to: 'completed', 'aborted', or         'canceled'.  The Job's "time-at-completed" and "date-time-at-         completed" (if supported) attributes are set (see[RFC2911]         section 4.3.14).  When a Job completes, a Notification         Recipient MAY query the Job using the Get-Job-Attributes         operation.  To allow such a query, the Printer retains the Job         in the Job Retention and/or the Job History phases (see[RFC2911] section 4.3.7.1) for a suitable amount of time that         depends on implementation and the Delivery Methods supported.         The Printer also delivers this Event when a Job is removed with         the Purge-Job operation (see[RFC2911] section 3.2.9).  In thisHerriot & Hastings          Standards Track                    [Page 25]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005         case, the Event Notification MUST report the 'job-state' as         'canceled' and the Job object is no longer present for query.      'job-stopped:  OPTIONAL - when the job stops printing, i.e.,         the value of the "job-state" Job attribute becomes         'processing-stopped'.   'job-config-changed':  OPTIONAL - when the configuration of a job has      changed, i.e., the value of the "job-message-from-operator" or any      of the "configuration" Job attributes have changed.  A      "configuration" Job attribute is an attribute that can change      value because of some human interaction either direct or indirect.      Examples of "configuration" Job attributes are any of the job      template attributes and the "job-name" attribute.  The client      performs a Get-Job-Attributes to find out the new values of the      changed attributes.  This Event is useful for GUI clients and      drivers to update the job information to the user.   'job-progress': OPTIONAL - when the Printer has completed Printing a      sheet.  See the separate [RFC3381] specification for additional      attributes that a Printer MAY deliver in an Event Notification      caused by this Event.  The "notify-time-interval" attribute      affects this Event by causing the Printer NOT to deliver an Event      Notification every time a 'job-progress' Events occurs.  Seesection 5.3.9 for full details.5.3.3.5.  Rules for Matching of Subscribed Events   When an Event occurs, the Printer MUST find each Subscription object   whose "notify-events" attribute "matches" the Event.  The rules for   "matching" of Subscribed Events are described separately for Printer   Events and for Job Events.  This section also describes some special   cases.5.3.3.5.1.  Rules for Matching of Printer Events   Given that the Printer causes Printer Event E to occur, for each   Per-Job or Per-Printer Subscription S in the Printer, if E equals a   value of this attribute in S or E is a sub-value of a value of this   attribute in S, the Printer MUST generate an Event Notification.   Consider the example.  There are three Subscription Objects each with   the Subscribed Printer Event 'printer-state-changed'.  Subscription   Object A is a Per-Printer Subscription Object.  Subscription Object B   is a Per-Job Subscription Object for Job 1, and Subscription Object C   is a Per-Job Subscription Object for Job 2.  When the Printer enters   the 'stopped' state, the Printer delivers an Event Notification to   the Notification Recipients of Subscription Objects A, B, and CHerriot & Hastings          Standards Track                    [Page 26]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   because this is a Printer Event.  Note if Job 1 has already   completed, the Printer would not deliver an Event Notification for   its Subscription Object, even if Job 1 is retained in the Job   Retention and/or the Job History phases (see [RFC2911]section4.3.7.1).5.3.3.5.2.  Rules for Matching of Job Events   Given that Job J causes Job Event E to occur:   1. For each Per-Printer Subscription S in the Printer, if E equals a      value of this attribute in S or E is a sub-value of a value of      this attribute in S, the Printer MUST generate an Event      Notification.   2. For each Per-Job Subscription S associated with Job J, if E equals      a value of this attribute in S or E is a sub-value of a value of      this attribute in S, the Printer MUST generate an Event      Notification.   3. For each Per-Job Subscription S that is NOT associated Job J, if E      equals a value of this attribute in S or E is a sub-value of a      value of this attribute in, the Printer MUST NOT generate an Event      Notification from S.   Consider the example: There are three Subscription Objects listening   for the Job Event 'job-completed'.  Subscription Object A is a Per-   Printer Subscription Object.  Subscription Object B is a Per-Job   Subscription Object for Job 1, and Subscription Object C is a Per-Job   Subscription Object for Job 2.  In addition, Per-Printer Subscription   Object D is listening for the Job Event 'job-state-changed'.  When   Job 1 completes, the Printer delivers an Event Notification to the   Notification Recipient of Subscription Object A (because it is Per-   Printer) and Subscription Object B because it is a Per-Job   Subscription Object associated with the Job generating the Event.   The Printer also delivers an Event Notification to the Notification   Recipient of Subscription Object D because 'job-completed' is a sub-   value of 'job-state-changed' - the value that Subscription Object D   is listening for.  The Printer does not deliver an Event Notification   to the Notification Recipients of Subscription Object C because it is   a Per-Job Subscription Object associated with some Job other than the   Job generating the Event.5.3.3.5.3.  Special Cases for Matching Rules   This section contains two rules for the special case where a single   Event produces multiple Event Notifications destined for the same   Notification Recipient.  These two rules clarify whether a PrinterHerriot & Hastings          Standards Track                    [Page 27]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   should send multiple Event Notifications or consolidate them into a   single Event Notification.   If an Event matches Subscribed Events in two different Subscription   Objects and the Printer would deliver two identical Event   Notifications (except for the "notify-subscription-id" attribute) to   the same Notification Recipient using the same Delivery Method, the   Printer MUST deliver both Event Notifications.  That is, the Printer   MUST NOT try to consolidate seemingly identical Event Notifications   that occur in separate Subscription objects.  Incidentally, the   Printer MUST NOT reject Subscription Creation Operations that would   create this scenario.   Consider the example: At the time a Job completes, there are two   Per-Printer Subscription Objects A and B with the same Notification   Recipient R.  Subscription Object A has the Subscribed Job Event   'job-state-changed'.  Subscription Object B has the Subscribed Job   Event 'job-completed'.  Both Subscription Objects match the Event   'job-completed'.  The Printer delivers two Event Notifications to the   Notification Recipient R.  One with the value of  'job-state-changed'   for the "notify-subscribed-event" attribute and the other with the   value of  'job-completed' for the "notify-subscribed-event"   attribute.   If an Event matches two Subscribed Events in a single Subscription   object (e.g., a value and its sub-value), a Printer MAY deliver one   Event Notification for each matched value in the Subscription Object   or it MAY deliver only a single Event Notification.  The rules in   sections5.3.3.5.1 and5.3.3.5.2 are purposefully flexible about the   number of Event Notifications sent when Event E matches two or more   values in a Subscription Object.   Consider the example: At the time a Job completes, a Subscription   Object A has two Subscribed Job Events 'job-state-changed' and 'job-   completed'.  Both Subscribed Job Events match the Event 'job-   completed'.  The Printer delivers either one or two Event   Notifications to the Notification Recipient of Subscription Object A,   depending on implementation.  If it delivers two Event Notifications,   one has the value of  'job-state-changed' for the "notify-   subscribed-event" attribute, and the other has the value of 'job-   completed' for the "notify-subscribed-event" attribute.  If it   delivers one Event Notification, it has the value of either 'job-   state-changed' or 'job-completed' for the "notify-subscribed-event"   attribute, depending on implementation.  The algorithm for choosing   such a value is implementation dependent.Herriot & Hastings          Standards Track                    [Page 28]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20055.3.4.  notify-attributes (1setOf type2 keyword)   This attribute contains a set of attribute names.  When a Printer   delivers a Machine Consumable Event Notification, it includes a fixed   set of attributes (seesection 9.1).  If this attribute is present   and the Event Notification is Machine Consumable, the Printer also   includes the attributes specified by this attribute.   A Printer MAY support this attribute.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in   Subscription Creation Operation or the Printer does not support this   attribute, the Subscription Object either (1) MAY contain the   "notify-attributes" attribute with a 'none' value or (2) NEED NOT   contain the attribute at all.  There is no "notify-attributes-   default" Printer attribute.   Each keyword value of this attribute on a Subscription Object MUST be   a value of the "notify-attributes-supported (1setOf type2 keyword)"   Printer attribute (seesection 5.3.4.1).  The "notify-attributes-   supported" MAY contain any Printer attribute, Job attribute or   Subscription Object attribute that the Printer supports in an Event   Notification.  It MUST NOT contain any of the attributes inSection9.1 that a Printer automatically puts in an Event Notification; it   would be redundant.  If a client supplies an attribute inSection9.1, the Printer MUST treat it as an unsupported attribute value of   the "notify-attributes" attribute.   The following rules apply to each keyword value N of the "notify-   attributes" attribute: If the value N names:   a) a Subscription attribute, the Printer MUST use the attribute N in      the Subscription Object that is being used to generate the Event      Notification.   b) a Job attribute and the Printer is generating an Event      Notification from a Per-Job Subscription Object S, the Printer      MUST use the attribute N in the Job object associated with S.   c) a Job attribute and the Printer is generating an Event      Notification from a Per-Printer Subscription Object and the Event      is:      -  a Job Event, the Printer MUST use the attribute N in the Job         object that caused the Event.Herriot & Hastings          Standards Track                    [Page 29]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      -  a Printer Event, the Printer MUST use the attribute N in the         active Job.   If a Printer supports this attribute and a Subscription Object   contains this attribute and the Delivery Method generates a Machine   Consumable Event Notification, the Printer MUST include in each Event   Notification:   a) the attributes specified insection 9.1 and   b) each attribute named by this attribute.   The Printer MUST NOT use this attribute to generate a Human   Consumable Event Notification.5.3.4.1.  notify-attributes-supported (1setOf type2 keyword)   See sections5.1 and5.2 for the behavior of "xxx-supported"   Subscription Template Printer attributes.5.3.5.  notify-user-data (octetString(63))   This attribute contains opaque data that some Delivery Methods   include in each Machine Consumable Event Notification.  The opaque   data might contain, for example:   -  the identity of the Subscriber   -  a path or index to some Subscriber information   -  a key that identifies to the Notification Recipient the ultimate      recipient of the Event Notification   -  the id for a Notification Recipient that had previously registered      with an Instant Messaging Service   A Printer MUST support this attribute.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in the   Subscription Creation Operation, the Subscription Object either (1)   MAY contain the "notify-user-data" attribute with a zero length value   or (2) NEED NOT contain the attribute at all.  There is no "notify-   user-data-default" Printer attribute.Herriot & Hastings          Standards Track                    [Page 30]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   There is no "notify-user-data-supported" Printer attribute.  Rather,   any octetString whose length does not exceed 63 octets is a supported   value.  If the length exceeds 63 octets, the Printer MUST treat it as   an unsupported value.5.3.6.  notify-charset (charset)   This attribute specifies the charset to be used in the Event   Notification content sent to the Notification Recipient, whether the   Event Notification content is Machine Consumable or Human Consumable.   A Printer MUST support this attribute.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in   Subscription Creation Operation or supplies an unsupported value, the   Printer MUST populate this attribute in the Subscription Object with   the value of the "attributes-charset" operation attribute, which is a   REQUIRED attribute in all IPP requests (see [RFC2911]).  If the value   of the "attributes-charset" attribute is unsupported, the Printer   MUST populate this attribute in the Subscription Object with the   value of the Printer's "charset-configured" attribute.  There is no   "notify-charset-default" Printer attribute.   The value of this attribute on a Subscription Object MUST be a value   of the "charset-supported (1setOf charset)" Printer attribute.5.3.7.  notify-natural-language (naturalLanguage)   This attribute specifies the natural language to be used in any human   consumable text in the Event Notification content sent to the   Notification Recipient, whether the Event Notification content is   Machine Consumable or Human Consumable.   A Printer MUST support this attribute.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in   Subscription Creation Operation or supplies an unsupported value, the   Printer MUST populate this attribute in the Subscription Object with   the value of the "attributes-natural-language" operation attribute,   which is a REQUIRED attribute in all IPP requests (see[RFC2911]   section 3.1.4).  If the value of the "attributes-natural-language"   attribute is unsupported, the Printer MUST populate this attribute in   the Subscription Object with the value of the Printer's "natural-   language-configured" attribute (see[RFC2911] section 4.4.19).  There   is no "notify-natural-language-default" Printer attribute.Herriot & Hastings          Standards Track                    [Page 31]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   The value of this attribute on a Subscription Object MUST be a value   of the "generated-natural-language-supported (1setOf type2   naturalLanguage)" Printer attribute (see[RFC2911] section 4.4.20).5.3.8.  notify-lease-duration (integer(0:67108863))   This attribute specifies the duration of the lease (in seconds)   associated with the Per-Printer Subscription Object at the time the   Subscription Object was created or the lease was renewed.  The   duration of the lease is infinite if the value is 0, i.e., the lease   never expires.  Seesection 5.4.3 on "notify-lease-expiration-time   (integer(0:MAX))" for more details.   This attribute is not present on a Per-Job Subscription Object   because the Subscription Object lasts exactly as long as the   associated Job object.  See discussion of the 'job-completed' event   insection 5.3.3.4.3 about retention of the Job object after   completion.   A Printer MUST support this attribute.   For a Subscription Object Creation operation of a Per-Job   Subscription Object, the client MUST NOT supply this attribute.  If   the client does supply this attribute, the Printer MUST treat it as   an unsupported attribute.   For a Subscription Creation Operation of a Per-Printer Subscription   Object or a Renew-Subscription operation, a client MAY supply this   attribute.  If the client does not supply this attribute, the Printer   MUST populate this attribute with its "notify-lease-duration-default"   (0:67108863) attribute value.  If the client supplies this attribute   with an unsupported value, the Printer MUST populate this attribute   with a supported value, and this value SHOULD be as close as possible   to the value requested by the client.  Note: this rule implies that a   Printer doesn't assign the value of 0 (infinite) unless the client   requests it.   After the Printer has populated this attribute with a supported   value, the value represents the "granted duration" of the lease in   seconds and the Printer updates the value of the Subscription   Object's "notify-lease-expiration-time" attribute as specified insection 5.4.3.   The value of this attribute on a Subscription Object MUST be a value   of the "notify-lease-duration-supported" (1setOf (integer(0:67108863)   | rangeOfInteger(0:67108863))) Printer attribute.Herriot & Hastings          Standards Track                    [Page 32]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   A Printer MAY require authentication in order to return the value of   0 (the lease never expires) as one of the values of "notify-lease-   duration-supported", and to allow 0 as a value of the "notify-lease-   duration" attribute.   Note:  The maximum value 67,108,863 is 2 raised to the 26 power minus   1 and is about 2 years in seconds.  The value is considerably less   than MAX so that there is virtually no chance of an overflow when the   Printer adds it to the Printer's "printer-up-time" attribute value   (see[RFC2911] section 4.4.29) to produce the "notify-lease-   expiration-time" Subscription Description attribute value (seesection 5.4.3).5.3.8.1.  notify-lease-duration-default (integer(0:67108863))   See sections5.1 and5.2 for the behavior of "xxx-default"   Subscription Template Printer attributes.5.3.8.2. notify-lease-duration-supported (1setOf (integer(0: 67108863) |         rangeOfInteger(0:67108863)))   See sections5.1 and5.2 for the behavior of "xxx-supported"   Subscription Template Printer attributes.5.3.9.  notify-time-interval (integer(0:MAX))   The 'job-progress' Event occurs each time that a Printer completes a   sheet.  Some Notification Recipients do not want to receive an Event   Notification every time this Event occurs.  This attribute allows a   Subscribing Client to request how often it wants to receive Event   Notifications for 'job-progress' Events.  The value of this attribute   MAY be any nonnegative integer (0,MAX) indicating the minimum number   of seconds between 'job-progress' Event Notifications.   The Printer MUST support this attribute if and only if the Printer   supports the 'job-progress' Event.   A client MAY supply this attribute in a Subscription Creation   Operation.  If the client does not supply this attribute in the   Subscription Creation Operation, the Subscription Object either (1)   MAY contain the "notify-time-interval" attribute with a '0' value or   (2) NEED NOT contain this attribute at all.  There is no "notify-   time-interval-default" Printer attribute.   There is no "notify-time-interval-supported" Printer attribute.Herriot & Hastings          Standards Track                    [Page 33]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   If the 'job-progress' Event occurs and a Subscription Object contains   the 'job-progress' Event as a value of the 'notify-events' attribute,   there are two cases to consider:   1. This attribute is not present on the Subscription Object or has      the value of 0.  The Printer MUST generate and deliver an Event      Notification (as is the case with other Events).   2. This attribute is present with a nonzero value of N:      a) If the Printer has not sent an Event Notification for the         'job-progress' Event for the associated Subscription Object         within the past N seconds, the Printer MUST deliver an Event         Notification for the Event that just occurred.  Note when the         Printer completes the first page of a Job, this rule implies         that the Printer delivers an Event Notification for a Per-Job         Subscription Object.      b) Otherwise, the Printer MUST NOT generate or deliver an Event         Notification for the associated Subscription Object.  The         Printer MUST NOT increase the value of the "notify-sequence-         number" Subscription Object attribute (i.e., the sequence of         values of the "notify-sequence-number" attribute counts the         Event Notifications that the Printer sent and not the Events         that do not cause an Event Notification to be sent).   It is RECOMMENDED that a Subscribing Client use this attribute when   it subscribes to the 'job-progress' Event, and that the value be   sufficiently large to limit the frequency with which the Printer   delivers Event Notifications requests.   This attribute MUST NOT effect any Events other than 'job-progress'.5.4.  Subscription Description Attributes   Subscription Description Attributes are those attributes that a   Printer adds to a Subscription Object at the time of its creation.   A Printer MUST support all attributes in this Table 2.   A client MUST NOT supply the attributes in Table 2 in a Subscription   Template Attributes Group of a Subscription Creation Operation.   There are no corresponding default or supported attributes.Herriot & Hastings          Standards Track                    [Page 34]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 2 - Subscription Description Attributes      Subscription Object attributes:      notify-subscription-id (integer(1:MAX))      notify-sequence-number (integer(0:MAX))      notify-lease-expiration-time (integer(0:MAX))      notify-printer-up-time (integer(1:MAX))      notify-printer-uri (uri)      notify-job-id (integer(1:MAX))      notify-subscriber-user-name (name(MAX))5.4.1.  notify-subscription-id(integer (1:MAX))   This attribute identifies a Subscription Object instance with a   number that is unique within the context of the Printer.  The Printer   generates this value at the time it creates the Subscription Object.   A Printer MUST support this attribute.   The Printer MAY assign the value of this attribute sequentially as it   creates Subscription Objects.  However, if there is no security on   Subscription objects, sequential assignment exposes the system to a   passive traffic monitoring threat.   The Printer SHOULD avoid re-using recent values of this attribute   during continuous operation of the Printer as well as across power   cycles.  Then a Subscribing Client is unlikely to find that a stale   reference accesses a new Subscription Object.   The 0 value is not permitted in order to allow for compatibility with   "job-id" and with MIB table index values, which are recommended not   to be 0.5.4.2.  notify-sequence-number (integer (0:MAX))   The value of this attribute indicates the number of times that the   Printer has generated and attempted to deliver an Event Notification   for this Subscription object.  When an Event Notification contains   this attribute, the Notification Recipient can determine whether it   missed some Event Notifications (i.e., numbers skipped) or received   duplicates (i.e., same number twice).   A Printer MUST support this attribute.   When the Printer creates a Subscription Object, it MUST populate this   attribute with a value of 0.  This value indicates that the Printer   has not sent any Event Notifications for this Subscription Object.Herriot & Hastings          Standards Track                    [Page 35]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Each time the Printer delivers a newly generated Event Notification,   it MUST increase the value of this attribute by 1.  For some Delivery   Methods, the Printer MUST include this attribute in each Event   Notification, and the value MUST be the value after it is increased   by 1.  That is, the value of this attribute in the first Event   Notification after Subscription object creation MUST be 1, the second   MUST be 2, etc.  If a Delivery Method is defined such that the   Notification Recipient returns a response, the Printer can re-try   delivering an Event Notification a certain number of times with the   same sequence number when the Notification Recipient fails to return   a response.   If a Subscription Object lasts long enough to reach the value of MAX,   its next value MUST be 0, i.e., it wraps.5.4.3.  notify-lease-expiration-time (integer(0:MAX))   This attribute specifies the time in the future when the lease on the   Per-Printer Subscription Object will expire, i.e., the "printer-up-   time" value at which the lease will expire.  If the value is 0, the   lease never expires.   A Printer MUST support this attribute.   When the Printer creates a Per-Job Subscription Object, this   attribute MUST NOT be present - the Subscription Object lasts exactly   as long as the associated Job object.  See also the discussion of the   'job-completed' event insection 5.3.3.4.3 about retention of the Job   object after completion so that a Notification Recipient can query   the Job object after receiving the 'job-completed' Event   Notification.   When the Printer creates a Per-Printer Subscription Object, it   populates this attribute with a value that is the sum of the values   of the Printer's "printer-up-time" attribute and the Subscription   Object's "notify-lease-duration" attribute with the following   exception.  If the value of the Subscription Object's "notify-lease-   duration" attribute is 0 (i.e., no expiration time), then the value   of this attribute MUST be set to 0 (i.e., no expiration time).   When the Printer powers up, it MUST populate this attribute in each   persistent Subscription Object with a value using the algorithm in   the previous paragraph.   When the "printer-up-time" equals the value of this attribute, the   Printer MUST delete the Subscription Object.  A client can extend a   lease of a Per-Printer Subscription Object with the Renew-   Subscription operation (seesection 11.2.6).Herriot & Hastings          Standards Track                    [Page 36]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Note: In order to compute the number of seconds remaining in a lease   for a Per-Printer Subscription Object, a client can subtract the   Subscription's "notify-printer-up-time" attribute (seesection 5.4.4)   from the Subscription's "notify-lease-expiration-time" attribute.5.4.4.  notify-printer-up-time (integer(1:MAX))   This attribute is an alias for the Printer's "printer-up-time"   attribute " (see[RFC2911] section 4.4.29).  In other words, when   this attribute is queried with the Get-Subscriptions or Get-   Subscription-Attributes operations (see sections11.2.4 and11.2.5),   the value returned is the current value of the Printer's "printer-   up-time" attribute, rather than the time at which the Subscription   Object was created.   A Printer MUST support this attribute.   When the Printer creates a Per-Job Subscription Object, this   attribute MUST NOT be present.  When the Printer creates a Per-   Printer Subscription Object, this attribute MUST be present.   Note: this attribute exists in a Per-Printer Subscription Object so   that a client using the Get-Subscription-Attributes or Get-   Subscription operations can convert the Per-Printer Subscription's   "notify-lease-expiration-time" attribute to wall clock time with one   request.  If the value of the "notify-lease-expiration-time"   attribute is not 0 (i.e., no expiration time), then the difference   between the "notify-lease-expiration-time" attribute and the   "notify-printer-up-time" is the remaining number of seconds on the   lease from the current time.5.4.5.  notify-printer-uri (uri)   This attribute identifies the Printer object that created this   Subscription Object.   A Printer MUST support this attribute.   During a Subscription Creation Operation, the Printer MUST populate   this attribute with the value of the "printer-uri" operation   attribute in the request.  From the Printer URI, the client can, for   example, determine what security scheme was used.5.4.6.  notify-job-id (integer(1:MAX))   This attribute specifies whether the containing Subscription Object   is a Per-Job or Per-Printer Subscription Object, and for Per-Job   Subscription Objects, it specifies the associated Job.Herriot & Hastings          Standards Track                    [Page 37]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   A Printer MUST support this attribute.   If this attribute is not present, the Subscription Object MUST be a   Per-Printer Subscription.  If this attribute is present, the   Subscription Object MUST be a Per-Job Subscription Object and this   attribute MUST identify the Job with which the Subscription Object is   associated.   Note: This attribute could be useful to a Notification Recipient that   receives an Event Notification generated from a Per-Job Subscription   Object and caused by a Printer Event.  The Event Notification gives   access to the Printer and the Subscription Object.  The Event   Notification gives access to the associated Job only via this   attribute.  See discussion of the 'job-completed' event insection5.3.3.4.3 about retention of the Job object after completion so that   a Notification Recipient can query the Job object after receiving the   'job-completed' Event Notification.5.4.7.  notify-subscriber-user-name (name(MAX))   This attribute contains the name of the user who performed the   Subscription Creation Operation.   A Printer MUST support this attribute.   The Printer MUST populates this attribute with the most authenticated   printable name that it can obtain from the authentication service   over which the Subscription Creation Operation was received.  The   Printer uses the same mechanism for determining the value of this   attribute as it does for a Job's "job-originating-user-name" (see[RFC2911] section 4.3.6).   Note:  To help with authentication, a Subscription Object may have   additional private attributes about the user, e.g., a credential of a   principal.  Such private attributes are implementation-dependent and   not defined in this document.6.  Printer Description Attributes Related to Notification   This section defines the Printer Description attributes that are   related to Notification.  Table 3 lists the Printer Description   attributes, indicates the Printer support required for conformance,   and whether or not the attribute is READ-ONLY (seesection 3.1):Herriot & Hastings          Standards Track                    [Page 38]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 3 - Printer Description Attributes Associated with Notification   Printer object attributes:                   REQUIRED     READ-ONLY   printer-state-change-time (integer(1:MAX))   No           Yes   printer-state-change-date-time (dateTime)    No           Yes6.1.  printer-state-change-time (integer(1:MAX))   This OPTIONAL attribute records the most recent time at which the   'printer-state-changed' Printer Event occurred whether or not any   Subscription objects were listening for this event.  This attribute   helps a client or operator to determine how long the Printer has been   in its current state.   A Printer MAY support this attribute and if so, the attribute MUST be   READ-ONLY.   On power-up, the Printer MUST populate this attribute with the value   of its "printer-up-time" attribute, so that it always has a value.   Whenever the 'printer-state-changed' Printer Event occurs, the   Printer MUST update this attribute with the value of the Printer's   "printer-up-time" attribute.6.2.  printer-state-change-date-time (dateTime)   This OPTIONAL attribute records the most recent time at which the   'printer-state-changed' Printer Event occurred whether or not there   were any Subscription Objects listening for this event.  This   attribute helps a client or operator to determine how long the   Printer has been in its current state.   A Printer MAY support this attribute and if so, the attribute MUST be   READ-ONLY.   On power-up, the Printer MUST populate this attribute with the value   of its "printer-current-time" attribute, so that it always has a   value (see[RFC2911] section 4.4.30 on "printer-current-time").   Whenever the 'printer-state-changed' Printer Event occurs, the   Printer MUST update this attribute with the value of the Printer's   "printer-current-time" attribute.7.  New Values for Existing Printer Description Attributes   This section contains those attributes for which additional values   are added.Herriot & Hastings          Standards Track                    [Page 39]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20057.1.  operations-supported (1setOf type2 enum)   The following "operation-id" values are added in order to support the   new operations defined in this document:   Table 4 - Operation-id assignments   Value       Operation Name   0x0016      Create-Printer-Subscriptions   0x0017      Create-Job-Subscriptions   0x0018      Get-Subscription-Attributes   0x0019      Get-Subscriptions   0x001A      Renew-Subscription   0x001B      Cancel-Subscription8.  Attributes Only in Event Notifications   This section contains those attributes that exist only in Event   Notifications and do not exist in any objects.8.1.  notify-subscribed-event (type2 keyword)   This attribute indicates the Subscribed Event that caused the Printer   to deliver this Event Notification.  This attribute exists only in   Event Notifications.   This attribute MUST contain one of the values of the "notify-events"   attribute in the Subscription Object, i.e., one of the Subscribed   Event values.  Its value is the Subscribed Event that "matches" the   Event that caused the Printer to deliver this Event Notification.   This Subscribed Event value may be identical to the Event or the   Event may be a sub-value of the Subscribed Event.  For example, the   'job-completed' Event (which is a sub-event of the 'job-state-   changed' event) would cause the Printer to deliver an Event   Notification for either the 'job-completed' or 'job-state-changed'   Subscribed Events and to deliver the 'job-completed' or 'job-state-   changed' value for this attribute, respectively.  Seesection 5.3.3.5   for the "matching" rules of Subscribed Events and for additional   examples.   The Delivery Method Document specifies whether the Printer includes   the value of this attribute in an Event Notification.Herriot & Hastings          Standards Track                    [Page 40]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20058.2.  notify-text (text(MAX))   This attribute contains a Human Consumable text message (seesection9.2).  This message describes the Event and is encoded as plain text,   i.e., 'text/plain' with the charset specified by Subscription   Object's "notify-charset" attribute.   Note: this attribute contains a text message only and must not   contain any encoding information, such as 'text/plain'.  The   'text/plain' encoding is implicit and thus the charset must be   specified by an alternate mechanism, namely the "notify-charset"   attribute.   The Delivery Method Document specifies whether the Printer includes   this attribute in an Event Notification.9.  Event Notification Content   This section defines the Event Notification content that the Printer   delivers when an Event occurs.   When an Event occurs, the Printer MUST find each Subscription object   whose "notify-events" attribute "matches" the Event.  Seesection5.3.3.5 for details on "matching".  For each matched Subscription   Object, the Printer MUST create an Event Notification with the   content and format that the Delivery Method Document specifies.  The   content contains the value of attributes specified by the Delivery   Method Document.  The Printer obtains the values immediately after   the Event occurs.  For example, if the "printer-state" attribute   changes from 'idle' to 'processing', the Event 'printer-state-   changed' occurs and the Printer puts various attributes into the   Event Notification, including "printer-up-time" and "printer-state"   with the values that they have immediately after the Event occurs,   i.e., the value of  "printer-state" is 'processing'.   Event Notification Ordering:   When a Printer delivers Event Notifications, the Event Notifications   from any given Subscription Object MUST be in time stamp order, i.e.,   in order of increasing "printer-up-time" attribute value in the Event   Notification (see Table 5).  These Event Notifications MAY be   interleaved with those from other Subscription Objects, as long as   those others are also in time stamp order.  The Printer MUST observe   these ordering requirements whether delivering multiple pending   Events as multiple separate Event Notifications or together in a   single Compound Event Notification.Herriot & Hastings          Standards Track                    [Page 41]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   If a Subscribing Client wants the Printer to deliver certain Event   Notifications in time stamp order, the Subscribing Client uses a   single Subscription Object.  Even so, depending on the underlying   transport, the actual order that a Notification Recipient receives   separate Event Notifications may differ from the order sent by the   Printer (e.g., email).   Example:  Consider two Per-Printer Subscription Objects: SO1 and SO2.   SO1 requests 'job-state-changed' events and SO2 requests 'printer-   state-changed' events.  The number in parens is the time stamp.  The   following Event Notification sequences are the only ones that conform   to the ordering requirements for the Printer to deliver the Event   Notifications:      (a) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO1:      'job-completed' (1009), SO2: 'printer-stopped' (1005)      (b) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO2:      'printer-stopped' (1005), SO1: 'job-completed' (1009)      (c) SO1: 'job-created' (1000), SO2: 'printer-stopped' (1005), SO1:      'job-stopped' (1005), SO1: 'job-completed' (1009)      (d) SO2: 'printer-stopped (1005), SO1: 'job-created' (1000), SO1:      'job-stopped' (1005), SO1: 'job-completed' (1009)   Examples (b) and (c) are interleaved; examples (a) and (d) are not   interleaved and are not appropriate for some Delivery Methods.   If two different Events occur simultaneously, or nearly so (e.g.,   "printer-up-time" has the same value for both), the Printer MUST   create a separate Event Notification for each Event, even if the   associated Subscription Object is the same for both Events.  However,   the Printer MAY combine these distinct Event Notifications into a   single Compound Event Notification if the Delivery Method supports   Compound Event Notifications.  For example, suppose that two nearly-   simultaneously Events represent two successive 'printer-state-   changed' Events, one from 'idle' to 'processing' and another from   'processing' to 'stopped'.  These two Events have the same name but   are different instances of the Event.  Then the Printer MUST create a   separate Event Notification for each Event and SHOULD accurately   report the "printer-state" of the first Event as 'processing' and the   second Event as 'stopped'.   If a Subscription Object contains more than one Subscribed Event, and   several Events occur in quick succession each matching a different   Subscribed Event in the Subscription Object, the Printer MUST NOT   generate a single Event Notification from several of these Events,Herriot & Hastings          Standards Track                    [Page 42]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   but MAY combine distinct Event Notifications into a single Compound   Event Notification if the Delivery Method supports Compound Event   Notifications.   After the Printer has created the Event Notification, the Printer   delivers it via either a:      Push Delivery Method: The Printer delivers the Event Notification      shortly after an Event occurs.  For some Push Delivery Methods,      the Notification Recipient MUST deliver a response; for others it      MUST NOT deliver a response.      Pull Delivery Method: The Printer saves Event Notifications for      some Event Life and expects the Notification Recipient to request      Event Notifications.  The Printer returns the Event Notifications      in a response to such a request.   If an error that meets the following conditions occurs, the Printer   MUST cancel the Subscription Object.   a) the error occurs during the delivering of an Event Notification      generated from Subscription Object S AND   b) the error would continue to occur every time the Printer delivers      an Event Notification generated from Subscription Object S in the      future.   For example, if the address of the "notify-recipient-uri" of   Subscription Object A references a non-existent target and the   Printer determines this fact, it MUST delete Subscription Object A.   The next two sections describe the values that a Printer delivers in   the content of Machine Consumable and Human Consumable Event   Notifications, respectively.   The tables in the sub-sections of this section contain the following   columns:   a) Source Value: the name of the attribute that supplies the value      for the Event Notification.  Asterisks in this field refer to a      note below the table.   b) Delivers: if the Printer supports the value (column 1) on the      Source Object (column 3) the Delivery Method MUST specify:         MUST: that the Printer MUST deliver the value.Herriot & Hastings          Standards Track                    [Page 43]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005         SHOULD: either that the Printer MUST deliver the value or that         the value is incompatible with the Delivery Method.         MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT,         or NEED NOT deliver the value.  The Delivery Method specifies         the level of conformance for the Printer.   c) Source Object: the object from which the source value comes.  If      the object is "Event Notification", the Printer fabricates the      value when it delivers the Event Notification.  Seesection 8.9.1.  Content of Machine Consumable Event Notifications   This section defines the attributes that a Delivery Method MUST   mention in a Delivery Method Document when specifying the Machine   Consumable Event Notification's contents.   This document does not define the order of attributes in Event   Notifications.  However, Delivery Method Documents MAY define the   order of some or all of the attributes.   A Delivery Method Document MUST specify additional attributes (if   any) that a Printer implementation delivers in a Machine Consumable   Event Notification.   Notification Recipients MUST be able to accept Event Notifications   containing attributes they do not recognize.  What a Notification   Recipient does with an unrecognized attribute is implementation-   dependent.  Notification Recipients MAY attempt to display   unrecognized attributes anyway or MAY ignore them.   The next three sections define the attributes in Event Notification   Contents that are:      1. for all Events      2. for Job Events only      3. for Printer Events only9.1.1.  Event Notification Content Common to All Events   This section lists the attributes that a Delivery Method Document   MUST specify for all Events.   Table 5 lists potential values in each Event Notification.Herriot & Hastings          Standards Track                    [Page 44]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 5 - Attributes in Event Notification Content   Source Value                               Delivers   Source Object   notify-subscription-id (integer(1:MAX))    MUST       Subscription   notify-printer-uri (uri)                   MUST       Subscription   notify-subscribed-event (type2 keyword)    MUST       Event                                                         Notification   printer-up-time (integer(MIN:MAX))         MUST       Printer   printer-current-time (dateTime) *          MUST       Printer   notify-sequence-number (integer (0:MAX))   SHOULD     Subscription   notify-charset (charset)                   SHOULD     Subscription   notify-natural-language (naturalLanguage)  SHOULD     Subscription   notify-user-data (octetString(63)) **      SHOULD     Subscription   notify-text (text)                         SHOULD     Event                                                         Notification   attributes from the "notify-attributes"    MAY        Printer   attribute ***   attributes from the "notify-attributes"    MAY        Job   attribute ***   attributes from the "notify-attributes"    MAY        Subscription   attribute ***   *A Printer MUST deliver this value only if and only if it supports   the Printer's "printer-current-time" attribute.   ** If the Subscription Object does not contain a "notify-user-data"   attribute and the Delivery Method Document REQUIRES the Printer to   deliver the "notify-user-data" source value in the Event   Notification, the Printer MUST deliver an octet-string of length 0.   *** The last three rows represent additional attributes that a client   MAY request via the  "notify-attributes" attribute.  A Printer MAY   support the "notify-attributes" attribute.  The Delivery Method MUST   say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED   NOT support the "notify-attributes" attribute and specific values of   this attribute.  The Delivery Method MAY say that support for the   "notify-attributes" is conditioned on support of the attribute by the   Printer or it MAY say that Printer MUST support the "notify-   attributes" attribute if the Printer supports the Delivery Method.9.1.2.  Additional Event Notification Content for Job Events   This section lists the additional attributes that a Delivery Method   Document MUST specify for Job Events.  See Table 6.Herriot & Hastings          Standards Track                    [Page 45]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 6 - Additional Event Notification Content for Job Events   Source Value                                  Delivers  Source                                                            Object   job-id (integer(1:MAX))                       MUST      Job   job-state (type1 enum)                        MUST      Job   job-state-reasons (1setOf type2 keyword)      MUST      Job   job-impressions-completed (integer(0:MAX)) *  MUST      Job   *  The Printer MUST deliver the "job-impressions-completed" attribute   in an Event Notification only for the combinations of Events and   Subscribed Events shown in Table 7.   Table 7 - Combinations of Events and Subscribed Events for "job-   impressions-completed"   Job Event              Subscribed Job Event   'job-progress'         'job-progress'   'job-completed'        'job-completed'   'job-completed'        'job-state-changed'9.1.3.  Additional Event Notification Content for Printer Events   This section lists the additional attributes that a Delivery Method   Document MUST specify for Printer Events.  See Table 8.   Table 8 - Additional Event Notification Content for Printer Events   Source Value                             Delivers   Source Object   printer-state (type1 enum)               MUST       Printer   printer-state-reasons (1setOf type2      MUST       Printer   keyword)   printer-is-accepting-jobs (boolean)      MUST       Printer9.2.  Content of Human Consumable Event Notification   This section defines the information that a Delivery Method MUST   mention in a Delivery Method Document when specifying the Human   Consumable Event Notifications contents or the value of the "notify-   text" attribute.   Such a Delivery Method MUST specify the following information and a   Printer SHOULD deliver it:   a) the Printer name (see Table 9)Herriot & Hastings          Standards Track                    [Page 46]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   b) the time of the Event (see Table 11)   c) for Printer Events only:      i) the Event (see Table 10) and/or Printer state information (see         Table 14)   d) for Job Events only:      i) the job identity (see Table 12)      ii) the Event (see Table 10) and/or Job state information (see          Table 13)   The subsections of this section specify the attributes that a Printer   MUST use to obtain this information.   A Delivery Method Document MUST specify additional information (if   any) that a Printer implementation delivers in a Human Consumable   Event Notification or in the "notify-text" attribute.   A client MUST NOT request additional attributes via the "notify-   attributes" attribute because this attribute works only for Machine   Consumable Event Notifications.   Notification Recipients MUST NOT expect to be able to parse the Human   Consumable Event Notification contents or the value of the "notify-   text" attribute.   The next three sections define the attributes in Event Notification   Contents that are:      a) for all Events      b) for Job Events only      c) for Printer Events only9.2.1.  Event Notification Content Common to All Events   This section lists the source of the information that a Delivery   Method MUST specify for all Events.   There is a separate table for each piece of information.  Each row in   the table represents a source value for the information and the   values are listed in order of preference, with the first one being   the preferred one.  An implementation SHOULD use the source value   from the earliest row in each table.  It MAY use the source valueHerriot & Hastings          Standards Track                    [Page 47]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   from another row instead, or it MAY combine the source values from   several rows.  An implementation is free to determine the best way to   present this information.   In all tables of this section, all rows contain a "MAY" in order to   state that the Delivery Method specifies the conformance.   Table 9 lists the source of the information for the Printer Name.   The "printer-name" is more user-friendly unless the Notification   Recipient is in a place where the Printer name is not meaningful.   For example, an implementation could have the intelligence to deliver   the value of the "printer-name" attribute to a Notification Recipient   that can access the Printer via value of the "printer-name" attribute   and otherwise deliver the value of the "notify-printer-uri"   attribute.   Table 9 - Printer Name in Event Notification Content   Source Value                            Delivers   Source Object   printer-name (name(127))                MAY        Printer   notify-printer-uri (uri)                MAY        Subscription   Table 10 lists the source of the information for the Event name.  A   Printer MAY combine this information with state information described   for Jobs in Table 13 or for Printers in Table 14.   Table 10 - Event Name in Event Notification Content   Source Value                             Delivers    Source Object   notify-subscribed-event (type2 keyword)  MAY         Subscription   Table 11 lists the source of the information for the time that the   Event occurred.  A Printer can deliver this value only if it supports   the Printer's "printer-current-time" attribute.  If a Printer does   not support the "printer-current-time" attribute, it MUST NOT deliver   the "printer-up-time" value instead, since it is not an allowed   option for human consumable information.   Table 11 - Event Time in Event Notification Content   Source Value                            Delivers   Source Object   printer-current-time (dateTime)         MAY        PrinterHerriot & Hastings          Standards Track                    [Page 48]

RFC 3995       IPP: Event Notifications and Subscriptions     March 20059.2.2.  Additional Event Notification Content for Job Events   This section lists the source of the additional information that a   Delivery Method MUST specify for Job Events.   Table 12 lists the source of the information for the job name.  The   "job-name" is likely more meaningful to a user than "job-id".   Table 12 - Job Name in Event Notification Content   Source Value                           Delivers    Source Object   job-name (name(MAX))                   MAY         Job   job-id (integer(1:MAX))                MAY         Job   Table 13 lists the source of the information for the job state.  If a   Printer supports the "job-state-message" and "job-detailed-state-   message" attributes, it SHOULD use those attributes for the job state   information, otherwise, it should fabricate such information from the   "job-state" and "job-state-reasons".  For some Events, a Printer MAY   combine this information with Event information.   Table 13 - Job State in Event Notification Content   Source Value                                     Delivers  Source                                                               Object   job-state-message (text(MAX))                    MAY       Job   job-detailed-status-messages (1setOf text(MAX))  MAY       Job   job-state (type1 enum)                           MAY       Job   job-state-reasons (1setOf type2 keyword)         MAY       Job9.2.3.  Additional Event Notification Content for Printer Events   This section lists the source of the additional information that a   Delivery Method MUST specify for Printer Events.   Table 14 lists the source of the information for the printer state.   If a Printer supports the "printer-state-message", it SHOULD use that   attribute for the job state information, otherwise it SHOULD   fabricate such information from the "printer-state" and "printer-   state-reasons".  For some Events, a Printer MAY combine this   information with Event information.Herriot & Hastings          Standards Track                    [Page 49]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 14 - Printer State in Event Notification Content   Source Value                                    Delivers   Source                                                               Object   printer-state-message (text(MAX))               MAY        Printer   printer-state (type1 enum)                      MAY        Printer   printer-state-reasons (1setOf type2 keyword)    MAY        Printer   printer-is-accepting-jobs (boolean)             MAY        Printer10.  Delivery Methods   A Delivery Method is the mechanism, i.e., protocol, by which the   Printer delivers an Event Notification to a Notification Recipient.   There are several potential Delivery Methods for Event Notifications,   standardized, as well as proprietary.  This specification REQUIRES   that the 'ippget' Pull Delivery Method [RFC3996] be supported.   Conforming implementations MAY support additional Push or Pull   Delivery Methods as well.  This document does not define any of these   delivery mechanisms.  Each Delivery Method MUST be defined in a   Delivery Method Document that is separate from this document.  New   Delivery Methods will be created as needed using an extension to the   registration procedures defined in [RFC2911].  Such documents are   registered with IANA (seesection 23.7.3).   The following sorts of Delivery Methods are possible:   -  The Notification Recipient polls for Event Notifications at      intervals directed by the Printer   -  The Printer delivers Event Notifications to the Notification      Recipient using http as the transport.   -  The Printer delivers an email message.   This section specifies how to define a Delivery Method Document and   what to put in such a document.   A Delivery Method Document MUST contain an exact copy of the   following paragraph, caption and table.  In addition, column 2 of the   table in the Delivery Method Document MUST contain answers to   questions in column 1 for the Delivery Method.  Also, the Delivery   Method document MUST contain a reference to this document and call   that reference [RFC3995] because the table contains an [RFC3995]   reference.   If a Printer supports this Delivery Method, the following are its   characteristics.Herriot & Hastings          Standards Track                    [Page 50]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 15 - Information about the Delivery Method   Document Method Conformance Requirement     Delivery Method                                               Realization   1.  What is the URL scheme name for the Push Delivery Method or the       keyword method name for the Pull Delivery Method?   2.  Is the Delivery Method REQUIRED, RECOMMENDED, or OPTIONAL for an       IPP Printer to support?   3.  What transport and delivery protocols does the Printer use to       deliver the Event Notification Content, i.e., what is the entire       network stack?   4.  Can several Event Notifications be combined into a Compound Event       Notification?   5.  Is the Delivery Method initiated by the Notification Recipient       (pull), or by the Printer (push)?   6.  Is the Event Notification content Machine Consumable or Human       Consumable?   7.  What section in this document answers the following question?       For a Machine Consumable Event Notification, what is the       representation and encoding of values defined insection 9.1 of       [RFC3995] and the conformance requirements thereof?  For a Human       Consumable Event Notification, what is the representation and       encoding of pieces of information defined insection 9.2 of       [RFC3995] and the conformance requirements thereof?   8.  What are the latency and reliability of the transport and       delivery protocol?   9.  What are the security aspects of the transport and delivery       protocol, e.g., how it is handled in firewalls?   10.  What are the content length restrictions?   11.  What are the additional values or pieces of information that a        Printer delivers in an Event Notification content and the        conformance requirements thereof?   12.  What are the additional Subscription Template and/or        Subscription Description attributes and the conformance        requirements thereof?Herriot & Hastings          Standards Track                    [Page 51]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   13.  What are the additional Printer Description attributes and the        conformance requirements thereof?11.  Operations for Notification   This section defines all of the operations for Notification.Section7.1 assigns the "operation-id" for each operation.  The following two   sub-sections define Subscription Creation Operations, and other   operations.11.1.  Subscription Creation Operations   This section defines the Subscription Creation Operations.  The first   section on Create-Job-Subscriptions gives most of the information.   The other Subscription Creation Operations refer to the section on   Create-Job-Subscriptions, even though the Create-Job-Subscriptions   operation is the only OPTIONAL operation in this document (seesection 12).   A Printer MUST support Create-Printer-Subscriptions and the   Subscription Template Attributes Group in Job Creation operations.   It MAY support Create-Job-Subscriptions operations.11.1.1.  Create-Job-Subscriptions Operation   The operation creates one or more Per-Job Subscription Objects.  The   client supplies one or more Subscription Template Attributes Groups   each containing one or more of Subscription Template Attributes   (defined insection 5.3).   Except for errors, the Printer MUST create exactly one Per-Job   Subscription Object from each Subscription Template Attributes Group   in the request, even if the newly created Subscription Object would   have identical behavior to some existing Subscription Object.  The   Printer MUST associate each newly created Per-Job Subscription Object   with the target Job, which is specified by the "notify-job-id"   operation attribute.   The Printer MUST accept the request in any of the target job's 'not-   completed' states, i.e., 'pending', 'pending-held', 'processing', or   'processing-stopped'.  The Printer MUST NOT change the job's "job-   state" attribute because of this operation.  If the target job is in   any of the 'completed' states, i.e., 'completed', 'canceled', or   'aborted, then the Printer MUST reject the request and return the   'client-error-not-possible' status code; the response MUST NOT   contain any Subscription Attribute Groups.Herriot & Hastings          Standards Track                    [Page 52]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Access Rights:  To create Per-Job Subscription Objects, the   authenticated user (see[RFC2911] section 8.3) performing this   operation MUST (1) be the job owner, (2) have Operator or   Administrator access rights for this Printer (see [RFC2911] sections   1 and 8.5), or (3) be otherwise authorized by the Printer's   administrator-configured security policy to create Per-Job   Subscription Objects for the target job.  Otherwise the Printer MUST   reject the operation and return: the 'client-error-forbidden',   'client-error-not-authenticated', or 'client-error-not-authorized'   status code as appropriate.11.1.1.1.  Create-Job-Subscriptions Request   The following groups of attributes are part of the Create-Job-   Subscriptions Request:   Group 1: Operation Attributes   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.1.   Target:      The "printer-uri" attribute which defines the target for this      operation as described in[RFC2911] section 3.1.5.   Requesting User Name:      The "requesting-user-name" attribute SHOULD be supplied by the      client as described in[RFC2911] section 8.3.11.1.1.1.1.  notify-job-id (integer(1:MAX))   The client MUST supply this attribute and it MUST specify the Job   object to associate the Per-Job Subscription with.  The value of   "notify-job-id" MUST be the value of the "job-id" of the associated   Job object.  If the client does not supply this attribute, the   Printer MUST reject this request with a 'client-error-bad-request'   status code.   Group 2-N: Subscription Template Attributes      For each occurrence of this group:         The client MUST supply one or more Subscription Template         Attributes in any order.  Seesection 5.3 for a description of         each such attribute.  Seesection 5.2 for details on processing         these attributes.Herriot & Hastings          Standards Track                    [Page 53]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.1.1.2.  Create-Job-Subscriptions Response   The Printer MUST return to the client the following sets of   attributes as part of a Create-Job-Subscriptions 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 [RFC2911] sections13 and      3.1.6.      In this group, the Printer can return any status codes defined in      [RFC2911] andsection 12.  The following is a description of the      important status codes:      successful-ok: the Printer created all Subscription Objects         requested (see [RFC2911]).      successful-ok-ignored-subscriptions: the Printer created some         Subscription Objects requested but some failed.  The         Subscription Attributes Groups with a "notify-status-code"         attribute are the ones that failed (seesection 12.1).      client-error-ignored-all-subscriptions: the Printer created no         Subscription Objects requested and all failed.  The         Subscription Attributes Groups with a "notify-status-code"         attribute are the ones that failed (seesection 12.2).      client-error-not-possible: For this operation and other Per-Job         Subscription operations, this error can occur because the         specified Job has already completed (see [RFC2911], whether or         not the Job is retained in the Job Retention and/or Job History         phases (see[RFC2911] section 4.3.7.1).   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.2.   Group 2: Unsupported Attributes      See[RFC2911] section 3.1.7 for details on returning Unsupported      Attributes.  This group does not contain any unsupported      Subscription Template Attributes; they are returned in the      Subscription Attributes Group (see below).Herriot & Hastings          Standards Track                    [Page 54]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Group 3-N: Subscription Attributes      These groups MUST be returned unless the Printer is unable to      interpret the entire request, e.g., the "status-code" parameter      returned in Group 1 has the value: 'client-error-bad-request'.      "notify-status-code" (type2 enum):         Indicates the status of this subscription (seesection 13 for         the status code definitions).Section 5.2 defines when this         attribute MUST be present in this group.      Seesection 5.2 for details on the contents of each occurrence of      this group.11.1.2.  Create-Printer-Subscriptions operation   The operation is identical to Create-Job-Subscriptions with   exceptions noted in this section.   The operation creates Per-Printer Subscription Objects instead of   Per-Job Subscription Objects, and associates each newly created Per-   Printer Subscription Object with the Printer specified by the   operation target rather than with a specific Job.   The Printer MUST accept the request in any of its states, i.e.,   'idle', 'processing', or 'stopped'.  The Printer MUST NOT change its   "printer-state" attribute because of this operation.   Access Rights:  To create Per-Printer Subscription Objects, the   authenticated user (see[RFC2911] section 8.3) performing this   operation MUST have (1) Operator or Administrator access rights for   this Printer (see [RFC2911] sections1 and8.5), or (2) be otherwise   authorized by the Printer's administrator-configured security policy   to create Per-Printer Subscription Objects for this Printer.   Otherwise, the Printer MUST reject the operation and return: the   'client-error-forbidden', 'client-error-not-authenticated', or   'client-error-not-authorized' status code as appropriate.11.1.2.1.  Create-Printer-Subscriptions Request   The groups are identical to the Create-Job-Subscriptions (seesection11.1.1.1) except that the Operation Attributes group MUST NOT contain   the  "notify-job-id" attribute.  If the client does supply the   "notify-job-id" attribute, then the Printer MUST treat it as any   other unsupported Operation attribute and MUST return it in the   Unsupported Attributes group.Herriot & Hastings          Standards Track                    [Page 55]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.1.2.2.  Create-Printer-Subscriptions Response   The groups are identical to the Create-Job-Subscriptions (seesection11.1.1.2).11.1.3.  Job Creation Operations - Extensions for Notification   This document extends the Job Creation operations (seesection 3.2)   to create Subscription Objects as a part of the operation.   The Job Creation operations are identical to Create-Job-Subscriptions   operation with exceptions noted in this section.   Unlike the Create-Job-Subscriptions operation, a Job Creation   operation associates the newly created Subscription Objects with the   Job object created by this operation.  The operation succeeds if and   only if the Job creation succeeds.  If the Printer does not create   some or all of the requested Subscription Objects, the Printer MUST   return a  'successful-ok-ignored-subscriptions' status-code instead   of a 'successful-ok' status-code, but the Printer MUST NOT reject the   operation because of a failure to create Subscription Objects.   If the Job Creation operation includes a Job Template group, the   client MUST supply it after the Operation Attributes group and before   the first Subscription Template Attributes Group.   If a Printer does not support this Notification specification, then   it MUST treat the Subscription Attributes Group like an unknown group   and ignore it (see[RFC2911] section 5.2.2).  Because the Printer   ignores the Subscription Attributes Group, it doesn't return them in   the response either, thus indicating to the client that the Printer   doesn't support Notification.   After completion of a successful Job Creation operation, the Printer   generates a 'job-created' event (seesection 5.3.3.4.3).   Access Rights:  To create Per-Job Subscription Objects, the   authenticated user (see[RFC2911] section 8.3) performing this   operation MUST either have permission to create Jobs on the Printer   or have Operator or Administrator access rights for this Printer (see   [RFC2911] sections1 and8.5).  Otherwise the Printer MUST reject the   operation and return: the 'client-error-forbidden', 'client-error-   not-authenticated', or 'client-error-not-authorized' status code as   appropriate.Herriot & Hastings          Standards Track                    [Page 56]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.1.3.1.  Job Creation Request   The groups for this operation are sufficiently different from the   Create-Job-Subscriptions operation that they are all presented here.   The following groups of attributes are supplied as part of a Job   Creation Request:   Group 1: Operation Attributes      Same as defined in [RFC2911] for Print-Job, Print-URI, and      Create-Job requests.   Group 2: Job Template Attributes      The client OPTIONALLY supplies a set of Job Template attributes as      defined in[RFC2911] section 4.2.   Group 3 to N: Subscription Template Attributes      The same as Group 2-N in Create-Job-Subscriptions.  Seesection11.1.1.1.   Group N+1: Document Content  (Print-Job only)      The client MUST supply the document data to be processed.11.1.3.2.  Job Creation Response   The Printer MUST return to the client the following sets of   attributes as part of a Print-Job, Print-URI, and Create-Job   Response:   Group 1: Operation Attributes      Status Message:         As defined in [RFC2911] for Print-Job, Print-URI, and Create-         Job requests.         In this group, the Printer can return any status codes defined         in [RFC2911] andsection 12.  The following is a description of         the important status codes:         successful-ok: the Printer created the Job and all            Subscription Objects requested (see [RFC2911].         successful-ok-ignored-subscriptions: the Printer created            the Job and not all of the Subscription Objects requestedHerriot & Hastings          Standards Track                    [Page 57]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005            (seesection 12.1).  This status-code hides 'successful-ok-            xxx' status-codes that could reveal problems in Job            creation.  The Printer MUST NOT return the 'client-error-            ignored-all-subscriptions' status code for Job Creation            operations because the Printer returns an error status-code            only when it fails to create a Job.         Natural Language and Character Set:            The "attributes-charset" and "attributes-natural-language"            attributes as described in[RFC2911] section 3.1.4.2.   Group 2: Unsupported Attributes      See[RFC2911] section 3.1.7 for details on returning Unsupported      Attributes.  This group does not contain any unsupported      Subscription Template Attributes; they are returned in the      Subscription Attributes Group (see below).   Group 3: Job Object Attributes      The "job-id" of the Job Object just created, etc., as defined in      [RFC2911] for Print-Job, Print-URI, and Create-Job requests.   Group 4 to N: Subscription Attributes      These groups MUST be returned if and only if the client supplied      Subscription Template Attributes and the operation was accepted.      Seesection 5.2 for details on the contents of each occurrence of      this group.11.2.  Other Operations   This section defines other operations on Subscription objects.11.2.1.  Restart-Job Operation - Extensions for Notification   The Restart-Job operation [RFC2911] is neither a Job Creation   operation nor a Subscription Creation operation (seesection 3.2).   For the Restart-Job operation, the client MUST NOT supply any Job   Subscription Attributes Groups.  The Printer MUST treat any supplied   Job Subscription Attributes as unsupported attributes.   For this operation, the Printer does not return a job-id or any   Subscription Attributes groups because the Printer reuses the   existing Job object with the same job-id and the existing Per-Job   Subscription Objects with the same subscription-ids.  However, afterHerriot & Hastings          Standards Track                    [Page 58]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   successful completion of this operation, the Printer generates a   'job-created' event (seesection 5.3.3.4.3).11.2.2.  Validate-Job Operation - Extensions for Notification   A client can test whether one or more Subscription Objects could be   created using the Validate-Job operation.  The client supplies one or   more Subscription Template Attributes Groups (defined insection5.3), just as in a Job Creation request.   A Printer MUST support this extension to this operation.   The Printer MUST accept requests that are identical to the Job   Creation request defined insection 11.1.3.1, except that the request   MUST NOT contain document data.   The Printer MUST return the same groups and attributes as the Print-   Job operation (section 11.1.3.1) with the following exceptions.  The   Printer MUST NOT return a Job Object Attributes Group because no Job   is created.  The Printer MUST NOT return the "notify-subscription-id"   attribute in any Subscription Attribute Group because no Subscription   Object is created.   If the Printer would succeed in creating a Subscription Object, the   corresponding Subscription Attributes Group either has no 'status-   code' attribute or a 'status-code' attribute with a value of   'successful-ok-too-many-events' or 'successful-ok-ignored-or-   substituted-attributes' (see sections5.2 and13).  The status-codes   have the same meaning as in Job Creation except the results state   what "would happen".   The Printer MUST validate Subscription Template Attributes Groups in   the same manner as the Job Creation operations.11.2.3.  Get-Printer-Attributes - Extensions for Notification   This operation is extended so that it returns Printer attributes   defined in this document.   A Printer MUST support this extension to this operation.   In addition to the requirements of[RFC2911] section 3.2.5, a 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. Subscription Template Attributes: Each supported attribute in      column 2 of Table 1.Herriot & Hastings          Standards Track                    [Page 59]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   2. New Printer Description Attributes: Each supported attribute insection 6.   3. New Group Name: The 'subscription-template' group name, which      names all supported Subscription Template Attribute in column 2 of      Table 1.  This group name is also used in the Get-Subscription-      Attributes and Get-Subscriptions operation with an analogous      meaning.   4. Extended Group Name: The 'all' group name, which names all Printer      attributes according to[RFC2911] section 3.2.5.  In this      extension 'all' names all attributes specified in [RFC2911] plus      those named in items 1 and 2 of this list.11.2.4.  Get-Subscription-Attributes operation   This operation allows a client to request the values of the   attributes of a Subscription Object.   A Printer MUST support this operation.   This operation is almost identical to the Get-Job-Attributes   operation (see[RFC2911] section 3.3.4).  The only differences are   that the operation is directed at a Subscription Object rather than a   Job object, and the returned attribute group contains Subscription   Object attributes rather than Job object attributes.   Access Rights:  The authenticated user (see[RFC2911] section 8.3)   performing this operation MUST (1) be the Subscription Object owner,   (2) have Operator or Administrator access rights for this Printer   (see [RFC2911] sections1 and8.5), or (3) be otherwise authorized by   the Printer's administrator-configured security policy to query the   Subscription Object for the target job.  Otherwise the Printer MUST   reject the operation and return: the 'client-error-forbidden',   'client-error-not-authenticated', or 'client-error-not-authorized'   status code as appropriate.  Furthermore, the Printer's security   policy MAY limit which attributes are returned, in a manner similar   to the Get-Job-Attributes operation (see [RFC2911] end ofsection3.3.4.2).11.2.4.1.  Get-Subscription-Attributes Request   The following groups of attributes are part of the Get-Subscription-   Attributes request:   Group 1: Operation Attributes   Natural Language and Character Set:Herriot & Hastings          Standards Track                    [Page 60]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      The "attributes-charset" and "attributes-natural-language"      attributes as described in section [RFC2911] 3.1.4.1.   Target:      The "printer-uri" attribute which defines the target for this      operation as described in[RFC2911] section 3.1.5.   Requesting User Name:      The "requesting-user-name" attribute SHOULD be supplied by the      client as described in[RFC2911] section 8.3.11.2.4.1.1.  "notify-subscription-id" (integer (1:MAX))   The client MUST supply this attribute.  The Printer MUST support this   attribute.  This attribute specifies the Subscription Object from   which the client is requesting attributes.  If the client omits this   attribute, the Printer MUST reject this request with the 'client-   error-bad-request' status code.11.2.4.1.2.  "requested-attributes" (1setOf keyword)   The client OPTIONALLY supplies this attribute.  The Printer MUST   support this attribute.  This attribute specifies the attributes of   the specified Subscription Object that the Printer MUST return in the   response.  Each value of this attribute is either an attribute name   (defined in sections5.3 and5.4) or an attribute group name.  The   attribute group names are:   -  'subscription-template': all attributes that are both defined insection 5.3 and present on the specified Subscription Object      (column 1 of Table 1).   -  'subscription-description': all attributes that are both defined      insection 5.4 and present on the specified Subscription Object      (Table 2).   -  'all': all attributes that are present on the specified      Subscription Object.   A Printer MUST support all these group names.      If the client omits this attribute, the Printer MUST respond as if      this attribute had been supplied with a value of 'all'.11.2.4.2.  Get-Subscription-Attributes Response   The Printer returns the following sets of attributes as part of the   Get-Subscription-Attributes Response:Herriot & Hastings          Standards Track                    [Page 61]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Group 1: Operation Attributes   Status Message:      Same as [RFC2911].   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.2.  The      "attributes-natural-language" MAY be the natural language of the      Subscription Object, rather than the one requested.   Group 2: Unsupported Attributes      See[RFC2911] section 3.1.7 andsection 3.2.5.2 for details on      returning Unsupported Attributes.      The response NEED NOT contain the "requested-attributes" operation      attribute with any supplied keyword values that were requested by      the client but are not supported by the IPP object.  If the      Printer object does return unsupported attributes referenced in      the "requested-attributes" operation attribute, the values of the      "requested-attributes" attribute returned MUST include only the      unsupported keywords that were requested by the client.  If the      client had requested a group name, such as 'all', the resulting      unsupported attributes returned MUST NOT include attribute keyword      names described in the standard but not supported by the      implementation.   Group 3: Subscription Attributes      This group contains a set of attributes with their current values.      Each attribute returned in this group:   a) MUST be specified by the "requested-attributes" attribute in the      request, AND   b) MUST be present on the specified Subscription Object AND   c) MUST  NOT be restricted by the security policy in force.  For      example, a Printer MAY prohibit a client who is not the creator of      a Subscription Object from seeing some or all of its attributes.      See [RFC2911] end ofsection 3.3.4.2 andsection 8.      The Printer can return the attributes of the Subscription Object      in any order.  The client MUST accept the attributes in any order.Herriot & Hastings          Standards Track                    [Page 62]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.2.5.  Get-Subscriptions operation   This operation allows a client to retrieve the values of attributes   of all Subscription Objects belonging to a Job or Printer.   A Printer MUST supported this operation.   This operation is similar to the Get-Subscription-Attributes   operation, except that this Get-Subscriptions operation returns   attributes from possibly more than one object.   This operation is similar to the Get-Jobs operation (see[RFC2911]   section 3.2.6), except that the operation returns Subscription   Objects rather than Job objects.   Access Rights:  To query Per-Job Subscription Objects of the   specified job (client supplied the "notify-job-id" operation   attribute - seesection 11.2.5.1.1), the authenticated user (see[RFC2911] section 8.3) performing this operation MUST (1) be the   Subscription Object owner, (2) have Operator or Administrator access   rights for this Printer (see [RFC2911] sections1 and8.5), or (3) be   otherwise authorized by the Printer's administrator-configured   security policy to query the Subscription Object for the target job.   To query Per-Printer Subscription Objects of the Printer (client   omits the "notify-job-id" operation attribute - seesection11.2.5.1.1), the authenticated user (see[RFC2911] section 8.3)   performing this operation MUST (1) have Operator or Administrator   access rights for this Printer (see [RFC2911] sections1 and8.5), or   (2) be otherwise authorized by the Printer's administrator-configured   security policy to query Per-Printer Subscription Objects for the   target Printer.  Otherwise the Printer MUST reject the operation and   return: the 'client-error-forbidden', 'client-error-not-   authenticated', or 'client-error-not-authorized' status code as   appropriate.  Furthermore, the Printer's security policy MAY limit   which attributes are returned, in a manner similar to the Get-Jobs   and Get-Printer-Attributes operations (see [RFC2911] end of sections   3.2.6.2 and 3.2.5.2).11.2.5.1.  Get-Subscriptions Request   The following groups of attributes are part of the Get-Subscriptions   request:   Group 1: Operation Attributes   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.1.Herriot & Hastings          Standards Track                    [Page 63]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Target:      The "printer-uri" attribute which defines the target for this      operation as described in[RFC2911] section 3.1.5.   Requesting User Name:      The "requesting-user-name" attribute SHOULD be supplied by the      client as described in[RFC2911] section 8.3.11.2.5.1.1.  "notify-job-id" (integer(1:MAX))   If the client specifies this attribute, the Printer returns the   specified attributes of all Per-Job Subscription Objects associated   with the Job whose "job-id" attribute value equals the value of this   attribute.  If the client does not specify this attribute, the   Printer returns the specified attributes of all Per-Printer   Subscription Objects.  Note: there is no way to get all Per-Job   Subscriptions known to the Printer in a single operation.  A Get-Jobs   operation followed by a Get-Subscriptions operation for each Job will   return all Per-Job Subscriptions.11.2.5.1.2.  "limit" (integer(1:MAX))   The client OPTIONALLY supplies this attribute.  The Printer MUST   support this attribute.  It is an integer value that determines the   maximum number of Subscription Objects that a client will receive   from the Printer even if the "my-subscriptions" attribute constrains   which Subscription Objects are returned.  The limit is a "stateless   limit" in that if the value supplied by the client is 'N', then only   the first 'N' Subscription Objects are returned in the Get-   Subscriptions Response.  There is no mechanism to allow for the next   'M' Subscription Objects after the first 'N' Subscription Objects.   If the client does not supply this attribute, the Printer responds   with all applicable Subscription Objects.11.2.5.1.3.  "requested-attributes" (1setOf type2 keyword)   The client OPTIONALLY supplies this attribute.  The Printer MUST   support this attribute.  This attribute specifies the attributes of   the specified Subscription Objects that the Printer MUST return in   the response.  Each value of this attribute is either an attribute   name (defined in sections5.3 and5.4) or an attribute group name   (defined insection 11.2.4.1).  If the client omits this attribute,   the Printer MUST respond as if the client had supplied this attribute   with the one value: 'notify-subscription-id'.Herriot & Hastings          Standards Track                    [Page 64]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.2.5.1.4.  "my-subscriptions" (boolean)   The client OPTIONALLY supplies this attribute.  The Printer MUST   support this attribute.  If the value is 'false', the Printer MUST   consider the Subscription Objects from all users as candidates.  If   the value is 'true', the Printer MUST return the Subscription Objects   created by the requesting user of this request.  If the client does   not supply this attribute, the Printer MUST respond as if the client   had supplied the attribute with a value of 'false'.  The means for   authenticating the requesting user and matching the Subscription   Objects is similar to that for Jobs which is described in[RFC2911]   section 8.11.2.5.2 Get-Subscriptions Response   The Printer returns the following sets of attributes as part of the   Get-Subscriptions Response:   Group 1: Operation Attributes   Status Message:      Same as [RFC2911].   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.2.   Group 2: Unsupported Attributes      Same as for Get-Subscription-Attributes.   Groups 3 to N: Subscription Attributes      The Printer responds with one Subscription Attributes Group for      each requested Subscription Object (see the "notify-job-id"      attribute in the Operation Attributes Group of this operation).      The Printer returns Subscription Objects in any order.      If the "limit" attribute is present in the Operation Attributes      group of the request, the number of Subscription Attributes Groups      in the response MUST NOT exceed the value of the "limit"      attribute.      It there are no Subscription Objects associated with the specified      Job or Printer, the Printer MUST return zero Subscription      Attributes Groups and it MUST NOT treat this case as an error,Herriot & Hastings          Standards Track                    [Page 65]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      i.e., the status-code MUST be 'successful-ok' unless something      else causes the status code to have some other value.      See the Group 3 response (Subscription Attributes Group) of the      Get-Subscription-Attributes operation (section 11.2.4.2) for the      attributes that a Printer returns in this group.11.2.6.  Renew-Subscription operation   This operation allows a client to request the Printer to extend the   lease on a Per-Printer Subscription Object.   The Printer MUST support this operation.   The Printer MUST accept this request for a Per-Printer Subscription   Object in any of the target Printer's states, i.e., 'idle',   'processing', or 'stopped', but MUST NOT change the Printer's   "printer-state" attribute.   The Printer MUST reject this request for a Per-Job Subscription   Object because it has no lease (seesection 5.4.3).  The status code   returned MUST be 'client-error-not-possible'.   Access Rights: The authenticated user (see[RFC2911] section 8.3)   performing this operation MUST (1) be the owner of the Per-Printer   Subscription Object, (2) have Operator or Administrator access rights   for the Printer (see [RFC2911] sections1 and8.5), or (3) be   otherwise authorized by the Printer's administrator-configured   security policy to renew Per-Printer Subscription Objects for the   target Printer.  Otherwise, the Printer MUST reject the operation and   return: the 'client-error-forbidden', 'client-error-not-   authenticated', or 'client-error-not-authorized' status code as   appropriate.11.2.6.1.  Renew-Subscription Request   The following groups of attributes are part of the Renew-Subscription   Request:   Group 1: Operation Attributes   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.1.   Target:      The "printer-uri" attribute which defines the target for this      operation as described in[RFC2911] section 3.1.5.Herriot & Hastings          Standards Track                    [Page 66]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Requesting User Name:      The "requesting-user-name" (name(MAX)) attribute SHOULD be      supplied by the client as described in[RFC2911] section 8.3.11.2.6.1.1.  "notify-subscription-id" (integer (1:MAX))   The client MUST supply this attribute.  The Printer MUST support this   attribute.  This attribute specifies the Per-Printer Subscription   Object whose lease the Printer MUST renew.  If the client omits this   attribute, the Printer MUST reject this request with the 'client-   error-bad-request' status code.   Group 2: Subscription Template Attributes11.2.6.1.2.  "notify-lease-duration" (integer(0:MAX))   The client MAY supply this attribute.  It indicates the number of   seconds to renew the lease for the specified Subscription Object.  A   value of 0 requests an infinite lease (which MAY require Operator   access rights).  If the client omits this attribute, the Printer MUST   use the value of the Printer's "notify-lease-duration-default"   attribute.  Seesection 5.3.8 for more details.11.2.6.2.  Renew-Subscription Response   The Printer returns the following sets of attributes as part of the   Renew-Subscription Response:   Group 1: Operation Attributes   Status Message:      Same as [RFC2911].      The following are some of the status codes returned (see      [RFC2911]:         successful-ok: The operation successfully renewed the lease            on the Subscription Object for the requested duration.         successful-ok-ignored-or-substituted-attributes: The            operation successfully renewed the lease on the Subscription            Object for some duration other than the amount requested.         client-error-not-possible: The operation failed because the            "notify-subscription-id" Operation attribute identified a            Per-Job Subscription Object.Herriot & Hastings          Standards Track                    [Page 67]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005         client-error-not-found: The operation failed because the            "notify-subscription-id" Operation attribute identified a            non-existent Subscription Object.   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.2.  The      "attributes-natural-language" MAY be the natural language of the      Subscription Object, rather than the one requested.   Group 2: Unsupported Attributes      See[RFC2911] section 3.1.7 for details on returning Unsupported      Attributes.   Group 3: Subscription Attributes      The Printer MUST return the following Subscription Attribute:11.2.6.2.1.  "notify-lease-duration" (integer(0:MAX))   The value of this attribute MUST be the number of seconds that the   Printer has granted for the lease of the Subscription Object (seesection 5.3.8 for details, such as the value of this attribute when   the Printer doesn't support the requested value).11.2.7.  Cancel-Subscription operation   This operation allows a client to delete a Subscription Object and   stop the Printer from delivering more Event Notifications.  Once   performed, there is no way to reference the Subscription Object.   A Printer MUST supported this operation.   The Printer MUST accept this request in any of the target Printer's   states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change   the Printer's "printer-state" attribute.   If the specified Subscription Object is a Per-Job Subscription   Object, the Printer MUST accept this request in any of the target   Job's states, but MUST NOT change the Job's "job-state" attribute or   affect the Job.   Note:  There is no way to change any attributes on a Subscription   Object, except the "notify-lease-duration" attribute (using the   Renew-Subscription operation).  In order to change other attributes,   a client performs a Subscription Creation Operation and Cancel-   Subscription operation on the old Subscription Object.  If the clientHerriot & Hastings          Standards Track                    [Page 68]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   wants to avoid missing Event Notifications, it performs the   Subscription Creation Operation first.  If this order would create   too many Subscription Objects on the Printer, the client reverses the   order.   Access Rights: The authenticated user (see[RFC2911] section 8.3)   performing this operation MUST (1) be the owner of the Subscription   Object, (2) have Operator or Administrator access rights for the   Printer (see [RFC2911] sections1 and8.5), or (3) be otherwise   authorized by the Printer's administrator-configured security policy   to cancel the target Subscription Object.  Otherwise, the Printer   MUST reject the operation and return: the 'client-error-forbidden',   'client-error-not-authenticated', or 'client-error-not-authorized'   status code as appropriate.11.2.7.1.  Cancel-Subscription Request   The following groups of attributes are part of the Cancel-   Subscription Request:   Group 1: Operation Attributes   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.1.   Target:      The "printer-uri" attribute which defines the target for this      operation as described in[RFC2911] section 3.1.5.   Requesting User Name:      The "requesting-user-name" attribute SHOULD be supplied by the      client as described in[RFC2911] section 8.3.11.2.7.1.1.  "notify-subscription-id" (integer (1:MAX))   The client MUST supply this attribute.  The Printer MUST support this   attribute.  This attribute specifies the Subscription Object that the   Printer MUST cancel.  If the client omits this attribute, the Printer   MUST reject this request with the 'client-error-bad-request' status   code.Herriot & Hastings          Standards Track                    [Page 69]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200511.2.7.2.  Cancel-Subscription Response   The Printer returns the following sets of attributes as part of the   Cancel-Subscription Response:   Group 1: Operation Attributes   Status Message:      Same as [RFC2911].         The following are some of the status codes returned (see         [RFC2911]:         successful-ok: The operation successfully canceled            (deleted) the Subscription Object.         client-error-not-found: The operation failed because the            "notify-subscription-id" Operation attribute identified a            non-existent Subscription Object.   Natural Language and Character Set:      The "attributes-charset" and "attributes-natural-language"      attributes as described in[RFC2911] section 3.1.4.2.  The      "attributes-natural-language" MAY be the natural language of the      Subscription Object, rather than the one requested.   Group 2: Unsupported Attributes      See[RFC2911] section 3.1.7 for details on returning Unsupported      Attributes.12.  Status Codes   The following status codes are defined as extensions for Notification   and are returned as the value of the "status-code" parameter in the   Operation Attributes Group of a response (see [RFC2911]section3.1.6.1).  Operations in this document can also return the status   codes defined insection 13 of [RFC2911].  The 'successful-ok' status   code is an example of such a status code.12.1.  successful-ok-ignored-subscriptions (0x0003)   The Subscription Creation Operation was unable to create all   requested Subscription Objects.   For a Create-Job-Subscriptions or Create-Printer-Subscriptions   operation, this status code means that the Printer created one orHerriot & Hastings          Standards Track                    [Page 70]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   more Subscription Objects, but not all requested Subscription   Objects.   For a Job Creation operation, this status code means that the Printer   created the Job along with zero or more Subscription Objects.  The   Printer returns this status code even if other job attributes are   unsupported or in conflict.  That is, if an IPP Printer finds a   warning that would allow it to return 'successful-ok-ignored-   subscriptions' and either 'successful-ok-ignored-or-substituted-   attributes' and/or 'successful-ok-conflicting-attributes', it MUST   return 'successful-ok-ignored-subscriptions'.12.2.  client-error-ignored-all-subscriptions (0x0414)   This status code is the same as 'successful-ok-ignored-subscriptions'   except that only the Create-Job-Subscriptions and Create-Printer-   Subscriptions operation return it.  They return this status code only   when the Printer creates zero Subscription Objects.13.  Status Codes in Subscription Attributes Groups   This section contains values of the "notify-status-code" (type2 enum)   attribute that the Printer returns in a Subscription Attributes Group   in a response when the corresponding Subscription Object:   1. is not created or   2. is created and some of the client-supplied attributes are not      supported.   The following sections are ordered in decreasing order of importance   of the status-codes.13.1.  client-error-uri-scheme-not-supported (0x040C)   This status code is defined in [RFC2911].  This document extends its   meaning and allows it to be in a Subscription Attributes Group of a   response.   The scheme of the client-supplied URI in a "notify-recipient-uri"   Subscription Template Attribute in a Subscription Creation Operation   is not supported.  Seesection 5.3.1.13.2.  client-error-attributes-or-values-not-supported (0x040B)   This status code is defined in [RFC2911].  This document extends its   meaning and allows it to be in a Subscription Attributes Group of a   response.Herriot & Hastings          Standards Track                    [Page 71]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   The method of the client-supplied keyword in a "notify-pull-method"   Subscription Template Attribute in a Subscription Creation Operation   is not supported.  Seesection 5.3.2.13.3.  client-error-too-many-subscriptions (0x0415)   The number of Subscription Objects supported by the Printer would be   exceeded if this Subscription Object were created (seesection 5.2).13.4.  successful-ok-too-many-events (0x0005)   The client supplied more Events in the "notify-events" operation   attribute of a Subscription Creation Operation than the Printer   supports, as indicated in its "notify-max-events-supported" Printer   attribute (seesection 5.3.3).13.5.  successful-ok-ignored-or-substituted-attributes (0x0001)   This status code is defined in [RFC2911].  This document extends its   meaning to include unsupported Subscription Template Attributes and   it can appear in a Subscription Attributes Group.14.  Encodings of Additional Attribute Tags   This section assigns values to two attributes tags as extensions to   the encoding defined in [RFC2910]).   The "subscription-attributes-tag" delimits Subscription Template   Attributes Groups in requests and Subscription Attributes Groups in   responses.   The "event-notification-attributes-tag" delimits Event Notifications   in Delivery Methods that use an IPP-like encoding.   The following table specifies the values for the delimiter tags:      Tag Value (Hex)   Meaning      0x06              "subscription-attributes-tag"      0x07              "event-notification-attributes-tag"15.  Conformance Requirements   It is OPTIONAL for IPP clients and Printers to implement this Event   Notification specification.Herriot & Hastings          Standards Track                    [Page 72]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200515.1.  Conformance requirements for clients   If this Event Notification specification is implemented by a client,   the client MUST support the 'ippget' Pull Delivery Method and meet   the conformance requirements as defined in [RFC3996] for clients.  A   client MAY support additional Delivery Methods.15.2.  Conformance requirements for Printers   If this Event Notification specification is implemented by a Printer,   the Printer MUST:   -  meet the Conformance Requirements detailed insection 5 of      [RFC2911].   -  support the Subscription Template Attributes Group in requests and      the Subscription Attributes Group in responses.   -  support all of the following attributes:      a. REQUIRED Subscription Object attributes insection 5.      b. REQUIRED Printer Description object attributes insection 6.      c. REQUIRED attributes in Event Notification content insection 8.   -  support the 'ippget' Pull Delivery Method and meet the conformance      requirements as defined in [RFC3996] for Printers.  The Printer      MAY support additional Push and Pull Delivery Methods.   -  deliver Event Notifications that conform to the requirements ofsection 9 and the requirements of the Delivery Method Document for      each supported Delivery Method (the conformance requirements for      Delivery Method Documents is specified insection 10).   -  for all of the Job Creation Operations that the Printer supports,      MUST support the REQUIRED extensions for notification defined insection 11.1.3.   -  meet the conformance requirements for operations as described in      Table 16 and meet the requirements for Printers as specified in      the indicated sub-sections ofsection 11:Herriot & Hastings          Standards Track                    [Page 73]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Table 16 - Printer Conformance Requirements for Operations   Operation                                         Printer                                                     Conformance                                                     Requirements   Create-Printer-Subscriptions (section 11.1.2)     REQUIRED   Create-Job-Subscriptions (section 11.1.1)         OPTIONAL   Get-Subscription-Attributes (section 11.2.3)      REQUIRED   Get-Subscriptions (section 11.2.5)                REQUIRED   Renew-Subscription (section 11.2.6)               REQUIRED   Cancel-Subscription (section 11.2.7)              REQUIRED16.  Model for Notification with Cascading Printers (Informative)   With this model (see Figure 2 below), there is an intervening Print   server between the human user and the output-device.  So the system   effectively has two Printer objects.  There are two cases to   consider.   1. When the Printer 1 (in the server) generates Events, the system      behaves like the client and Printer in Figure 1.  In this case,      Printer 1 delivers Event Notifications that are shown as Event      Notifications (A) of  Figure 2.   2. When the Printer 2 (in the output-device) generates Events, there      are two possible system configurations:      a) Printer 1 forwards the client-supplied Subscription Creation         Operations to the downstream Printer 2 and lets Printer 2         deliver the Event Notifications directly to the Notification         Recipients supplied by the Client (Event Notifications(C) in         the diagram).      b) Printer 1 performs the client-supplied Subscription Creation         Operations and also forwards the Subscription Creation         Operations to Printer 2 with the Notification Recipient changed         to be the Printer 1.  When an Event occurs in Printer 2,         Printer 2 delivers the Event Notification (B) to Notification         Recipient of Printer 1, which relays the received Event         Notification (B) to the client-supplied Notification Recipient         (as Event Notifications(A) in the diagram).  Note, when a         client performs a Subscription Creation Operation, Printer 1         need not forward the Subscription Creation Operation to Printer         2 if it would create a duplicate Subscription Object on Printer         2.Herriot & Hastings          Standards Track                    [Page 74]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Note: when Printer 1 is forwarding Subscription Creation Operations   to Printer 2, it may request Printer 2 to create additional   Subscription Objects (called "piggy-backing").  Piggy-backing is   useful when:   -  Device A is configured to accept (IPP or non-IPP) requests from      other servers.   -  Server S wants to receive Job Events that the client didn't      request and Server S wants these Events for jobs it submits and      not for other jobs.                              server S                       device A                           +------------+                 +------------+                           |            |                 |            |   +--------+ Subscription | ###########|                 | ###########|   | client |--Creation ----># Printer #|  Subscription   | # Printer #|   +--------+  Operation   | # Object 1#|---Creation------|># Object 2#|                           | ###|#######|   Operation     | ####|#|####|                           +----|---^---+                 +-----|-|----+   +--------+     Event         |   |                           | |   |Notific-|<-Notifications(A)-+   +-- Event Notifications(B)--+ |   |ation Re|<-------------Event Notifications(C)-----------------+   |cipient |   +--------+         Figure 2 - Model for Notification with Cascading Printers17.  Distributed Model for Notification (Informative)   A Printer implementation could use some other remote notification   server to provide some or most of the service.  For example, the   remote notification server could deliver Event Notifications using   Delivery Methods that are not directly supported by the output device   or Printer object.  Or, the remote notification server could store   Subscription Objects (passed to it from the output device in response   to Subscription Creation requests), accept Events, format the Event   Notification in the natural language of the Notification Recipient,   and deliver the Event Notifications to the Notification Recipient(s).   Figure 3 shows this partitioning.  The interface between the output   device (or Printer object) and the remote notification server is   outside the scope of this document and is intended to be transparent   to the client and this document.Herriot & Hastings          Standards Track                    [Page 75]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005                                            ***********************                                            *                                            * Printer in combination                                            * with the distributed                                            * Notification Server)                                            *                                            * output device or server                                            * +---------------+      PDA, desktop, or server               * +  ###########  +           +--------+                       * |  #         #  |           | client |---IPP Subscription--------># Printer #  |           +--------+   Creation operation  * |  # Object  #  |                                            * |  #####|#####  |                                            * +-------|-------+                                            *         | Subscriptions                                            *         | OR Event        +------------+                      *         | Notifications        |Notification|   IPP-defined        *  +------v--------+        |Recipient   |<--Event Notifications---| Notification  |        +------------+                      *  | Server        |                                            *  +---------------+                                            *                                            *************************   *** = Implementation configuration opaque boundary     Figure 3 - Opaque Use of a Notification Server Transparent to the                                  Client18.  Extended Notification Recipient (Informative)   The model allows for an extended Notification Recipient that is   itself a notification server that forwards each Event Notification to   another recipient (called the Ultimate Notification Recipient in this   section).  The Delivery Method to the Ultimate Recipient is probably   different from the Delivery Method used by the Printer to the   extended Notification Recipient.   This extended Notification Recipient is transparent to the Printer   but not to the client.   When a client performs a Subscription Creation Operation, it   specifies the extended Notification Recipient as it would any   Notification Recipient.  In addition, the client specifies the   Ultimate Notification Recipient in the Subscription Creation   Operation in a manner specified by the extended Notification   Recipient.  Typically, it is either some bytes in the value of   "notify-user-data" or some additional parameter in the value of   "notify-recipient-uri".  The client also subscribes directly with theHerriot & Hastings          Standards Track                    [Page 76]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   extended Notification Recipient (by means outside this document),   since it is a notification server in its own right.   The IPP Printer treats the extended Notification Recipient like any   other Notification Recipient and the IPP Printer is not aware of the   forwarding.  The Delivery Method that the extended Notification   Recipient uses for delivering the Event Notification to the Ultimate   Notification Recipient is beyond the scope of this document and is   transparent to the IPP Printer.   Examples of this extended Notification Recipient are paging,   immediate messaging services, general notification services, and NOS   vendors' infrastructure.  Figure 4 shows this approach.      PDA, desktop, or server                    server or output device                                                      +---------------+          +--------+                                  |  ###########  |          | client |---Subscription Creation -----------># Printer #  |          +--------+       Operation                  |  # Object  #  |                                                      |  #####|#####  |   +------------+     +------------+   IPP-defined    +-------|-------+   |Ultimate    | any |Notification|<--Event Notifications----+   |Notification|<----|Recipient   |   |Recipient   |     +------------+   +------------+     (Notification Server)    Figure 4 - Use of an Extended Notification Recipient transparent to                                the Printer19.  Object Model for Notification (Normative)   This section describes the Notification object model that adds a   Subscription Object which together with the Job and Printer object   provide the complete Notification semantics.Herriot & Hastings          Standards Track                    [Page 77]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   The object relationships can be seen pictorially as:   Subscription Objects (Per-Printer Subscriptions)     Printer object   +----+                                               +------------+   | s1 |<--------------------------------------------->|            |   +----++                                              |            |    | s2 |<-------------------------------------------->|     p1     |    +----++                                             |            |     | s3 |<------------------------------------------->|            |     +----+                                             +------------+                    Job objects                    +---------+                    |         |     +----+         |   j1    |     | s4 |<------->|         |     +----+         |         |                    |         |    s4 is a Per-Job Subscription Object                    ++--------++                     |         |       +----+        |   j2    |       | s5 |<------>|         |       +----++       |         |        | s6 |<----->|         |    s5 and s6 are Per-Job Subscription        +----+       ++--------++                  Objects                      |         |                      |   j3    |                      |         |                      |         |         <----> indicates association                      +---------+               Figure 5 - Object Model for Notification   s1, s2, and s3 are Per-Printer Subscription Objects and can identify   Printer and/or Job Events.   s4, s5, and s6 are Per-Job Subscription Objects and can identify   Printer and/or Job Events.19.1.  Object relationships   This sub-section defines the object relationships between the   Printer, Job, and Subscription Objects by example.  Whether Per-   Printer Subscription Objects are actually contained in a Printer   object or are just bi-directionally associated with them in some way   is IMPLEMENTATION DEPENDENT and is transparent to the client.   Similarly, whether Per-Job Subscription Objects are actuallyHerriot & Hastings          Standards Track                    [Page 78]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   contained in a Job object or are just bi-directionally associated   with them in some way is IMPLEMENTATION DEPENDENT and is transparent   to the client.  The object relationships are defined as follows:19.2.  Printer Object and Per-Printer Subscription Objects   1. The Printer object contains (is associated with) zero or more      Per-Printer Subscription Objects (p1 contains s1-s3 Per-Printer      Subscription Objects).   2. Each Per-Printer Subscription Object (s1, s2, and s3) is contained      in (or is associated with) exactly one Printer object (p1).19.3.  Job Object and Per-Job Subscription Objects   1. A Job object (j1, j2, j3) is associated with zero or more Per-Job      Subscription Objects (s4-s6).  Job j1 is associated with Per-Job      Subscription Object s4, Job j2 is associated with Per-Job      Subscription Objects s5 and s6, and Job j3 is not associated with      any Per-Job Subscription Object.   2. Each Per-Job Subscription Object is associated with exactly one      Job object.20.  Per-Job versus Per-Printer Subscription Objects (Normative)   Per-Job and Per-Printer Subscription Objects are quite similar.   Either type of Subscription Object can subscribe to Job Events,   Printer Events, or both.  Both types of Subscription Objects can be   queried using the Get-Subscriptions and Get-Subscription-Attributes   operations and canceled using the Cancel-Subscription operation.   Both types of Subscription Objects create Subscription Objects which   have the same Subscription Object attributes defined.  However, there   are some semantic differences between Per-Job Subscription Objects   and Per-Printer Subscription Objects.  A Per-Job Subscription Object   is established by the client when submitting a job and after creating   the job using the Create-Job-Subscriptions operation by specifying   the "job-id" of the Job with the "notify-job-id" attribute.  A Per-   Printer Subscription Object is established between a client and a   Printer using the Create-Printer-Subscriptions operation.  Some   specific differences are:   1. A client usually creates one or more Per-Job Subscription Objects      as part of the Job Creation operations (Create-Job, Print-Job, and      Print-URI), rather than using the OPTIONAL Create-Job-      Subscriptions operation, especially since Printer implementations      NEED NOT support the Create-Job-Subscriptions operation, since it      is OPTIONAL.Herriot & Hastings          Standards Track                    [Page 79]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   2. For Per-Job Subscription Objects, the Subscription Object is only      valid while the job is "not-complete" (see sections5.4.3) while      for the Per-Printer Subscription Objects, the Subscription Object      is valid until the time (in seconds) that the Printer returned in      the "notify-lease-expiration-time" operation attribute.   3. Job Events in a Per-Job Subscription Object apply only to "one      job" (the Job created by the Job Creation operation or references      by the Create-Job-Subscriptions operation) while Job Events in a      Per-Printer Subscription Object apply to ALL jobs contained in the      IPP Printer.21.  Normative References   [RFC2119]         Bradner, S., "Key words for use in RFCs to Indicate                     Requirement Levels",BCP 14,RFC 2119 , March 1997.   [RFC2396]         Berners-Lee, T., Fielding, R., and L. Masinter,                     "Uniform Resource Identifiers (URI): Generic                     Syntax",RFC 2396, August 1998.   [RFC2717]         Petke, R. and I. King, "Registration Procedures for                     URL Scheme Names",RFC 2717, November 1999.   [RFC2910]         Herriot, R., Butler, S., Moore, P., and R. Turner,                     "Internet Printing Protocol/1.1: Encoding and                     Transport",RFC 2910, September 2000.   [RFC2911]         deBry, R., Hastings, T., Herriot, R., Isaacson, S.,                     and P. Powell, "Internet Printing Protocol/1.1:                     Model and Semantics",RFC 2911, September 2000.   [RFC3381]         Hastings, T., Lewis, H., and R. Bergman, "IPP: Job                     Progress Attributes",RFC 3381,  September 2002.   [RFC3996]         Herriot, R., Hastings, T., and H. Lewis, "Internet                     Printing Protocol (IPP): The 'ippget' Delivery                     Method for Event Notifications",RFC 3996, March                     2005.22.  Informative References   [IANA-CON]        Narten, T. and H. Alvestrand, "Guidelines for                     Writing an IANA Considerations Section in RFCs",BCP 26,RFC 2434, October 1998.Herriot & Hastings          Standards Track                    [Page 80]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   [RFC2565]         Herriot, R., Butler, S., Moore, P., and R. Turner,                     "Internet Printing Protocol/1.0: Encoding and                     Transport",RFC 2565, April 1999.   [RFC2566]         deBry, R., Hastings, T., Herriot, R., Isaacson, S.,                     and P. Powell, "Internet Printing Protocol/1.0:                     Model and Semantics",RFC 2566, April 1999.   [RFC2567]         Wright, D., "Design Goals for an Internet Printing                     Protocol",RFC 2567, April 1999.   [RFC2568]         Zilles, S., "Rationale for the Structure and Model                     and Protocol for the Internet Printing Protocol",RFC 2568, April 1999.   [RFC2569]         Herriot, R., Hastings, T., Jacobs, N., and J.                     Martin, "Mapping between LPD and IPP Protocols",RFC 2569, April 1999.   [RFC2616]         Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,                     Masinter, L., Leach, P., and T. Berners-Lee,                     "Hypertext Transfer Protocol - HTTP/1.1",RFC 2616,                     June 1999.   [RFC3196]         Hastings, T., Manros, C., Zehler, P., Kugler, C.,                     and H. Holst, "Internet Printing Protocol/1.1:                     Implementer's Guide",RFC 3196, November 2001.   [RFC3997]         Hastings, T., Editor, deBry, R., and H. Lewis,                     "Internet Printing Protocol (IPP): Requirements for                     IPP Notifications",RFC 3997, March 2005.23.  IANA Considerations   This section contains the registration information that IANA added to   the IPP Registry according to the procedures defined inRFC 2911[RFC2911] section 6 to cover the definitions in this document.  In   addition, this section defines how Events and Delivery Methods will   be registered when they are defined in other documents.  The   resulting registrations have been published in thehttp://www.iana.org/assignments/ipp-registrations registry.Herriot & Hastings          Standards Track                    [Page 81]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200523.1.  Attribute Registrations   The following table lists all the attributes defined in this   document.  These have been registered according to the procedures inRFC 2911[RFC2911] section 6.2.   Subscription Template attributes:                 Reference  Section   ---------------------------------                 ---------  -------   notify-attributes (1setOf type2 keyword)          [RFC3995]  5.3.4   notify-attributes-supported (1setOf type2 keyword)                                                     [RFC3995]  5.3.4.1   notify-charset (charset)                          [RFC3995]  5.3.6   notify-events (1setOf type2 keyword)              [RFC3995]  5.3.3   notify-events-default (1setOf type2 keyword)      [RFC3995]  5.3.3.1   notify-events-supported (1setOf type2 keyword)    [RFC3995]  5.3.3.2   notify-lease-duration (integer(0:67108863))       [RFC3995]  5.3.8   notify-lease-duration-default (integer(0:67108863))                                                     [RFC3995]  5.3.8.1   notify-lease-duration-supported (1setOf (integer(0: 67108863) |          rangeOfInteger(0:67108863)))               [RFC3995]  5.3.8.2   notify-max-events-supported (integer(2:MAX))      [RFC3995]  5.3.3.3   notify-natural-language (naturalLanguage)         [RFC3995]  5.3.7   notify-pull-method (type2 keyword)                [RFC3995]  5.3.2   notify-pull-method-supported (1setOf type2 keyword)                                                     [RFC3995]  5.3.2.1   notify-recipient-uri (uri)                        [RFC3995]  5.3.1   notify-schemes-supported  (1setOf uriScheme)      [RFC3995]  5.3.1.1   notify-time-interval (integer(0:MAX))             [RFC3995]  5.3.9   notify-user-data (octetString(63))                [RFC3995]  5.3.5   Subscription Description Attributes:   notify-job-id (integer(1:MAX))                    [RFC3995]  5.4.6   notify-lease-expiration-time (integer(0:MAX))     [RFC3995]  5.4.3   notify-printer-up-time (integer(1:MAX))           [RFC3995]  5.4.4   notify-printer-uri (uri)                          [RFC3995]  5.4.5   notify-sequence-number (integer (0:MAX))          [RFC3995]  5.4.2   notify-subscriber-user-name (name(MAX))           [RFC3995]  5.4.7   notify-subscription-id  (integer (1:MAX))         [RFC3995]  5.4.1   Printer Description Attributes:   printer-state-change-date-time (dateTime)         [RFC3995]  6.2   printer-state-change-time (integer(1:MAX))        [RFC3995]  6.1   Attributes Only in Event Notifications   notify-subscribed-event (type2 keyword)           [RFC3995]  8.1   notify-text (text(MAX))                           [RFC3995]  8.2Herriot & Hastings          Standards Track                    [Page 82]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200523.2.  Additional Enum Attribute Value Registrations within the IPP       registry   The following table lists all the new enum attribute values defined   in this document.  These have been registered within the IPP registry   according to the procedures inRFC 2911[RFC2911] section 6.1.   Attribute     Value      Name                                 Reference   Section     ------     -----------------------------        ---------   -------   operations-supported (1setOf type2 enum)          [RFC2911]   4.4.15     0x0016     Create-Printer-Subscriptions         [RFC3995]   7.1     0x0017     Create-Job-Subscriptions             [RFC3995]   7.1     0x0018     Get-Subscription-Attributes          [RFC3995]   7.1     0x0019     Get-Subscriptions                    [RFC3995]   7.1     0x001A     Renew-Subscription                   [RFC3995]   7.1     0x001B     Cancel-Subscription                  [RFC3995]   7.123.3.  Operation Registrations   The following table lists all of the operations defined in this   document.  These have been registered according to the procedures inRFC 2911[RFC2911] section 6.4.   Operation Name                                    Reference   Section   ---------------------------------                 ---------   -------   Cancel-Subscription                               [RFC3995]   11.2.7   Create-Job - Extensions                           [RFC3995]   11.1.3   Create-Job-Subscriptions                          [RFC3995]   11.1.1   Create-Printer-Subscriptions                      [RFC3995]   11.1.2   Get-Printer-Attributes - Extensions               [RFC3995]   11.2.3   Get-Subscription-Attributes                       [RFC3995]   11.2.4   Get-Subscriptions                                 [RFC3995]   11.2.5   Print-Job - Extensions                            [RFC3995]   11.1.3   Print-URI - Extensions                            [RFC3995]   11.1.3   Renew-Subscription                                [RFC3995]   11.2.6   Validate-Job Operation - Extensions               [RFC3995]   11.2.223.4.  Status code Registrations   The following table lists all the status codes defined in this   document.  These have been registered according to the procedures inRFC 2911[RFC2911] section 6.6.Herriot & Hastings          Standards Track                    [Page 83]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Value    Status Code Name                        Reference  Section   -----    ----------------------------            ---------  -------   0x0000:0x00FF - Successful:   0x0003   successful-ok-ignored-subscriptions     [RFC3995]  12.1   0x0005   successful-ok-too-many-events           [RFC3995]  13.4   0x0400:0x04FF - Client Error:   0x0414   client-error-ignored-all-subscriptions  [RFC3995]  12.2   0x0415   client-error-too-many-subscriptions     [RFC3995]  13.323.5.  Attribute Group tag Registrations   The following table lists all the attribute group tags defined in   this document.  These have been registered according to the   procedures inRFC 2911[RFC2911] section 6.5.   Value    Attribute Group Tag Name                 Reference  Section   -----    --------------------------------         --------   -------   0x06     subscription-attributes-tag              [RFC3995]  14   0x07     event-notification-attributes-tag        [RFC3995]  1423.6.  Registration of Events   The following table lists all the Events defined in this document as   type2 keywords to be used with the "notify-events", "notify-events-   default", and "notify-events-supported" Subscription Template   attributes (seesection 5.3.3)).  Rather than creating a separate   section in the IPP Registry for Events, these event keywords have   been registered according to the procedures of[RFC2911] section 7.1   as additional keyword attribute values for use with the "notify-   events" Subscription Template attribute (seesection 5.3.3), i.e.,   registered as keyword values for the "notify-events", "notify-   events-default", and "notify-events-supported" attributes:   Attribute (attribute syntax)     Value                                          Reference  Section     ---------------------                          ---------  -------   notify-events (1setOf type2 keyword)             [RFC3995]  5.3.3   notify-events-default (1setOf type2 keyword)     [RFC3995]  5.3.3.1   notify-events-supported (1setOf type2 keyword)   [RFC3995]  5.3.3.2   notify-subscribed-event (type2 keyword)          [RFC3995]  8.1     No Events:       none                                         [RFC3995]  5.3.3.4.1     Printer Events:       printer-state-changed                        [RFC3995]  5.3.3.4.2       printer-restarted                            [RFC3995]  5.3.3.4.2       printer-shutdown                             [RFC3995]  5.3.3.4.2       printer-stopped                              [RFC3995]  5.3.3.4.2Herriot & Hastings          Standards Track                    [Page 84]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005       printer-config-changed                       [RFC3995]  5.3.3.4.2       printer-media-changed                        [RFC3995]  5.3.3.4.2       printer-finishings-changed                   [RFC3995]  5.3.3.4.2       printer-queue-order-changed                  [RFC3995]  5.3.3.4.2     Job Events:       job-state-changed                            [RFC3995]  5.3.3.4.3       job-created                                  [RFC3995]  5.3.3.4.3       job-completed                                [RFC3995]  5.3.3.4.3       job-stopped                                  [RFC3995]  5.3.3.4.3       job-config-changed                           [RFC3995]  5.3.3.4.3       job-progress                                 [RFC3995]  5.3.3.4.323.7.  Registration of Event Notification Delivery Methods   This section describes the requirements and procedures for   registration and publication of Event Notification Delivery Methods   and for the submission of such proposals.23.7.1.  Requirements for Registration of Event Notification Delivery         Methods   Registered IPP Event Notification Delivery Methods are expected to   follow a number of requirements described below.23.7.1.1.  Required Characteristics   A Delivery Method Document MUST either (1) contain all of the   semantics of the Delivery Method or (2) contain the IPP Delivery   Method registration requirements and a profile of some other protocol   that in combination is the Delivery Method (e.g., mailto).  The   Delivery Method Document (and any documents it requires) MUST define   either (1) a URL for a Push Delivery Method that the meets the   requirements of [RFC2717].  or (2) a keyword for a Pull Delivery   method.   IPP Event Notification Delivery Method Documents MUST meet the   requirements of this document (see sections9 and10).   In addition, a Delivery Method Document MUST contain the following   information:      Type of registration:  IPP Event Notification Delivery Method      Name of this delivery method:      Proposed URL scheme name of this Push Delivery Method or the      keyword name of this Pull Delivery Method:      Name of proposer:      Address of proposer:Herriot & Hastings          Standards Track                    [Page 85]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      Email address of proposer:      Is this delivery method REQUIRED or OPTIONAL for conformance to      the IPP Event Notification and Subscriptions document:      Is this delivery method defining Machine Consumable and/or Human      Consumable content:23.7.1.2.  Naming Requirements   Exactly one (URL scheme or keyword) name MUST be assigned to each   Delivery Method.   Each assigned name MUST uniquely identify a single Delivery Method.   All Push Delivery Method names MUST conform to the rules for URL   scheme names, according to [RFC2396] and [RFC2717] for schemes in the   IETF tree.  All Pull Delivery Method names MUST conform to the rules   for keywords according to [RFC2911].23.7.1.3.  Functionality Requirements   Delivery Methods MUST function as a protocol that is capable of   delivering (push or pull) IPP Event Notifications to Notification   Recipients.23.7.1.4.  Usage and Implementation Requirements   Use of a large number of Delivery Methods may hamper   interoperability.  However, the use of a large number of undocumented   and/or unlabeled Delivery Methods hampers interoperability even more.   A Delivery Method should therefore be registered ONLY if it adds   significant functionality that is valuable to a large community, OR   if it documents existing practice in a large community.  Note that   Delivery Methods registered for the second reason should be   explicitly marked as being of limited or specialized use and should   only be used with prior bilateral agreement.23.7.1.5.  Publication Requirements   Delivery Method Documents MUST be published in a standards track,   informational, or experimental RFCs.23.7.2.  Registration Procedure   The IPP WG is developing a small number of Delivery Methods which are   intended to be published as standards track RFCs.  However, some   parties may wish to register additional Delivery Methods in the   future.  This section describes the procedures for these additional   Delivery Methods.Herriot & Hastings          Standards Track                    [Page 86]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200523.7.2.1.  Present the proposal to the Community   First the Delivery Method Document MUST be an Internet-Draft with a   target category of standards track, informational, or experimental.   The same MUST be true for any documents that it references.   Deliver the proposed Delivery Method Document proposal to the   "ipp@pwg.org" mailing list.  This mailing list has been established   by [RFC2911] for reviewing proposed registrations and discussing   other IPP matters.  Proposed Delivery Method Documents are not   formally registered and MUST NOT be used until approved.   The intent of the public posting is to solicit comments and feedback   on the definition and suitability of the Delivery Method and the name   chosen for it over a four week period.23.7.2.2.  Delivery Method Reviewer   The Delivery Method Reviewer is the same person who has been   appointed by the IETF Application Area Director(s) as the IPP   Designated Expert according to [RFC2911] and [IANA-CON].  When the   four week period is over and the IPP Designated Expert is convinced   that consensus has been achieved, the IPP Designated Expert either   approves the request for registration or rejects it.  Rejection may   occur because of significant objections raised on the list or   objections raised externally.   Decisions made by the Reviewer must be posted to the ipp@pwg.org   mailing list within 14 days.  Decisions made by the Reviewer may be   appealed to the IESG.23.7.2.3.  IANA Registration   Provided that the Delivery Method registration proposal has either   passed review or has been successfully appealed to the IESG, the IANA   will be notified by the delivery method reviewer and asked to   register the Delivery Method and make it available to the community.23.7.3.  Delivery Method Document Registrations   Each Push Delivery Method Document defines a URI scheme.  Such a URI   scheme is used in a URI value of the "notification-recipient" (uri)   Subscription Template attribute (seesection 5.3.1) and the uriScheme   value of the "notify-schemes-supported" (1setOf uriScheme 5.3.1.1)   Printer attribute(see section ).  Rather than creating a separate   section in the IPP Registry for Delivery Methods, Push Delivery   Methods will be registered as an additional value of the "notify-   schemes-supported" Printer attribute.  These uriScheme values will beHerriot & Hastings          Standards Track                    [Page 87]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   registered according to the procedures of[RFC2911] section 7.1 for   additional attribute values.  Therefore, the IPP Registry entry for a   Push Delivery Method will be of the form:   Attribute     Value                                        Ref.       Section     ---------------------                        --------   -------   notify-schemes-supported (1setOf uriScheme)    [RFC3995]  5.3.1.1     <scheme name>                                RFC xxxx   m.n   Each Pull Delivery Method Document defines a keyword method which is   registered as an additional value of the "notify-pull-method" and   "notify-pull-method-supported" Printer attributes.  These keyword   values will be registered according to the procedures of[RFC2911]   section 7.1 for additional attribute values.  Therefore, the IPP   Registry entry for a Pull Delivery Method will be of the form:   Attribute     Value                                        Ref.       Section     ---------------------                        --------   -------   notify-pull-method (type2 keyword)             [RFC3995]  5.3.2   notify-pull-method-supported (1setOf type2 keyword)                                                  [RFC3995]  5.3.2.1     <method keyword name>                        RFC xxxx    m.n23.7.4.  Registration Template   To: ipp@pwg.org   Subject: Registration of a new Delivery Method   Delivery Method name:   (All Push Delivery Method names must be suitable for use as the value   of a URL scheme in the IETF tree and all Pull Delivery Method names   must be suitable IPP keywords according to [RFC2911])   Published specification(s):   (A specification for the Delivery Method must be openly available   that accurately describes what is being registered.)   Person & email address to contact for further information:Herriot & Hastings          Standards Track                    [Page 88]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200524.  Internationalization Considerations   This IPP Notification specification continues support for the   internationalization of [RFC2911] of attributes containing text   strings and names.  Allowing a Subscribing Client to specify a   different natural language and charset for each Subscription Object   increases the internationalization support.   The Printer MUST be able to localize the content of Human Consumable   Event Notifications and to localize the value of "notify-text"   attribute in Machine Consumable Event Notifications that it delivers   to Notification Recipients.  For localization, the Printer MUST use   the value of the "notify-charset" attribute and the "notify-natural-   language" attribute in the Subscription Object supplied by the   Subscribing Client.25.  Security Considerations   Clients submitting Notification requests to the IPP Printer have the   same security issues as submitting an IPP/1.1 print job request (see[RFC2911] section 3.2.1 andsection 8).  The same mechanisms used by   IPP/1.1 can therefore be used by the client Notification submission.   Operations that require authentication can use the HTTP   authentication.  Operations that require privacy can use the HTTP/TLS   privacy.  As with IPP/1.1 Print Job Objects, if there is no security   on Subscription Objects, sequential assignment of subscription-ids   exposes the system to a passive traffic monitoring threat.25.1.  Client access rights   The Subscription Object access control model is the same as the   access control model for Job objects.  The client MUST have the   following access rights for the indicated Subscription operations:   1. Create-Job-Subscriptions (seesection 11.1.1):  A Per-Job      Subscription object is associated with a Job.  To create Per-Job      Subscription Objects, the authenticated user (see[RFC2911]      section 8.3) performing this operation MUST (1) be the job owner,      (2) have Operator or Administrator access rights for this Printer      (see [RFC2911] sections1 and8.5), or (3) be otherwise authorized      by the Printer's administrator-configured security policy to      create Per-Job Subscription Objects for the target job.   2. Create-Printer-Subscriptions (seesection 11.1.2):  A Per-Printer      Subscription object is associated with the Printer.  To create      Per-Printer Subscription Objects, the authenticated user (see[RFC2911] section 8.3) performing this operation MUST (1) have      Operator or Administrator access rights for this Printer (seeHerriot & Hastings          Standards Track                    [Page 89]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005      [RFC2911] sections1 and8.5) or (2) be otherwise authorized by      the Printer's administrator-configured security policy to create      Per-Printer Subscription Objects for this Printer.   3. Get-Subscription-Attributes (seesection 11.2.4):  The access      control model for this operation is the same as that of the Get-      Job-Attributes operation (see[RFC2911] section 3.3.4).  The      primary difference is that a Get-Subscription-Attributes operation      is directed at a Subscription Object rather than at a Job object,      and a returned attribute group contains Subscription Object      attributes rather than Job object attributes.  To query the      specified Subscription Object, the authenticated user (see[RFC2911] section 8.3) performing this operation MUST (1) be the      Subscription Object owner, (2) have Operator or Administrator      access rights for this Printer (see [RFC2911] sections1 and8.5),      or (3) be otherwise authorized by the Printer's administrator-      configured security policy to query the Subscription Object for      the target job.  Furthermore, the Printer's security policy MAY      limit which attributes are returned, in a manner similar to the      Get-Job-Attributes operation (see [RFC2911] end ofsection3.3.4.2).   4. Get-Subscriptions (seesection 11.2.5):  The access control model      for this operation is the same as that of the Get-Jobs operation      (see[RFC2911] section 3.2.6).  The primary difference is that the      operation is directed at Subscription Objects rather than at Job      objects, and the returned attribute groups contain Subscription      Object attributes rather than Job object attributes.  To query      Per-Job Subscription Objects of the specified job (client supplied      the "notify-job-id" operation attribute - seesection 11.2.5.1.1),      the authenticated user (see[RFC2911] section 8.3) performing this      operation MUST (1) be the Subscription Object owner, (2) have      Operator or Administrator access rights for this Printer (see      [RFC2911] sections1 and8.5), or (3) be otherwise authorized by      the Printer's administrator-configured security policy to query      the Subscription Object for the target job.  To query Per-Printer      Subscription Objects of the Printer (client omits the "notify-      job-id" operation attribute - seesection 11.2.5.1.1), the      authenticated user (see[RFC2911] section 8.3) performing this      operation MUST (1) have Operator or Administrator access rights      for this Printer (see [RFC2911] sections1 and8.5), or (2) be      otherwise authorized by the Printer's administrator-configured      security policy to query Per-Printer Subscription Objects for the      target Printer.  Furthermore, the Printer's security policy MAY      limit which attributes are returned, in a manner similar to the      Get-Job-Attributes operation (see [RFC2911] end ofsection3.2.6.2).Herriot & Hastings          Standards Track                    [Page 90]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   5. Renew-Subscriptions (seesection 11.2.6):  The authenticated user      (see[RFC2911] section 8.3) performing this operation MUST (1) be      the owner of the Per-Printer Subscription Object, (2) have      Operator or Administrator access rights for the Printer (see      [RFC2911] sections1 and8.5), or (3) be otherwise authorized by      the Printer's administrator-configured security policy to renew      Per-Printer Subscription Objects for the target Printer   6. Cancel-Subscription (seesection 11.2.7):  The authenticated user      (see[RFC2911] section 8.3) performing this operation MUST (1) be      the owner of the Subscription Object, (2) have Operator or      Administrator access rights for the Printer (see [RFC2911]      sections1 and8.5), or (3) be otherwise authorized by the      Printer's administrator-configured security policy to cancel the      target Subscription Object.   The standard security concerns (delivery to the right user, privacy   of content, tamper proof content) apply to each Delivery Method.   Some Delivery Methods are more secure than others.  Each Delivery   Method Document MUST discuss its Security Considerations.25.2.  Printer security threats   Notification trap door:  If a Printer supports the OPTIONAL "notify-   attributes" Subscription Template attribute (seesection 5.3.4) where   the client can request that the Printer return any specified Job,   Printer, and Subscription object attributes, the Printer MUST apply   the same security policy to these requested attributes in the Get-   Notifications request as it does for the Get-Jobs, Get-Job-   Attributes, Get-Printer-Attributes, and Get-Subscription-Attributes   requests.25.3.  Notification Recipient security threats   Unwanted Events Notifications (spam):  For any Push Delivery Method,   by far the biggest security concern is the abuse of notification:   delivering unwanted Event Notifications to third parties (i.e.,   spam).  The problem is made worse by notification addresses that may   be redistributed to multiple parties.  There exist scenarios where   third party notification is used (see Scenario #2 and #3 in   [RFC3997]).  Any fully secure solution would require active agreement   of all recipients before delivering anything.Herriot & Hastings          Standards Track                    [Page 91]

RFC 3995       IPP: Event Notifications and Subscriptions     March 200526.  Description of the base IPP documents (Informative)   The base set of IPP documents includes:   Design Goals for an Internet Printing Protocol [RFC2567]   Rationale for the Structure and Model and Protocol for the Internet      Printing Protocol [RFC2568]   Internet Printing Protocol/1.1: Model and Semantics [RFC2911]   Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]   Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]   Mapping between LPD and IPP Protocols [RFC2569]   The "Design Goals for an Internet Printing Protocol" document takes a   broad look at distributed printing functionality, and it enumerates   real-life scenarios that help to clarify the features that need to be   included in a printing protocol for the Internet.  It identifies   requirements for three types of users: end users, operators, and   administrators.  It calls out a subset of end user requirements that   are satisfied in IPP/1.0 [RFC2566,RFC2565].  A few OPTIONAL operator   operations have been added to IPP/1.1 [RFC2911,RFC2910].   The "Rationale for the Structure and Model and Protocol for the   Internet Printing Protocol" document describes IPP from a high level   view, defines a roadmap for the various documents that form the suite   of IPP specification documents, and gives background and rationale   for the IETF IPP working group's major decisions.   The "Internet Printing Protocol/1.1: Model and Semantics" document   describes a simplified model with abstract objects, their attributes,   and their operations.  The model introduces a Printer and a Job.  The   Job supports multiple documents per Job.  The model document also   addresses how security, internationalization, and directory issues   are addressed.   The "Internet Printing Protocol/1.1: Encoding and Transport" document   is a formal mapping of the abstract operations and attributes defined   in the model document onto HTTP/1.1 [RFC2616].  It also defines the   encoding rules for a new Internet MIME media type called   "application/ipp".  This document also defines the rules for   transporting over HTTP a message body whose Content-Type is   "application/ipp".  This document defines the 'ipp' scheme for   identifying IPP printers and jobs.   The "Internet Printing Protocol/1.1: Implementer's Guide" document   gives insight and advice to implementers of IPP clients and IPP   objects.  It is intended to help them understand IPP/1.1 and some of   the considerations that may assist them in the design of their client   and/or IPP object implementations.  For example, a typical order ofHerriot & Hastings          Standards Track                    [Page 92]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   processing requests is given, including error checking.  Motivation   for some of the specification decisions is also included.   The "Mapping between LPD and IPP Protocols" document gives some   advice to implementers of gateways between IPP and LPD (Line Printer   Daemon) implementations.27.  Contributors   The following people made significant contributions to the design and   review of this specification:   Scott A.  Isaacson   Novell, Inc.   122 E 1700 S   Provo, UT  84606   Phone: 801-861-7366   Fax:   801-861-2517   EMail: sisaacson@novell.com   Roger deBry   Utah Valley State College   Orem, UT 84058   Phone: 801-863-8848   EMail: debryro@uvsc.edu   Jay Martin   Underscore Inc.   9 Jacqueline St.   Hudson, NH 03051-5308   Phone: 603-889-7000   Fax:   775-414-0245   EMail: jkm@underscore.com   Michael Shepherd   Xerox Corporation   800 Phillips Road  MS 128-51E   Webster, NY  14450   Phone: 716-422-2338   Fax:   716-265-8871   EMail: mshepherd@usa.xerox.comHerriot & Hastings          Standards Track                    [Page 93]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005   Ron Bergman   Ricoh Printing Systems America   1757 Tapo Canyon Road   Simi Valley, CA 93063-3394   Phone: 805-578-4421   Fax:   805-578-4001   EMail: ron.bergman@rpsa.ricoh.comAuthors' Addresses   Robert Herriot   Global Workflow Solutions   706 Colorado Ave.   Palo Alto, CA 94303   Phone:  650-324-4000   EMail:  bob@herriot.com   Tom Hastings   Xerox Corporation   701 S Aviation Blvd, ESAE 242   El Segundo, CA  90245   Phone: 310-333-6413   Fax:   310-333-6342   EMail: hastings@cp10.es.xerox.comHerriot & Hastings          Standards Track                    [Page 94]

RFC 3995       IPP: Event Notifications and Subscriptions     March 2005Full Copyright Statement   Copyright (C) The Internet Society (2005).   This document is subject to the rights, licenses and restrictions   contained inBCP 78, and except as set forth therein, the authors   retain all their rights.   This document and the information contained herein are provided on an   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET   ENGINEERING TASK FORCE DISCLAIM 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.Intellectual Property   The IETF takes no position regarding the validity or scope of any   Intellectual Property Rights or other rights that might be claimed to   pertain to the implementation or use of the technology described in   this document or the extent to which any license under such rights   might or might not be available; nor does it represent that it has   made any independent effort to identify any such rights.  Information   on the procedures with respect to rights in RFC documents can be   found inBCP 78 andBCP 79.   Copies of IPR disclosures made to the IETF Secretariat and any   assurances of licenses to be made available, or the result of an   attempt made to obtain a general license or permission for the use of   such proprietary rights by implementers or users of this   specification can be obtained from the IETF on-line IPR repository athttp://www.ietf.org/ipr.   The IETF invites any interested party to bring to its attention any   copyrights, patents or patent applications, or other proprietary   rights that may cover technology that may be required to implement   this standard.  Please address the information to the IETF at ietf-   ipr@ietf.org.Acknowledgement   Funding for the RFC Editor function is currently provided by the   Internet Society.Herriot & Hastings          Standards Track                    [Page 95]

[8]ページ先頭

©2009-2025 Movatter.jp