summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3996.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3996.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3996.txt')
-rw-r--r--doc/rfc/rfc3996.txt1739
1 files changed, 1739 insertions, 0 deletions
diff --git a/doc/rfc/rfc3996.txt b/doc/rfc/rfc3996.txt
new file mode 100644
index 0000000..c2a2a86
--- /dev/null
+++ b/doc/rfc/rfc3996.txt
@@ -0,0 +1,1739 @@
+
+
+
+
+
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+
+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]
+