]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - standards/rfc3996.txt
Merge changes from CUPS 1.5.1-r9875.
[thirdparty/cups.git] / standards / rfc3996.txt
diff --git a/standards/rfc3996.txt b/standards/rfc3996.txt
deleted file mode 100644 (file)
index c2a2a86..0000000
+++ /dev/null
@@ -1,1739 +0,0 @@
-
-
-
-
-
-
-Network Working Group                                         R. Herriot
-Request for Comments: 3996                     Global Workflow Solutions
-Updates: 2911                                                T. Hastings
-Category: Standards Track                                    Xerox Corp.
-                                                                H. Lewis
-                                                               IBM Corp.
-                                                              March 2005
-
-
-                   Internet Printing Protocol (IPP):
-          The 'ippget' Delivery Method for Event Notifications
-
-Status 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 extension to the Internet Printing
-   Protocol1.1: Model and Semantics (RFC 2911, RFC 2910).  This document
-   specifies the 'ippget' Pull Delivery Method for use with the
-   "Internet Printing Protocol (IPP): Event Notifications and
-   Subscriptions" specification (RFC 3995).  This IPPGET Delivery Method
-   is REQUIRED for all clients and Printers that support RFC 3995.  The
-   Notification Recipient, acting as a client, fetches (pulls) Event
-   Notifications by using the Get-Notifications operation defined in
-   this document.
-
-Table of Contents
-
-   1.   Introduction. . . . . . . . . . . . . . . . . . . . . . . . .  3
-   2.   Terminology . . . . . . . . . . . . . . . . . . . . . . . . .  3
-        2.1.  Conformance Terminology . . . . . . . . . . . . . . . .  4
-        2.2.  Other Terminology . . . . . . . . . . . . . . . . . . .  4
-   3.   Model and Operation . . . . . . . . . . . . . . . . . . . . .  4
-   4.   General Information . . . . . . . . . . . . . . . . . . . . .  5
-   5.   Get-Notifications Operation . . . . . . . . . . . . . . . . .  7
-        5.1.  Get-Notifications Request . . . . . . . . . . . . . . .  8
-              5.1.1.  notify-subscription-ids (1setOf integer(1:MAX))  8
-              5.1.2.  notify-sequence-numbers (1setOf integer(1:MAX))  9
-
-
-
-Herriot, et al.             Standards Track                     [Page 1]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-              5.1.3.  notify-wait (boolean) . . . . . . . . . . . . . 10
-        5.2.  Get-Notifications Response. . . . . . . . . . . . . . . 10
-              5.2.1.  notify-get-interval (integer(0:MAX)). . . . . . 13
-              5.2.2.  printer-up-time (integer(1:MAX)). . . . . . . . 14
-   6.   Additional Information about Subscription Template Attributes 17
-        6.1.  notify-pull-method (type2 keyword). . . . . . . . . . . 17
-   7.   Subscription Description Attributes . . . . . . . . . . . . . 18
-   8.   Additional Printer Description Attributes . . . . . . . . . . 18
-        8.1.  ippget-event-life (integer(15:MAX)) . . . . . . . . . . 18
-   9.   New Values for Existing Printer Description Attributes. . . . 19
-        9.1.  notify-pull-method-supported (1setOf type2 keyword) . . 19
-        9.2.  operations-supported (1setOf type2 enum). . . . . . . . 19
-   10.  New Status Codes. . . . . . . . . . . . . . . . . . . . . . . 19
-        10.1.  successful-ok-events-complete (0x0007) . . . . . . . . 20
-   11.  Encoding and Transport. . . . . . . . . . . . . . . . . . . . 20
-   12.  Conformance Requirements. . . . . . . . . . . . . . . . . . . 21
-        12.1.  Conformance for IPP Printers . . . . . . . . . . . . . 21
-        12.2.  Conformance for IPP Clients. . . . . . . . . . . . . . 22
-   13.  Normative References. . . . . . . . . . . . . . . . . . . . . 23
-   14.  Informative References. . . . . . . . . . . . . . . . . . . . 23
-   15.  IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24
-        15.1.  Attribute Registrations. . . . . . . . . . . . . . . . 24
-        15.2.  Delivery Method and Additional Keyword Attribute Value
-               registrations for Existing Attributes. . . . . . . . . 24
-        15.3.  Additional Enum Attribute Values . . . . . . . . . . . 25
-        15.4.  Operation Registrations. . . . . . . . . . . . . . . . 25
-        15.5.  Status Code Registrations. . . . . . . . . . . . . . . 25
-   16.  Internationalization Considerations . . . . . . . . . . . . . 25
-   17.  Security Considerations . . . . . . . . . . . . . . . . . . . 26
-        17.1.  Notification Recipient Client Access Rights. . . . . . 26
-        17.2.  Printer Security Threats . . . . . . . . . . . . . . . 27
-        17.3.  Notification Recipient Security Threats. . . . . . . . 27
-        17.4.  Security Requirements for Printers . . . . . . . . . . 27
-        17.5.  Security Requirements for clients. . . . . . . . . . . 28
-   18.  Description of Base IPP Documents (Informative) . . . . . . . 28
-   19.  Contributors. . . . . . . . . . . . . . . . . . . . . . . . . 29
-   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 30
-   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 31
-
-Table of Tables
-
-   Table 1.  Information about the Delivery Method. . . . . . . . . .  5
-   Table 2.  Combinations of "notify-wait", "status-code", and
-             "notify-get-interval". . . . . . . . . . . . . . . . . . 13
-   Table 3.  Attributes in Event Notification Content . . . . . . . . 15
-   Table 4.  Additional Attributes in Event Notification Content for
-             Job Events . . . . . . . . . . . . . . . . . . . . . . . 16
-
-
-
-
-Herriot, et al.             Standards Track                     [Page 2]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   Table 5.  Combinations of Events and Subscribed Events for "job-
-             impressions-completed" . . . . . . . . . . . . . . . . . 17
-   Table 6.  Additional Attributes in Event Notification Content for
-             Printer Events . . . . . . . . . . . . . . . . . . . . . 17
-   Table 7.  Operation-id Assignments . . . . . . . . . . . . . . . . 19
-   Table 8.  The "event-notification-attributes-tag" Value. . . . . . 21
-
-1.  Introduction
-
-   This document describes an extension to the Internet Printing
-   Protocol/1.1: Model and Semantics [RFC 2911], [RFC 2910].  This
-   document specifies the 'ippget' Pull Delivery Method for use with the
-   "Internet Printing Protocol (IPP): Event Notifications and
-   Subscriptions" specification [RFC3995].  This IPPGET Delivery Method
-   is REQUIRED for all clients and Printers that support [RFC3995].  The
-   Notification Recipient, acting as a client, fetches (pulls) Event
-   Notifications by using the Get-Notifications operation defined in
-   this document.  For a description of the base IPP documents, see
-   section 21 of this document.  For a description of the IPP Event
-   Notification Model, see [RFC3995].
-
-   With this Pull Delivery Method, when an Event occurs, the Printer
-   saves the Event Notification for a period of time called the Event
-   Life.  The Notification Recipient fetches (pulls) the Event
-   Notifications by using the Get-Notifications operation.  This
-   operation causes the Printer to return all Event Notifications held
-   for the specified Subscription object(s).  If the Notification
-   Recipient has selected the Event Wait Mode option to wait for
-   additional Event Notifications, the Printer MAY continue to return
-   Event Notifications to the Notification Recipient as asynchronous
-   Get-Notification responses as Events occur using the transaction
-   originated by the Notification Recipient.
-
-   The Notification Recipient can terminate Event Wait Mode (without
-   closing the connection) by supplying the "notify-wait" (boolean)
-   attribute with a 'false' value in a subsequent Get-Notifications
-   request.  Similarly, the Printer can terminate Event Wait Mode
-   (without closing the connection) by returning the "notify-get-
-   interval" (integer) operation attribute in a Get-Notifications
-   response that tells the Notification Recipient how long to wait
-   before trying again.
-
-2.  Terminology
-
-   This section defines the following terms that are used throughout
-   this document:
-
-
-
-
-
-Herriot, et al.             Standards Track                     [Page 3]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-2.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 in [RFC2119] and [RFC2911], section 12.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 it is explicitly stated otherwise.
-
-2.2.  Other terminology
-
-   This document uses the same terminology as [RFC2911], including
-   "client", "Printer", "Job", "attribute", "attribute value",
-   "keyword", "operation", "request", "response", and "support", with
-   the same meanings.  This document also uses terminology defined in
-   [RFC3995], such as "Subscription (object)", "Notification Recipient",
-   "Event", "Event Notification", "Compound Event Notification", "Event
-   Life", and "Event Notification Attribute Group", with the same
-   meanings.  In addition, this document defines the following terms for
-   use in this document:
-
-   Event Wait Mode: The mode requested by a Notification Recipient
-       client in its Get-Notifications Request and granted by a Printer
-       to keep the connection open while the Printer sends subsequent
-       Get-Notification operation responses to the Notification
-       Recipient in the form of Event Notifications as they occur.
-
-3.  Model and Operation
-
-   In a Subscription Creation Operation, when the "notify-pull-method"
-   attribute is present and has the "ippget" keyword value, the client
-   is requesting that the Printer use the "ippget" Pull Delivery Method
-   for the Event Notifications associated with the new Subscription
-   Object.
-
-   When an Event occurs, the Printer MUST generate an Event Notification
-   and MUST assign it the Event Life.  The Printer MUST hold an Event
-   Notification for its assigned Event Life.
-
-   When a Notification Recipient wants to receive Event Notifications
-   for a Subscription object, it performs the Get-Notifications
-   operation supplying the Subscription object's subscription-id, which
-   causes the Printer to return all un-expired Event Notifications held
-   for that Subscription object.  If the Notification Recipient has
-   selected the Event Wait Mode option to wait for additional Event
-   Notifications, the response to the Get-Notifications request
-   continues indefinitely as the Printer continues to send Event
-
-
-
-Herriot, et al.             Standards Track                     [Page 4]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   Notifications in the response as Events occur for that Subscription
-   object.
-
-   When the Notification Recipient requests Event Notifications for
-   Per-Job Subscription Objects, the Notification Recipient typically
-   performs the Get-Notifications operation within a second of
-   performing the Subscription Creation operation.  Because the Printer
-   MUST save Event Notifications for at least 15 seconds (see section
-   8.1), the Notification Recipient is unlikely to miss any Event
-   Notifications that occur between the Subscription Creation and the
-   Get-Notifications operation.
-
-   The 'ippget' Delivery Method is designed primarily for (1) a client
-   that wants to get Events (from the job's Per-Job Subscription object)
-   for a job that it has submitted and (2) a privileged client that
-   wants to get all job or printer Events from a Per-Printer
-   Subscription object.
-
-4.  General Information
-
-   If a Printer supports this Delivery Method, the following are its
-   characteristics.
-
-              Table 1.  Information about the Delivery Method
-
-   Document Method Conformance Requirement    Delivery Method
-   Realization
-
-   1.  What is the URL scheme name for the     'ippget' keyword method
-       Push Delivery Method, or the keyword     name
-       method name for the Pull Delivery
-       Method?
-
-   2.  Is the Delivery Method REQUIRED,        REQUIRED
-       RECOMMENDED, or OPTIONAL for an IPP
-       Printer to support?
-
-   3.  What transport and delivery protocols   IPP with one new
-       does the Printer use to deliver the     operation.
-       Event Notification Content; i.e.,
-       what is the entire network stack?
-
-   4.  Can several Event Notifications be      Yes.
-       combined into a Compound Event
-       Notification?
-
-
-
-
-
-
-Herriot, et al.             Standards Track                     [Page 5]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   5.  Is the Delivery Method initiated by     This Delivery Method is
-       the Notification Recipient (pull),      a pull method with
-       or by the Printer (push)?               aspects of a push
-                                               method, though the
-                                               Printer does not
-                                               initiate the operation.
-
-   6.  Is the Event Notification content       Machine Consumable.
-       Machine Consumable or Human
-       Consumable?
-
-   7.  What section in this document answers   Section 5.
-       the following questions? For a Machine
-       Consumable Event Notification, what is
-       the representation and encoding of
-       values defined in section 9.1 of
-       [RFC3995], and what are the
-       conformance requirements thereof? For
-       a Human Consumable Event Notification,
-       what is the representation and
-       encoding of pieces of information
-       defined in section 9.2 of
-       [RFC3995], and the conformance
-       requirements thereof?
-
-   8.  What are the latency and reliability    Same as IPP and the
-       of the transport and delivery           underlying HTTP
-       protocol?                               transport.
-
-   9.  What are the security aspects of the    Same as IPP and the
-       transport and delivery protocol;        underlying HTTP
-       e.g., how it is handled in              transport and in the
-       firewalls?                              same direction, so no
-                                               new firewall
-                                               considerations.
-
-   10. What are the content length             None.
-       restrictions?
-
-   11. What are the additional values or       None.
-       pieces of information that a Printer
-       sends in an Event Notification content
-       and the conformance requirements
-       thereof?
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                     [Page 6]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   12. What are the additional Subscription    None.
-       Template and/or Subscription
-       Description attributes and the
-       conformance requirements thereof?
-
-   13. What are the additional Printer         "ipp-event-life"
-       Description attributes and the          (integer (15: MAX))
-       conformance requirements thereof?
-
-5.  Get-Notifications Operation
-
-   This operation is issued by a client acting in the role of a
-   Notification Recipient requesting the Printer to return all Event
-   Notifications held for the identified Subscription object(s).
-
-   A Printer MUST support this operation, MUST accept the request in any
-   state (see [RFC2911] "printer-state" and "printer-state-reasons"
-   attributes), and MUST remain in the same state with the same
-   "printer-state-reasons" values.
-
-   When a Printer performs this operation, it MUST return all and only
-   those Event Notifications
-
-   1.  whose associated Subscription Object's "notify-subscription-id"
-       Subscription Description attribute equals one of the values of
-       the "notify-subscription-ids" (1setOf integer(1:MAX)) operation
-       attribute AND
-
-   2.  whose associated Subscription Object contains the "notify-pull-
-       method" attribute and it has the 'ippget' keyword value, AND
-
-   3.  whose "notify-sequence-number" is equal to or greater than the
-       corresponding value of the "notify-sequence-numbers" (1setOf
-       integer(1:MAX)) operation attribute if supplied AND
-
-   4.  whose Event Life has not yet expired AND
-
-   5.  where the Notification Recipient client has read-access rights to
-       the identified Subscription Object (see Access Rights paragraph
-       below).
-
-   The Notification Recipient client MUST either (a) request Event Wait
-   Mode by supplying the "notify-wait" operation attribute with a 'true'
-   value or (b) suppress Event Wait Mode by omitting the "notify-wait"
-   operation attribute or by supplying it with a 'false' value.  To
-   terminate Event Wait Mode subsequently, the Notification Recipient
-   client MUST close the connection.  To terminate Event Wait Mode, the
-   Printer MUST either (a) return the "notify-get-interval" operation
-
-
-
-Herriot, et al.             Standards Track                     [Page 7]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   attribute in a Get-Notifications response (RECOMMENDED behavior) or
-   (b) close the connection.  The "notify-get-interval" operation
-   attributes tell the Notification Recipient how long to wait before
-   trying a subsequent Get-Notifications request.
-
-   Access Rights: The authenticated user (see [RFC2911], section 8.3)
-   performing this operation MUST be (1) the owner of each Subscription
-   Object identified by the "notify-subscription-ids" operation
-   attribute (see section 5.1.1), (2) an operator or administrator of
-   the Printer (see [RFC2911], sections 1 and 8.5), or (3) otherwise
-   authorized by the Printer's administrator-configured security policy
-   to request Event Notifications from the target Subscription
-   Object(s).  Otherwise, the IPP Printer MUST reject the operation and
-   return: 'client-error-forbidden', 'client-error-not-authenticated',
-   or 'client-error-not-authorized' status code, as appropriate.
-   Furthermore, the Printer's security policy MAY limit the attributes
-   returned by the Get-Notifications operation, in a manner similar to
-   that of the Get-Job-Attributes operation (see [RFC2911], end of
-   section 3.3.4.2).
-
-5.1.  Get-Notifications Request
-
-   The following groups of attributes are part of the Get-Notifications
-   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" (uri) operation attribute that is the target
-         for this operation as described in [RFC2911], section 3.1.5.
-
-      Requesting User Name:
-         The "requesting-user-name" (name(MAX)) attribute SHOULD be
-         supplied by the client as described in [RFC2911], section 8.3.
-
-5.1.1.  notify-subscription-ids (1setOf integer(1:MAX))
-
-   This attribute identifies one or more Subscription objects for which
-   Events are requested.  The client MUST supply this attribute with at
-   least one value.  The Printer object MUST support this attribute with
-   multiple values.
-
-   If no Subscription Object exists with the supplied identifier, or if
-   the identified Subscription Object does not contain the "notify-
-
-
-
-Herriot, et al.             Standards Track                     [Page 8]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   pull-method" attribute with the 'ippget' keyword value, the Printer
-   MUST return the 'client-error-not-found' status code.
-
-         Note:  The name of both the "notify-subscription-ids" and
-         "notify-sequence-numbers" end in 's', as they are multi-valued.
-         However, there are other occurrences of these attribute names
-         without the 's' that are single valued.
-
-5.1.2.  notify-sequence-numbers (1setOf integer(1:MAX))
-
-   This attribute specifies one or more of the lowest Event Notification
-   sequence number values for the Subscription objects identified by the
-   corresponding values of the "notify-subscription-ids" operation
-   attribute.  The Notification Recipient SHOULD supply this attribute,
-   and the number of values SHOULD be the same as that of the "notify-
-   subscriptions-ids" attribute.  The Printer MUST support this
-   attribute with multiple values.
-
-   The Printer MUST NOT return Notification Events with lower sequence
-   numbers for the corresponding Subscription object.  Therefore, by
-   supplying the proper values for this attribute the Notification
-   Recipient can prevent getting the same Event Notifications from a
-   Subscription object that were returned on a previous Get-
-   Notifications request.  The Notification Recipient SHOULD remember
-   the highest "notify-sequence-number" value returned for each
-   Subscription object requested and SHOULD pass that value for each
-   requested Subscription object on the next Get-Notifications request.
-
-   If the Notification Recipient supplies fewer values for this
-   attribute (including omitting this attribute) than it does for the
-   "notify-subscription-ids" operation attribute, the Printer assumes a
-   '1' value for each missing value.  A value of '1' causes the Printer
-   to return any un-expired Event Notification for that Subscription
-   object, as '1' is the lowest possible sequence number.  If the
-   Notification Recipient supplies more values for this attribute than
-   the number of values for the "notify-subscription-ids" operation
-   attribute, the Printer ignores the extra values.
-
-   Note: If a Notification Recipient performs two consecutive Get-
-   Notifications operations with the same value for "notify-sequence-
-   number" (or omits the attribute), the time stamp value of the first
-   Event Notification in the second Get-Notifications Response may be
-   less than that of the time stamp of the last Event Notification in
-   the first Get-Notification Response.  This happens because the
-   Printer sends all unexpired Event Notifications with an equal or
-   higher sequence number according to the ordering specified in
-   [RFC3995], and some Event Notifications from the first Get-
-
-
-
-
-Herriot, et al.             Standards Track                     [Page 9]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   Notifications operation may not have expired by the time the second
-   Get-Notifications operation occurs.
-
-5.1.3.  notify-wait (boolean)
-
-   This value indicates whether the Notification Recipient wants Event
-   Wait Mode.  The client MAY supply this attribute.  The Printer object
-   MUST support both values of this attribute.
-
-   If the client supplies the 'false' value or omits this attribute, the
-   client is not requesting Event Wait Mode.  If the value is 'true',
-   the client is requesting Event Wait Mode.  See the beginning of
-   section 5.2 for the rules for Event Wait Mode.
-
-5.2.  Get-Notifications Response
-
-   The Printer has the following options for responding to a Get-
-   Notifications Request:
-
-   1.  The Printer can reject the request and return the 'server-error-
-       busy' status code if the Printer is too busy to accept this
-       operation at this time.  In this case, the Printer MUST return
-       the "get-notify-interval" operation attribute to indicate when
-       the client SHOULD try again.
-
-   2.  If the Notification Recipient did not request Event Wait Mode
-       ("notify-wait-mode" = 'false' or omitted), the Printer MUST
-       immediately return whatever Event Notifications it currently
-       holds in the requested Subscription object(s) and MUST return the
-       "notify-get-interval" operation attribute with the number of
-       seconds from now, at which the Notification Recipient SHOULD
-       repeat the Get-Notifications Request to get future Event
-       Notifications.
-
-   3.  If the Notification Recipient requested Event Wait Mode
-       ("notify-wait-mode" = 'true'), the Printer MUST immediately
-       return whatever Event Notifications it currently holds in the
-       requested Subscription object(s) and MUST continue to return
-       Event Notifications as they occur until all the requested
-       Subscription Objects are canceled.  A Subscription Object is
-       canceled either via the Cancel-Subscription operation or by the
-       Printer (e.g., the Subscription Object is canceled when the
-       associated Job completes and is no longer in the Job Retention or
-       Job History phase; see the "ippget-event-life (integer(15:MAX))"
-       attribute discussion in section 8.1).
-
-       However, the Printer MAY decide to terminate Event Wait Mode at
-       any time, including in the first response.  In this case, the
-
-
-
-Herriot, et al.             Standards Track                    [Page 10]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-       Printer MUST return the "notify-get-interval" operation
-       attribute.  This attribute indicates that the Printer wishes to
-       leave Event Wait Mode and the number of seconds in the future
-       that the Notification Recipient SHOULD try the Get-Notifications
-       operation again.  The Notification Recipient MUST accept this
-       response and MUST disconnect.  If the Notification Recipient does
-       not disconnect, the Printer SHOULD do so.
-
-   From the Notification Recipient's view, the response appears as an
-   initial burst of data, which includes the Operation Attributes Group
-   and one Event Notification Attributes Group per Event Notification
-   that the Printer is holding.  After the initial burst of data, if the
-   Notification Recipient has selected the Event Wait Mode option to
-   wait for additional Event Notifications, the Notification Recipient
-   receives occasional Event Notification Attribute Groups.  Proxy
-   servers may delay some Event Notifications or cause time-outs to
-   occur.  The client MUST be prepared to perform the Get-Notifications
-   operation again when time-outs occur.
-
-   Each attribute is encoded by using the IPP rules for encoding
-   attributes [RFC2910] and MAY be encoded in any order.  Note:  the
-   Get-Jobs response in [RFC2911] acts as a model for encoding multiple
-   groups of attributes.  See section 11 for the encoding and transport
-   rules.
-
-   The following groups of attributes are part of the Get-Notifications
-   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],
-         sections 13 and 3.1.6.
-
-         The Printer can return any status codes defined in [RFC2911].
-         If the status code is not 'successful-xxx', the Printer MUST
-         NOT return any Event Notification Attribute groups.  The
-         following are descriptions of the important status codes:
-
-            successful-ok: The response contains all Event Notification
-               associated with the specified subscription-ids that had
-               been supplied in the "notify-subscription-ids" operation
-               attribute in the request.  If the requested Subscription
-               Objects have no associated Event Notification, the
-               response MUST contain zero Event Notifications.
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 11]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-            successful-ok-events-complete:  Indicates when this return
-               is the last return for all Subscription objects that
-               match the request, whether or not Event Notifications are
-               returned.  This condition occurs for Event Wait Mode with
-               Notification Recipients waiting for responses when (1)
-               the Subscription Object is canceled with a Cancel-
-               Subscription operation, (2) the Subscription Object is
-               deleted, when the Per-Printer Subscription lease time
-               expires, or (3) the 'job-completed' event occurs for a
-               Per-Job Subscription.  This condition also occurs for a
-               Get-Notifications request that a Notification Recipient
-               makes after the job completes, but before the Event Life
-               expires.  See section 10.1.
-            client-error-not-found: The Printer has no Subscription
-               Objects whose "notify-subscription-id" attribute equals
-               any of the values of the "notify-subscription-ids"
-               operation attribute supplied, or the identified
-               Subscription Object does not contain the "notify-pull-
-               method" attribute with the 'ippget' keyword value.
-            server-error-busy: The Printer is too busy to accept this
-               operation.  The Printer SHOULD return the "notify-get-
-               interval" operation attribute in the Operation Attributes
-               of the response; then the Notification Recipient SHOULD
-               wait for the number of seconds specified by the "notify-
-               get-interval" operation attribute before performing this
-               operation again.  If the "notify-get-interval" Operation
-               Attribute is not present, the Notification Recipient
-               SHOULD use the normal network back-off algorithms to
-               determine when to perform this operation again.
-
-      Natural Language and Character Set:
-         The "attributes-charset" and "attributes-natural-language"
-         attributes, as described in [RFC2911], section 3.1.4.2.
-
-         The Printer MUST use the values of "notify-charset" and
-         "notify-natural-language", respectively, from one Subscription
-         Object associated with the Event Notifications in this
-         response.
-
-         Normally, there is only one matched Subscription Object, or the
-         value of the "notify-charset" and "notify-natural-language"
-         attributes is the same in all Subscription Objects.  If not,
-         the Printer MUST pick one Subscription Object from which to
-         obtain the value of these attributes.  The algorithm for
-         picking the Subscription Object is implementation dependent.
-         The choice of natural language is not critical, because 'text'
-         and 'name' values can override the "attributes-natural-
-         language" operation attribute.  The Printer's choice of charset
-
-
-
-Herriot, et al.             Standards Track                    [Page 12]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-         is critical because a bad choice may leave it unable to send
-         some 'text' and 'name' values accurately.
-
-5.2.1.  notify-get-interval (integer(0:MAX))
-
-   The value of this operation attribute is the number of seconds that
-   the Notification Recipient SHOULD wait before trying the Get-
-   Notifications operation again.  The Printer MUST return this
-   operation attribute if (1) it is too busy to return events, (2) the
-   Notification Recipient client did not request Event Wait Mode, or (3)
-   the Printer is terminating Event Wait Mode.  The client MUST accept
-   this attribute and SHOULD reissue the Get-Notifications operation
-   (with or without "notify-wait" = 'true') at the indicated number of
-   seconds in the future in order to get more Event Notifications  This
-   value is intended to help the client be a good network citizen.
-
-   The value of this attribute MUST be at least as large as that of the
-   Printer's "ippget-event-life" Printer Description attribute (see
-   section 8.1).  The Printer MAY return a value that is larger than
-   that of the "ippget-event-life" Printer Description attribute
-   provided that the Printer increases the Event Life for this
-   Subscription object so that Notification Recipients taking account of
-   the larger value and polling with a longer interval will not miss
-   events.  Note:  Implementing such an algorithm requires some hidden
-   attributes in the Subscription object that are IMPLEMENTATION
-   DEPENDENT.
-
-   If the Printer wants to remain in Event Wait Mode, then the Printer
-   MUST NOT return this attribute in the response.
-
-   Here is a complete table of combinations of "notify-wait", "status-
-   code", "notify-get-interval", and Event Notification Attributes
-   Groups for Get-Notification initial (Wait and No Wait) Responses and
-   subsequent Event Wait Mode Responses (which may stay in Event Wait
-   Mode or may request the Notification Recipient to leave Event Wait
-   Mode):
-
-       Table 2.  Combinations of "notify-wait", "status-code", and
-                           "notify-get-interval"
-
-         Client sends:  Printer returns:  Printer       Event
-                                          returns:      Notification
-         "notify-wait"  "status-code"     "notify-get-  Attribute
-                                          interval"     Groups
-
-         1.  'false'*   'successful-ok'   MUST return N maybe
-         2.  'false'*   'not-found'       MUST NOT      MUST NOT
-         3.  'false'*   'busy'            MUST return N MUST NOT
-
-
-
-Herriot, et al.             Standards Track                    [Page 13]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-         4.  'false'*   'events-          MUST NOT      'job-
-                        complete'                        completed'
-         5.  'true'     'successful-ok'   MUST NOT      MUST
-         6.  'true'     'successful-ok'   MUST return N maybe
-         7.  'true'     'not-found'       MUST NOT      MUST NOT
-         8.  'true'     'busy'            MUST return N MUST NOT
-         9.  'true'     'events-          MUST NOT      'job-
-                        complete'                        completed' or
-                                                         maybe other
-         * 'false' or client omits the "notify-wait" attribute.
-
-         Explanation:
-
-         1-4:  Client does not request Event Wait Mode.
-         5-9:  Client requests Event Wait Mode.
-         2,7:  Subscription object not found, or was canceled earlier;
-               client should NOT try again.
-         3,8:  Server busy, tells client to try later; client should try
-               again in N seconds.
-         4:    Client polled after job completed, but before Event Life
-               expired, and got the 'job-completed' event, so the client
-               shouldn't bother trying again; client should NOT try
-               again later.
-         5:    Printer returns one or more Event Notifications and is OK
-               to stay in Event Wait Mode; the client waits for more
-               Event Notifications to be returned.
-         6:    Printer wants to leave Event Wait mode.  Can happen on
-               the first response (with or without Event Notifications)
-               or happen on a subsequent response with or without Event
-               Notifications; the client SHOULD try again in N seconds.
-         9:    Either (1) the printer returns 'job-completed' event, or
-               (2) the Subscription Object was canceled by either a
-               Cancel-Job or a Per-Printer Subscription expired without
-               being renewed.  For case (1), at least one Event
-               Notification MUST be returned; for case (2), it is
-               unlikely that any Event Notifications are returned, and
-               the client should NOT try again.
-
-5.2.2.  printer-up-time (integer(1:MAX))
-
-   The value of this attribute is the Printer's "printer-up-time"
-   attribute at the time when the Printer sends this response.  The
-   Printer MUST return this attribute.  Because each Event Notification
-   also contains the value of this attribute when the event occurred,
-   the value of this attribute lets a Notification Recipient know when
-   each Event Notification occurred relative to the time of this
-   response.
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 14]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   Group 2: Unsupported Attributes
-         See [RFC2911], section 3.1.7, for details on returning
-         Unsupported Attributes.
-
-   Group 3 through N: Event Notification Attributes
-         The Printer responds with one Event Notification Attributes
-         Group per matched Event Notification.  The entire response is
-         considered a single Compound Event Notification (see
-         [RFC3995]).  The matched Event Notifications are all un-expired
-         Event Notifications associated with the matched Subscription
-         Objects and MUST follow the "Event Notification Ordering"
-         requirements for Event Notifications within a Compound Event
-         Notification specified in [RFC3995] section 9.  In other words,
-         the Printer MUST order these Event Notification groups in
-         ascending time stamp (and sequence number) order for a
-         Subscription object.  If Event Notifications for multiple
-         Subscription objects are being returned, the Notification
-         Events for the next Subscription object follow in ascending
-         time stamp order, etc.
-
-         Each Event Notification Group MUST contain all of attributes
-         specified in section 9.1 ("Content of Machine Consumable Event
-         Notifications") of [RFC3995], with exceptions denoted by
-         asterisks in the tables below.
-
-         The tables below are identical to those in section 9.1
-         ("Content of Machine Consumable Event Notifications") of
-         [RFC3995], except that each cell in the "Sends" column is a
-         "MUST".
-
-         If more than one Event Notification is being returned and the
-         status of each is not the same, then the Printer MUST return a
-         "notify-status-code" attribute in each Event Notification
-         Attributes group to indicate the differing status values.
-
-         For an Event Notification for all Events, the Printer includes
-         the attributes shown in Table 3.
-
-               Table 3.  Attributes in Event Notification Content
-
-   Source Value                              Sends     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(1:MAX)) *        MUST      Printer
-   printer-current-time (dateTime)           MUST **   Printer
-
-
-
-Herriot, et al.             Standards Track                    [Page 15]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   notify-sequence-number (integer (0:MAX))  MUST      Subscription
-   notify-charset (charset)                  MUST      Subscription
-   notify-natural-language (naturalLanguage) MUST      Subscription
-   notify-user-data (octetString(63))        MUST ***  Subscription
-   notify-text (text)                        MUST      Event
-                                                        Notification
-   attributes from the "notify-attributes"   MUST **** Printer
-   attribute
-   attributes from the "notify-attributes"   MUST **** Job
-   attribute
-   attributes from the "notify-attributes"   MUST **** Subscription
-   attribute
-
-      * As specified in [RFC3995] section 9, the value of the
-      "printer-up-time" attribute sent in each Event Notification
-      MUST be the time at which the Event occurred, not the time at
-      which the Event Notification was sent.
-
-      ** The Printer MUST send the "printer-current-time" attribute
-      if and only if it supports the "printer-current-time" attribute
-      on the Printer object.
-
-      *** If the associated Subscription Object does not contain a
-      "notify-user-data" attribute, the Printer MUST send an
-      octet-string of length 0.
-
-      **** If the "notify-attributes" attribute is present on the
-      Subscription Object, the Printer MUST send all attributes
-      specified by the "notify-attributes" attribute.  Note:  If the
-      Printer doesn't support the "notify-attributes" attribute, it
-      is not present on the associated Subscription Object.
-
-      For Event Notifications for Job Events, the Printer includes
-      the additional attributes shown in Table 4.
-
-     Table 4.  Additional Attributes in Event Notification Content for
-                                Job Events
-
-   Source Value                                  Sends  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
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 16]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-      *  The Printer MUST send the "job-impressions-completed" attribute
-      in an Event Notification only for the combinations of Events and
-      Subscribed Events shown in Table 5.
-
-        Table 5.  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'
-
-      For Event Notification for Printer Events, the Printer includes
-      the additional attributes shown in Table 6.
-
-     Table 6.  Additional Attributes in Event Notification Content for
-                              Printer Events
-
-   Source Value                                  Sends   Source
-   Object
-
-   printer-state (type1 enum)                    MUST    Printer
-   printer-state-reasons (1setOf type2 keyword)  MUST    Printer
-   printer-is-accepting-jobs (boolean)           MUST    Printer
-
-6.  Additional Information about Subscription Template Attributes
-
-   The 'ippget' Delivery Method does not define any addition
-   Subscription Template attributes and has the conformance requirements
-   for Subscription Template attributes defined in [RFC3995].  This
-   section defines additional information about Subscription Template
-   attributes defined in [RFC3995].
-
-6.1.  notify-pull-method (type2 keyword)
-
-   This Subscription Template attribute identifies the Pull Delivery
-   Method to be used for the Subscription Object (see [RFC3995]).  To
-   support the 'ippget' Pull Delivery Method defined in this document,
-   the Printer MUST support this attribute with the following keyword
-   value:
-
-     'ippget':  Indicates that the 'ippget' Pull Delivery Method is to
-       be used for this Subscription Object.
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 17]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-7.  Subscription Description Attributes
-
-   The 'ippget' Delivery Method has the conformance requirements for
-   Subscription Description attributes defined in [RFC3995].  The
-   'ippget' Delivery Method does not define any addition Subscription
-   Description attributes.
-
-8.  Additional Printer Description Attributes
-
-   This section defines additional Printer Description attributes for
-   use with the 'ippget' Delivery Method.
-
-8.1.  ippget-event-life (integer(15:MAX))
-
-   This Printer Description attribute specifies the Event Life value
-   that the Printer assigns to each Event; i.e., the number of seconds
-   after an Event occurs during which a Printer will return that Event
-   in an Event Notification in a Get-Notifications response.  After the
-   Event Life expires for the Event, the Printer MAY no longer return an
-   Event Notification for that Event in a Get-Notifications response.
-
-   The Printer MUST support this attribute if it supports the 'ippget'
-   Delivery Method.  The value MUST be 15 or more (at least 15 seconds),
-   and 60 (seconds) is the RECOMMENDED value to align with the PWG Job
-   Monitoring MIB [RFC2707] jmGeneralJobPersistence and
-   jmGeneralAttributePersistence objects.
-
-   For example, assume the following:
-
-   1.  A client performs a Job Creation operation that creates a
-       Subscription Object associated with the 'ippget' Delivery Method;
-
-   2.  An Event associated with the new Job occurs immediately after the
-       Subscription Object is created;
-
-   3.  the same client or some other client performs a Get-Notifications
-       operation so that the client is connected N seconds after the Job
-       Creation operation.
-
-   Then, if N is less than the value of this attribute, the client(s)
-   performing the Get-Notifications operations can expect not to miss
-   any Event-Notifications, barring some unforeseen lack of memory space
-   in the Printer.  Note:  The client MUST initiate the Get-
-   Notifications at a time that is sufficiently less that N seconds to
-   account for network latency so that it is connected to the Printer
-   before N seconds elapses.
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 18]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   If a Printer supports the 'ippget' Delivery Method, it MUST keep
-   'completed', 'canceled', or 'aborted' Job objects in the Job
-   Retention and/or Job History phases for at least as long as this
-   attribute's value.  The Printer MAY retain jobs longer that this
-   value.  See [RFC2911], section 4.3.7.1, and the discussion in
-   [RFC3995] (regarding the 'job-completed' event).  The latter explains
-   that a Notification Recipient can query the Job after receiving a
-   'job-completed' Event Notification in order to find out other
-   information about the job that is 'completed', 'aborted', or
-   'canceled'.  However, this attribute has no effect on the Cancel-
-   Subscription operation, which deletes the Subscription object
-   immediately whether or not it contains the "notify-pull-method"
-   attribute with the 'ippget' keyword value.  Immediately thereafter,
-   subsequent Get-Notifications Responses MUST NOT contain Event
-   Notifications associated with the canceled Subscription object.
-
-9.  New Values for Existing Printer Description Attributes
-
-   This section defines additional values for existing Printer
-   Description attributes as defined in [RFC3995].
-
-9.1.  notify-pull-method-supported (1setOf type2 keyword)
-
-   The following keyword value for the "notify-pull-method-supported"
-   attribute is added in order to support the new Delivery Method
-   defined in this document:
-
-      'ippget':   The IPP Notification Pull Delivery Method defined in
-        this document.
-
-9.2.  operations-supported (1setOf type2 enum)
-
-   Table 7 lists the "operation-id" value defined in order to support
-   the new Get-Notifications operation defined in this document.
-
-                    Table 7.  Operation-id Assignments
-
-      Value       Operation Name
-
-      0x001C      Get-Notifications
-
-10.  New Status Codes
-
-   The following status code is defined as an extension for this
-   Delivery Method and is returned as the status code of the Get-
-   Notifications operation in Group 1 or Group 3 to N (see section 5.2).
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 19]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-10.1.  successful-ok-events-complete (0x0007)
-
-   The Printer MUST return the 'successful-ok-events-complete' status
-   code to indicate when this Get-Notifications response is the last
-   response for a Subscription object, whether or not there are Event
-   Notifications being returned.  This condition occurs for Event Wait
-   Mode with Notification Recipients waiting for responses when (1) the
-   Subscription Object is canceled with a Cancel-Subscription operation,
-   (2) the Subscription object is deleted, when the Per-Printer
-   Subscription lease time expires, or (3) the 'job-completed' event
-   occurs for a Per-Job Subscription.  This condition also occurs for a
-   Get-Notifications request that a Notification Recipient makes after
-   the job completes, but before the Event Life expires.
-
-11.  Encoding and Transport
-
-   This section defines the encoding and transport considerations for
-   this Delivery Method based on [RFC2910].
-
-   The encoding of a Get-Notifications Response is modeled after the
-   Get-Jobs Response (see [RFC2911]).  In a Get-Notifications Response,
-   each Event Notification Attributes Group MUST start with an 'event-
-   notification-attributes-tag' (see the section "Encodings of
-   Additional Attribute Tags" in [RFC3995]), and end with an 'end-of-
-   attributes-tag'.  In addition, for Event Wait Mode the multi-
-   part/related is used to separate each multiple response (in time) to
-   a single Get-Notifications Request.
-
-   The Printer returns Get-Notification Response as follows:
-
-   1.  If the Notification Recipient client did not request Event Wait
-       Mode ("notify-wait" = 'false' or omitted), the Printer ends the
-       response with an 'end-of-attributes-tag' (see [RFC2911], Get-Jobs
-       encoding), as with any operation response.
-
-   2.  If the Notification Recipient client requests Event Wait Mode
-       ("notify-wait" = 'true') and the Printer wishes to honor the
-       request, the Printer MUST return the response as an
-       application/ipp part inside a multi-part/related MIME media type.
-       When one or more additional Events occur, the Printer returns
-       each as an additional Event Notification Group using a separate
-       application/ipp part under the multi-part/related type.
-
-   3.  If the client requested Event Wait Mode ("notify-wait" = 'true'),
-       but the Printer does not wish to honor the request in the initial
-       response and wants the client explicitly polled for Event
-       Notifications, the Printer MUST return the "notify-get-interval"
-       operation attribute (see section 5.2.1).  The Printer returns the
-
-
-
-Herriot, et al.             Standards Track                    [Page 20]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-       response as an application/ipp part that MAY be inside an multi-
-       part/related type.  The client MUST accept this response and
-       reissue the Get-Notifications request in the future indicated by
-       the value of the "notify-get-interval" attribute value.
-
-   4.  If the client requested Event Wait Mode ("notify-wait" = 'true'),
-       and the Printer initially honored the request but later wishes to
-       leave Event Wait Mode,  the Printer MUST return the "notify-get-
-       interval" operation attribute (see section 5.2.1).  The Printer
-       returns the response as an application/ipp part that MUST be
-       inside an multi-part/related type.
-
-   NOTE:  If a Notification Recipient fails to receive a response, it
-   can ask the Printer for the same Event Notifications again.  The
-   Notification Recipient will receive the same Event Notifications that
-   it should have received the first time, except for those Event
-   Notifications that have expired in the meantime.
-
-   The Printer MAY chunk the responses, but this has no significance to
-   the IPP semantics.
-
-   This notification delivery method uses the IPP transport and encoding
-   [RFC2910] for the Get-Notifications operation with the following
-   extension, allocated in [RFC3995]:
-
-          Table 8.  The "event-notification-attributes-tag" Value
-
-      Tag Value (Hex)   Meaning
-
-      0x07              "event-notification-attributes-tag"
-
-12.  Conformance Requirements
-
-   This section lists the conformance requirements for clients and
-   Printers.
-
-12.1.  Conformance for IPP Printers
-
-   It is OPTIONAL for a Printer to support IPP Notifications as defined
-   in [RFC3995].  However, if a Printer supports IPP Notifications, the
-   Printer MUST support the 'ippget' Delivery Method, as defined in this
-   document, as one of its Delivery Methods.  IPP Printers that conform
-   to this specification
-
-   1.  MUST meet the conformance requirements defined in [RFC3995] for a
-       Pull Delivery Method;
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 21]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   2.  MUST support the Get-Notifications operation defined in section
-       5, including Event Wait Mode;
-
-   3.  MUST support the Subscription Template object attributes, as
-       defined in section 6;
-
-   4.  MUST support the Subscription Description object attributes, as
-       defined in section 7;
-
-   5.  MUST support the "ippget-event-life" Printer Description
-       attribute defined in section 8.1, including retaining jobs in the
-       Job Retention and/or Job History phases for at least as long as
-       the value specified by the Printer's "ippget-event-life";
-
-   6.  MUST support the additional values for IPP/1.1 Printer
-       Description attributes defined in section 9;
-
-   7.  MUST support the 'successful-ok-events-complete' status code, as
-       described in section 10.1;
-
-   8.  MUST listen for the IPP Get-Notifications operation requests on
-       IANA-assigned well-known port 631, unless explicitly configured
-       by system administrators or site policies;
-
-   9.  SHOULD NOT listen for IPP Get-Notifications operation requests on
-       any other port, unless explicitly configured by system
-       administrators or site policies; and
-
-   10. MUST meet the security conformance requirements stated in section
-       18.4.
-
-12.2.  Conformance for IPP Clients
-
-   It is OPTIONAL for an IPP Client to support IPP Notifications as
-   defined in [RFC3995].  However, if a client supports IPP
-   Notifications, the client MUST support the 'ippget' Delivery Method
-   as defined in this document as one of its Delivery Methods.  IPP
-   Clients that conform to this specification:
-
-   1.  MUST create Subscription Objects by sending Subscription Creation
-       operation requests containing the "notify-pull-method" attribute
-       (as opposed to the "notify-recipient-uri" attribute) using the
-       'ippget' keyword value (see sections 6.1 and 15.2);
-
-   2.  MUST send IPP Get-Notifications operation requests (see section
-       5.1) via the port specified in the associated 'ipp' URL (if
-       present) or otherwise via IANA-assigned well-known port 631;
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 22]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   3.  MUST convert the associated 'ipp' URLs for use in IPP Get-
-       Notifications operation to their corresponding 'http' URL forms
-       for use in the HTTP layer, according to the rules in section 5,
-       "IPP URL Scheme", in [RFC2910]; and
-
-   4.  MUST meet the security conformance requirements stated in section
-       18.5.
-
-13.  Normative References
-
-   [RFC2119]    Bradner, S., "Key words for use in RFCs to Indicate
-                Requirement Levels", BCP 14, RFC 2119, March 1997.
-
-   [RFC2910]    Herriot, R., Butler, S., Moore, P., Turner, R., and J.
-                Wenn, "Internet Printing Protocol/1.1: Encoding and
-                Transport", RFC 2910, September 2000.
-
-   [RFC2911]    Hastings, T., Herriot, R., deBry, R., Isaacson, S., and
-                P. Powell, "Internet Printing Protocol/1.1: Model and
-                Semantics", RFC 2911, September 2000.
-
-   [RFC3995]   Herriot, R. and T. Hastings, "Internet Printing Protocol
-                (IPP): Event Notifications and Subscriptions", RFC 3995,
-                March 2005.
-
-14.  Informative References
-
-   [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, F., "Design Goals for an Internet Printing
-                Protocol", RFC 2567, April 1999.
-
-   [RFC2568]    Zilles, S., "Rationale for the Structure of the 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.
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 23]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   [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.
-
-   [RFC2707]    Bergman, R., Hastings, T., Isaacson, S., and H. Lewis,
-                "Job Monitoring MIB - V1.0", RFC 2707, November 1999.
-
-   [RFC3196]    Hastings, T., Manros, C., Zehler, P., Kugler, C., and H.
-                Holst, "Internet Printing Protocol/1.1: Implementor's
-                Guide", RFC 3196, November 2001.
-
-   [RFC3997]    Hastings, T., Ed., deBry, R., and H. Lewis, "Internet
-                Printing Protocol (IPP): Requirements for IPP
-                Notifications", RFC 3997, March 2005.
-
-15.  IANA Considerations
-
-   This section contains the exact information that the IANA has added
-   to the IPP Registries according to the procedures defined in
-   [RFC2911], section 6.  These registrations have been published in the
-   http://www.iana.org/assignments/ipp-registrations registry.
-
-15.1.  Attribute Registrations
-
-   The following table lists the attributes defined in this document.
-   This has been registered according to the procedures in RFC 2911
-   [RFC2911] section 6.2.
-
-   Printer Description attributes:                Reference   Section
-   -------------------------------                ---------   -------
-   ippget-event-life (integer(15:MAX))            [RFC3996]   8.1
-
-15.2.  Delivery Method and Additional Keyword Attribute Value
-       Registrations for Existing Attributes
-
-   This section lists additional keyword attribute value registrations
-   for use with existing attributes defined in other documents.  These
-   have been registered according to the procedures in [RFC2911],
-   section 6.1.  According to [RFC3995], section 24.7.3, Pull Delivery
-   Method registrations are the keyword attribute value registrations
-   for the "notify-pull-method" and "notify-pull-method-supported"
-   attributes.
-
-
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 24]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   Attribute (attribute syntax)
-     Values                                       Reference   Section
-     -----------------------                      ---------   -------
-   notify-pull-method (type2 keyword)             [RFC3995]   5.3.2
-   notify-pull-method-supported (1setOf type2 keyword)
-                                                  [RFC3995]   5.3.2.1
-     ippget                                       [RFC3996]   9.1
-
-15.3.  Additional Enum Attribute Values
-
-   The following table lists the enum attribute values defined in this
-   document.  These have been registered according to the procedures in
-   [RFC2911], section 6.1.
-
-   Attribute (attribute syntax)
-     Value    Name                                Reference   Section
-     ------   -----------------------------       ---------   -------
-   operations-supported (1setOf type2 enum)       [RFC2911]   4.4.15
-     0x001C   Get-Notifications                   [RFC3996]   9.2
-
-15.4.  Operation Registrations
-
-   The following table lists the operations defined in this document.
-   This has been registered according to the procedures in RFC 2911
-   [RFC2911] section 6.4.
-
-   Operations:                                    Reference   Section
-   -----------                                    ---------   -------
-   Get-Notifications                              [RFC3996]   5
-
-15.5.  Status Code Registrations
-
-   The following table lists the status codes defined in this document.
-   This has been registered according to the procedures in [RFC2911],
-   section 6.6.
-
-   Status codes:                                  Reference  Section
-   -------------                                  ---------  -------
-   successful-ok-events-complete (0x0007)         [RFC3996]  10.1
-
-16.  Internationalization Considerations
-
-   The IPP Printer MUST localize the "notify-text" attribute as
-   specified in section 14 of [RFC3995].
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 25]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   In addition, when the client receives the Get-Notifications response,
-   it is expected to localize the attributes that have the 'keyword'
-   attribute syntax according to the charset and natural language
-   requested in the Get-Notifications request.
-
-17.  Security Considerations
-
-   The IPP Model and Semantics document [RFC2911, section 8] discusses
-   high-level security requirements (Client Authentication, Server
-   Authentication and Operation Privacy).  The IPP Transport and
-   Encoding document [RFC2910, section 8] discusses the security
-   requirements for the IPP protocol.  Client Authentication is the
-   mechanism by which the client proves its identity to the server in a
-   secure manner.  Server Authentication is the mechanism by which the
-   server proves its identity to the client in a secure manner.
-   Operation Privacy is defined as a mechanism for protecting operations
-   from eavesdropping.
-
-   The 'ippget' Delivery Method with its Get-Notifications operations
-   leverages the security mechanism that are used in IPP/1.1 [RFC2910
-   and RFC2911] without adding any additional security mechanisms in
-   order to maintain the same security support as IPP/1.1.
-
-   The access control model for the Get-Notifications operation defined
-   in this document is the same as the access control model for the
-   Get-Job-Attributes operation (see [RFC2911], section 3.2.6).  The
-   primary difference is that a Get-Notifications operation is directed
-   at Subscription Objects rather than at Job objects, and a returned
-   attribute group contains Event Notification attributes rather than
-   Job object attributes.
-
-17.1.  Notification Recipient Client Access Rights
-
-   The Notification Recipient client MUST have the following access
-   rights to the Subscription object(s) targeted by the Get-
-   Notifications operation request:
-
-      The authenticated user (see [RFC2911], section 8.3) performing
-      this operation MUST be (1) the owner of each Subscription Object
-      identified by the "notify-subscription-ids" operation attribute
-      (see section 5.1.1), (2) an operator or administrator of the
-      Printer (see [RFC2911], sections 1 and 8.5), or (3) otherwise
-      authorized by the Printer's administrator-configured security
-      policy to request Event Notifications from the target Subscription
-      Object(s).  Furthermore, the Printer's security policy MAY limit
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 26]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-      the attributes returned by the Get-Notifications operation, in a
-      manner similar to that of the Get-Job-Attributes operation (see
-      [RFC2911], end of section 3.3.4.2).
-
-17.2.  Printer Security Threats
-
-   Because the Get-Notifications operation is sent in the same direction
-   as are Job Creation operations, usually by the same client, this
-   Event Notification Delivery Method poses no additional
-   authentication, authorization, privacy, firewall, or port assignment
-   issues above those for the IPP Get-Job-Attributes and Get-Printer-
-   Attributes operations (see [RFC2911], sections 3.2.6 and 3.2.5).
-
-17.3.  Notification Recipient Security Threats
-
-   Unwanted Events Notifications (spam):  Unlike Push Event Notification
-   Delivery Methods in which the IPP Printer initiates the Event
-   Notification, with the Pull Delivery Method defined in this document,
-   the Notification Recipient is the client that initiates the Get-
-   Notifications operation (see section 5).  Therefore, with this method
-   there is no chance of "spam" notifications.
-
-   Note:  When a client stays connected to a Printer by using the Event
-   Wait Mode (see section 5.1.3) in order to receive Event Notifications
-   as they occur, it can close down the IPP connection at any time and
-   so can avoid future unwanted Event Notifications at any time.
-
-   It is true that the client has control over whether to ask for Event
-   Notifications.  However, if the client subscribes to an event and
-   does a Get-Notifications request, it gets all events for the
-   Subscription Object in the sequence number range (see section 5.1.2),
-   not just those it wants.  If a client subscribes to a Per-Printer
-   Subscription job event, such as 'job-completed', and someone then
-   starts and cancels thousands of jobs, the client would have to
-   receive these events in addition to those it is interested in.  A
-   client can protect itself better by subscribing to its own jobs by
-   using a Per-Job Subscription, rather than create a Per-Printer
-   subscription whose Job events apply to all jobs.
-
-17.4.  Security Requirements for Printers
-
-   For the Get-Notifications operation defined in this document, the
-   same Printer conformance requirements apply for supporting and using
-   Client Authentication, Server Authentication and Operation Privacy as
-   stated in [RFC2910] section 8 for all IPP operations.
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 27]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-17.5.  Security Requirements for Clients
-
-   For the Get-Notifications operation defined in this document, the
-   same client conformance requirements apply for supporting and using
-   Client Authentication, Server Authentication, and Operation Privacy
-   as stated in [RFC2910], section 8, for all IPP operations.
-
-18.  Description of Base IPP Documents (Informative)
-
-   The base set of IPP documents includes the following:
-
-     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]
-
-   "Design Goals for an Internet Printing Protocol" takes a broad look
-   at distributed printing functionality, and it enumerates real-life
-   scenarios that help 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.
-
-   "Rationale for the Structure and Model and Protocol for the Internet
-   Printing Protocol" 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 working group's major decisions.
-
-   "Internet Printing Protocol/1.1: Model and Semantics" describes a
-   simplified model with abstract objects, their attributes, and their
-   operations that are independent of encoding and transport.  It
-   introduces a Printer and a Job object.  The Job object optionally
-   supports multiple documents per Job.  It also addresses security,
-   internationalization, and directory issues.
-
-   "Internet Printing Protocol/1.1: Encoding and Transport" is a formal
-   mapping of the abstract operations and attributes defined in the
-   model document onto HTTP/1.1 [RFC2616].  It 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.
-
-
-
-Herriot, et al.             Standards Track                    [Page 28]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-   "Internet Printing Protocol/1.1: Implementer's Guide" 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 of
-   processing requests is given, including error checking.  Motivation
-   for some of the specification decisions is also included.
-
-   "Mapping between LPD and IPP Protocols" gives some advice to
-   implementers of gateways between IPP and LPD (Line Printer Daemon)
-   implementations.
-
-19.  Contributors
-
-   Carl Kugler and Harry Lewis contributed the basic idea of in-band
-   "smart polling" coupled with multiple responses for a single
-   operation on the same connection, with one response for each event as
-   it occurs.  Without their continual persuasion, we would not have
-   arrived at this Delivery Method specification and would not have been
-   able to agree on a single REQUIRED Delivery Method for IPP.
-
-   Carl Kugler
-   IBM Corporation
-   6300 Diagonal Highway
-   Boulder, CO 80301
-
-   EMail: kugler@us.ibm.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 29]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-Authors' Addresses
-
-   Robert Herriot
-   Global Workflow Solutions
-   706 Colorado Ave.
-   Palo Alto, CA 94303
-
-   Phone: 650-324-4000
-   EMail: bob@herriot.com
-
-
-   Thomas N. Hastings
-   Xerox Corporation
-   710 S Aviation Blvd.  ESAE 242
-   El Segundo CA 90245
-
-   Phone: 310-333-6413
-   Fax:   310-333-6342
-   EMail: hastings@cp10.es.xerox.com
-
-
-   Harry Lewis
-   IBM Corporation
-   6300 Diagonal Hwy
-   Boulder, CO 80301
-
-   Phone: (303) 924-5337
-   EMail: harryl@us.ibm.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Herriot, et al.             Standards Track                    [Page 30]
-\f
-RFC 3996           IPP: The 'ippget' Delivery Method          March 2005
-
-
-Full Copyright Statement
-
-   Copyright (C) The Internet Society (2005).
-
-   This document is subject to the rights, licenses and restrictions
-   contained in BCP 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 in BCP 78 and BCP 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 at
-   http://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, et al.             Standards Track                    [Page 31]
-\f