diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3995.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3995.txt')
-rw-r--r-- | doc/rfc/rfc3995.txt | 5323 |
1 files changed, 5323 insertions, 0 deletions
diff --git a/doc/rfc/rfc3995.txt b/doc/rfc/rfc3995.txt new file mode 100644 index 0000000..9a8013b --- /dev/null +++ b/doc/rfc/rfc3995.txt @@ -0,0 +1,5323 @@ + + + + + + +Network Working Group R. Herriot +Request for Comments: 3995 Global Workflow Solutions +Category: Standards Track T. Hastings +Updates: 2911, 2910 Xerox Corporation + March 2005 + + + Internet Printing Protocol (IPP): + Event Notifications and Subscriptions + +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 OPTIONAL extension to the Internet + Printing Protocol/1.1: Model and Semantics (RFC 2911, RFC 2910). + This extension allows a client to subscribe to printing related + Events. Subscriptions are modeled as Subscription Objects. The + Subscription Object specifies that when one of the specified Events + occurs, the Printer delivers an asynchronous Event Notification to + the specified Notification Recipient via the specified Push or Pull + Delivery Method (i.e., protocol). + + A client associates Subscription Objects with a particular Job by + performing the Create-Job-Subscriptions operation or by submitting a + Job with subscription information. A client associates Subscription + Objects with the Printer by performing a Create-Printer-Subscriptions + operation. Four other operations are defined for Subscription + Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Renew- + Subscription, and Cancel-Subscription. + + + + + + + + + + + +Herriot & Hastings Standards Track [Page 1] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 + 1.1. Notification Overview. . . . . . . . . . . . . . . . . . 5 + 2. Models for Notification. . . . . . . . . . . . . . . . . . . . 8 + 2.1. Model for Simple Notification (Normative). . . . . . . . 8 + 2.2. Additional Models for Notification (Informative) . . . . 9 + 3. Terminology. . . . . . . . . . . . . . . . . . . . . . . . . . 9 + 3.1. Conformance Terminology. . . . . . . . . . . . . . . . . 9 + 3.2. Other Terminology. . . . . . . . . . . . . . . . . . . . 10 + 4. Object Relationships . . . . . . . . . . . . . . . . . . . . . 12 + 4.1. Printer and Per-Printer Subscription Objects . . . . . . 13 + 4.2. Printer, Job and Per-Job Subscription Objects. . . . . . 13 + 5. Subscription Object. . . . . . . . . . . . . . . . . . . . . . 13 + 5.1. Rules for Support of Subscription Template Attributes. . 14 + 5.2. Rules for Processing Subscription Template Attributes. . 15 + 5.3. Subscription Template Attributes . . . . . . . . . . . . 18 + 5.3.1. notify-recipient-uri (uri) . . . . . . . . . . . 20 + 5.3.2. notify-pull-method (type2 keyword) . . . . . . . 21 + 5.3.3. notify-events (1setOf type2 keyword) . . . . . . 22 + 5.3.4. notify-attributes (1setOf type2 keyword) . . . . 29 + 5.3.5. notify-user-data (octetString(63)) . . . . . . . 30 + 5.3.6. notify-charset (charset) . . . . . . . . . . . . 31 + 5.3.7. notify-natural-language (naturalLanguage). . . . 31 + 5.3.8. notify-lease-duration (integer(0:67108863)). . . 32 + 5.3.9. notify-time-interval (integer(0:MAX)). . . . . . 33 + 5.4. Subscription Description Attributes. . . . . . . . . . . 34 + 5.4.1. notify-subscription-id (integer (1:MAX)). . . . 35 + 5.4.2. notify-sequence-number (integer (0:MAX)) . . . . 35 + 5.4.3. notify-lease-expiration-time (integer(0:MAX)). . 36 + 5.4.4. notify-printer-up-time (integer(1:MAX)). . . . . 37 + 5.4.5. notify-printer-uri (uri) . . . . . . . . . . . . 37 + 5.4.6. notify-job-id (integer(1:MAX)) . . . . . . . . . 37 + 5.4.7. notify-subscriber-user-name (name(MAX)). . . . . 38 + 6. Printer Description Attributes Related to Notification . . . . 38 + 6.1. printer-state-change-time (integer(1:MAX)) . . . . . . . 39 + 6.2. printer-state-change-date-time (dateTime). . . . . . . . 39 + 7. New Values for Existing Printer Description Attributes . . . . 39 + 7.1. operations-supported (1setOf type2 enum) . . . . . . . . 40 + 8. Attributes Only in Event Notifications . . . . . . . . . . . . 40 + 8.1. notify-subscribed-event (type2 keyword). . . . . . . . . 40 + 8.2. notify-text (text(MAX)). . . . . . . . . . . . . . . . . 41 + 9. Event Notification Content . . . . . . . . . . . . . . . . . . 41 + 9.1. Content of Machine Consumable Event Notifications. . . . 44 + 9.1.1. Event Notification Content Common to All Events. 44 + 9.1.2. Additional Event Notification Content for Job + Events . . . . . . . . . . . . . . . . . . . . . 45 + + + + +Herriot & Hastings Standards Track [Page 2] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 9.1.3. Additional Event Notification Content for + Printer Events . . . . . . . . . . . . . . . . . 46 + 9.2. Content of Human Consumable Event Notification . . . . . 46 + 9.2.1. Event Notification Content Common to All Events. 47 + 9.2.2. Additional Event Notification Content for Job + Events . . . . . . . . . . . . . . . . . . . . . 49 + 9.2.3. Additional Event Notification Content for + Printer Events . . . . . . . . . . . . . . . . . 49 + 10. Delivery Methods . . . . . . . . . . . . . . . . . . . . . . . 50 + 11. Operations for Notification. . . . . . . . . . . . . . . . . . 52 + 11.1. Subscription Creation Operations . . . . . . . . . . . . 52 + 11.1.1. Create-Job-Subscriptions Operation . . . . . . . 52 + 11.1.2. Create-Printer-Subscriptions operation . . . . . 55 + 11.1.3. Job Creation Operations - Extensions for + Notification . . . . . . . . . . . . . . . . . . 56 + 11.2 Other Operations. . . . . . . . . . . . . . . . . . . . . 58 + 11.2.1. Restart-Job Operation - Extensions for + Notification . . . . . . . . . . . . . . . . . . 58 + 11.2.2. Validate-Job Operation - Extensions for + Notification . . . . . . . . . . . . . . . . . . 59 + 11.2.3. Get-Printer-Attributes - Extensions for + Notification . . . . . . . . . . . . . . . . . . 59 + 11.2.4. Get-Subscription-Attributes operation. . . . . . 60 + 11.2.5. Get-Subscriptions operation. . . . . . . . . . . 63 + 11.2.6. Renew-Subscription operation . . . . . . . . . . 66 + 11.2.7. Cancel-Subscription operation. . . . . . . . . . 68 + 12. Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . 70 + 12.1. successful-ok-ignored-subscriptions (0x0003) . . . . . . 70 + 12.2. client-error-ignored-all-subscriptions (0x0414). . . . . 71 + 13. Status Codes in Subscription Attributes Groups . . . . . . . . 71 + 13.1. client-error-uri-scheme-not-supported (0x040C) . . . . . 71 + 13.2. client-error-attributes-or-values-not-supported (0x040B) 71 + 13.3. client-error-too-many-subscriptions (0x0415) . . . . . . 72 + 13.4. successful-ok-too-many-events (0x0005) . . . . . . . . . 72 + 13.5. successful-ok-ignored-or-substituted-attributes (0x0001) 72 + 14. Encodings of Additional Attribute Tags . . . . . . . . . . . . 72 + 15. Conformance Requirements . . . . . . . . . . . . . . . . . . . 72 + 15.1. Conformance requirements for clients . . . . . . . . . . 73 + 15.2. Conformance requirements for Printers. . . . . . . . . . 73 + 16. Model for Notification with Cascading Printers (Informative) . 74 + 17. Distributed Model for Notification (Informative) . . . . . . . 75 + 18. Extended Notification Recipient (Informative). . . . . . . . . 76 + 19. Object Model for Notification (Normative). . . . . . . . . . . 77 + 19.1. Object relationships . . . . . . . . . . . . . . . . . . 78 + 19.2. Printer Object and Per-Printer Subscription Objects. . . 79 + 19.3. Job Object and Per-Job Subscription Objects. . . . . . . 79 + 20. Per-Job versus Per-Printer Subscription Objects (Normative). . 79 + 21. Normative References . . . . . . . . . . . . . . . . . . . . . 80 + + + +Herriot & Hastings Standards Track [Page 3] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 22. Informative References . . . . . . . . . . . . . . . . . . . . 80 + 23. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 81 + 23.1. Attribute Registrations. . . . . . . . . . . . . . . . . 82 + 23.2. Additional Enum Attribute Value Registrations within + the IPP registry . . . . . . . . . . . . . . . . . . . . 83 + 23.3. Operation Registrations. . . . . . . . . . . . . . . . . 83 + 23.4. Status code Registrations. . . . . . . . . . . . . . . . 83 + 23.5. Attribute Group tag Registrations. . . . . . . . . . . . 84 + 23.6. Registration of Events . . . . . . . . . . . . . . . . . 84 + 23.7. Registration of Event Notification Delivery Methods. . . 85 + 23.7.1. Requirements for Registration of Event + Notification Delivery Methods. . . . . . . . . . 85 + 23.7.2. Registration Procedure . . . . . . . . . . . . . 86 + 23.7.3. Delivery Method Document Registrations . . . . . 87 + 23.7.4. Registration Template. . . . . . . . . . . . . . 88 + 24. Internationalization Considerations. . . . . . . . . . . . . . 89 + 25. Security Considerations. . . . . . . . . . . . . . . . . . . . 89 + 25.1. Client access rights . . . . . . . . . . . . . . . . . . 89 + 25.2. Printer security threats . . . . . . . . . . . . . . . . 91 + 25.3. Notification Recipient security threats. . . . . . . . . 91 + 26. Description of the base IPP documents (Informative). . . . . . 92 + 27. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 93 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 94 + Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 95 + +Tables + + Table 1 - Subscription Template Attributes. . . . . . . . . . . . 20 + Table 2 - Subscription Description Attributes . . . . . . . . . . 35 + Table 3 - Printer Description Attributes Associated with + Notification. . . . . . . . . . . . . . . . . . . . . . 39 + Table 4 - Operation-id assignments. . . . . . . . . . . . . . . . 40 + Table 5 - Attributes in Event Notification Content. . . . . . . . 45 + Table 6 - Additional Event Notification Content for Job Events. . 46 + Table 7 - Combinations of Events and Subscribed Events for + "job-impressions-completed" . . . . . . . . . . . . . . 46 + Table 8 - Additional Event Notification Content for Printer + Events. . . . . . . . . . . . . . . . . . . . . . . . . 46 + Table 9 - Printer Name in Event Notification Content. . . . . . . 48 + Table 10 - Event Name in Event Notification Content. . . . . . . . 48 + Table 11 - Event Time in Event Notification Content. . . . . . . . 48 + Table 12 - Job Name in Event Notification Content. . . . . . . . . 49 + Table 13 - Job State in Event Notification Content . . . . . . . . 49 + Table 14 - Printer State in Event Notification Content . . . . . . 50 + Table 15 - Information about the Delivery Method . . . . . . . . . 51 + Table 16 - Printer Conformance Requirements for Operations . . . . 74 + + + + + +Herriot & Hastings Standards Track [Page 4] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +Figures + + Figure 1 - Model for Notification. . . . . . . . . . . . . . . . . 9 + Figure 2 - Model for Notification with Cascading Printers. . . . . 75 + Figure 3 - Opaque Use of a Notification Server Transparent to the + Client. . . . . . . . . . . . . . . . . . . . . . . . . 76 + Figure 4 - Use of an Extended Notification Recipient transparent + to the Printer. . . . . . . . . . . . . . . . . . . . . 77 + Figure 5 - Object Model for Notification . . . . . . . . . . . . . 78 + +1. Introduction + + This IPP notification specification is an OPTIONAL extension to + Internet Printing Protocol/1.1: Model and Semantics [RFC2911, + RFC2910]. See Appendix 29 for a description of the base IPP + documents. This document in combination with the following documents + is intended to meet the most important notification requirements + described in [RFC3997]: + + Internet Printing Protocol (IPP): "Job Progress Attributes" + [RFC3381] + + Internet Printing Protocol (IPP): "The 'ippget' Delivery Method + for Event Notifications" [RFC3996] + + This specification REQUIRES that clients and Printers support the + 'ippget' Pull Delivery Method [RFC3996]. Conforming client and + Printer implementations MAY support additional Push or Pull Delivery + Methods as well. Note: this document does not define any Delivery + Methods itself, but it does define the rules for conformance for + Delivery Method Documents and their registration with IANA (see + section 23.7.3). + + Refer to the Table of Contents for the layout of this document. + +1.1. Notification Overview + + This document defines operations that a client can perform in order + to create Subscription Objects in a Printer and carry out other + operations on them. A Subscription Object represents a Subscription + abstraction. The Subscription Object specifies that when one of the + specified Events occurs, the Printer delivers an asynchronous Event + Notification to the specified Notification Recipient via the + specified Delivery Method (i.e., protocol). + + When a client (called a Subscribing Client) performs an operation + that creates a Subscription Object, the operation contains one or + more Subscription Template Attributes Groups. Each such group holds + + + +Herriot & Hastings Standards Track [Page 5] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + information used by the Printer to initialize a newly created + Subscription Object. The Printer creates one Subscription Object for + each Subscription Template Attributes Group in the operation. This + group is like the Job Template Attributes group defined in [RFC2911]. + The following is an example of the information included in a + Subscription Template Attributes Group (see section 5 for details on + the Subscription Object attributes): + + 1. The names of Subscribed Events that are of interest to the + Notification Recipient. + + 2. The address (URL) of one Notification Recipient for a Push + Delivery Method or the method for a Pull Delivery Method. + + 3. The Delivery Method (i.e., the protocol) which the Printer uses to + deliver the Event Notification. + + 4. Some opaque data that the Printer delivers to the Notification + Recipient in the Event Notification. For example, the + Notification Recipient might use this opaque data as a forwarding + address for the Event Notification. + + 5. The charset to use in text fields within an Event Notification + + 6. The natural language to use in the text fields of the Event + Notification + + 7. The requested lease time in seconds for the Subscription Object + + An operation that creates a Subscription Object is called a + Subscription Creation Operation. These operations include the + following operations (see section 11.1 for further details): + + - Job Creation operation: When a client performs such an + operation (Print-Job, Print-URI, and Create-Job), a client can + include zero or more Subscription Template Attributes Groups in + the request. The Printer creates one Subscription Object for + each Subscription Template Attributes Group in the request, and + the Printer associates each such Subscription Object with the + newly created Job. This document extends these operations' + definitions in [RFC2911] by adding Subscription Template + Attributes Groups in the request and Subscription Attributes + Groups in the response. + + - Create-Job-Subscriptions operation: A client can include one or + more Subscription Template Attributes Groups in the request. + The Printer creates one Subscription Object for each + + + + +Herriot & Hastings Standards Track [Page 6] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Subscription Template Attributes Group and associates each with + the job that is the target of this operation. + + - Create-Printer-Subscriptions operation: A client can include + one or more Subscription Template Attributes Groups in the + request. The Printer creates one Subscription Object for each + Subscription Template Attributes Group and associates each with + the Printer that is the target of this operation. + + For each of the above operations: + + - the Printer associates a Subscription Object with the Printer + or a specific Job. When a Subscription Object is associated + with a Job Object, it is called a Per-Job Subscription Object. + When a Subscription Object is associated with a Printer Object, + it is called a Per-Printer Subscription Object. + + - the response contains one Subscription Attributes Group for + each Subscription Template Attributes Group in the request and + in the same order. When the Printer successfully creates a + Subscription Object, its corresponding Subscription Attributes + Group contains the "notify-subscription-id" attribute. This + attribute uniquely identifies the Subscription Object and is + analogous to a "job-id" for a Job object. Some operations + described below use the "notify-subscription-id" to identify + the target Subscription Object. + + This document defines the following additional operations (see + section 11.2 for further details): + + - Restart-Job operation: When a client performs the Restart-Job + operation [RFC2911], the Printer re-uses the same Job and its + Subscription Objects. + + - Validate-Job operation: When a client performs this operation, a + client can include zero or more Subscription Template Attributes + Groups in the request. The Printer determines if it could create + one Subscription Object for each Subscription Template Attributes + Group in the request. This document extends this operation's + definition in [RFC2911] by adding Subscription Template Attributes + Groups in the request and Subscription Attributes Groups in the + response. + + - Get-Subscription-Attributes operation: This operation allows a + client to obtain the specified attributes of a target Subscription + Object. + + + + + +Herriot & Hastings Standards Track [Page 7] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + - Get-Subscriptions operation: This operation allows a client to + obtain the specified attributes of all Subscription Objects + associated with the Printer or a specified Job. + + - Renew-Subscription operation: This operation renews the lease on + the target Per-Printer Subscription Object before it expires. A + newly created Per-Printer Subscription Object receives an initial + lease. It is the duty of the client to use this operation + frequently enough to preserve a Per-Printer Subscription Object. + The Printer deletes a Per-Printer Subscription Object when its + lease expires. A Per-Job Subscription Object last exactly as long + as its associated Job Object and thus doesn't have a lease. + + - Cancel-Subscription operation: This operation (1) cancels the + lease on the specified Per-Printer Subscription Object and thereby + deletes the Per-Printer Subscription Object or (2) deletes the + Per-Job Subscription Object. + + When an Event occurs, the Printer finds all Subscription Objects + listening for the Event (see section 9 for details on finding such + Subscription Objects). For each such Subscription Object, the + Printer: + + a) generates an Event Notification with information specified in + section 9, AND + + b) either: + + i) If the Delivery Method is a Push Delivery Method as indicated + by the presence of the Subscription Object's "notify- + recipient-uri" attribute, delivers the Event Notification + using the Delivery Method and target address identified in the + Subscription Object's "notify-recipient-uri" attribute, OR + + ii) If the Delivery Method is a Pull Delivery Method as indicated + by the presence of the Subscription Object's "notify-pull- + method" attribute, saves Event Notification for a time period + called the Event Life defined by the Delivery Method, i.e., + the Notification Recipient is expected to fetch the Event + Notifications. + +2. Models for Notification + +2.1. Model for Simple Notification (Normative) + + As part of a Subscription Creation Operation, an IPP Printer (i.e., + located in an output device or a server) creates one or more + Subscription Objects. In a Subscription Creation Operation, the + + + +Herriot & Hastings Standards Track [Page 8] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + client specifies the Notification Recipient to which the Printer is + to deliver Event Notifications. A Notification Recipient can be the + Subscribing Client or a third party. + + Figure 1 shows the Notification model for a simple Client-Printer + relationship. + + embedded printer: + + output device or server + PDA, desktop, or server +---------------+ + +--------+ | ########### | + | client |-----Subscription ---------># Printer # | + +--------+ Creation Operation | # Object # | + +------------+ | #####|##### | + |Notification| +-------|-------+ + |Recipient |<----IPP Event Notifications----+ + +------------+ (Job and/or Printer Events) + + Figure 1 - Model for Notification + +2.2. Additional Models for Notification (Informative) + + Additional models have been proposed (see Appendices 16, 17, and 18). + +3. Terminology + + This section defines terminology used throughout this document. + Other terminology is defined in [RFC2911]. + +3.1. Conformance Terminology + + Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD + NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to + conformance as defined in RFC 2119 [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 explicitly stated otherwise. + + Note: a feature that is OPTIONAL in this document becomes REQUIRED if + the Printer implements a Delivery Method that REQUIRES the feature. + + READ-ONLY - an adjective used in an attribute definition to indicate + that an IPP Printer MUST NOT allow the attribute's value to be + modified. + + + + + +Herriot & Hastings Standards Track [Page 9] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +3.2. Other Terminology + + This document uses the same terminology as [RFC2911], such as + "client", "Printer", "attribute", "attribute value", "keyword", + "operation", "request", "response", "administrator", "operator", and + "support". In addition, the following terms are defined for use in + this document and the Delivery Method Documents: + + Compound Event Notification - two or more Event Notifications that a + Printer delivers together as a single request or response. The + Delivery Method Document specifies whether the Delivery Method + supports Compound Event Notifications. + + Delivery Method - the mechanism by which the Printer delivers an + Event Notification. + + Delivery Method Document - a document, separate from this document, + that defines a Delivery Method. + + Event - some occurrence (either expected or unexpected) within the + printing system of a change of state, condition, or configuration of + a Job or Printer object. An Event occurs only at one instant in time + and does not span the time the physical Event takes place. For + example, jam-occurred and jam-cleared are two distinct, instantaneous + Events, even though the jam may last for a while. + + Event Life - For a Pull Delivery Method, the length of time in + seconds after an Event occurs during which the Printer will retain + that Event for delivery in an Event Notification. After the Event + Life expires, the Printer will no longer deliver an Event + Notification for that Event in such a response. + + Event Notification - the information about an Event that the Printer + delivers when an Event occurs. + + Event Notification Attributes Group - The attributes group which is + used to deliver an Event Notification in a request (Push Delivery + Methods) or a response (Pull Delivery Methods). + + Human Consumable Event Notification - localized text for human + consumption only. There is no standardized format and thus programs + should not try to parse this text. + + Job Creation operation - One of the operations that creates a Job + object: Print-Job, Print-URI and Create-Job. The Restart-Job + operation [RFC2911] is not considered a Job Creation operation, since + the Printer re-uses the existing Job object. The Validate-Job + operation is not considered a Job Creation operation because no Job + + + +Herriot & Hastings Standards Track [Page 10] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + object is created. Therefore, when a statement also applies to + either the Restart-Job and/or the Validate-Job operation, they are + mentioned explicitly. + + Job Event - an Event caused by some change in a particular job on the + Printer, e.g., 'job-completed'. + + Machine Consumable Event Notification - bytes for program + consumption. The bytes are formatted according to the Delivery + Method document. + + Notification - when not in the phrases 'Event Notification' and + 'Notification Recipient' - the concepts of this specification, i.e., + Events, Subscription Objects, and Event Notifications. + + Notification Recipient - the entity to which the Printer delivers an + Event Notification. For Push Delivery Methods, the IPP Printer sends + the Notifications to a Notification Recipient. For Pull Delivery + Methods, the Notification Recipient is acting in the role of an IPP + client and requests Event Notifications and so the terms "client" and + + "Notification Recipient" are used interchangeably with such Delivery + Methods. For example, see [RFC3996]. + + Per-Job Subscription Object - A Subscription Object that is + associated with a single Job. The Create-Job-Subscriptions operation + and Job Creation operations create such an object. + + Per-Printer Subscription Object - A Subscription Object that is + associated with the Printer as a whole. The Create-Printer- + Subscriptions operation creates such an object. + + Printer Event - an Event caused by some change in the Printer that is + not specific to a job, e.g., 'printer-state-changed'. + + Pull Delivery Method - The Printer saves Event Notifications for some + event life time and expects the Notification Recipient to request + Event Notifications. The Printer delivers the Event Notifications in + a response to such a request. + + Push Delivery Method -The Printer delivers the Event Notification + shortly after an Event occurs. + + Subscribed Event - an Event that the Subscribing Client expresses + interest in by making it a value of the "notify-events" attribute on + a Subscription Object. + + Subscribed Job Event - a Subscribed Event that is a Job Event. + + + +Herriot & Hastings Standards Track [Page 11] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Subscribed Printer Event - a Subscribed Event that is a Printer + Event. + + Subscribing Client - The client that creates the Subscription Object. + + Subscription Attributes Group - The attributes group in a response + that contains Subscription Object attributes. + + Subscription Creation Operation - An operation that creates a + Subscription Object: Job Creation operations, Create-Job- + Subscriptions operation, Create-Printer-Subscriptions operation. In + the context of a Job Creation operation, a Subscription Creation + Operation is the part of the Job Creation operation that creates one + or more Subscription objects. The Restart-Job operation [RFC2911] is + not considered a Subscription Creation Operation, since the Printer + re-uses the Job's existing Subscription Objects, rather than creating + any new Subscription Objects. + + Subscription Creation Request - The request portion of a Subscription + Creation Operation. + + Subscription Description Attributes - Subscription Object attributes + that a Printer supplies during a Subscription Creation Operation. + + Subscription Object - An object containing a set of attributes that + indicate: the Notification Recipient (for Push Delivery Method + only), the Delivery Method, the Subscribed Events that cause the + Printer to deliver an Event Notification, and the information to + include in an Event Notification. + + Subscription Template Attributes - Subscription Object attributes + that a client can supply in a Subscription Creation Operation and + associated Printer Object attributes that specify supported and + default values for the Subscription Object attributes. + + Subscription Template Attributes Group - The attributes group in a + request that contains Subscription Object attributes that are + Subscription Template Attributes. + +4. Object Relationships + + This section defines the object relationships between the Printer, + Job, and Subscription Objects. It does not define the + implementation. For an illustration of these relationships, see + Appendix 19. + + + + + + +Herriot & Hastings Standards Track [Page 12] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +4.1. Printer and Per-Printer Subscription Objects + + 1. A Printer object can be associated with zero or more Per-Printer + Subscription Objects. + + 2. Each Per-Printer Subscription Object is associated with exactly + one Printer object. + +4.2. Printer, Job and Per-Job Subscription Objects + + 1. A Printer object is associated with zero or more Job objects. + + 2. Each Job object is associated with exactly one Printer object. + + 3. A Job object is associated with zero or more Per-Job Subscription + Objects. + + 4. Each Per-Job Subscription Object is associated with exactly one + Job object. + +5. Subscription Object + + A Subscribing Client creates a Subscription Object with a + Subscription Creation Operation in order to indicate its interest in + certain Events. See section 11 for a description of these + operations. When an Event occurs, the Subscription Object specifies + to the Printer where to deliver Event Notifications for Push Delivery + Methods only, how to deliver them, and what to include in them. See + section 9 for details on the contents of an Event Notification. + + Using the IPP Job Template attributes as a model (see [RFC2911] + section 4.2), the attributes of a Subscription Object are divided + into two categories: Subscription Template Attributes and + Subscription Description Attributes. + + Subscription Template attributes are, in turn, like the Job Template + attributes, divided into + + 1. Subscription Object attributes that a client can supply in a + Subscription Creation Request and + + 2. their associated Printer Object attributes that specify supported + and default values for the Subscription Object attributes + + The remainder of this section specifies general rules for + Subscription Template Attributes and describes each attribute in a + Subscription Object. + + + + +Herriot & Hastings Standards Track [Page 13] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +5.1. Rules for Support of Subscription Template Attributes + + Subscription Template Attributes are fundamental to the Notification + model described in this specification. The client supplies these + attributes in Subscription Creation Operations and the Printer uses + these attributes to populate a newly created Subscription Object. + + Subscription Objects attributes that are Subscription Template + Attributes conform to the following rules: + + 1. Each attribute's name starts with the prefix string "notify-" and + this document calls such attributes "notify-xxx". + + 2. For each "notify-xxx" Subscription Object attribute defined in + column 1 of Table 1 in section 5.3, Table 1 specifies + corresponding Printer attributes: "notify-xxx-default", "notify- + xxx-supported", "yyy-supported" and "notify-max-xxx-supported" + defined in column 2 of Table 1. Note "xxx" stands for the same + string in each case and "yyy" stands for some other string. + + 3. If a Printer supports "notify-xxx" in column 1 of Table 1, then + the Printer MUST support all associated attributes specified in + column 2 of Table 1. For example, Table 1 shows that if the + Printer supports "notify-events", it MUST support "notify-events- + default", "notify-events-supported" and "notify-max-events- + supported". + + 4. If a Printer does not support "notify-xxx" in column 1 of Table 1, + then the Printer MUST NOT support any associated "notify-yyy" + attributes specified in column 2 of Table 1. For example, Table 1 + shows that if the Printer doesn't support "notify-events", it MUST + NOT support "notify-events-default", "notify-events-supported" and + "notify-max-events-supported". Note this rule does not apply to + attributes whose names do not start with the string "notify-" and + are thus defined in another object and used by other attributes. + + 5. Most "notify-xxx" attributes have a corresponding "yyy-supported" + attribute that specifies the supported values for "notify-xxx". + Column 2 of Table 1 specifies the name of each "yyy-supported" + attribute. The naming rules of IPP/1.1 (see [RFC2911]) are used + when "yyy-supported" is "notify-xxx-supported". + + 6. Some "notify-xxx" attributes have a corresponding "notify-xxx- + default" attribute that specifies the value for "notify-xxx" if + the client does not supply it. Column 2 of Table 1 specifies the + name of each "notify-xxx-default" attribute. The naming rules of + IPP/1.1 (see [RFC2911]) are used. + + + + +Herriot & Hastings Standards Track [Page 14] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + If a client wishes to present an end user with a list of supported + values from which to choose, the client SHOULD query the Printer for + its supported value attributes. The client SHOULD also query the + default value attributes. If the client then limits selectable + values to only those values that are supported, the client can + guarantee that the values supplied by the client in the create + request all fall within the set of supported values at the Printer. + When querying the Printer, the client MAY enumerate each attribute by + name in the Get-Printer-Attributes Request, or the client MAY just + supply the 'subscription-template' group name in order to get the + complete set of supported attributes (both supported and default + attributes - see section 11.2.3). + +5.2. Rules for Processing Subscription Template Attributes + + This section defines a detailed set of rules that a Printer follows + when it processes Subscription Template Attributes in a Subscription + Creation Request. These rules are similar to the rules for + processing Operation attributes in [RFC2911]. That is, the Printer + may or may not support an attribute and a client may or may not + supply the attribute. Some combinations of these cases are OK. + Others return warnings or errors, and perhaps a list of unsupported + attributes. + + A Printer MUST implement the following behavior for processing + Subscription Template Attributes in a Subscription Creation Request: + + 1. If a client supplies a "notify-xxx" attribute from column 1 of + Table 1 and the Printer supports it and its value, the Printer + MUST populate the attribute on the created Subscription Object. + + 2. If a client supplies a "notify-xxx" attribute from column 1 of + Table 1 and the Printer doesn't support it or its value, the + Printer MUST NOT populate the attribute on the created + Subscription Object with it. The Printer MUST do one of the + following: + + a) If the value of the "notify-xxx" attribute is unsupported, the + Printer MUST return the attribute with its value in the + Subscription Attributes Group of the response. + + b) If "notify-xxx" is an unsupported attribute, the Printer MUST + return the attribute in the Subscription Attributes Group of + the response with the 'unsupported' out-of-band value. + + Note: The rules of this step are the same as for Unsupported + Attributes [RFC2911] section 3.1.7. except that the unsupported + attributes are returned in the Subscription Attributes Group + + + +Herriot & Hastings Standards Track [Page 15] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + rather than the Unsupported Attributes Group because Subscription + Creation Operations can create more than one Subscription Object). + + 3. If a client is REQUIRED to supply a "notify-xxx" attribute from + column 1 of Table 1 and the Printer doesn't support the supplied + value, the Printer MUST NOT create a Subscription Object. The + rules for Unsupported Attributes in step #2 still apply. + + 4. If a client does not supply a "notify-xxx" attribute from column 1 + of Table 1 and the attribute is REQUIRED for the client to supply, + the Printer MUST reject the Subscription Creation Operation + (including Job Creation operations) without creating a + Subscription Object, and MUST return in the response: + + a) the status code 'client-error-bad-request' AND + + b) no Subscription Attribute Groups. + + 5. If a client does not supply a "notify-xxx" attribute from column 1 + of Table 1 that is OPTIONAL for the client to supply, and column 2 + of Table 1 either: + + a) specifies a "notify-xxx-default" attribute, the Printer MUST + behave as if the client had supplied the "notify-xxx-default" + attribute (see step #1) and populate the Subscription object + with the value of the "notify-xxx-default" attribute as part of + the Subscription Creation operation (unlike Job Template + attributes where the Printer does not populate the Job object + with defaults - see [RFC2911]) OR + + b) does not specify a "notify-xxx-default" attribute, the Printer + MUST populate the "notify-xxx" attribute on the Subscription + Object according to the definition of the "notify-xxx" + attribute in a section 5.3. For some attributes, the "notify- + xxx" is populated with the value of some other attribute, and + for others, the "notify-xxx" is NOT populated on the + Subscription object at all. + + 6. A Printer MUST create a Subscription Object for each Subscription + Template Attributes group in a request unless the Printer: + + a) encounters some attributes in a Subscription Template + Attributes Group that require the Printer not to create the + Subscription Object OR + + b) would create a Per-Job Subscription Object when it doesn't have + space for another Per-Job Subscription Object OR + + + + +Herriot & Hastings Standards Track [Page 16] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + c) would create a Per-Printer Subscription Object when it doesn't + have space for another Per-Printer Subscription Object. + + 7. A response MUST contain one Subscription Attributes Group for each + Subscription Template Attributes Group in the request (and in the + same order) whether the Printer creates a Subscription Object from + the Subscription Template Attributes Group or not. However, the + attributes in each Subscription Attributes Group can be in any + order. + + 8. The Printer MUST populate each Subscription Attributes Group of + the response such that each contains: + + a) the "notify-subscription-id" attribute (see section 5.4.1), if + and only if the Printer creates a Subscription Object. + + b) the "notify-lease-duration" attribute (see section 5.3.8), if + and only if the Printer creates a Per-Printer Subscription + Object. The value of this attribute is the value of the + Subscription Object's "notify-lease-duration" attribute. This + value MAY be different from the client-supplied value (see + section 5.3.8). If a client supplies this attribute in the + creation of a Per-Job Subscription Object, it MUST appear in + this group with the out-of-band value 'unsupported' to indicate + that the Printer doesn't support it in this context. + + c) all of the unsupported Subscription Template Attributes from + step #2. Note, they are not returned in the Unsupported + Attributes Group in order to separate the unsupported + attributes for each Subscription Object. + + d) the "notify-status-code" attribute if the Printer does not + create the Subscription Object or if there are unsupported + attributes from step #2. The possible values of the "notify- + status-code" attribute are shown below (see section 13 for more + details). The Printer returns the first value in the list + below that describes the status. + + 'client-error-uri-scheme-not-supported': the Subscription + Object was not created because the scheme of the "notify- + recipient-uri" attribute is not supported. See section 13.1 + for more details about this status code. See step #3 in + this section for the case that causes this error, and the + resulting step #6a) that causes the Printer not to create + the Subscription Object. + + + + + + +Herriot & Hastings Standards Track [Page 17] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 'client-error-attributes-or-values-not-supported': the + Subscription Object was not created because the method of + the "notify-pull-method" attribute is not supported. See + section 13.1 for more details about this status code. See + step #3 in this section for the case that causes this error, + and the resulting step #6a) that causes the Printer not to + create the Subscription Object. + + 'client-error-too-many-subscriptions': the Subscription + Object was not created because the Printer has no space for + additional Subscription Objects. The client MAY try again + later. See section 13.3 for more details about this status + code. See steps #6b) and #6c) in this section for the cases + that causes this error. + + 'successful-ok-too-many-events': the Subscription Object was + created without the "notify-events" values included in this + Subscription Attributes Group because the "notify-events" + attribute contains too many values. See section 13.4 for + more details about this status code. See step #2 in this + section and section 5.3.3 for the cases that cause this + status code. + + 'successful-ok-ignored-or-substituted-attributes': the + Subscription Object was created but some supplied + Subscription Template Attributes are unsupported. These + unsupported attributes are also in the Subscription + Attributes Group. See section 13.5 for more details about + this status code. See step #2 in this section for the cases + that cause this status code. + + 9. The Printer MUST validate all Subscription Template Attributes and + MUST return all unsupported attributes and values in the + corresponding Subscription Attributes Group of the response (see + step #2) unless it determines that it could not create additional + Subscription Objects because of condition #6b) or condition #6c). + Then, the Printer NEED NOT validate these additional Subscription + Template Attributes and the client MUST NOT expect to find + unsupported attributes from step #2 in such additional + Subscription Attribute Groups. + +5.3. Subscription Template Attributes + + This section contains the Subscription Template Attributes defined + for the Subscription and Printer objects. + + + + + + +Herriot & Hastings Standards Track [Page 18] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 1 below shows the Subscription Template Attributes and has two + columns: + + - Attribute in Subscription Object: the name and attribute syntax of + each Subscription Object Attribute that is a Subscription Template + Attribute + + - Default and Supported Printer Attributes: the default attribute + and supported Printer attributes that are associated with the + attribute in column 1. + + The "notify-recipient-uri" attribute is for use with Push Delivery + Methods. The "notify-pull-method" attribute is for use with Pull + Delivery Methods. + + For Push Delivery Methods, a Printer MUST support all attributes in + Table 1 below except for "notify-pull-method" and "notify-attributes" + (and "notify-pull-method-supported" and "notify-attributes- + supported"). For Pull Delivery Methods, a Printer MUST support all + attributes in Table 1 below except for "notify-recipient-uri" and + "notify-attributes" (and "notify-schemes-supported" and "notify- + attributes-supported"). If a Printer supports both Push and Pull + Delivery Methods, then it MUST support both "notify-recipient-uri" + and "notify-pull-method" attributes. + + For Pull Delivery Methods, a client MUST supply "notify-recipient- + uri" and MAY omit any of the rest of the attributes in column 1 of + Table 1 in a Subscription Creation Request. For Push Delivery + Methods, a client MUST supply "notify-pull-method" and MAY omit any + of the rest of the attributes in column 1 of Table 1 in a + Subscription Creation Request. A client MUST NOT supply both + "notify-recipient-uri" and "notify-pull-method" attributes in the + same Subscription Creation Request. + + Note: The Default and Supported Printer attributes listed in column + 2 of Table 1 do not have separate sections in this specification + defining their semantics. Instead, the section for the corresponding + Subscription Object attribute (column 1 of Table 1) contains the + semantics of these Printer attributes. This approach follows the + precedence of the Job Template attributes in section 4.2 of [RFC2911] + where the corresponding "xxx-default" and "xxx-supported" Printer + attributes are defined in the same section as the "xxx" Job + attribute. + + + + + + + + +Herriot & Hastings Standards Track [Page 19] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 1 - Subscription Template Attributes + + Attribute in Subscription Default and Supported Printer + Object Attributes + + notify-recipient-uri (uri) * notify-schemes-supported (1setOf + uriScheme) + notify-pull-method (type2 notify-pull-method-supported (1setOf + keyword) ** type2 keyword) + notify-events (1setOf type2 notify-events-default (1setOf type2 + keyword) keyword) + notify-events-supported (1setOf type2 + keyword) + notify-max-events-supported + (integer(2:MAX)) + + notify-attributes (1setOf notify-attributes-supported (1setOf + type2 keyword) type2 keyword) + notify-user-data + (octetString(63)) + notify-charset (charset) charset-supported (1setOf charset) + notify-natural-language generated-natural-language-supported + (naturalLanguage) (1setOf naturalLanguage) + notify-lease-duration notify-lease-duration-default + (integer(0:MAX)) (integer(0:67108863)) + notify-lease-duration-supported + (1setOf (integer(0: 67108863) | + rangeOfInteger(0:67108863))) + notify-time-interval + (integer(0:MAX)) + + * "notify-recipient-uri" is for Push Delivery Methods only. + ** "notify-pull-method" is for Pull Delivery Methods only. + +5.3.1. notify-recipient-uri (uri) + + This attribute's value is a URL, which is a special case of a URI. + Its value consists of a scheme and an address. The address specifies + the Notification Recipient and the scheme specifies the Push Delivery + Method for each Event Notification associated with this Subscription + Object. + + If a Printer supports any Push Delivery Methods, a Printer MUST + support this attribute and return the value as supplied by the client + (no case conversion or other canonicalization) in any operation + response that includes this attribute. + + + + + +Herriot & Hastings Standards Track [Page 20] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + For a Push Delivery Method, a client MUST supply this attribute in a + Subscription Creation Operation. Thus there is no need for a default + Printer attribute. + + The URI scheme of the value of this attribute on a Subscription + object MUST be a value of the "notify-schemes-supported (1setOf + uriScheme)" Printer attribute (see section 5.3.1.1). Note: According + to [RFC2396] the ":" terminates the scheme and so is not part of the + scheme. Therefore, values of the "notify-schemes-supported" Printer + attribute do not include the ":" character. + + If the client supplies an unsupported scheme in the value of this + attribute, then the Printer MUST NOT create the Subscription Object + and MUST return the "notify-status-code" attribute with the 'client- + error-uri-scheme-not-supported' value in the Subscription Attributes + Group in the response. + +5.3.1.1. notify-schemes-supported (1setOf uriScheme) + + This attribute contains the URI schemes supported in the "notify- + recipient-uri" Subscription Template attribute. See sections 5.1 and + 5.2 for the behavior of "xxx-supported" Subscription Template Printer + attributes. + +5.3.2. notify-pull-method (type2 keyword) + + This attribute's value is a type2 keyword indicating which Pull + Delivery Method is to be used. + + Since a Printer MUST support the 'ippget' Pull Delivery Method + [RFC3996] (see section 15), a Printer MUST support this attribute and + return the value as supplied by the client in any operation response + that includes this attribute. + + For a Pull Delivery Method, a client MUST supply this attribute in a + Subscription Creation Operation. Thus there is no need for a default + Printer attribute. + + The keyword value of this attribute on a Subscription object MUST be + a value of the "notify-pull-method-supported (1setOf type2 keyword)" + Printer attribute. + + If the client supplies an unsupported method in the value of this + attribute, then the Printer MUST NOT create the Subscription Object + and MUST return the "notify-status-code" attribute with the 'client- + error-attributes-or-values-not-supported' value in the Subscription + Attributes Group in the response. + + + + +Herriot & Hastings Standards Track [Page 21] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +5.3.2.1. notify-pull-method-supported (1setOf type2 keyword) + + See sections 5.1 and 5.2 for the behavior of "xxx-supported" + Subscription Template Printer attributes. + +5.3.3. notify-events (1setOf type2 keyword) + + This attribute contains a set of Subscribed Events. When an Event + occurs and it "matches" a value of this attribute, the Printer + delivers an Event Notification using information in the Subscription + Object. The details of "matching" are described subsection 5.3.3.5. + + A Printer MUST support this attribute. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in + Subscription Creation Operation, the Printer MUST populate this + attribute on the Subscription Object with its "notify-events-default" + attribute value. + + Each keyword value of this attribute on a Subscription Object MUST be + a value of the "notify-events-supported (1setOf type2 keyword)" + Printer attribute. + + The number of values of this attribute MUST NOT exceed the value of + the "notify-max-events-supported" attribute. A Printer MUST support + at least 2 values per Subscription Object. If the number of values + supplied by a client in a Subscription Creation Operation exceeds the + value of this attribute, the Printer MUST treat extra values as + unsupported values and MUST use the value of 'successful-ok-too- + many-events' for the "notify-status-code" attribute in the + Subscription Attributes Group of the response. + +5.3.3.1. notify-events-default (1setOf type2 keyword) + + See sections 5.1 and 5.2 for the behavior of "xxx-default" + Subscription Template Printer attributes. + +5.3.3.2. notify-events-supported (1setOf type2 keyword) + + See sections 5.1 and 5.2 for the behavior of "xxx-supported" + Subscription Template Printer attributes. + + + + + + + + + +Herriot & Hastings Standards Track [Page 22] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +5.3.3.3. notify-max-events-supported (integer(2:MAX)) + + This attribute specified the maximum number of events that the + Printer supports for the "notify-events" Subscription Template + attribute. See sections 5.1 and 5.2 for the behavior of "xxx- + supported" Subscription Template Printer attributes. + +5.3.3.4. Standard Values for Subscribed Events + + Each value of this attribute is a keyword and it specifies a + Subscribed Event that represents certain changes. Some keywords + represent a subset of changes of another keyword, e.g., 'job- + completed' is an Event value which is a sub-value of 'job-state- + change'. See section 5.3.3.5 for the case where this attribute + contains both a value and a sub-value. + + The values in this section are divided into three categories: No + Events, Job Events and Printer Events. + + A Printer MUST support the Events indicated as "REQUIRED" and MAY + support the Events indicated as "OPTIONAL". + +5.3.3.4.1. No Events + + The standard and only keyword value for No Events is: + + 'none': REQUIRED - no Event Notifications for any Events. As the + sole value of "notify-events-supported", this value means that the + Printer does not support the delivery of Event Notifications. As + the sole value of "notify-events-default", this value means that a + client MUST specify the "notify-events" attribute in order for a + Subscription Creation Operation to succeed. If the Printer + receives this value as the sole value of a Subscription Creation + Operation, it does not create a Subscription Object. If a Printer + receives this value with other values of a Subscription Creation + Operation, the Printer MUST treat this value as an unsupported + value. + +5.3.3.4.2. Subscribed Printer Events + + The standard keyword values for Subscribed Printer Events are: + + 'printer-state-changed': REQUIRED - the Printer changed state from + any state to any other state. Specifically, the value of the + Printer's "printer-state", "printer-state-reasons" or "printer- + is-accepting-jobs" attributes changed. + + + + + +Herriot & Hastings Standards Track [Page 23] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + This Subscribed Event value has the following sub-values: + 'printer-restarted' and 'printer-shutdown'. A client can listen + for any of these sub-values if it doesn't want to listen to all + printer-state changes: + + 'printer-restarted': OPTIONAL - when the printer is powered + up. + + 'printer-shutdown': OPTIONAL - when the device is being + powered down. + + 'printer-stopped: REQUIRED - when the printer stops printing, + i.e., the value of the "printer-state" Printer attribute + becomes 'stopped'. + + 'printer-config-changed': OPTIONAL - when the configuration of a + Printer has changed, i.e., the value of the "printer-message- + from-operator" or any "configuration" Printer attribute has + changed. A "configuration" Printer attribute is an attribute + which can change value because of some human interaction either + direct or indirect, and which is not covered by one of the other + Events in this section. Examples of "configuration" Printer + attributes are any of the Job Template attributes, such as "xxx- + supported", "xxx-ready" and "xxx-default". The client has to + perform a Get-Printer-Attributes to find out the new values of + these changed attributes. This Event is useful for GUI clients + and drivers to update the available printer capabilities to the + user. + + This Event value has the following sub-values: 'printer-media- + changed' and 'printer-finishings-changed'. A client can listen + for any of these sub-values if it doesn't want to listen to all + printer-configuration changes: + + 'printer-media-changed': OPTIONAL - when the media loaded on + a printer has been changed, i.e., the "media-ready" + attribute has changed. This Event includes two cases: an + input tray that goes empty and an input tray that receives + additional media of the same type or of a different type. + The client must check the "media-ready" Printer attribute + (see [RFC2911] section 4.2.11) separately to find out what + changed. + + 'printer-finishings-changed': OPTIONAL - when the finisher on + a printer has been changed, i.e., the "finishings-ready" + attribute has changed. This Event includes two cases: a + finisher that goes empty and a finisher that is refilled + (even if it is not full). The client must check the + + + +Herriot & Hastings Standards Track [Page 24] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + "finishings-ready" Printer attribute separately to find out + what changed. + + 'printer-queue-order-changed': OPTIONAL - the order of jobs in the + Printer's queue has changed, so that an application that is + monitoring the queue can perform a Get-Jobs operation to determine + the new order. This Event does not include when a job enters the + queue (the 'job-created' Event covers that) and does not include + when a job leaves the queue (the 'job-completed' Event covers + that). + +5.3.3.4.3. Subscribed Job Events + + The standard keyword values for Subscribed Job Events are: + + 'job-state-changed': REQUIRED - the job has changed from any state + to any other state. Specifically, the Printer delivers this Event + whenever the value of the "job-state" attribute or "job-state- + reasons" attribute changes. When a Job is removed from the Job + Retention or Job History phases (see [RFC2911] section 4.3.7.1), + no Event is generated. + + This Event value has the following sub-values: 'job-created', + 'job-completed' and 'job-stopped'. A client can listen for any of + these sub-values if it doesn't want to listen to all 'job-state + changes'. + + 'job-created': REQUIRED - the Printer has accepted a Job + Creation operation, a Restart-Job operation [RFC2911], or any + job operation that creates a Job object from an existing Job + object. The Printer populates the job's "time-at-creation" + attribute value (see [RFC2911] section 4.3.14.1). The Printer + puts the job in the 'pending', 'pending-held' or 'processing' + states. + + 'job-completed': REQUIRED - the job has reached one of the + completed states, i.e., the value of the job's "job-state" + attribute has changed to: 'completed', 'aborted', or + 'canceled'. The Job's "time-at-completed" and "date-time-at- + completed" (if supported) attributes are set (see [RFC2911] + section 4.3.14). When a Job completes, a Notification + Recipient MAY query the Job using the Get-Job-Attributes + operation. To allow such a query, the Printer retains the Job + in the Job Retention and/or the Job History phases (see + [RFC2911] section 4.3.7.1) for a suitable amount of time that + depends on implementation and the Delivery Methods supported. + The Printer also delivers this Event when a Job is removed with + the Purge-Job operation (see [RFC2911] section 3.2.9). In this + + + +Herriot & Hastings Standards Track [Page 25] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + case, the Event Notification MUST report the 'job-state' as + 'canceled' and the Job object is no longer present for query. + + 'job-stopped: OPTIONAL - when the job stops printing, i.e., + the value of the "job-state" Job attribute becomes + 'processing-stopped'. + + 'job-config-changed': OPTIONAL - when the configuration of a job has + changed, i.e., the value of the "job-message-from-operator" or any + of the "configuration" Job attributes have changed. A + "configuration" Job attribute is an attribute that can change + value because of some human interaction either direct or indirect. + Examples of "configuration" Job attributes are any of the job + template attributes and the "job-name" attribute. The client + performs a Get-Job-Attributes to find out the new values of the + changed attributes. This Event is useful for GUI clients and + drivers to update the job information to the user. + + 'job-progress': OPTIONAL - when the Printer has completed Printing a + sheet. See the separate [RFC3381] specification for additional + attributes that a Printer MAY deliver in an Event Notification + caused by this Event. The "notify-time-interval" attribute + affects this Event by causing the Printer NOT to deliver an Event + Notification every time a 'job-progress' Events occurs. See + section 5.3.9 for full details. + +5.3.3.5. Rules for Matching of Subscribed Events + + When an Event occurs, the Printer MUST find each Subscription object + whose "notify-events" attribute "matches" the Event. The rules for + "matching" of Subscribed Events are described separately for Printer + Events and for Job Events. This section also describes some special + cases. + +5.3.3.5.1. Rules for Matching of Printer Events + + Given that the Printer causes Printer Event E to occur, for each + Per-Job or Per-Printer Subscription S in the Printer, if E equals a + value of this attribute in S or E is a sub-value of a value of this + attribute in S, the Printer MUST generate an Event Notification. + + Consider the example. There are three Subscription Objects each with + the Subscribed Printer Event 'printer-state-changed'. Subscription + Object A is a Per-Printer Subscription Object. Subscription Object B + is a Per-Job Subscription Object for Job 1, and Subscription Object C + is a Per-Job Subscription Object for Job 2. When the Printer enters + the 'stopped' state, the Printer delivers an Event Notification to + the Notification Recipients of Subscription Objects A, B, and C + + + +Herriot & Hastings Standards Track [Page 26] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + because this is a Printer Event. Note if Job 1 has already + completed, the Printer would not deliver an Event Notification for + its Subscription Object, even if Job 1 is retained in the Job + Retention and/or the Job History phases (see [RFC2911] section + 4.3.7.1). + +5.3.3.5.2. Rules for Matching of Job Events + + Given that Job J causes Job Event E to occur: + + 1. For each Per-Printer Subscription S in the Printer, if E equals a + value of this attribute in S or E is a sub-value of a value of + this attribute in S, the Printer MUST generate an Event + Notification. + + 2. For each Per-Job Subscription S associated with Job J, if E equals + a value of this attribute in S or E is a sub-value of a value of + this attribute in S, the Printer MUST generate an Event + Notification. + + 3. For each Per-Job Subscription S that is NOT associated Job J, if E + equals a value of this attribute in S or E is a sub-value of a + value of this attribute in, the Printer MUST NOT generate an Event + Notification from S. + + Consider the example: There are three Subscription Objects listening + for the Job Event 'job-completed'. Subscription Object A is a Per- + Printer Subscription Object. Subscription Object B is a Per-Job + Subscription Object for Job 1, and Subscription Object C is a Per-Job + Subscription Object for Job 2. In addition, Per-Printer Subscription + Object D is listening for the Job Event 'job-state-changed'. When + Job 1 completes, the Printer delivers an Event Notification to the + Notification Recipient of Subscription Object A (because it is Per- + Printer) and Subscription Object B because it is a Per-Job + Subscription Object associated with the Job generating the Event. + The Printer also delivers an Event Notification to the Notification + Recipient of Subscription Object D because 'job-completed' is a sub- + value of 'job-state-changed' - the value that Subscription Object D + is listening for. The Printer does not deliver an Event Notification + to the Notification Recipients of Subscription Object C because it is + a Per-Job Subscription Object associated with some Job other than the + Job generating the Event. + +5.3.3.5.3. Special Cases for Matching Rules + + This section contains two rules for the special case where a single + Event produces multiple Event Notifications destined for the same + Notification Recipient. These two rules clarify whether a Printer + + + +Herriot & Hastings Standards Track [Page 27] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + should send multiple Event Notifications or consolidate them into a + single Event Notification. + + If an Event matches Subscribed Events in two different Subscription + Objects and the Printer would deliver two identical Event + Notifications (except for the "notify-subscription-id" attribute) to + the same Notification Recipient using the same Delivery Method, the + Printer MUST deliver both Event Notifications. That is, the Printer + MUST NOT try to consolidate seemingly identical Event Notifications + that occur in separate Subscription objects. Incidentally, the + Printer MUST NOT reject Subscription Creation Operations that would + create this scenario. + + Consider the example: At the time a Job completes, there are two + Per-Printer Subscription Objects A and B with the same Notification + Recipient R. Subscription Object A has the Subscribed Job Event + 'job-state-changed'. Subscription Object B has the Subscribed Job + Event 'job-completed'. Both Subscription Objects match the Event + 'job-completed'. The Printer delivers two Event Notifications to the + Notification Recipient R. One with the value of 'job-state-changed' + for the "notify-subscribed-event" attribute and the other with the + value of 'job-completed' for the "notify-subscribed-event" + attribute. + + If an Event matches two Subscribed Events in a single Subscription + object (e.g., a value and its sub-value), a Printer MAY deliver one + Event Notification for each matched value in the Subscription Object + or it MAY deliver only a single Event Notification. The rules in + sections 5.3.3.5.1 and 5.3.3.5.2 are purposefully flexible about the + number of Event Notifications sent when Event E matches two or more + values in a Subscription Object. + + Consider the example: At the time a Job completes, a Subscription + Object A has two Subscribed Job Events 'job-state-changed' and 'job- + completed'. Both Subscribed Job Events match the Event 'job- + completed'. The Printer delivers either one or two Event + Notifications to the Notification Recipient of Subscription Object A, + depending on implementation. If it delivers two Event Notifications, + one has the value of 'job-state-changed' for the "notify- + subscribed-event" attribute, and the other has the value of 'job- + completed' for the "notify-subscribed-event" attribute. If it + delivers one Event Notification, it has the value of either 'job- + state-changed' or 'job-completed' for the "notify-subscribed-event" + attribute, depending on implementation. The algorithm for choosing + such a value is implementation dependent. + + + + + + +Herriot & Hastings Standards Track [Page 28] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +5.3.4. notify-attributes (1setOf type2 keyword) + + This attribute contains a set of attribute names. When a Printer + delivers a Machine Consumable Event Notification, it includes a fixed + set of attributes (see section 9.1). If this attribute is present + and the Event Notification is Machine Consumable, the Printer also + includes the attributes specified by this attribute. + + A Printer MAY support this attribute. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in + Subscription Creation Operation or the Printer does not support this + attribute, the Subscription Object either (1) MAY contain the + "notify-attributes" attribute with a 'none' value or (2) NEED NOT + contain the attribute at all. There is no "notify-attributes- + default" Printer attribute. + + Each keyword value of this attribute on a Subscription Object MUST be + a value of the "notify-attributes-supported (1setOf type2 keyword)" + Printer attribute (see section 5.3.4.1). The "notify-attributes- + supported" MAY contain any Printer attribute, Job attribute or + Subscription Object attribute that the Printer supports in an Event + Notification. It MUST NOT contain any of the attributes in Section + 9.1 that a Printer automatically puts in an Event Notification; it + would be redundant. If a client supplies an attribute in Section + 9.1, the Printer MUST treat it as an unsupported attribute value of + the "notify-attributes" attribute. + + The following rules apply to each keyword value N of the "notify- + attributes" attribute: If the value N names: + + a) a Subscription attribute, the Printer MUST use the attribute N in + the Subscription Object that is being used to generate the Event + Notification. + + b) a Job attribute and the Printer is generating an Event + Notification from a Per-Job Subscription Object S, the Printer + MUST use the attribute N in the Job object associated with S. + + c) a Job attribute and the Printer is generating an Event + Notification from a Per-Printer Subscription Object and the Event + is: + + - a Job Event, the Printer MUST use the attribute N in the Job + object that caused the Event. + + + + + +Herriot & Hastings Standards Track [Page 29] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + - a Printer Event, the Printer MUST use the attribute N in the + active Job. + + If a Printer supports this attribute and a Subscription Object + contains this attribute and the Delivery Method generates a Machine + Consumable Event Notification, the Printer MUST include in each Event + Notification: + + a) the attributes specified in section 9.1 and + + b) each attribute named by this attribute. + + The Printer MUST NOT use this attribute to generate a Human + Consumable Event Notification. + +5.3.4.1. notify-attributes-supported (1setOf type2 keyword) + + See sections 5.1 and 5.2 for the behavior of "xxx-supported" + Subscription Template Printer attributes. + +5.3.5. notify-user-data (octetString(63)) + + This attribute contains opaque data that some Delivery Methods + include in each Machine Consumable Event Notification. The opaque + data might contain, for example: + + - the identity of the Subscriber + + - a path or index to some Subscriber information + + - a key that identifies to the Notification Recipient the ultimate + recipient of the Event Notification + + - the id for a Notification Recipient that had previously registered + with an Instant Messaging Service + + A Printer MUST support this attribute. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in the + Subscription Creation Operation, the Subscription Object either (1) + MAY contain the "notify-user-data" attribute with a zero length value + or (2) NEED NOT contain the attribute at all. There is no "notify- + user-data-default" Printer attribute. + + + + + + + +Herriot & Hastings Standards Track [Page 30] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + There is no "notify-user-data-supported" Printer attribute. Rather, + any octetString whose length does not exceed 63 octets is a supported + value. If the length exceeds 63 octets, the Printer MUST treat it as + an unsupported value. + +5.3.6. notify-charset (charset) + + This attribute specifies the charset to be used in the Event + Notification content sent to the Notification Recipient, whether the + Event Notification content is Machine Consumable or Human Consumable. + + A Printer MUST support this attribute. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in + Subscription Creation Operation or supplies an unsupported value, the + Printer MUST populate this attribute in the Subscription Object with + the value of the "attributes-charset" operation attribute, which is a + REQUIRED attribute in all IPP requests (see [RFC2911]). If the value + of the "attributes-charset" attribute is unsupported, the Printer + MUST populate this attribute in the Subscription Object with the + value of the Printer's "charset-configured" attribute. There is no + "notify-charset-default" Printer attribute. + + The value of this attribute on a Subscription Object MUST be a value + of the "charset-supported (1setOf charset)" Printer attribute. + +5.3.7. notify-natural-language (naturalLanguage) + + This attribute specifies the natural language to be used in any human + consumable text in the Event Notification content sent to the + Notification Recipient, whether the Event Notification content is + Machine Consumable or Human Consumable. + + A Printer MUST support this attribute. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in + Subscription Creation Operation or supplies an unsupported value, the + Printer MUST populate this attribute in the Subscription Object with + the value of the "attributes-natural-language" operation attribute, + which is a REQUIRED attribute in all IPP requests (see [RFC2911] + section 3.1.4). If the value of the "attributes-natural-language" + attribute is unsupported, the Printer MUST populate this attribute in + the Subscription Object with the value of the Printer's "natural- + language-configured" attribute (see [RFC2911] section 4.4.19). There + is no "notify-natural-language-default" Printer attribute. + + + + +Herriot & Hastings Standards Track [Page 31] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + The value of this attribute on a Subscription Object MUST be a value + of the "generated-natural-language-supported (1setOf type2 + naturalLanguage)" Printer attribute (see [RFC2911] section 4.4.20). + +5.3.8. notify-lease-duration (integer(0:67108863)) + + This attribute specifies the duration of the lease (in seconds) + associated with the Per-Printer Subscription Object at the time the + Subscription Object was created or the lease was renewed. The + duration of the lease is infinite if the value is 0, i.e., the lease + never expires. See section 5.4.3 on "notify-lease-expiration-time + (integer(0:MAX))" for more details. + + This attribute is not present on a Per-Job Subscription Object + because the Subscription Object lasts exactly as long as the + associated Job object. See discussion of the 'job-completed' event + in section 5.3.3.4.3 about retention of the Job object after + completion. + + A Printer MUST support this attribute. + + For a Subscription Object Creation operation of a Per-Job + Subscription Object, the client MUST NOT supply this attribute. If + the client does supply this attribute, the Printer MUST treat it as + an unsupported attribute. + + For a Subscription Creation Operation of a Per-Printer Subscription + Object or a Renew-Subscription operation, a client MAY supply this + attribute. If the client does not supply this attribute, the Printer + MUST populate this attribute with its "notify-lease-duration-default" + (0:67108863) attribute value. If the client supplies this attribute + with an unsupported value, the Printer MUST populate this attribute + with a supported value, and this value SHOULD be as close as possible + to the value requested by the client. Note: this rule implies that a + Printer doesn't assign the value of 0 (infinite) unless the client + requests it. + + After the Printer has populated this attribute with a supported + value, the value represents the "granted duration" of the lease in + seconds and the Printer updates the value of the Subscription + Object's "notify-lease-expiration-time" attribute as specified in + section 5.4.3. + + The value of this attribute on a Subscription Object MUST be a value + of the "notify-lease-duration-supported" (1setOf (integer(0:67108863) + | rangeOfInteger(0:67108863))) Printer attribute. + + + + + +Herriot & Hastings Standards Track [Page 32] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + A Printer MAY require authentication in order to return the value of + 0 (the lease never expires) as one of the values of "notify-lease- + duration-supported", and to allow 0 as a value of the "notify-lease- + duration" attribute. + + Note: The maximum value 67,108,863 is 2 raised to the 26 power minus + 1 and is about 2 years in seconds. The value is considerably less + than MAX so that there is virtually no chance of an overflow when the + Printer adds it to the Printer's "printer-up-time" attribute value + (see [RFC2911] section 4.4.29) to produce the "notify-lease- + expiration-time" Subscription Description attribute value (see + section 5.4.3). + +5.3.8.1. notify-lease-duration-default (integer(0:67108863)) + + See sections 5.1 and 5.2 for the behavior of "xxx-default" + Subscription Template Printer attributes. + +5.3.8.2. notify-lease-duration-supported (1setOf (integer(0: 67108863) | + rangeOfInteger(0:67108863))) + + See sections 5.1 and 5.2 for the behavior of "xxx-supported" + Subscription Template Printer attributes. + +5.3.9. notify-time-interval (integer(0:MAX)) + + The 'job-progress' Event occurs each time that a Printer completes a + sheet. Some Notification Recipients do not want to receive an Event + Notification every time this Event occurs. This attribute allows a + Subscribing Client to request how often it wants to receive Event + Notifications for 'job-progress' Events. The value of this attribute + MAY be any nonnegative integer (0,MAX) indicating the minimum number + of seconds between 'job-progress' Event Notifications. + + The Printer MUST support this attribute if and only if the Printer + supports the 'job-progress' Event. + + A client MAY supply this attribute in a Subscription Creation + Operation. If the client does not supply this attribute in the + Subscription Creation Operation, the Subscription Object either (1) + MAY contain the "notify-time-interval" attribute with a '0' value or + (2) NEED NOT contain this attribute at all. There is no "notify- + time-interval-default" Printer attribute. + + There is no "notify-time-interval-supported" Printer attribute. + + + + + + +Herriot & Hastings Standards Track [Page 33] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + If the 'job-progress' Event occurs and a Subscription Object contains + the 'job-progress' Event as a value of the 'notify-events' attribute, + there are two cases to consider: + + 1. This attribute is not present on the Subscription Object or has + the value of 0. The Printer MUST generate and deliver an Event + Notification (as is the case with other Events). + + 2. This attribute is present with a nonzero value of N: + + a) If the Printer has not sent an Event Notification for the + 'job-progress' Event for the associated Subscription Object + within the past N seconds, the Printer MUST deliver an Event + Notification for the Event that just occurred. Note when the + Printer completes the first page of a Job, this rule implies + that the Printer delivers an Event Notification for a Per-Job + Subscription Object. + + b) Otherwise, the Printer MUST NOT generate or deliver an Event + Notification for the associated Subscription Object. The + Printer MUST NOT increase the value of the "notify-sequence- + number" Subscription Object attribute (i.e., the sequence of + values of the "notify-sequence-number" attribute counts the + Event Notifications that the Printer sent and not the Events + that do not cause an Event Notification to be sent). + + It is RECOMMENDED that a Subscribing Client use this attribute when + it subscribes to the 'job-progress' Event, and that the value be + sufficiently large to limit the frequency with which the Printer + delivers Event Notifications requests. + + This attribute MUST NOT effect any Events other than 'job-progress'. + +5.4. Subscription Description Attributes + + Subscription Description Attributes are those attributes that a + Printer adds to a Subscription Object at the time of its creation. + + A Printer MUST support all attributes in this Table 2. + + A client MUST NOT supply the attributes in Table 2 in a Subscription + Template Attributes Group of a Subscription Creation Operation. + There are no corresponding default or supported attributes. + + + + + + + + +Herriot & Hastings Standards Track [Page 34] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 2 - Subscription Description Attributes + + Subscription Object attributes: + + notify-subscription-id (integer(1:MAX)) + notify-sequence-number (integer(0:MAX)) + notify-lease-expiration-time (integer(0:MAX)) + notify-printer-up-time (integer(1:MAX)) + notify-printer-uri (uri) + notify-job-id (integer(1:MAX)) + notify-subscriber-user-name (name(MAX)) + +5.4.1. notify-subscription-id (integer (1:MAX)) + + This attribute identifies a Subscription Object instance with a + number that is unique within the context of the Printer. The Printer + generates this value at the time it creates the Subscription Object. + + A Printer MUST support this attribute. + + The Printer MAY assign the value of this attribute sequentially as it + creates Subscription Objects. However, if there is no security on + Subscription objects, sequential assignment exposes the system to a + passive traffic monitoring threat. + + The Printer SHOULD avoid re-using recent values of this attribute + during continuous operation of the Printer as well as across power + cycles. Then a Subscribing Client is unlikely to find that a stale + reference accesses a new Subscription Object. + + The 0 value is not permitted in order to allow for compatibility with + "job-id" and with MIB table index values, which are recommended not + to be 0. + +5.4.2. notify-sequence-number (integer (0:MAX)) + + The value of this attribute indicates the number of times that the + Printer has generated and attempted to deliver an Event Notification + for this Subscription object. When an Event Notification contains + this attribute, the Notification Recipient can determine whether it + missed some Event Notifications (i.e., numbers skipped) or received + duplicates (i.e., same number twice). + + A Printer MUST support this attribute. + + When the Printer creates a Subscription Object, it MUST populate this + attribute with a value of 0. This value indicates that the Printer + has not sent any Event Notifications for this Subscription Object. + + + +Herriot & Hastings Standards Track [Page 35] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Each time the Printer delivers a newly generated Event Notification, + it MUST increase the value of this attribute by 1. For some Delivery + Methods, the Printer MUST include this attribute in each Event + Notification, and the value MUST be the value after it is increased + by 1. That is, the value of this attribute in the first Event + Notification after Subscription object creation MUST be 1, the second + MUST be 2, etc. If a Delivery Method is defined such that the + Notification Recipient returns a response, the Printer can re-try + delivering an Event Notification a certain number of times with the + same sequence number when the Notification Recipient fails to return + a response. + + If a Subscription Object lasts long enough to reach the value of MAX, + its next value MUST be 0, i.e., it wraps. + +5.4.3. notify-lease-expiration-time (integer(0:MAX)) + + This attribute specifies the time in the future when the lease on the + Per-Printer Subscription Object will expire, i.e., the "printer-up- + time" value at which the lease will expire. If the value is 0, the + lease never expires. + + A Printer MUST support this attribute. + + When the Printer creates a Per-Job Subscription Object, this + attribute MUST NOT be present - the Subscription Object lasts exactly + as long as the associated Job object. See also the discussion of the + 'job-completed' event in section 5.3.3.4.3 about retention of the Job + object after completion so that a Notification Recipient can query + the Job object after receiving the 'job-completed' Event + Notification. + + When the Printer creates a Per-Printer Subscription Object, it + populates this attribute with a value that is the sum of the values + of the Printer's "printer-up-time" attribute and the Subscription + Object's "notify-lease-duration" attribute with the following + exception. If the value of the Subscription Object's "notify-lease- + duration" attribute is 0 (i.e., no expiration time), then the value + of this attribute MUST be set to 0 (i.e., no expiration time). + + When the Printer powers up, it MUST populate this attribute in each + persistent Subscription Object with a value using the algorithm in + the previous paragraph. + + When the "printer-up-time" equals the value of this attribute, the + Printer MUST delete the Subscription Object. A client can extend a + lease of a Per-Printer Subscription Object with the Renew- + Subscription operation (see section 11.2.6). + + + +Herriot & Hastings Standards Track [Page 36] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Note: In order to compute the number of seconds remaining in a lease + for a Per-Printer Subscription Object, a client can subtract the + Subscription's "notify-printer-up-time" attribute (see section 5.4.4) + from the Subscription's "notify-lease-expiration-time" attribute. + +5.4.4. notify-printer-up-time (integer(1:MAX)) + + This attribute is an alias for the Printer's "printer-up-time" + attribute " (see [RFC2911] section 4.4.29). In other words, when + this attribute is queried with the Get-Subscriptions or Get- + Subscription-Attributes operations (see sections 11.2.4 and 11.2.5), + the value returned is the current value of the Printer's "printer- + up-time" attribute, rather than the time at which the Subscription + Object was created. + + A Printer MUST support this attribute. + + When the Printer creates a Per-Job Subscription Object, this + attribute MUST NOT be present. When the Printer creates a Per- + Printer Subscription Object, this attribute MUST be present. + + Note: this attribute exists in a Per-Printer Subscription Object so + that a client using the Get-Subscription-Attributes or Get- + Subscription operations can convert the Per-Printer Subscription's + "notify-lease-expiration-time" attribute to wall clock time with one + request. If the value of the "notify-lease-expiration-time" + attribute is not 0 (i.e., no expiration time), then the difference + between the "notify-lease-expiration-time" attribute and the + "notify-printer-up-time" is the remaining number of seconds on the + lease from the current time. + +5.4.5. notify-printer-uri (uri) + + This attribute identifies the Printer object that created this + Subscription Object. + + A Printer MUST support this attribute. + + During a Subscription Creation Operation, the Printer MUST populate + this attribute with the value of the "printer-uri" operation + attribute in the request. From the Printer URI, the client can, for + example, determine what security scheme was used. + +5.4.6. notify-job-id (integer(1:MAX)) + + This attribute specifies whether the containing Subscription Object + is a Per-Job or Per-Printer Subscription Object, and for Per-Job + Subscription Objects, it specifies the associated Job. + + + +Herriot & Hastings Standards Track [Page 37] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + A Printer MUST support this attribute. + + If this attribute is not present, the Subscription Object MUST be a + Per-Printer Subscription. If this attribute is present, the + Subscription Object MUST be a Per-Job Subscription Object and this + attribute MUST identify the Job with which the Subscription Object is + associated. + + Note: This attribute could be useful to a Notification Recipient that + receives an Event Notification generated from a Per-Job Subscription + Object and caused by a Printer Event. The Event Notification gives + access to the Printer and the Subscription Object. The Event + Notification gives access to the associated Job only via this + attribute. See discussion of the 'job-completed' event in section + 5.3.3.4.3 about retention of the Job object after completion so that + a Notification Recipient can query the Job object after receiving the + 'job-completed' Event Notification. + +5.4.7. notify-subscriber-user-name (name(MAX)) + + This attribute contains the name of the user who performed the + Subscription Creation Operation. + + A Printer MUST support this attribute. + + The Printer MUST populates this attribute with the most authenticated + printable name that it can obtain from the authentication service + over which the Subscription Creation Operation was received. The + Printer uses the same mechanism for determining the value of this + attribute as it does for a Job's "job-originating-user-name" (see + [RFC2911] section 4.3.6). + + Note: To help with authentication, a Subscription Object may have + additional private attributes about the user, e.g., a credential of a + principal. Such private attributes are implementation-dependent and + not defined in this document. + +6. Printer Description Attributes Related to Notification + + This section defines the Printer Description attributes that are + related to Notification. Table 3 lists the Printer Description + attributes, indicates the Printer support required for conformance, + and whether or not the attribute is READ-ONLY (see section 3.1): + + + + + + + + +Herriot & Hastings Standards Track [Page 38] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 3 - Printer Description Attributes Associated with Notification + + Printer object attributes: REQUIRED READ-ONLY + + printer-state-change-time (integer(1:MAX)) No Yes + printer-state-change-date-time (dateTime) No Yes + +6.1. printer-state-change-time (integer(1:MAX)) + + This OPTIONAL attribute records the most recent time at which the + 'printer-state-changed' Printer Event occurred whether or not any + Subscription objects were listening for this event. This attribute + helps a client or operator to determine how long the Printer has been + in its current state. + + A Printer MAY support this attribute and if so, the attribute MUST be + READ-ONLY. + + On power-up, the Printer MUST populate this attribute with the value + of its "printer-up-time" attribute, so that it always has a value. + Whenever the 'printer-state-changed' Printer Event occurs, the + Printer MUST update this attribute with the value of the Printer's + "printer-up-time" attribute. + +6.2. printer-state-change-date-time (dateTime) + + This OPTIONAL attribute records the most recent time at which the + 'printer-state-changed' Printer Event occurred whether or not there + were any Subscription Objects listening for this event. This + attribute helps a client or operator to determine how long the + Printer has been in its current state. + + A Printer MAY support this attribute and if so, the attribute MUST be + READ-ONLY. + + On power-up, the Printer MUST populate this attribute with the value + of its "printer-current-time" attribute, so that it always has a + value (see [RFC2911] section 4.4.30 on "printer-current-time"). + Whenever the 'printer-state-changed' Printer Event occurs, the + Printer MUST update this attribute with the value of the Printer's + "printer-current-time" attribute. + +7. New Values for Existing Printer Description Attributes + + This section contains those attributes for which additional values + are added. + + + + + +Herriot & Hastings Standards Track [Page 39] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +7.1. operations-supported (1setOf type2 enum) + + The following "operation-id" values are added in order to support the + new operations defined in this document: + + Table 4 - Operation-id assignments + + Value Operation Name + + 0x0016 Create-Printer-Subscriptions + 0x0017 Create-Job-Subscriptions + 0x0018 Get-Subscription-Attributes + 0x0019 Get-Subscriptions + 0x001A Renew-Subscription + 0x001B Cancel-Subscription + +8. Attributes Only in Event Notifications + + This section contains those attributes that exist only in Event + Notifications and do not exist in any objects. + +8.1. notify-subscribed-event (type2 keyword) + + This attribute indicates the Subscribed Event that caused the Printer + to deliver this Event Notification. This attribute exists only in + Event Notifications. + + This attribute MUST contain one of the values of the "notify-events" + attribute in the Subscription Object, i.e., one of the Subscribed + Event values. Its value is the Subscribed Event that "matches" the + Event that caused the Printer to deliver this Event Notification. + This Subscribed Event value may be identical to the Event or the + Event may be a sub-value of the Subscribed Event. For example, the + 'job-completed' Event (which is a sub-event of the 'job-state- + changed' event) would cause the Printer to deliver an Event + Notification for either the 'job-completed' or 'job-state-changed' + Subscribed Events and to deliver the 'job-completed' or 'job-state- + changed' value for this attribute, respectively. See section 5.3.3.5 + for the "matching" rules of Subscribed Events and for additional + examples. + + The Delivery Method Document specifies whether the Printer includes + the value of this attribute in an Event Notification. + + + + + + + + +Herriot & Hastings Standards Track [Page 40] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +8.2. notify-text (text(MAX)) + + This attribute contains a Human Consumable text message (see section + 9.2). This message describes the Event and is encoded as plain text, + i.e., 'text/plain' with the charset specified by Subscription + Object's "notify-charset" attribute. + + Note: this attribute contains a text message only and must not + contain any encoding information, such as 'text/plain'. The + 'text/plain' encoding is implicit and thus the charset must be + specified by an alternate mechanism, namely the "notify-charset" + attribute. + + The Delivery Method Document specifies whether the Printer includes + this attribute in an Event Notification. + +9. Event Notification Content + + This section defines the Event Notification content that the Printer + delivers when an Event occurs. + + When an Event occurs, the Printer MUST find each Subscription object + whose "notify-events" attribute "matches" the Event. See section + 5.3.3.5 for details on "matching". For each matched Subscription + Object, the Printer MUST create an Event Notification with the + content and format that the Delivery Method Document specifies. The + content contains the value of attributes specified by the Delivery + Method Document. The Printer obtains the values immediately after + the Event occurs. For example, if the "printer-state" attribute + changes from 'idle' to 'processing', the Event 'printer-state- + changed' occurs and the Printer puts various attributes into the + Event Notification, including "printer-up-time" and "printer-state" + with the values that they have immediately after the Event occurs, + i.e., the value of "printer-state" is 'processing'. + + Event Notification Ordering: + + When a Printer delivers Event Notifications, the Event Notifications + from any given Subscription Object MUST be in time stamp order, i.e., + in order of increasing "printer-up-time" attribute value in the Event + Notification (see Table 5). These Event Notifications MAY be + interleaved with those from other Subscription Objects, as long as + those others are also in time stamp order. The Printer MUST observe + these ordering requirements whether delivering multiple pending + Events as multiple separate Event Notifications or together in a + single Compound Event Notification. + + + + + +Herriot & Hastings Standards Track [Page 41] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + If a Subscribing Client wants the Printer to deliver certain Event + Notifications in time stamp order, the Subscribing Client uses a + single Subscription Object. Even so, depending on the underlying + transport, the actual order that a Notification Recipient receives + separate Event Notifications may differ from the order sent by the + Printer (e.g., email). + + Example: Consider two Per-Printer Subscription Objects: SO1 and SO2. + SO1 requests 'job-state-changed' events and SO2 requests 'printer- + state-changed' events. The number in parens is the time stamp. The + following Event Notification sequences are the only ones that conform + to the ordering requirements for the Printer to deliver the Event + Notifications: + + (a) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO1: + 'job-completed' (1009), SO2: 'printer-stopped' (1005) + + (b) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO2: + 'printer-stopped' (1005), SO1: 'job-completed' (1009) + + (c) SO1: 'job-created' (1000), SO2: 'printer-stopped' (1005), SO1: + 'job-stopped' (1005), SO1: 'job-completed' (1009) + + (d) SO2: 'printer-stopped (1005), SO1: 'job-created' (1000), SO1: + 'job-stopped' (1005), SO1: 'job-completed' (1009) + + Examples (b) and (c) are interleaved; examples (a) and (d) are not + interleaved and are not appropriate for some Delivery Methods. + + If two different Events occur simultaneously, or nearly so (e.g., + "printer-up-time" has the same value for both), the Printer MUST + create a separate Event Notification for each Event, even if the + associated Subscription Object is the same for both Events. However, + the Printer MAY combine these distinct Event Notifications into a + single Compound Event Notification if the Delivery Method supports + Compound Event Notifications. For example, suppose that two nearly- + simultaneously Events represent two successive 'printer-state- + changed' Events, one from 'idle' to 'processing' and another from + 'processing' to 'stopped'. These two Events have the same name but + are different instances of the Event. Then the Printer MUST create a + separate Event Notification for each Event and SHOULD accurately + report the "printer-state" of the first Event as 'processing' and the + second Event as 'stopped'. + + If a Subscription Object contains more than one Subscribed Event, and + several Events occur in quick succession each matching a different + Subscribed Event in the Subscription Object, the Printer MUST NOT + generate a single Event Notification from several of these Events, + + + +Herriot & Hastings Standards Track [Page 42] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + but MAY combine distinct Event Notifications into a single Compound + Event Notification if the Delivery Method supports Compound Event + Notifications. + + After the Printer has created the Event Notification, the Printer + delivers it via either a: + + Push Delivery Method: The Printer delivers the Event Notification + shortly after an Event occurs. For some Push Delivery Methods, + the Notification Recipient MUST deliver a response; for others it + MUST NOT deliver a response. + + Pull Delivery Method: The Printer saves Event Notifications for + some Event Life and expects the Notification Recipient to request + Event Notifications. The Printer returns the Event Notifications + in a response to such a request. + + If an error that meets the following conditions occurs, the Printer + MUST cancel the Subscription Object. + + a) the error occurs during the delivering of an Event Notification + generated from Subscription Object S AND + + b) the error would continue to occur every time the Printer delivers + an Event Notification generated from Subscription Object S in the + future. + + For example, if the address of the "notify-recipient-uri" of + Subscription Object A references a non-existent target and the + Printer determines this fact, it MUST delete Subscription Object A. + + The next two sections describe the values that a Printer delivers in + the content of Machine Consumable and Human Consumable Event + Notifications, respectively. + + The tables in the sub-sections of this section contain the following + columns: + + a) Source Value: the name of the attribute that supplies the value + for the Event Notification. Asterisks in this field refer to a + note below the table. + + b) Delivers: if the Printer supports the value (column 1) on the + Source Object (column 3) the Delivery Method MUST specify: + + MUST: that the Printer MUST deliver the value. + + + + + +Herriot & Hastings Standards Track [Page 43] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + SHOULD: either that the Printer MUST deliver the value or that + the value is incompatible with the Delivery Method. + + MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, + or NEED NOT deliver the value. The Delivery Method specifies + the level of conformance for the Printer. + + c) Source Object: the object from which the source value comes. If + the object is "Event Notification", the Printer fabricates the + value when it delivers the Event Notification. See section 8. + +9.1. Content of Machine Consumable Event Notifications + + This section defines the attributes that a Delivery Method MUST + mention in a Delivery Method Document when specifying the Machine + Consumable Event Notification's contents. + + This document does not define the order of attributes in Event + Notifications. However, Delivery Method Documents MAY define the + order of some or all of the attributes. + + A Delivery Method Document MUST specify additional attributes (if + any) that a Printer implementation delivers in a Machine Consumable + Event Notification. + + Notification Recipients MUST be able to accept Event Notifications + containing attributes they do not recognize. What a Notification + Recipient does with an unrecognized attribute is implementation- + dependent. Notification Recipients MAY attempt to display + unrecognized attributes anyway or MAY ignore them. + + The next three sections define the attributes in Event Notification + Contents that are: + + 1. for all Events + + 2. for Job Events only + + 3. for Printer Events only + +9.1.1. Event Notification Content Common to All Events + + This section lists the attributes that a Delivery Method Document + MUST specify for all Events. + + Table 5 lists potential values in each Event Notification. + + + + + +Herriot & Hastings Standards Track [Page 44] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 5 - Attributes in Event Notification Content + + Source Value Delivers Source Object + + notify-subscription-id (integer(1:MAX)) MUST Subscription + notify-printer-uri (uri) MUST Subscription + notify-subscribed-event (type2 keyword) MUST Event + Notification + printer-up-time (integer(MIN:MAX)) MUST Printer + printer-current-time (dateTime) * MUST Printer + notify-sequence-number (integer (0:MAX)) SHOULD Subscription + notify-charset (charset) SHOULD Subscription + notify-natural-language (naturalLanguage) SHOULD Subscription + notify-user-data (octetString(63)) ** SHOULD Subscription + notify-text (text) SHOULD Event + Notification + attributes from the "notify-attributes" MAY Printer + attribute *** + attributes from the "notify-attributes" MAY Job + attribute *** + attributes from the "notify-attributes" MAY Subscription + attribute *** + + *A Printer MUST deliver this value only if and only if it supports + the Printer's "printer-current-time" attribute. + + ** If the Subscription Object does not contain a "notify-user-data" + attribute and the Delivery Method Document REQUIRES the Printer to + deliver the "notify-user-data" source value in the Event + Notification, the Printer MUST deliver an octet-string of length 0. + + *** The last three rows represent additional attributes that a client + MAY request via the "notify-attributes" attribute. A Printer MAY + support the "notify-attributes" attribute. The Delivery Method MUST + say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED + NOT support the "notify-attributes" attribute and specific values of + this attribute. The Delivery Method MAY say that support for the + "notify-attributes" is conditioned on support of the attribute by the + Printer or it MAY say that Printer MUST support the "notify- + attributes" attribute if the Printer supports the Delivery Method. + +9.1.2. Additional Event Notification Content for Job Events + + This section lists the additional attributes that a Delivery Method + Document MUST specify for Job Events. See Table 6. + + + + + + +Herriot & Hastings Standards Track [Page 45] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 6 - Additional Event Notification Content for Job Events + + Source Value Delivers Source + Object + + job-id (integer(1:MAX)) MUST Job + job-state (type1 enum) MUST Job + job-state-reasons (1setOf type2 keyword) MUST Job + job-impressions-completed (integer(0:MAX)) * MUST Job + + * The Printer MUST deliver the "job-impressions-completed" attribute + in an Event Notification only for the combinations of Events and + Subscribed Events shown in Table 7. + + Table 7 - Combinations of Events and Subscribed Events for "job- + impressions-completed" + + Job Event Subscribed Job Event + + 'job-progress' 'job-progress' + 'job-completed' 'job-completed' + 'job-completed' 'job-state-changed' + +9.1.3. Additional Event Notification Content for Printer Events + + This section lists the additional attributes that a Delivery Method + Document MUST specify for Printer Events. See Table 8. + + Table 8 - Additional Event Notification Content for Printer Events + + Source Value Delivers Source Object + + printer-state (type1 enum) MUST Printer + printer-state-reasons (1setOf type2 MUST Printer + keyword) + printer-is-accepting-jobs (boolean) MUST Printer + +9.2. Content of Human Consumable Event Notification + + This section defines the information that a Delivery Method MUST + mention in a Delivery Method Document when specifying the Human + Consumable Event Notifications contents or the value of the "notify- + text" attribute. + + Such a Delivery Method MUST specify the following information and a + Printer SHOULD deliver it: + + a) the Printer name (see Table 9) + + + +Herriot & Hastings Standards Track [Page 46] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + b) the time of the Event (see Table 11) + + c) for Printer Events only: + + i) the Event (see Table 10) and/or Printer state information (see + Table 14) + + d) for Job Events only: + + i) the job identity (see Table 12) + + ii) the Event (see Table 10) and/or Job state information (see + Table 13) + + The subsections of this section specify the attributes that a Printer + MUST use to obtain this information. + + A Delivery Method Document MUST specify additional information (if + any) that a Printer implementation delivers in a Human Consumable + Event Notification or in the "notify-text" attribute. + + A client MUST NOT request additional attributes via the "notify- + attributes" attribute because this attribute works only for Machine + Consumable Event Notifications. + + Notification Recipients MUST NOT expect to be able to parse the Human + Consumable Event Notification contents or the value of the "notify- + text" attribute. + + The next three sections define the attributes in Event Notification + Contents that are: + + a) for all Events + b) for Job Events only + c) for Printer Events only + +9.2.1. Event Notification Content Common to All Events + + This section lists the source of the information that a Delivery + Method MUST specify for all Events. + + There is a separate table for each piece of information. Each row in + the table represents a source value for the information and the + values are listed in order of preference, with the first one being + the preferred one. An implementation SHOULD use the source value + from the earliest row in each table. It MAY use the source value + + + + + +Herriot & Hastings Standards Track [Page 47] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + from another row instead, or it MAY combine the source values from + several rows. An implementation is free to determine the best way to + present this information. + + In all tables of this section, all rows contain a "MAY" in order to + state that the Delivery Method specifies the conformance. + + Table 9 lists the source of the information for the Printer Name. + The "printer-name" is more user-friendly unless the Notification + Recipient is in a place where the Printer name is not meaningful. + For example, an implementation could have the intelligence to deliver + the value of the "printer-name" attribute to a Notification Recipient + that can access the Printer via value of the "printer-name" attribute + and otherwise deliver the value of the "notify-printer-uri" + attribute. + + Table 9 - Printer Name in Event Notification Content + + Source Value Delivers Source Object + + printer-name (name(127)) MAY Printer + notify-printer-uri (uri) MAY Subscription + + + Table 10 lists the source of the information for the Event name. A + Printer MAY combine this information with state information described + for Jobs in Table 13 or for Printers in Table 14. + + Table 10 - Event Name in Event Notification Content + + Source Value Delivers Source Object + + notify-subscribed-event (type2 keyword) MAY Subscription + + Table 11 lists the source of the information for the time that the + Event occurred. A Printer can deliver this value only if it supports + the Printer's "printer-current-time" attribute. If a Printer does + not support the "printer-current-time" attribute, it MUST NOT deliver + the "printer-up-time" value instead, since it is not an allowed + option for human consumable information. + + Table 11 - Event Time in Event Notification Content + + Source Value Delivers Source Object + + printer-current-time (dateTime) MAY Printer + + + + + +Herriot & Hastings Standards Track [Page 48] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +9.2.2. Additional Event Notification Content for Job Events + + This section lists the source of the additional information that a + Delivery Method MUST specify for Job Events. + + Table 12 lists the source of the information for the job name. The + "job-name" is likely more meaningful to a user than "job-id". + + Table 12 - Job Name in Event Notification Content + + Source Value Delivers Source Object + + job-name (name(MAX)) MAY Job + job-id (integer(1:MAX)) MAY Job + + Table 13 lists the source of the information for the job state. If a + Printer supports the "job-state-message" and "job-detailed-state- + message" attributes, it SHOULD use those attributes for the job state + information, otherwise, it should fabricate such information from the + "job-state" and "job-state-reasons". For some Events, a Printer MAY + combine this information with Event information. + + Table 13 - Job State in Event Notification Content + + Source Value Delivers Source + Object + + job-state-message (text(MAX)) MAY Job + job-detailed-status-messages (1setOf text(MAX)) MAY Job + job-state (type1 enum) MAY Job + job-state-reasons (1setOf type2 keyword) MAY Job + +9.2.3. Additional Event Notification Content for Printer Events + + This section lists the source of the additional information that a + Delivery Method MUST specify for Printer Events. + + Table 14 lists the source of the information for the printer state. + If a Printer supports the "printer-state-message", it SHOULD use that + attribute for the job state information, otherwise it SHOULD + fabricate such information from the "printer-state" and "printer- + state-reasons". For some Events, a Printer MAY combine this + information with Event information. + + + + + + + + +Herriot & Hastings Standards Track [Page 49] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 14 - Printer State in Event Notification Content + + Source Value Delivers Source + Object + + printer-state-message (text(MAX)) MAY Printer + printer-state (type1 enum) MAY Printer + printer-state-reasons (1setOf type2 keyword) MAY Printer + printer-is-accepting-jobs (boolean) MAY Printer + +10. Delivery Methods + + A Delivery Method is the mechanism, i.e., protocol, by which the + Printer delivers an Event Notification to a Notification Recipient. + There are several potential Delivery Methods for Event Notifications, + standardized, as well as proprietary. This specification REQUIRES + that the 'ippget' Pull Delivery Method [RFC3996] be supported. + Conforming implementations MAY support additional Push or Pull + Delivery Methods as well. This document does not define any of these + delivery mechanisms. Each Delivery Method MUST be defined in a + Delivery Method Document that is separate from this document. New + Delivery Methods will be created as needed using an extension to the + registration procedures defined in [RFC2911]. Such documents are + registered with IANA (see section 23.7.3). + + The following sorts of Delivery Methods are possible: + + - The Notification Recipient polls for Event Notifications at + intervals directed by the Printer + + - The Printer delivers Event Notifications to the Notification + Recipient using http as the transport. + + - The Printer delivers an email message. + + This section specifies how to define a Delivery Method Document and + what to put in such a document. + + A Delivery Method Document MUST contain an exact copy of the + following paragraph, caption and table. In addition, column 2 of the + table in the Delivery Method Document MUST contain answers to + questions in column 1 for the Delivery Method. Also, the Delivery + Method document MUST contain a reference to this document and call + that reference [RFC3995] because the table contains an [RFC3995] + reference. + + If a Printer supports this Delivery Method, the following are its + characteristics. + + + +Herriot & Hastings Standards Track [Page 50] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 15 - Information about the Delivery Method + + Document Method Conformance Requirement Delivery Method + Realization + + 1. What is the URL scheme name for the Push Delivery Method or the + keyword method name for the Pull Delivery Method? + + 2. Is the Delivery Method REQUIRED, RECOMMENDED, or OPTIONAL for an + IPP Printer to support? + + 3. What transport and delivery protocols does the Printer use to + deliver the Event Notification Content, i.e., what is the entire + network stack? + + 4. Can several Event Notifications be combined into a Compound Event + Notification? + + 5. Is the Delivery Method initiated by the Notification Recipient + (pull), or by the Printer (push)? + + 6. Is the Event Notification content Machine Consumable or Human + Consumable? + + 7. What section in this document answers the following question? + For a Machine Consumable Event Notification, what is the + representation and encoding of values defined in section 9.1 of + [RFC3995] and the conformance requirements thereof? For a Human + Consumable Event Notification, what is the representation and + encoding of pieces of information defined in section 9.2 of + [RFC3995] and the conformance requirements thereof? + + 8. What are the latency and reliability of the transport and + delivery protocol? + + 9. What are the security aspects of the transport and delivery + protocol, e.g., how it is handled in firewalls? + + 10. What are the content length restrictions? + + 11. What are the additional values or pieces of information that a + Printer delivers in an Event Notification content and the + conformance requirements thereof? + + 12. What are the additional Subscription Template and/or + Subscription Description attributes and the conformance + requirements thereof? + + + + +Herriot & Hastings Standards Track [Page 51] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 13. What are the additional Printer Description attributes and the + conformance requirements thereof? + +11. Operations for Notification + + This section defines all of the operations for Notification. Section + 7.1 assigns the "operation-id" for each operation. The following two + sub-sections define Subscription Creation Operations, and other + operations. + +11.1. Subscription Creation Operations + + This section defines the Subscription Creation Operations. The first + section on Create-Job-Subscriptions gives most of the information. + The other Subscription Creation Operations refer to the section on + Create-Job-Subscriptions, even though the Create-Job-Subscriptions + operation is the only OPTIONAL operation in this document (see + section 12). + + A Printer MUST support Create-Printer-Subscriptions and the + Subscription Template Attributes Group in Job Creation operations. + It MAY support Create-Job-Subscriptions operations. + +11.1.1. Create-Job-Subscriptions Operation + + The operation creates one or more Per-Job Subscription Objects. The + client supplies one or more Subscription Template Attributes Groups + each containing one or more of Subscription Template Attributes + (defined in section 5.3). + + Except for errors, the Printer MUST create exactly one Per-Job + Subscription Object from each Subscription Template Attributes Group + in the request, even if the newly created Subscription Object would + have identical behavior to some existing Subscription Object. The + Printer MUST associate each newly created Per-Job Subscription Object + with the target Job, which is specified by the "notify-job-id" + operation attribute. + + The Printer MUST accept the request in any of the target job's 'not- + completed' states, i.e., 'pending', 'pending-held', 'processing', or + 'processing-stopped'. The Printer MUST NOT change the job's "job- + state" attribute because of this operation. If the target job is in + any of the 'completed' states, i.e., 'completed', 'canceled', or + 'aborted, then the Printer MUST reject the request and return the + 'client-error-not-possible' status code; the response MUST NOT + contain any Subscription Attribute Groups. + + + + + +Herriot & Hastings Standards Track [Page 52] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Access Rights: To create Per-Job Subscription Objects, the + authenticated user (see [RFC2911] section 8.3) performing this + operation MUST (1) be the job owner, (2) have Operator or + Administrator access rights for this Printer (see [RFC2911] sections + 1 and 8.5), or (3) be otherwise authorized by the Printer's + administrator-configured security policy to create Per-Job + Subscription Objects for the target job. Otherwise the Printer MUST + reject the operation and return: the 'client-error-forbidden', + 'client-error-not-authenticated', or 'client-error-not-authorized' + status code as appropriate. + +11.1.1.1. Create-Job-Subscriptions Request + + The following groups of attributes are part of the Create-Job- + Subscriptions Request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.1. + + Target: + The "printer-uri" attribute which defines the target for this + operation as described in [RFC2911] section 3.1.5. + + Requesting User Name: + The "requesting-user-name" attribute SHOULD be supplied by the + client as described in [RFC2911] section 8.3. + +11.1.1.1.1. notify-job-id (integer(1:MAX)) + + The client MUST supply this attribute and it MUST specify the Job + object to associate the Per-Job Subscription with. The value of + "notify-job-id" MUST be the value of the "job-id" of the associated + Job object. If the client does not supply this attribute, the + Printer MUST reject this request with a 'client-error-bad-request' + status code. + + Group 2-N: Subscription Template Attributes + + For each occurrence of this group: + + The client MUST supply one or more Subscription Template + Attributes in any order. See section 5.3 for a description of + each such attribute. See section 5.2 for details on processing + these attributes. + + + + +Herriot & Hastings Standards Track [Page 53] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.1.1.2. Create-Job-Subscriptions Response + + The Printer MUST return to the client the following sets of + attributes as part of a Create-Job-Subscriptions response: + + Group 1: Operation Attributes + + Status Message: + In addition to the REQUIRED status code returned in every + response, the response OPTIONALLY includes a "status-message" + (text(255)) and/or a "detailed-status-message" (text(MAX)) + operation attribute as described in [RFC2911] sections 13 and + 3.1.6. + + In this group, the Printer can return any status codes defined in + [RFC2911] and section 12. The following is a description of the + important status codes: + + successful-ok: the Printer created all Subscription Objects + requested (see [RFC2911]). + + successful-ok-ignored-subscriptions: the Printer created some + Subscription Objects requested but some failed. The + Subscription Attributes Groups with a "notify-status-code" + attribute are the ones that failed (see section 12.1). + + client-error-ignored-all-subscriptions: the Printer created no + Subscription Objects requested and all failed. The + Subscription Attributes Groups with a "notify-status-code" + attribute are the ones that failed (see section 12.2). + + client-error-not-possible: For this operation and other Per-Job + Subscription operations, this error can occur because the + specified Job has already completed (see [RFC2911], whether or + not the Job is retained in the Job Retention and/or Job History + phases (see [RFC2911] section 4.3.7.1). + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. + + Group 2: Unsupported Attributes + + See [RFC2911] section 3.1.7 for details on returning Unsupported + Attributes. This group does not contain any unsupported + Subscription Template Attributes; they are returned in the + Subscription Attributes Group (see below). + + + + +Herriot & Hastings Standards Track [Page 54] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Group 3-N: Subscription Attributes + + These groups MUST be returned unless the Printer is unable to + interpret the entire request, e.g., the "status-code" parameter + returned in Group 1 has the value: 'client-error-bad-request'. + + "notify-status-code" (type2 enum): + Indicates the status of this subscription (see section 13 for + the status code definitions). Section 5.2 defines when this + attribute MUST be present in this group. + + See section 5.2 for details on the contents of each occurrence of + this group. + +11.1.2. Create-Printer-Subscriptions operation + + The operation is identical to Create-Job-Subscriptions with + exceptions noted in this section. + + The operation creates Per-Printer Subscription Objects instead of + Per-Job Subscription Objects, and associates each newly created Per- + Printer Subscription Object with the Printer specified by the + operation target rather than with a specific Job. + + The Printer MUST accept the request in any of its states, i.e., + 'idle', 'processing', or 'stopped'. The Printer MUST NOT change its + "printer-state" attribute because of this operation. + + Access Rights: To create Per-Printer Subscription Objects, the + authenticated user (see [RFC2911] section 8.3) performing this + operation MUST have (1) Operator or Administrator access rights for + this Printer (see [RFC2911] sections 1 and 8.5), or (2) be otherwise + authorized by the Printer's administrator-configured security policy + to create Per-Printer Subscription Objects for this Printer. + Otherwise, the Printer MUST reject the operation and return: the + 'client-error-forbidden', 'client-error-not-authenticated', or + 'client-error-not-authorized' status code as appropriate. + +11.1.2.1. Create-Printer-Subscriptions Request + + The groups are identical to the Create-Job-Subscriptions (see section + 11.1.1.1) except that the Operation Attributes group MUST NOT contain + the "notify-job-id" attribute. If the client does supply the + "notify-job-id" attribute, then the Printer MUST treat it as any + other unsupported Operation attribute and MUST return it in the + Unsupported Attributes group. + + + + + +Herriot & Hastings Standards Track [Page 55] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.1.2.2. Create-Printer-Subscriptions Response + + The groups are identical to the Create-Job-Subscriptions (see section + 11.1.1.2). + +11.1.3. Job Creation Operations - Extensions for Notification + + This document extends the Job Creation operations (see section 3.2) + to create Subscription Objects as a part of the operation. + + The Job Creation operations are identical to Create-Job-Subscriptions + operation with exceptions noted in this section. + + Unlike the Create-Job-Subscriptions operation, a Job Creation + operation associates the newly created Subscription Objects with the + Job object created by this operation. The operation succeeds if and + only if the Job creation succeeds. If the Printer does not create + some or all of the requested Subscription Objects, the Printer MUST + return a 'successful-ok-ignored-subscriptions' status-code instead + of a 'successful-ok' status-code, but the Printer MUST NOT reject the + operation because of a failure to create Subscription Objects. + + If the Job Creation operation includes a Job Template group, the + client MUST supply it after the Operation Attributes group and before + the first Subscription Template Attributes Group. + + If a Printer does not support this Notification specification, then + it MUST treat the Subscription Attributes Group like an unknown group + and ignore it (see [RFC2911] section 5.2.2). Because the Printer + ignores the Subscription Attributes Group, it doesn't return them in + the response either, thus indicating to the client that the Printer + doesn't support Notification. + + After completion of a successful Job Creation operation, the Printer + generates a 'job-created' event (see section 5.3.3.4.3). + + Access Rights: To create Per-Job Subscription Objects, the + authenticated user (see [RFC2911] section 8.3) performing this + operation MUST either have permission to create Jobs on the Printer + or have Operator or Administrator access rights for this Printer (see + [RFC2911] sections 1 and 8.5). Otherwise the Printer MUST reject the + operation and return: the 'client-error-forbidden', 'client-error- + not-authenticated', or 'client-error-not-authorized' status code as + appropriate. + + + + + + + +Herriot & Hastings Standards Track [Page 56] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.1.3.1. Job Creation Request + + The groups for this operation are sufficiently different from the + Create-Job-Subscriptions operation that they are all presented here. + The following groups of attributes are supplied as part of a Job + Creation Request: + + Group 1: Operation Attributes + + Same as defined in [RFC2911] for Print-Job, Print-URI, and + Create-Job requests. + + Group 2: Job Template Attributes + + The client OPTIONALLY supplies a set of Job Template attributes as + defined in [RFC2911] section 4.2. + + Group 3 to N: Subscription Template Attributes + + The same as Group 2-N in Create-Job-Subscriptions. See section + 11.1.1.1. + + Group N+1: Document Content (Print-Job only) + + The client MUST supply the document data to be processed. + +11.1.3.2. Job Creation Response + + The Printer MUST return to the client the following sets of + attributes as part of a Print-Job, Print-URI, and Create-Job + Response: + + Group 1: Operation Attributes + + Status Message: + + As defined in [RFC2911] for Print-Job, Print-URI, and Create- + Job requests. + + In this group, the Printer can return any status codes defined + in [RFC2911] and section 12. The following is a description of + the important status codes: + + successful-ok: the Printer created the Job and all + Subscription Objects requested (see [RFC2911]. + + successful-ok-ignored-subscriptions: the Printer created + the Job and not all of the Subscription Objects requested + + + +Herriot & Hastings Standards Track [Page 57] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + (see section 12.1). This status-code hides 'successful-ok- + xxx' status-codes that could reveal problems in Job + creation. The Printer MUST NOT return the 'client-error- + ignored-all-subscriptions' status code for Job Creation + operations because the Printer returns an error status-code + only when it fails to create a Job. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. + + Group 2: Unsupported Attributes + + See [RFC2911] section 3.1.7 for details on returning Unsupported + Attributes. This group does not contain any unsupported + Subscription Template Attributes; they are returned in the + Subscription Attributes Group (see below). + + Group 3: Job Object Attributes + + The "job-id" of the Job Object just created, etc., as defined in + [RFC2911] for Print-Job, Print-URI, and Create-Job requests. + + Group 4 to N: Subscription Attributes + + These groups MUST be returned if and only if the client supplied + Subscription Template Attributes and the operation was accepted. + + See section 5.2 for details on the contents of each occurrence of + this group. + +11.2. Other Operations + + This section defines other operations on Subscription objects. + +11.2.1. Restart-Job Operation - Extensions for Notification + + The Restart-Job operation [RFC2911] is neither a Job Creation + operation nor a Subscription Creation operation (see section 3.2). + + For the Restart-Job operation, the client MUST NOT supply any Job + Subscription Attributes Groups. The Printer MUST treat any supplied + Job Subscription Attributes as unsupported attributes. + + For this operation, the Printer does not return a job-id or any + Subscription Attributes groups because the Printer reuses the + existing Job object with the same job-id and the existing Per-Job + Subscription Objects with the same subscription-ids. However, after + + + +Herriot & Hastings Standards Track [Page 58] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + successful completion of this operation, the Printer generates a + 'job-created' event (see section 5.3.3.4.3). + +11.2.2. Validate-Job Operation - Extensions for Notification + + A client can test whether one or more Subscription Objects could be + created using the Validate-Job operation. The client supplies one or + more Subscription Template Attributes Groups (defined in section + 5.3), just as in a Job Creation request. + + A Printer MUST support this extension to this operation. + + The Printer MUST accept requests that are identical to the Job + Creation request defined in section 11.1.3.1, except that the request + MUST NOT contain document data. + + The Printer MUST return the same groups and attributes as the Print- + Job operation (section 11.1.3.1) with the following exceptions. The + Printer MUST NOT return a Job Object Attributes Group because no Job + is created. The Printer MUST NOT return the "notify-subscription-id" + attribute in any Subscription Attribute Group because no Subscription + Object is created. + + If the Printer would succeed in creating a Subscription Object, the + corresponding Subscription Attributes Group either has no 'status- + code' attribute or a 'status-code' attribute with a value of + 'successful-ok-too-many-events' or 'successful-ok-ignored-or- + substituted-attributes' (see sections 5.2 and 13). The status-codes + have the same meaning as in Job Creation except the results state + what "would happen". + + The Printer MUST validate Subscription Template Attributes Groups in + the same manner as the Job Creation operations. + +11.2.3. Get-Printer-Attributes - Extensions for Notification + + This operation is extended so that it returns Printer attributes + defined in this document. + + A Printer MUST support this extension to this operation. + + In addition to the requirements of [RFC2911] section 3.2.5, a Printer + MUST support the following additional values for the "requested- + attributes" Operation attribute in this operation and return such + attributes in the Printer Object Attributes group of its response. + + 1. Subscription Template Attributes: Each supported attribute in + column 2 of Table 1. + + + +Herriot & Hastings Standards Track [Page 59] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 2. New Printer Description Attributes: Each supported attribute in + section 6. + + 3. New Group Name: The 'subscription-template' group name, which + names all supported Subscription Template Attribute in column 2 of + Table 1. This group name is also used in the Get-Subscription- + Attributes and Get-Subscriptions operation with an analogous + meaning. + + 4. Extended Group Name: The 'all' group name, which names all Printer + attributes according to [RFC2911] section 3.2.5. In this + extension 'all' names all attributes specified in [RFC2911] plus + those named in items 1 and 2 of this list. + +11.2.4. Get-Subscription-Attributes operation + + This operation allows a client to request the values of the + attributes of a Subscription Object. + + A Printer MUST support this operation. + + This operation is almost identical to the Get-Job-Attributes + operation (see [RFC2911] section 3.3.4). The only differences are + that the operation is directed at a Subscription Object rather than a + Job object, and the returned attribute group contains Subscription + Object attributes rather than Job object attributes. + + Access Rights: The authenticated user (see [RFC2911] section 8.3) + performing this operation MUST (1) be the Subscription Object owner, + (2) have Operator or Administrator access rights for this Printer + (see [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized by + the Printer's administrator-configured security policy to query the + Subscription Object for the target job. Otherwise the Printer MUST + reject the operation and return: the 'client-error-forbidden', + 'client-error-not-authenticated', or 'client-error-not-authorized' + status code as appropriate. Furthermore, the Printer's security + policy MAY limit which attributes are returned, in a manner similar + to the Get-Job-Attributes operation (see [RFC2911] end of section + 3.3.4.2). + +11.2.4.1. Get-Subscription-Attributes Request + + The following groups of attributes are part of the Get-Subscription- + Attributes request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + + + +Herriot & Hastings Standards Track [Page 60] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + The "attributes-charset" and "attributes-natural-language" + attributes as described in section [RFC2911] 3.1.4.1. + + Target: + The "printer-uri" attribute which defines the target for this + operation as described in [RFC2911] section 3.1.5. + + Requesting User Name: + The "requesting-user-name" attribute SHOULD be supplied by the + client as described in [RFC2911] section 8.3. + +11.2.4.1.1. "notify-subscription-id" (integer (1:MAX)) + + The client MUST supply this attribute. The Printer MUST support this + attribute. This attribute specifies the Subscription Object from + which the client is requesting attributes. If the client omits this + attribute, the Printer MUST reject this request with the 'client- + error-bad-request' status code. + +11.2.4.1.2. "requested-attributes" (1setOf keyword) + + The client OPTIONALLY supplies this attribute. The Printer MUST + support this attribute. This attribute specifies the attributes of + the specified Subscription Object that the Printer MUST return in the + response. Each value of this attribute is either an attribute name + (defined in sections 5.3 and 5.4) or an attribute group name. The + attribute group names are: + + - 'subscription-template': all attributes that are both defined in + section 5.3 and present on the specified Subscription Object + (column 1 of Table 1). + + - 'subscription-description': all attributes that are both defined + in section 5.4 and present on the specified Subscription Object + (Table 2). + + - 'all': all attributes that are present on the specified + Subscription Object. + + A Printer MUST support all these group names. + + If the client omits this attribute, the Printer MUST respond as if + this attribute had been supplied with a value of 'all'. + +11.2.4.2. Get-Subscription-Attributes Response + + The Printer returns the following sets of attributes as part of the + Get-Subscription-Attributes Response: + + + +Herriot & Hastings Standards Track [Page 61] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Group 1: Operation Attributes + + Status Message: + Same as [RFC2911]. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. The + "attributes-natural-language" MAY be the natural language of the + Subscription Object, rather than the one requested. + + Group 2: Unsupported Attributes + + See [RFC2911] section 3.1.7 and section 3.2.5.2 for details on + returning Unsupported Attributes. + + The response NEED NOT contain the "requested-attributes" operation + attribute with any supplied keyword values that were requested by + the client but are not supported by the IPP object. If the + Printer object does return unsupported attributes referenced in + the "requested-attributes" operation attribute, the values of the + "requested-attributes" attribute returned MUST include only the + unsupported keywords that were requested by the client. If the + client had requested a group name, such as 'all', the resulting + unsupported attributes returned MUST NOT include attribute keyword + names described in the standard but not supported by the + implementation. + + Group 3: Subscription Attributes + + This group contains a set of attributes with their current values. + Each attribute returned in this group: + + a) MUST be specified by the "requested-attributes" attribute in the + request, AND + + b) MUST be present on the specified Subscription Object AND + + c) MUST NOT be restricted by the security policy in force. For + example, a Printer MAY prohibit a client who is not the creator of + a Subscription Object from seeing some or all of its attributes. + See [RFC2911] end of section 3.3.4.2 and section 8. + + The Printer can return the attributes of the Subscription Object + in any order. The client MUST accept the attributes in any order. + + + + + + +Herriot & Hastings Standards Track [Page 62] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.2.5. Get-Subscriptions operation + + This operation allows a client to retrieve the values of attributes + of all Subscription Objects belonging to a Job or Printer. + + A Printer MUST supported this operation. + + This operation is similar to the Get-Subscription-Attributes + operation, except that this Get-Subscriptions operation returns + attributes from possibly more than one object. + + This operation is similar to the Get-Jobs operation (see [RFC2911] + section 3.2.6), except that the operation returns Subscription + Objects rather than Job objects. + + Access Rights: To query Per-Job Subscription Objects of the + specified job (client supplied the "notify-job-id" operation + attribute - see section 11.2.5.1.1), the authenticated user (see + [RFC2911] section 8.3) performing this operation MUST (1) be the + Subscription Object owner, (2) have Operator or Administrator access + rights for this Printer (see [RFC2911] sections 1 and 8.5), or (3) be + otherwise authorized by the Printer's administrator-configured + security policy to query the Subscription Object for the target job. + To query Per-Printer Subscription Objects of the Printer (client + omits the "notify-job-id" operation attribute - see section + 11.2.5.1.1), the authenticated user (see [RFC2911] section 8.3) + performing this operation MUST (1) have Operator or Administrator + access rights for this Printer (see [RFC2911] sections 1 and 8.5), or + (2) be otherwise authorized by the Printer's administrator-configured + security policy to query Per-Printer Subscription Objects for the + target Printer. Otherwise the Printer MUST reject the operation and + return: the 'client-error-forbidden', 'client-error-not- + authenticated', or 'client-error-not-authorized' status code as + appropriate. Furthermore, the Printer's security policy MAY limit + which attributes are returned, in a manner similar to the Get-Jobs + and Get-Printer-Attributes operations (see [RFC2911] end of sections + 3.2.6.2 and 3.2.5.2). + +11.2.5.1. Get-Subscriptions Request + + The following groups of attributes are part of the Get-Subscriptions + request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.1. + + + +Herriot & Hastings Standards Track [Page 63] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Target: + The "printer-uri" attribute which defines the target for this + operation as described in [RFC2911] section 3.1.5. + + Requesting User Name: + The "requesting-user-name" attribute SHOULD be supplied by the + client as described in [RFC2911] section 8.3. + +11.2.5.1.1. "notify-job-id" (integer(1:MAX)) + + If the client specifies this attribute, the Printer returns the + specified attributes of all Per-Job Subscription Objects associated + with the Job whose "job-id" attribute value equals the value of this + attribute. If the client does not specify this attribute, the + Printer returns the specified attributes of all Per-Printer + Subscription Objects. Note: there is no way to get all Per-Job + + Subscriptions known to the Printer in a single operation. A Get-Jobs + operation followed by a Get-Subscriptions operation for each Job will + return all Per-Job Subscriptions. + +11.2.5.1.2. "limit" (integer(1:MAX)) + + The client OPTIONALLY supplies this attribute. The Printer MUST + support this attribute. It is an integer value that determines the + maximum number of Subscription Objects that a client will receive + from the Printer even if the "my-subscriptions" attribute constrains + which Subscription Objects are returned. The limit is a "stateless + limit" in that if the value supplied by the client is 'N', then only + the first 'N' Subscription Objects are returned in the Get- + Subscriptions Response. There is no mechanism to allow for the next + 'M' Subscription Objects after the first 'N' Subscription Objects. + If the client does not supply this attribute, the Printer responds + with all applicable Subscription Objects. + +11.2.5.1.3. "requested-attributes" (1setOf type2 keyword) + + The client OPTIONALLY supplies this attribute. The Printer MUST + support this attribute. This attribute specifies the attributes of + the specified Subscription Objects that the Printer MUST return in + the response. Each value of this attribute is either an attribute + name (defined in sections 5.3 and 5.4) or an attribute group name + (defined in section 11.2.4.1). If the client omits this attribute, + the Printer MUST respond as if the client had supplied this attribute + with the one value: 'notify-subscription-id'. + + + + + + +Herriot & Hastings Standards Track [Page 64] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.2.5.1.4. "my-subscriptions" (boolean) + + The client OPTIONALLY supplies this attribute. The Printer MUST + support this attribute. If the value is 'false', the Printer MUST + consider the Subscription Objects from all users as candidates. If + the value is 'true', the Printer MUST return the Subscription Objects + created by the requesting user of this request. If the client does + not supply this attribute, the Printer MUST respond as if the client + had supplied the attribute with a value of 'false'. The means for + authenticating the requesting user and matching the Subscription + Objects is similar to that for Jobs which is described in [RFC2911] + section 8. + +11.2.5.2 Get-Subscriptions Response + + The Printer returns the following sets of attributes as part of the + Get-Subscriptions Response: + + Group 1: Operation Attributes + + Status Message: + Same as [RFC2911]. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. + + Group 2: Unsupported Attributes + + Same as for Get-Subscription-Attributes. + + Groups 3 to N: Subscription Attributes + + The Printer responds with one Subscription Attributes Group for + each requested Subscription Object (see the "notify-job-id" + attribute in the Operation Attributes Group of this operation). + + The Printer returns Subscription Objects in any order. + + If the "limit" attribute is present in the Operation Attributes + group of the request, the number of Subscription Attributes Groups + in the response MUST NOT exceed the value of the "limit" + attribute. + + It there are no Subscription Objects associated with the specified + Job or Printer, the Printer MUST return zero Subscription + Attributes Groups and it MUST NOT treat this case as an error, + + + + +Herriot & Hastings Standards Track [Page 65] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + i.e., the status-code MUST be 'successful-ok' unless something + else causes the status code to have some other value. + + See the Group 3 response (Subscription Attributes Group) of the + Get-Subscription-Attributes operation (section 11.2.4.2) for the + attributes that a Printer returns in this group. + +11.2.6. Renew-Subscription operation + + This operation allows a client to request the Printer to extend the + lease on a Per-Printer Subscription Object. + + The Printer MUST support this operation. + + The Printer MUST accept this request for a Per-Printer Subscription + Object in any of the target Printer's states, i.e., 'idle', + 'processing', or 'stopped', but MUST NOT change the Printer's + "printer-state" attribute. + + The Printer MUST reject this request for a Per-Job Subscription + Object because it has no lease (see section 5.4.3). The status code + returned MUST be 'client-error-not-possible'. + + Access Rights: The authenticated user (see [RFC2911] section 8.3) + performing this operation MUST (1) be the owner of the Per-Printer + Subscription Object, (2) have Operator or Administrator access rights + for the Printer (see [RFC2911] sections 1 and 8.5), or (3) be + otherwise authorized by the Printer's administrator-configured + security policy to renew Per-Printer Subscription Objects for the + target Printer. Otherwise, the Printer MUST reject the operation and + return: the 'client-error-forbidden', 'client-error-not- + authenticated', or 'client-error-not-authorized' status code as + appropriate. + +11.2.6.1. Renew-Subscription Request + + The following groups of attributes are part of the Renew-Subscription + Request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.1. + + Target: + The "printer-uri" attribute which defines the target for this + operation as described in [RFC2911] section 3.1.5. + + + +Herriot & Hastings Standards Track [Page 66] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Requesting User Name: + The "requesting-user-name" (name(MAX)) attribute SHOULD be + supplied by the client as described in [RFC2911] section 8.3. + +11.2.6.1.1. "notify-subscription-id" (integer (1:MAX)) + + The client MUST supply this attribute. The Printer MUST support this + attribute. This attribute specifies the Per-Printer Subscription + Object whose lease the Printer MUST renew. If the client omits this + attribute, the Printer MUST reject this request with the 'client- + error-bad-request' status code. + + Group 2: Subscription Template Attributes + +11.2.6.1.2. "notify-lease-duration" (integer(0:MAX)) + + The client MAY supply this attribute. It indicates the number of + seconds to renew the lease for the specified Subscription Object. A + value of 0 requests an infinite lease (which MAY require Operator + access rights). If the client omits this attribute, the Printer MUST + use the value of the Printer's "notify-lease-duration-default" + attribute. See section 5.3.8 for more details. + +11.2.6.2. Renew-Subscription Response + + The Printer returns the following sets of attributes as part of the + Renew-Subscription Response: + + Group 1: Operation Attributes + + Status Message: + Same as [RFC2911]. + + The following are some of the status codes returned (see + [RFC2911]: + + successful-ok: The operation successfully renewed the lease + on the Subscription Object for the requested duration. + + successful-ok-ignored-or-substituted-attributes: The + operation successfully renewed the lease on the Subscription + Object for some duration other than the amount requested. + + client-error-not-possible: The operation failed because the + "notify-subscription-id" Operation attribute identified a + Per-Job Subscription Object. + + + + + +Herriot & Hastings Standards Track [Page 67] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + client-error-not-found: The operation failed because the + "notify-subscription-id" Operation attribute identified a + non-existent Subscription Object. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. The + "attributes-natural-language" MAY be the natural language of the + Subscription Object, rather than the one requested. + + Group 2: Unsupported Attributes + + See [RFC2911] section 3.1.7 for details on returning Unsupported + Attributes. + + Group 3: Subscription Attributes + + The Printer MUST return the following Subscription Attribute: + +11.2.6.2.1. "notify-lease-duration" (integer(0:MAX)) + + The value of this attribute MUST be the number of seconds that the + Printer has granted for the lease of the Subscription Object (see + section 5.3.8 for details, such as the value of this attribute when + the Printer doesn't support the requested value). + +11.2.7. Cancel-Subscription operation + + This operation allows a client to delete a Subscription Object and + stop the Printer from delivering more Event Notifications. Once + performed, there is no way to reference the Subscription Object. + + A Printer MUST supported this operation. + + The Printer MUST accept this request in any of the target Printer's + states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change + the Printer's "printer-state" attribute. + + If the specified Subscription Object is a Per-Job Subscription + Object, the Printer MUST accept this request in any of the target + Job's states, but MUST NOT change the Job's "job-state" attribute or + affect the Job. + + Note: There is no way to change any attributes on a Subscription + Object, except the "notify-lease-duration" attribute (using the + Renew-Subscription operation). In order to change other attributes, + a client performs a Subscription Creation Operation and Cancel- + Subscription operation on the old Subscription Object. If the client + + + +Herriot & Hastings Standards Track [Page 68] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + wants to avoid missing Event Notifications, it performs the + Subscription Creation Operation first. If this order would create + too many Subscription Objects on the Printer, the client reverses the + order. + + Access Rights: The authenticated user (see [RFC2911] section 8.3) + performing this operation MUST (1) be the owner of the Subscription + Object, (2) have Operator or Administrator access rights for the + Printer (see [RFC2911] sections 1 and 8.5), or (3) be otherwise + authorized by the Printer's administrator-configured security policy + to cancel the target Subscription Object. Otherwise, the Printer + MUST reject the operation and return: the 'client-error-forbidden', + 'client-error-not-authenticated', or 'client-error-not-authorized' + status code as appropriate. + +11.2.7.1. Cancel-Subscription Request + + The following groups of attributes are part of the Cancel- + Subscription Request: + + Group 1: Operation Attributes + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.1. + + Target: + The "printer-uri" attribute which defines the target for this + operation as described in [RFC2911] section 3.1.5. + + Requesting User Name: + The "requesting-user-name" attribute SHOULD be supplied by the + client as described in [RFC2911] section 8.3. + +11.2.7.1.1. "notify-subscription-id" (integer (1:MAX)) + + The client MUST supply this attribute. The Printer MUST support this + attribute. This attribute specifies the Subscription Object that the + Printer MUST cancel. If the client omits this attribute, the Printer + MUST reject this request with the 'client-error-bad-request' status + code. + + + + + + + + + + +Herriot & Hastings Standards Track [Page 69] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +11.2.7.2. Cancel-Subscription Response + + The Printer returns the following sets of attributes as part of the + Cancel-Subscription Response: + + Group 1: Operation Attributes + + Status Message: + Same as [RFC2911]. + + The following are some of the status codes returned (see + [RFC2911]: + + successful-ok: The operation successfully canceled + (deleted) the Subscription Object. + + client-error-not-found: The operation failed because the + "notify-subscription-id" Operation attribute identified a + non-existent Subscription Object. + + Natural Language and Character Set: + The "attributes-charset" and "attributes-natural-language" + attributes as described in [RFC2911] section 3.1.4.2. The + "attributes-natural-language" MAY be the natural language of the + Subscription Object, rather than the one requested. + + Group 2: Unsupported Attributes + + See [RFC2911] section 3.1.7 for details on returning Unsupported + Attributes. + +12. Status Codes + + The following status codes are defined as extensions for Notification + and are returned as the value of the "status-code" parameter in the + Operation Attributes Group of a response (see [RFC2911] section + 3.1.6.1). Operations in this document can also return the status + codes defined in section 13 of [RFC2911]. The 'successful-ok' status + code is an example of such a status code. + +12.1. successful-ok-ignored-subscriptions (0x0003) + + The Subscription Creation Operation was unable to create all + requested Subscription Objects. + + For a Create-Job-Subscriptions or Create-Printer-Subscriptions + operation, this status code means that the Printer created one or + + + + +Herriot & Hastings Standards Track [Page 70] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + more Subscription Objects, but not all requested Subscription + Objects. + + For a Job Creation operation, this status code means that the Printer + created the Job along with zero or more Subscription Objects. The + Printer returns this status code even if other job attributes are + unsupported or in conflict. That is, if an IPP Printer finds a + warning that would allow it to return 'successful-ok-ignored- + subscriptions' and either 'successful-ok-ignored-or-substituted- + attributes' and/or 'successful-ok-conflicting-attributes', it MUST + return 'successful-ok-ignored-subscriptions'. + +12.2. client-error-ignored-all-subscriptions (0x0414) + + This status code is the same as 'successful-ok-ignored-subscriptions' + except that only the Create-Job-Subscriptions and Create-Printer- + Subscriptions operation return it. They return this status code only + when the Printer creates zero Subscription Objects. + +13. Status Codes in Subscription Attributes Groups + + This section contains values of the "notify-status-code" (type2 enum) + attribute that the Printer returns in a Subscription Attributes Group + in a response when the corresponding Subscription Object: + + 1. is not created or + + 2. is created and some of the client-supplied attributes are not + supported. + + The following sections are ordered in decreasing order of importance + of the status-codes. + +13.1. client-error-uri-scheme-not-supported (0x040C) + + This status code is defined in [RFC2911]. This document extends its + meaning and allows it to be in a Subscription Attributes Group of a + response. + + The scheme of the client-supplied URI in a "notify-recipient-uri" + Subscription Template Attribute in a Subscription Creation Operation + is not supported. See section 5.3.1. + +13.2. client-error-attributes-or-values-not-supported (0x040B) + + This status code is defined in [RFC2911]. This document extends its + meaning and allows it to be in a Subscription Attributes Group of a + response. + + + +Herriot & Hastings Standards Track [Page 71] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + The method of the client-supplied keyword in a "notify-pull-method" + Subscription Template Attribute in a Subscription Creation Operation + is not supported. See section 5.3.2. + +13.3. client-error-too-many-subscriptions (0x0415) + + The number of Subscription Objects supported by the Printer would be + exceeded if this Subscription Object were created (see section 5.2). + +13.4. successful-ok-too-many-events (0x0005) + + The client supplied more Events in the "notify-events" operation + attribute of a Subscription Creation Operation than the Printer + supports, as indicated in its "notify-max-events-supported" Printer + attribute (see section 5.3.3). + +13.5. successful-ok-ignored-or-substituted-attributes (0x0001) + + This status code is defined in [RFC2911]. This document extends its + meaning to include unsupported Subscription Template Attributes and + it can appear in a Subscription Attributes Group. + +14. Encodings of Additional Attribute Tags + + This section assigns values to two attributes tags as extensions to + the encoding defined in [RFC2910]). + + The "subscription-attributes-tag" delimits Subscription Template + Attributes Groups in requests and Subscription Attributes Groups in + responses. + + The "event-notification-attributes-tag" delimits Event Notifications + in Delivery Methods that use an IPP-like encoding. + + The following table specifies the values for the delimiter tags: + + Tag Value (Hex) Meaning + + 0x06 "subscription-attributes-tag" + 0x07 "event-notification-attributes-tag" + +15. Conformance Requirements + + It is OPTIONAL for IPP clients and Printers to implement this Event + Notification specification. + + + + + + +Herriot & Hastings Standards Track [Page 72] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +15.1. Conformance requirements for clients + + If this Event Notification specification is implemented by a client, + the client MUST support the 'ippget' Pull Delivery Method and meet + the conformance requirements as defined in [RFC3996] for clients. A + client MAY support additional Delivery Methods. + +15.2. Conformance requirements for Printers + + If this Event Notification specification is implemented by a Printer, + the Printer MUST: + + - meet the Conformance Requirements detailed in section 5 of + [RFC2911]. + + - support the Subscription Template Attributes Group in requests and + the Subscription Attributes Group in responses. + + - support all of the following attributes: + + a. REQUIRED Subscription Object attributes in section 5. + b. REQUIRED Printer Description object attributes in section 6. + c. REQUIRED attributes in Event Notification content in section 8. + + - support the 'ippget' Pull Delivery Method and meet the conformance + requirements as defined in [RFC3996] for Printers. The Printer + MAY support additional Push and Pull Delivery Methods. + + - deliver Event Notifications that conform to the requirements of + section 9 and the requirements of the Delivery Method Document for + each supported Delivery Method (the conformance requirements for + Delivery Method Documents is specified in section 10). + + - for all of the Job Creation Operations that the Printer supports, + MUST support the REQUIRED extensions for notification defined in + section 11.1.3. + + - meet the conformance requirements for operations as described in + Table 16 and meet the requirements for Printers as specified in + the indicated sub-sections of section 11: + + + + + + + + + + + +Herriot & Hastings Standards Track [Page 73] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Table 16 - Printer Conformance Requirements for Operations + + Operation Printer + Conformance + Requirements + + Create-Printer-Subscriptions (section 11.1.2) REQUIRED + Create-Job-Subscriptions (section 11.1.1) OPTIONAL + Get-Subscription-Attributes (section 11.2.3) REQUIRED + Get-Subscriptions (section 11.2.5) REQUIRED + Renew-Subscription (section 11.2.6) REQUIRED + Cancel-Subscription (section 11.2.7) REQUIRED + +16. Model for Notification with Cascading Printers (Informative) + + With this model (see Figure 2 below), there is an intervening Print + server between the human user and the output-device. So the system + effectively has two Printer objects. There are two cases to + consider. + + 1. When the Printer 1 (in the server) generates Events, the system + behaves like the client and Printer in Figure 1. In this case, + Printer 1 delivers Event Notifications that are shown as Event + Notifications (A) of Figure 2. + + 2. When the Printer 2 (in the output-device) generates Events, there + are two possible system configurations: + + a) Printer 1 forwards the client-supplied Subscription Creation + Operations to the downstream Printer 2 and lets Printer 2 + deliver the Event Notifications directly to the Notification + Recipients supplied by the Client (Event Notifications(C) in + the diagram). + + b) Printer 1 performs the client-supplied Subscription Creation + Operations and also forwards the Subscription Creation + Operations to Printer 2 with the Notification Recipient changed + to be the Printer 1. When an Event occurs in Printer 2, + Printer 2 delivers the Event Notification (B) to Notification + Recipient of Printer 1, which relays the received Event + Notification (B) to the client-supplied Notification Recipient + (as Event Notifications(A) in the diagram). Note, when a + client performs a Subscription Creation Operation, Printer 1 + need not forward the Subscription Creation Operation to Printer + 2 if it would create a duplicate Subscription Object on Printer + 2. + + + + + +Herriot & Hastings Standards Track [Page 74] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Note: when Printer 1 is forwarding Subscription Creation Operations + to Printer 2, it may request Printer 2 to create additional + Subscription Objects (called "piggy-backing"). Piggy-backing is + useful when: + + - Device A is configured to accept (IPP or non-IPP) requests from + other servers. + + - Server S wants to receive Job Events that the client didn't + request and Server S wants these Events for jobs it submits and + not for other jobs. + + server S device A + +------------+ +------------+ + | | | | + +--------+ Subscription | ###########| | ###########| + | client |--Creation ----># Printer #| Subscription | # Printer #| + +--------+ Operation | # Object 1#|---Creation------|># Object 2#| + | ###|#######| Operation | ####|#|####| + +----|---^---+ +-----|-|----+ + +--------+ Event | | | | + |Notific-|<-Notifications(A)-+ +-- Event Notifications(B)--+ | + |ation Re|<-------------Event Notifications(C)-----------------+ + |cipient | + +--------+ + + Figure 2 - Model for Notification with Cascading Printers + +17. Distributed Model for Notification (Informative) + + A Printer implementation could use some other remote notification + server to provide some or most of the service. For example, the + remote notification server could deliver Event Notifications using + Delivery Methods that are not directly supported by the output device + or Printer object. Or, the remote notification server could store + Subscription Objects (passed to it from the output device in response + to Subscription Creation requests), accept Events, format the Event + Notification in the natural language of the Notification Recipient, + and deliver the Event Notifications to the Notification Recipient(s). + + Figure 3 shows this partitioning. The interface between the output + device (or Printer object) and the remote notification server is + outside the scope of this document and is intended to be transparent + to the client and this document. + + + + + + + +Herriot & Hastings Standards Track [Page 75] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + *********************** + * + * Printer in combination + * with the distributed + * Notification Server) + * + * output device or server + * +---------------+ + PDA, desktop, or server * + ########### + + +--------+ * | # # | + | client |---IPP Subscription--------># Printer # | + +--------+ Creation operation * | # Object # | + * | #####|##### | + * +-------|-------+ + * | Subscriptions + * | OR Event + +------------+ * | Notifications + |Notification| IPP-defined * +------v--------+ + |Recipient |<--Event Notifications---| Notification | + +------------+ * | Server | + * +---------------+ + * + ************************* + *** = Implementation configuration opaque boundary + + Figure 3 - Opaque Use of a Notification Server Transparent to the + Client + +18. Extended Notification Recipient (Informative) + + The model allows for an extended Notification Recipient that is + itself a notification server that forwards each Event Notification to + another recipient (called the Ultimate Notification Recipient in this + section). The Delivery Method to the Ultimate Recipient is probably + different from the Delivery Method used by the Printer to the + extended Notification Recipient. + + This extended Notification Recipient is transparent to the Printer + but not to the client. + + When a client performs a Subscription Creation Operation, it + specifies the extended Notification Recipient as it would any + Notification Recipient. In addition, the client specifies the + Ultimate Notification Recipient in the Subscription Creation + Operation in a manner specified by the extended Notification + Recipient. Typically, it is either some bytes in the value of + "notify-user-data" or some additional parameter in the value of + "notify-recipient-uri". The client also subscribes directly with the + + + +Herriot & Hastings Standards Track [Page 76] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + extended Notification Recipient (by means outside this document), + since it is a notification server in its own right. + + The IPP Printer treats the extended Notification Recipient like any + other Notification Recipient and the IPP Printer is not aware of the + forwarding. The Delivery Method that the extended Notification + Recipient uses for delivering the Event Notification to the Ultimate + Notification Recipient is beyond the scope of this document and is + transparent to the IPP Printer. + + Examples of this extended Notification Recipient are paging, + immediate messaging services, general notification services, and NOS + vendors' infrastructure. Figure 4 shows this approach. + + PDA, desktop, or server server or output device + +---------------+ + +--------+ | ########### | + | client |---Subscription Creation -----------># Printer # | + +--------+ Operation | # Object # | + | #####|##### | + +------------+ +------------+ IPP-defined +-------|-------+ + |Ultimate | any |Notification|<--Event Notifications----+ + |Notification|<----|Recipient | + |Recipient | +------------+ + +------------+ (Notification Server) + + Figure 4 - Use of an Extended Notification Recipient transparent to + the Printer + +19. Object Model for Notification (Normative) + + This section describes the Notification object model that adds a + Subscription Object which together with the Job and Printer object + provide the complete Notification semantics. + + + + + + + + + + + + + + + + + +Herriot & Hastings Standards Track [Page 77] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + The object relationships can be seen pictorially as: + + Subscription Objects (Per-Printer Subscriptions) Printer object + +----+ +------------+ + | s1 |<--------------------------------------------->| | + +----++ | | + | s2 |<-------------------------------------------->| p1 | + +----++ | | + | s3 |<------------------------------------------->| | + +----+ +------------+ + Job objects + +---------+ + | | + +----+ | j1 | + | s4 |<------->| | + +----+ | | + | | s4 is a Per-Job Subscription Object + ++--------++ + | | + +----+ | j2 | + | s5 |<------>| | + +----++ | | + | s6 |<----->| | s5 and s6 are Per-Job Subscription + +----+ ++--------++ Objects + | | + | j3 | + | | + | | <----> indicates association + +---------+ + + Figure 5 - Object Model for Notification + + s1, s2, and s3 are Per-Printer Subscription Objects and can identify + Printer and/or Job Events. + + s4, s5, and s6 are Per-Job Subscription Objects and can identify + Printer and/or Job Events. + +19.1. Object relationships + + This sub-section defines the object relationships between the + Printer, Job, and Subscription Objects by example. Whether Per- + Printer Subscription Objects are actually contained in a Printer + object or are just bi-directionally associated with them in some way + is IMPLEMENTATION DEPENDENT and is transparent to the client. + Similarly, whether Per-Job Subscription Objects are actually + + + + + +Herriot & Hastings Standards Track [Page 78] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + contained in a Job object or are just bi-directionally associated + with them in some way is IMPLEMENTATION DEPENDENT and is transparent + to the client. The object relationships are defined as follows: + +19.2. Printer Object and Per-Printer Subscription Objects + + 1. The Printer object contains (is associated with) zero or more + Per-Printer Subscription Objects (p1 contains s1-s3 Per-Printer + Subscription Objects). + + 2. Each Per-Printer Subscription Object (s1, s2, and s3) is contained + in (or is associated with) exactly one Printer object (p1). + +19.3. Job Object and Per-Job Subscription Objects + + 1. A Job object (j1, j2, j3) is associated with zero or more Per-Job + Subscription Objects (s4-s6). Job j1 is associated with Per-Job + Subscription Object s4, Job j2 is associated with Per-Job + Subscription Objects s5 and s6, and Job j3 is not associated with + any Per-Job Subscription Object. + + 2. Each Per-Job Subscription Object is associated with exactly one + Job object. + +20. Per-Job versus Per-Printer Subscription Objects (Normative) + + Per-Job and Per-Printer Subscription Objects are quite similar. + Either type of Subscription Object can subscribe to Job Events, + Printer Events, or both. Both types of Subscription Objects can be + queried using the Get-Subscriptions and Get-Subscription-Attributes + operations and canceled using the Cancel-Subscription operation. + Both types of Subscription Objects create Subscription Objects which + have the same Subscription Object attributes defined. However, there + are some semantic differences between Per-Job Subscription Objects + and Per-Printer Subscription Objects. A Per-Job Subscription Object + is established by the client when submitting a job and after creating + the job using the Create-Job-Subscriptions operation by specifying + the "job-id" of the Job with the "notify-job-id" attribute. A Per- + Printer Subscription Object is established between a client and a + Printer using the Create-Printer-Subscriptions operation. Some + specific differences are: + + 1. A client usually creates one or more Per-Job Subscription Objects + as part of the Job Creation operations (Create-Job, Print-Job, and + Print-URI), rather than using the OPTIONAL Create-Job- + Subscriptions operation, especially since Printer implementations + NEED NOT support the Create-Job-Subscriptions operation, since it + is OPTIONAL. + + + +Herriot & Hastings Standards Track [Page 79] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 2. For Per-Job Subscription Objects, the Subscription Object is only + valid while the job is "not-complete" (see sections 5.4.3) while + for the Per-Printer Subscription Objects, the Subscription Object + is valid until the time (in seconds) that the Printer returned in + the "notify-lease-expiration-time" operation attribute. + + 3. Job Events in a Per-Job Subscription Object apply only to "one + job" (the Job created by the Job Creation operation or references + by the Create-Job-Subscriptions operation) while Job Events in a + Per-Printer Subscription Object apply to ALL jobs contained in the + IPP Printer. + +21. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119 , March 1997. + + [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, + "Uniform Resource Identifiers (URI): Generic + Syntax", RFC 2396, August 1998. + + [RFC2717] Petke, R. and I. King, "Registration Procedures for + URL Scheme Names", RFC 2717, November 1999. + + [RFC2910] Herriot, R., Butler, S., Moore, P., and R. Turner, + "Internet Printing Protocol/1.1: Encoding and + Transport", RFC 2910, September 2000. + + [RFC2911] deBry, R., Hastings, T., Herriot, R., Isaacson, S., + and P. Powell, "Internet Printing Protocol/1.1: + Model and Semantics", RFC 2911, September 2000. + + [RFC3381] Hastings, T., Lewis, H., and R. Bergman, "IPP: Job + Progress Attributes", RFC 3381, September 2002. + + [RFC3996] Herriot, R., Hastings, T., and H. Lewis, "Internet + Printing Protocol (IPP): The 'ippget' Delivery + Method for Event Notifications", RFC 3996, March + 2005. + +22. Informative References + + [IANA-CON] Narten, T. and H. Alvestrand, "Guidelines for + Writing an IANA Considerations Section in RFCs", + BCP 26, RFC 2434, October 1998. + + + + + + +Herriot & Hastings Standards Track [Page 80] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + [RFC2565] Herriot, R., Butler, S., Moore, P., and R. Turner, + "Internet Printing Protocol/1.0: Encoding and + Transport", RFC 2565, April 1999. + + [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., + and P. Powell, "Internet Printing Protocol/1.0: + Model and Semantics", RFC 2566, April 1999. + + [RFC2567] Wright, D., "Design Goals for an Internet Printing + Protocol", RFC 2567, April 1999. + + [RFC2568] Zilles, S., "Rationale for the Structure and Model + and Protocol for the Internet Printing Protocol", + RFC 2568, April 1999. + + [RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J. + Martin, "Mapping between LPD and IPP Protocols", + RFC 2569, April 1999. + + [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, + "Hypertext Transfer Protocol - HTTP/1.1", RFC 2616, + June 1999. + + [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., + and H. Holst, "Internet Printing Protocol/1.1: + Implementer's Guide", RFC 3196, November 2001. + + [RFC3997] Hastings, T., Editor, deBry, R., and H. Lewis, + "Internet Printing Protocol (IPP): Requirements for + IPP Notifications", RFC 3997, March 2005. + +23. IANA Considerations + + This section contains the registration information that IANA added to + the IPP Registry according to the procedures defined in RFC 2911 + [RFC2911] section 6 to cover the definitions in this document. In + addition, this section defines how Events and Delivery Methods will + be registered when they are defined in other documents. The + resulting registrations have been published in the + http://www.iana.org/assignments/ipp-registrations registry. + + + + + + + + + + +Herriot & Hastings Standards Track [Page 81] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +23.1. Attribute Registrations + + The following table lists all the attributes defined in this + document. These have been registered according to the procedures in + RFC 2911 [RFC2911] section 6.2. + + Subscription Template attributes: Reference Section + --------------------------------- --------- ------- + notify-attributes (1setOf type2 keyword) [RFC3995] 5.3.4 + notify-attributes-supported (1setOf type2 keyword) + [RFC3995] 5.3.4.1 + notify-charset (charset) [RFC3995] 5.3.6 + notify-events (1setOf type2 keyword) [RFC3995] 5.3.3 + notify-events-default (1setOf type2 keyword) [RFC3995] 5.3.3.1 + notify-events-supported (1setOf type2 keyword) [RFC3995] 5.3.3.2 + notify-lease-duration (integer(0:67108863)) [RFC3995] 5.3.8 + notify-lease-duration-default (integer(0:67108863)) + [RFC3995] 5.3.8.1 + notify-lease-duration-supported (1setOf (integer(0: 67108863) | + rangeOfInteger(0:67108863))) [RFC3995] 5.3.8.2 + notify-max-events-supported (integer(2:MAX)) [RFC3995] 5.3.3.3 + notify-natural-language (naturalLanguage) [RFC3995] 5.3.7 + notify-pull-method (type2 keyword) [RFC3995] 5.3.2 + notify-pull-method-supported (1setOf type2 keyword) + [RFC3995] 5.3.2.1 + notify-recipient-uri (uri) [RFC3995] 5.3.1 + notify-schemes-supported (1setOf uriScheme) [RFC3995] 5.3.1.1 + notify-time-interval (integer(0:MAX)) [RFC3995] 5.3.9 + notify-user-data (octetString(63)) [RFC3995] 5.3.5 + + Subscription Description Attributes: + notify-job-id (integer(1:MAX)) [RFC3995] 5.4.6 + notify-lease-expiration-time (integer(0:MAX)) [RFC3995] 5.4.3 + notify-printer-up-time (integer(1:MAX)) [RFC3995] 5.4.4 + notify-printer-uri (uri) [RFC3995] 5.4.5 + notify-sequence-number (integer (0:MAX)) [RFC3995] 5.4.2 + notify-subscriber-user-name (name(MAX)) [RFC3995] 5.4.7 + notify-subscription-id (integer (1:MAX)) [RFC3995] 5.4.1 + + Printer Description Attributes: + printer-state-change-date-time (dateTime) [RFC3995] 6.2 + printer-state-change-time (integer(1:MAX)) [RFC3995] 6.1 + + Attributes Only in Event Notifications + notify-subscribed-event (type2 keyword) [RFC3995] 8.1 + notify-text (text(MAX)) [RFC3995] 8.2 + + + + + +Herriot & Hastings Standards Track [Page 82] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +23.2. Additional Enum Attribute Value Registrations within the IPP + registry + + The following table lists all the new enum attribute values defined + in this document. These have been registered within the IPP registry + according to the procedures in RFC 2911 [RFC2911] section 6.1. + + Attribute + Value Name Reference Section + ------ ----------------------------- --------- ------- + operations-supported (1setOf type2 enum) [RFC2911] 4.4.15 + 0x0016 Create-Printer-Subscriptions [RFC3995] 7.1 + 0x0017 Create-Job-Subscriptions [RFC3995] 7.1 + 0x0018 Get-Subscription-Attributes [RFC3995] 7.1 + 0x0019 Get-Subscriptions [RFC3995] 7.1 + 0x001A Renew-Subscription [RFC3995] 7.1 + 0x001B Cancel-Subscription [RFC3995] 7.1 + +23.3. Operation Registrations + + The following table lists all of the operations defined in this + document. These have been registered according to the procedures in + RFC 2911 [RFC2911] section 6.4. + + Operation Name Reference Section + --------------------------------- --------- ------- + Cancel-Subscription [RFC3995] 11.2.7 + Create-Job - Extensions [RFC3995] 11.1.3 + Create-Job-Subscriptions [RFC3995] 11.1.1 + Create-Printer-Subscriptions [RFC3995] 11.1.2 + Get-Printer-Attributes - Extensions [RFC3995] 11.2.3 + Get-Subscription-Attributes [RFC3995] 11.2.4 + Get-Subscriptions [RFC3995] 11.2.5 + Print-Job - Extensions [RFC3995] 11.1.3 + Print-URI - Extensions [RFC3995] 11.1.3 + Renew-Subscription [RFC3995] 11.2.6 + Validate-Job Operation - Extensions [RFC3995] 11.2.2 + +23.4. Status code Registrations + + The following table lists all the status codes defined in this + document. These have been registered according to the procedures in + RFC 2911 [RFC2911] section 6.6. + + + + + + + + +Herriot & Hastings Standards Track [Page 83] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Value Status Code Name Reference Section + ----- ---------------------------- --------- ------- + 0x0000:0x00FF - Successful: + 0x0003 successful-ok-ignored-subscriptions [RFC3995] 12.1 + 0x0005 successful-ok-too-many-events [RFC3995] 13.4 + + 0x0400:0x04FF - Client Error: + 0x0414 client-error-ignored-all-subscriptions [RFC3995] 12.2 + 0x0415 client-error-too-many-subscriptions [RFC3995] 13.3 + +23.5. Attribute Group tag Registrations + + The following table lists all the attribute group tags defined in + this document. These have been registered according to the + procedures in RFC 2911 [RFC2911] section 6.5. + + Value Attribute Group Tag Name Reference Section + ----- -------------------------------- -------- ------- + 0x06 subscription-attributes-tag [RFC3995] 14 + 0x07 event-notification-attributes-tag [RFC3995] 14 + +23.6. Registration of Events + + The following table lists all the Events defined in this document as + type2 keywords to be used with the "notify-events", "notify-events- + default", and "notify-events-supported" Subscription Template + attributes (see section 5.3.3)). Rather than creating a separate + section in the IPP Registry for Events, these event keywords have + been registered according to the procedures of [RFC2911] section 7.1 + as additional keyword attribute values for use with the "notify- + events" Subscription Template attribute (see section 5.3.3), i.e., + registered as keyword values for the "notify-events", "notify- + events-default", and "notify-events-supported" attributes: + + Attribute (attribute syntax) + Value Reference Section + --------------------- --------- ------- + notify-events (1setOf type2 keyword) [RFC3995] 5.3.3 + notify-events-default (1setOf type2 keyword) [RFC3995] 5.3.3.1 + notify-events-supported (1setOf type2 keyword) [RFC3995] 5.3.3.2 + notify-subscribed-event (type2 keyword) [RFC3995] 8.1 + No Events: + none [RFC3995] 5.3.3.4.1 + Printer Events: + printer-state-changed [RFC3995] 5.3.3.4.2 + printer-restarted [RFC3995] 5.3.3.4.2 + printer-shutdown [RFC3995] 5.3.3.4.2 + printer-stopped [RFC3995] 5.3.3.4.2 + + + +Herriot & Hastings Standards Track [Page 84] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + printer-config-changed [RFC3995] 5.3.3.4.2 + printer-media-changed [RFC3995] 5.3.3.4.2 + printer-finishings-changed [RFC3995] 5.3.3.4.2 + printer-queue-order-changed [RFC3995] 5.3.3.4.2 + Job Events: + job-state-changed [RFC3995] 5.3.3.4.3 + job-created [RFC3995] 5.3.3.4.3 + job-completed [RFC3995] 5.3.3.4.3 + job-stopped [RFC3995] 5.3.3.4.3 + job-config-changed [RFC3995] 5.3.3.4.3 + job-progress [RFC3995] 5.3.3.4.3 + +23.7. Registration of Event Notification Delivery Methods + + This section describes the requirements and procedures for + registration and publication of Event Notification Delivery Methods + and for the submission of such proposals. + +23.7.1. Requirements for Registration of Event Notification Delivery + Methods + + Registered IPP Event Notification Delivery Methods are expected to + follow a number of requirements described below. + +23.7.1.1. Required Characteristics + + A Delivery Method Document MUST either (1) contain all of the + semantics of the Delivery Method or (2) contain the IPP Delivery + Method registration requirements and a profile of some other protocol + that in combination is the Delivery Method (e.g., mailto). The + Delivery Method Document (and any documents it requires) MUST define + either (1) a URL for a Push Delivery Method that the meets the + requirements of [RFC2717]. or (2) a keyword for a Pull Delivery + method. + + IPP Event Notification Delivery Method Documents MUST meet the + requirements of this document (see sections 9 and 10). + + In addition, a Delivery Method Document MUST contain the following + information: + + Type of registration: IPP Event Notification Delivery Method + Name of this delivery method: + Proposed URL scheme name of this Push Delivery Method or the + keyword name of this Pull Delivery Method: + Name of proposer: + Address of proposer: + + + + +Herriot & Hastings Standards Track [Page 85] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Email address of proposer: + Is this delivery method REQUIRED or OPTIONAL for conformance to + the IPP Event Notification and Subscriptions document: + Is this delivery method defining Machine Consumable and/or Human + Consumable content: + +23.7.1.2. Naming Requirements + + Exactly one (URL scheme or keyword) name MUST be assigned to each + Delivery Method. + + Each assigned name MUST uniquely identify a single Delivery Method. + All Push Delivery Method names MUST conform to the rules for URL + scheme names, according to [RFC2396] and [RFC2717] for schemes in the + IETF tree. All Pull Delivery Method names MUST conform to the rules + for keywords according to [RFC2911]. + +23.7.1.3. Functionality Requirements + + Delivery Methods MUST function as a protocol that is capable of + delivering (push or pull) IPP Event Notifications to Notification + Recipients. + +23.7.1.4. Usage and Implementation Requirements + + Use of a large number of Delivery Methods may hamper + interoperability. However, the use of a large number of undocumented + and/or unlabeled Delivery Methods hampers interoperability even more. + + A Delivery Method should therefore be registered ONLY if it adds + significant functionality that is valuable to a large community, OR + if it documents existing practice in a large community. Note that + Delivery Methods registered for the second reason should be + explicitly marked as being of limited or specialized use and should + only be used with prior bilateral agreement. + +23.7.1.5. Publication Requirements + + Delivery Method Documents MUST be published in a standards track, + informational, or experimental RFCs. + +23.7.2. Registration Procedure + + The IPP WG is developing a small number of Delivery Methods which are + intended to be published as standards track RFCs. However, some + parties may wish to register additional Delivery Methods in the + future. This section describes the procedures for these additional + Delivery Methods. + + + +Herriot & Hastings Standards Track [Page 86] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +23.7.2.1. Present the proposal to the Community + + First the Delivery Method Document MUST be an Internet-Draft with a + target category of standards track, informational, or experimental. + The same MUST be true for any documents that it references. + + Deliver the proposed Delivery Method Document proposal to the + "ipp@pwg.org" mailing list. This mailing list has been established + by [RFC2911] for reviewing proposed registrations and discussing + other IPP matters. Proposed Delivery Method Documents are not + formally registered and MUST NOT be used until approved. + + The intent of the public posting is to solicit comments and feedback + on the definition and suitability of the Delivery Method and the name + chosen for it over a four week period. + +23.7.2.2. Delivery Method Reviewer + + The Delivery Method Reviewer is the same person who has been + appointed by the IETF Application Area Director(s) as the IPP + Designated Expert according to [RFC2911] and [IANA-CON]. When the + four week period is over and the IPP Designated Expert is convinced + that consensus has been achieved, the IPP Designated Expert either + approves the request for registration or rejects it. Rejection may + occur because of significant objections raised on the list or + objections raised externally. + + Decisions made by the Reviewer must be posted to the ipp@pwg.org + mailing list within 14 days. Decisions made by the Reviewer may be + appealed to the IESG. + +23.7.2.3. IANA Registration + + Provided that the Delivery Method registration proposal has either + passed review or has been successfully appealed to the IESG, the IANA + will be notified by the delivery method reviewer and asked to + register the Delivery Method and make it available to the community. + +23.7.3. Delivery Method Document Registrations + + Each Push Delivery Method Document defines a URI scheme. Such a URI + scheme is used in a URI value of the "notification-recipient" (uri) + Subscription Template attribute (see section 5.3.1) and the uriScheme + value of the "notify-schemes-supported" (1setOf uriScheme 5.3.1.1) + Printer attribute(see section ). Rather than creating a separate + section in the IPP Registry for Delivery Methods, Push Delivery + Methods will be registered as an additional value of the "notify- + schemes-supported" Printer attribute. These uriScheme values will be + + + +Herriot & Hastings Standards Track [Page 87] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + registered according to the procedures of [RFC2911] section 7.1 for + additional attribute values. Therefore, the IPP Registry entry for a + Push Delivery Method will be of the form: + + Attribute + Value Ref. Section + --------------------- -------- ------- + notify-schemes-supported (1setOf uriScheme) [RFC3995] 5.3.1.1 + <scheme name> RFC xxxx m.n + + Each Pull Delivery Method Document defines a keyword method which is + registered as an additional value of the "notify-pull-method" and + "notify-pull-method-supported" Printer attributes. These keyword + values will be registered according to the procedures of [RFC2911] + section 7.1 for additional attribute values. Therefore, the IPP + Registry entry for a Pull Delivery Method will be of the form: + + Attribute + Value Ref. Section + --------------------- -------- ------- + notify-pull-method (type2 keyword) [RFC3995] 5.3.2 + notify-pull-method-supported (1setOf type2 keyword) + [RFC3995] 5.3.2.1 + <method keyword name> RFC xxxx m.n + +23.7.4. Registration Template + + To: ipp@pwg.org + Subject: Registration of a new Delivery Method + + Delivery Method name: + + (All Push Delivery Method names must be suitable for use as the value + of a URL scheme in the IETF tree and all Pull Delivery Method names + must be suitable IPP keywords according to [RFC2911]) + + Published specification(s): + + (A specification for the Delivery Method must be openly available + that accurately describes what is being registered.) + + Person & email address to contact for further information: + + + + + + + + + +Herriot & Hastings Standards Track [Page 88] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +24. Internationalization Considerations + + This IPP Notification specification continues support for the + internationalization of [RFC2911] of attributes containing text + strings and names. Allowing a Subscribing Client to specify a + different natural language and charset for each Subscription Object + increases the internationalization support. + + The Printer MUST be able to localize the content of Human Consumable + Event Notifications and to localize the value of "notify-text" + attribute in Machine Consumable Event Notifications that it delivers + to Notification Recipients. For localization, the Printer MUST use + the value of the "notify-charset" attribute and the "notify-natural- + language" attribute in the Subscription Object supplied by the + Subscribing Client. + +25. Security Considerations + + Clients submitting Notification requests to the IPP Printer have the + same security issues as submitting an IPP/1.1 print job request (see + [RFC2911] section 3.2.1 and section 8). The same mechanisms used by + IPP/1.1 can therefore be used by the client Notification submission. + Operations that require authentication can use the HTTP + authentication. Operations that require privacy can use the HTTP/TLS + privacy. As with IPP/1.1 Print Job Objects, if there is no security + on Subscription Objects, sequential assignment of subscription-ids + exposes the system to a passive traffic monitoring threat. + +25.1. Client access rights + + The Subscription Object access control model is the same as the + access control model for Job objects. The client MUST have the + following access rights for the indicated Subscription operations: + + 1. Create-Job-Subscriptions (see section 11.1.1): A Per-Job + Subscription object is associated with a Job. To create Per-Job + Subscription Objects, the authenticated user (see [RFC2911] + section 8.3) performing this operation MUST (1) be the job owner, + (2) have Operator or Administrator access rights for this Printer + (see [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized + by the Printer's administrator-configured security policy to + create Per-Job Subscription Objects for the target job. + + 2. Create-Printer-Subscriptions (see section 11.1.2): A Per-Printer + Subscription object is associated with the Printer. To create + Per-Printer Subscription Objects, the authenticated user (see + [RFC2911] section 8.3) performing this operation MUST (1) have + Operator or Administrator access rights for this Printer (see + + + +Herriot & Hastings Standards Track [Page 89] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + [RFC2911] sections 1 and 8.5) or (2) be otherwise authorized by + the Printer's administrator-configured security policy to create + Per-Printer Subscription Objects for this Printer. + + 3. Get-Subscription-Attributes (see section 11.2.4): The access + control model for this operation is the same as that of the Get- + Job-Attributes operation (see [RFC2911] section 3.3.4). The + primary difference is that a Get-Subscription-Attributes operation + is directed at a Subscription Object rather than at a Job object, + and a returned attribute group contains Subscription Object + attributes rather than Job object attributes. To query the + specified Subscription Object, the authenticated user (see + [RFC2911] section 8.3) performing this operation MUST (1) be the + Subscription Object owner, (2) have Operator or Administrator + access rights for this Printer (see [RFC2911] sections 1 and 8.5), + or (3) be otherwise authorized by the Printer's administrator- + configured security policy to query the Subscription Object for + the target job. Furthermore, the Printer's security policy MAY + limit which attributes are returned, in a manner similar to the + Get-Job-Attributes operation (see [RFC2911] end of section + 3.3.4.2). + + 4. Get-Subscriptions (see section 11.2.5): The access control model + for this operation is the same as that of the Get-Jobs operation + (see [RFC2911] section 3.2.6). The primary difference is that the + operation is directed at Subscription Objects rather than at Job + objects, and the returned attribute groups contain Subscription + Object attributes rather than Job object attributes. To query + Per-Job Subscription Objects of the specified job (client supplied + the "notify-job-id" operation attribute - see section 11.2.5.1.1), + the authenticated user (see [RFC2911] section 8.3) performing this + operation MUST (1) be the Subscription Object owner, (2) have + Operator or Administrator access rights for this Printer (see + [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized by + the Printer's administrator-configured security policy to query + the Subscription Object for the target job. To query Per-Printer + Subscription Objects of the Printer (client omits the "notify- + job-id" operation attribute - see section 11.2.5.1.1), the + authenticated user (see [RFC2911] section 8.3) performing this + operation MUST (1) have Operator or Administrator access rights + for this Printer (see [RFC2911] sections 1 and 8.5), or (2) be + otherwise authorized by the Printer's administrator-configured + security policy to query Per-Printer Subscription Objects for the + target Printer. Furthermore, the Printer's security policy MAY + limit which attributes are returned, in a manner similar to the + Get-Job-Attributes operation (see [RFC2911] end of section + 3.2.6.2). + + + + +Herriot & Hastings Standards Track [Page 90] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + 5. Renew-Subscriptions (see section 11.2.6): The authenticated user + (see [RFC2911] section 8.3) performing this operation MUST (1) be + the owner of the Per-Printer Subscription Object, (2) have + Operator or Administrator access rights for the Printer (see + [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized by + the Printer's administrator-configured security policy to renew + Per-Printer Subscription Objects for the target Printer + + 6. Cancel-Subscription (see section 11.2.7): The authenticated user + (see [RFC2911] section 8.3) performing this operation MUST (1) be + the owner of the Subscription Object, (2) have Operator or + Administrator access rights for the Printer (see [RFC2911] + sections 1 and 8.5), or (3) be otherwise authorized by the + Printer's administrator-configured security policy to cancel the + target Subscription Object. + + The standard security concerns (delivery to the right user, privacy + of content, tamper proof content) apply to each Delivery Method. + Some Delivery Methods are more secure than others. Each Delivery + Method Document MUST discuss its Security Considerations. + +25.2. Printer security threats + + Notification trap door: If a Printer supports the OPTIONAL "notify- + attributes" Subscription Template attribute (see section 5.3.4) where + the client can request that the Printer return any specified Job, + Printer, and Subscription object attributes, the Printer MUST apply + the same security policy to these requested attributes in the Get- + Notifications request as it does for the Get-Jobs, Get-Job- + Attributes, Get-Printer-Attributes, and Get-Subscription-Attributes + requests. + +25.3. Notification Recipient security threats + + Unwanted Events Notifications (spam): For any Push Delivery Method, + by far the biggest security concern is the abuse of notification: + delivering unwanted Event Notifications to third parties (i.e., + spam). The problem is made worse by notification addresses that may + be redistributed to multiple parties. There exist scenarios where + third party notification is used (see Scenario #2 and #3 in + [RFC3997]). Any fully secure solution would require active agreement + of all recipients before delivering anything. + + + + + + + + + +Herriot & Hastings Standards Track [Page 91] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + +26. Description of the base IPP documents (Informative) + + The base set of IPP documents includes: + + Design Goals for an Internet Printing Protocol [RFC2567] + Rationale for the Structure and Model and Protocol for the Internet + Printing Protocol [RFC2568] + Internet Printing Protocol/1.1: Model and Semantics [RFC2911] + Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] + Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] + Mapping between LPD and IPP Protocols [RFC2569] + + The "Design Goals for an Internet Printing Protocol" document takes a + broad look at distributed printing functionality, and it enumerates + real-life scenarios that help to clarify the features that need to be + included in a printing protocol for the Internet. It identifies + requirements for three types of users: end users, operators, and + administrators. It calls out a subset of end user requirements that + are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator + operations have been added to IPP/1.1 [RFC2911, RFC2910]. + + The "Rationale for the Structure and Model and Protocol for the + Internet Printing Protocol" document describes IPP from a high level + view, defines a roadmap for the various documents that form the suite + of IPP specification documents, and gives background and rationale + for the IETF IPP working group's major decisions. + + The "Internet Printing Protocol/1.1: Model and Semantics" document + describes a simplified model with abstract objects, their attributes, + and their operations. The model introduces a Printer and a Job. The + Job supports multiple documents per Job. The model document also + addresses how security, internationalization, and directory issues + are addressed. + + The "Internet Printing Protocol/1.1: Encoding and Transport" document + is a formal mapping of the abstract operations and attributes defined + in the model document onto HTTP/1.1 [RFC2616]. It also defines the + encoding rules for a new Internet MIME media type called + "application/ipp". This document also defines the rules for + transporting over HTTP a message body whose Content-Type is + "application/ipp". This document defines the 'ipp' scheme for + identifying IPP printers and jobs. + + The "Internet Printing Protocol/1.1: Implementer's Guide" document + gives insight and advice to implementers of IPP clients and IPP + objects. It is intended to help them understand IPP/1.1 and some of + the considerations that may assist them in the design of their client + and/or IPP object implementations. For example, a typical order of + + + +Herriot & Hastings Standards Track [Page 92] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + processing requests is given, including error checking. Motivation + for some of the specification decisions is also included. + + The "Mapping between LPD and IPP Protocols" document gives some + advice to implementers of gateways between IPP and LPD (Line Printer + Daemon) implementations. + +27. Contributors + + The following people made significant contributions to the design and + review of this specification: + + Scott A. Isaacson + Novell, Inc. + 122 E 1700 S + Provo, UT 84606 + + Phone: 801-861-7366 + Fax: 801-861-2517 + EMail: sisaacson@novell.com + + + Roger deBry + Utah Valley State College + Orem, UT 84058 + + Phone: 801-863-8848 + EMail: debryro@uvsc.edu + + + Jay Martin + Underscore Inc. + 9 Jacqueline St. + Hudson, NH 03051-5308 + + Phone: 603-889-7000 + Fax: 775-414-0245 + EMail: jkm@underscore.com + + + Michael Shepherd + Xerox Corporation + 800 Phillips Road MS 128-51E + Webster, NY 14450 + + Phone: 716-422-2338 + Fax: 716-265-8871 + EMail: mshepherd@usa.xerox.com + + + +Herriot & Hastings Standards Track [Page 93] + +RFC 3995 IPP: Event Notifications and Subscriptions March 2005 + + + Ron Bergman + Ricoh Printing Systems America + 1757 Tapo Canyon Road + Simi Valley, CA 93063-3394 + + Phone: 805-578-4421 + Fax: 805-578-4001 + EMail: ron.bergman@rpsa.ricoh.com + +Authors' Addresses + + Robert Herriot + Global Workflow Solutions + 706 Colorado Ave. + Palo Alto, CA 94303 + + Phone: 650-324-4000 + EMail: bob@herriot.com + + + Tom Hastings + Xerox Corporation + 701 S Aviation Blvd, ESAE 242 + El Segundo, CA 90245 + + Phone: 310-333-6413 + Fax: 310-333-6342 + EMail: hastings@cp10.es.xerox.com + + + + + + + + + + + + + + + + + + + + + + + +Herriot & Hastings Standards Track [Page 94] + +RFC 3995 IPP: Event Notifications and Subscriptions 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 & Hastings Standards Track [Page 95] + |