subsequent Get-Notifications Responses MUST NOT contain Event
Notifications associated with the canceled Subscription object.
9. New Values for Existing Printer Description Attributes
This section defines additional values for existing Printer
Description attributes as defined in [RFC3995].
9.1. notify-pull-method-supported (1setOf type2 keyword)
The following keyword value for the "notify-pull-method-supported"
attribute is added in order to support the new Delivery Method
defined in this document:
’ippget’: The IPP Notification Pull Delivery Method defined in
this document.
9.2. operations-supported (1setOf type2 enum)
Table 7 lists the "operation-id" value defined in order to support
the new Get-Notifications operation defined in this document.
Table 7. Operation-id Assignments
Value Operation Name
0x001C Get-Notifications
10. New Status Codes
The following status code is defined as an extension for this
Delivery Method and is returned as the status code of the Get-
Notifications operation in Group 1 or Group 3 to N (see section 5.2).
10.1. successful-ok-events-complete (0x0007)
The Printer MUST return the ’successful-ok-events-complete’ status
code to indicate when this Get-Notifications response is the last
response for a Subscription object, whether or not there are Event
Notifications being returned. This condition occurs for Event Wait
Mode with Notification Recipients waiting for responses when (1) the
Subscription Object is canceled with a Cancel-Subscription operation,
(2) the Subscription object is deleted, when the Per-Printer
Subscription lease time expires, or (3) the ’job-completed’ event
occurs for a Per-Job Subscription. This condition also occurs for a
Get-Notifications request that a Notification Recipient makes after
the job completes, but before the Event Life expires.
11. Encoding and Transport
This section defines the encoding and transport considerations for
this Delivery Method based on [RFC2910].
The encoding of a Get-Notifications Response is modeled after the
Get-Jobs Response (see [RFC2911]). In a Get-Notifications Response,
each Event Notification Attributes Group MUST start with an ’event-
notification-attributes-tag’ (see the section "Encodings of
Additional Attribute Tags" in [RFC3995]), and end with an ’end-of-
attributes-tag’. In addition, for Event Wait Mode the multi-
part/related is used to separate each multiple response (in time) to
a single Get-Notifications Request.
The Printer returns Get-Notification Response as follows:
1. If the Notification Recipient client did not request Event Wait
Mode ("notify-wait" = ’false’ or omitted), the Printer ends the
response with an ’end-of-attributes-tag’ (see [RFC2911], Get-Jobs
encoding), as with any operation response.
2. If the Notification Recipient client requests Event Wait Mode
("notify-wait" = ’true’) and the Printer wishes to honor the
request, the Printer MUST return the response as an
application/ipp part inside a multi-part/related MIME media type.
When one or more additional Events occur, the Printer returns
each as an additional Event Notification Group using a separate
application/ipp part under the multi-part/related type.
3. If the client requested Event Wait Mode ("notify-wait" = ’true’),
but the Printer does not wish to honor the request in the initial
response and wants the client explicitly polled for Event
Notifications, the Printer MUST return the "notify-get-interval"
operation attribute (see section 5.2.1). The Printer returns the
response as an application/ipp part that MAY be inside an multi-
part/related type. The client MUST accept this response and
reissue the Get-Notifications request in the future indicated by
the value of the "notify-get-interval" attribute value.
4. If the client requested Event Wait Mode ("notify-wait" = ’true’),
and the Printer initially honored the request but later wishes to
leave Event Wait Mode, the Printer MUST return the "notify-get-
interval" operation attribute (see section 5.2.1). The Printer
returns the response as an application/ipp part that MUST be
inside an multi-part/related type.
NOTE: If a Notification Recipient fails to receive a response, it
can ask the Printer for the same Event Notifications again. The
Notification Recipient will receive the same Event Notifications that
it should have received the first time, except for those Event
Notifications that have expired in the meantime.
The Printer MAY chunk the responses, but this has no significance to
the IPP semantics.
This notification delivery method uses the IPP transport and encoding
[RFC2910] for the Get-Notifications operation with the following
extension, allocated in [RFC3995]:
Table 8. The "event-notification-attributes-tag" Value
Tag Value (Hex) Meaning
0x07 "event-notification-attributes-tag"
12. Conformance Requirements
This section lists the conformance requirements for clients and
Printers.
12.1. Conformance for IPP Printers
It is OPTIONAL for a Printer to support IPP Notifications as defined
in [RFC3995]. However, if a Printer supports IPP Notifications, the
Printer MUST support the ’ippget’ Delivery Method, as defined in this
document, as one of its Delivery Methods. IPP Printers that conform
to this specification
1. MUST meet the conformance requirements defined in [RFC3995] for a
Pull Delivery Method;
2. MUST support the Get-Notifications operation defined in section
5, including Event Wait Mode;
3. MUST support the Subscription Template object attributes, as
defined in section 6;
4. MUST support the Subscription Description object attributes, as
defined in section 7;
5. MUST support the "ippget-event-life" Printer Description
attribute defined in section 8.1, including retaining jobs in the
Job Retention and/or Job History phases for at least as long as
the value specified by the Printer’s "ippget-event-life";
6. MUST support the additional values for IPP/1.1 Printer
Description attributes defined in section 9;
7. MUST support the ’successful-ok-events-complete’ status code, as
described in section 10.1;
8. MUST listen for the IPP Get-Notifications operation requests on
IANA-assigned well-known port 631, unless explicitly configured
by system administrators or site policies;
9. SHOULD NOT listen for IPP Get-Notifications operation requests on
any other port, unless explicitly configured by system
administrators or site policies; and
10. MUST meet the security conformance requirements stated in section
18.4.
12.2. Conformance for IPP Clients
It is OPTIONAL for an IPP Client to support IPP Notifications as
defined in [RFC3995]. However, if a client supports IPP
Notifications, the client MUST support the ’ippget’ Delivery Method
as defined in this document as one of its Delivery Methods. IPP
Clients that conform to this specification:
1. MUST create Subscription Objects by sending Subscription Creation
operation requests containing the "notify-pull-method" attribute
(as opposed to the "notify-recipient-uri" attribute) using the
’ippget’ keyword value (see sections 6.1 and 15.2);
2. MUST send IPP Get-Notifications operation requests (see section
5.1) via the port specified in the associated ’ipp’ URL (if
present) or otherwise via IANA-assigned well-known port 631;
3. MUST convert the associated ’ipp’ URLs for use in IPP Get-
Notifications operation to their corresponding ’http’ URL forms
for use in the HTTP layer, according to the rules in section 5,
"IPP URL Scheme", in [RFC2910]; and
4. MUST meet the security conformance requirements stated in section
18.5.
13. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R., and J.
Wenn, "Internet Printing Protocol/1.1: Encoding and
Transport", RFC 2910, September 2000.
[RFC2911] Hastings, T., Herriot, R., deBry, R., Isaacson, S., and
P. Powell, "Internet Printing Protocol/1.1: Model and
Semantics", RFC 2911, September 2000.
[RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol
(IPP): Event Notifications and Subscriptions", RFC 3995,
March 2005.
14. Informative References
[RFC2565] Herriot, R., Butler, S., Moore, P., and R. Turner,
"Internet Printing Protocol/1.0: Encoding and
Transport", RFC 2565, April 1999.
[RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and
P. Powell, "Internet Printing Protocol/1.0: Model and
Semantics", RFC 2566, April 1999.
[RFC2567] Wright, F., "Design Goals for an Internet Printing
Protocol", RFC 2567, April 1999.
[RFC2568] Zilles, S., "Rationale for the Structure of the Model
and Protocol for the Internet Printing Protocol", RFC
2568, April 1999.
[RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J. Martin,
"Mapping between LPD and IPP Protocols", RFC 2569, April
1999.
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
[RFC2707] Bergman, R., Hastings, T., Isaacson, S., and H. Lewis,
"Job Monitoring MIB - V1.0", RFC 2707, November 1999.
[RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., and H.
Holst, "Internet Printing Protocol/1.1: Implementor’s
Guide", RFC 3196, November 2001.
[RFC3997] Hastings, T., Ed., deBry, R., and H. Lewis, "Internet
Printing Protocol (IPP): Requirements for IPP
Notifications", RFC 3997, March 2005.
15. IANA Considerations
This section contains the exact information that the IANA has added
to the IPP Registries according to the procedures defined in
[RFC2911], section 6. These registrations have been published in the
http://www.iana.org/assignments/ipp-registrations registry.
15.1. Attribute Registrations
The following table lists the attributes defined in this document.
This has been registered according to the procedures in RFC 2911
[RFC2911] section 6.2.
Printer Description attributes: Reference Section
------------------------------- --------- -------
ippget-event-life (integer(15:MAX)) [RFC3996] 8.1
15.2. Delivery Method and Additional Keyword Attribute Value
Registrations for Existing Attributes
This section lists additional keyword attribute value registrations
for use with existing attributes defined in other documents. These
have been registered according to the procedures in [RFC2911],
section 6.1. According to [RFC3995], section 24.7.3, Pull Delivery
Method registrations are the keyword attribute value registrations
for the "notify-pull-method" and "notify-pull-method-supported"
attributes.
Attribute (attribute syntax)
Values Reference Section
----------------------- --------- -------
notify-pull-method (type2 keyword) [RFC3995] 5.3.2
notify-pull-method-supported (1setOf type2 keyword)
[RFC3995] 5.3.2.1
ippget [RFC3996] 9.1
15.3. Additional Enum Attribute Values
The following table lists the enum attribute values defined in this
document. These have been registered according to the procedures in
[RFC2911], section 6.1.
Attribute (attribute syntax)
Value Name Reference Section
------ ----------------------------- --------- -------
operations-supported (1setOf type2 enum) [RFC2911] 4.4.15
0x001C Get-Notifications [RFC3996] 9.2
15.4. Operation Registrations
The following table lists the operations defined in this document.
This has been registered according to the procedures in RFC 2911
[RFC2911] section 6.4.
Operations: Reference Section
----------- --------- -------
Get-Notifications [RFC3996] 5
15.5. Status Code Registrations
The following table lists the status codes defined in this document.
This has been registered according to the procedures in [RFC2911],
section 6.6.
Status codes: Reference Section
------------- --------- -------
successful-ok-events-complete (0x0007) [RFC3996] 10.1
16. Internationalization Considerations
The IPP Printer MUST localize the "notify-text" attribute as
specified in section 14 of [RFC3995].
In addition, when the client receives the Get-Notifications response,
it is expected to localize the attributes that have the ’keyword’
attribute syntax according to the charset and natural language
requested in the Get-Notifications request.
17. Security Considerations
The IPP Model and Semantics document [RFC2911, section 8] discusses
high-level security requirements (Client Authentication, Server
Authentication and Operation Privacy). The IPP Transport and
Encoding document [RFC2910, section 8] discusses the security
requirements for the IPP protocol. Client Authentication is the
mechanism by which the client proves its identity to the server in a
secure manner. Server Authentication is the mechanism by which the
server proves its identity to the client in a secure manner.
Operation Privacy is defined as a mechanism for protecting operations
from eavesdropping.
The ’ippget’ Delivery Method with its Get-Notifications operations
leverages the security mechanism that are used in IPP/1.1 [RFC2910
and RFC2911] without adding any additional security mechanisms in
order to maintain the same security support as IPP/1.1.
The access control model for the Get-Notifications operation defined
in this document is the same as the access control model for the
Get-Job-Attributes operation (see [RFC2911], section 3.2.6). The
primary difference is that a Get-Notifications operation is directed
at Subscription Objects rather than at Job objects, and a returned
attribute group contains Event Notification attributes rather than
Job object attributes.
17.1. Notification Recipient Client Access Rights
The Notification Recipient client MUST have the following access
rights to the Subscription object(s) targeted by the Get-
Notifications operation request:
The authenticated user (see [RFC2911], section 8.3) performing
this operation MUST be (1) the owner of each Subscription Object
identified by the "notify-subscription-ids" operation attribute
(see section 5.1.1), (2) an operator or administrator of the
Printer (see [RFC2911], sections 1 and 8.5), or (3) otherwise
authorized by the Printer’s administrator-configured security
policy to request Event Notifications from the target Subscription
Object(s). Furthermore, the Printer’s security policy MAY limit
the attributes returned by the Get-Notifications operation, in a
manner similar to that of the Get-Job-Attributes operation (see
[RFC2911], end of section 3.3.4.2).
17.2. Printer Security Threats
Because the Get-Notifications operation is sent in the same direction
as are Job Creation operations, usually by the same client, this
Event Notification Delivery Method poses no additional
authentication, authorization, privacy, firewall, or port assignment
issues above those for the IPP Get-Job-Attributes and Get-Printer-
Attributes operations (see [RFC2911], sections 3.2.6 and 3.2.5).
17.3. Notification Recipient Security Threats
Unwanted Events Notifications (spam): Unlike Push Event Notification
Delivery Methods in which the IPP Printer initiates the Event
Notification, with the Pull Delivery Method defined in this document,
the Notification Recipient is the client that initiates the Get-
Notifications operation (see section 5). Therefore, with this method
there is no chance of "spam" notifications.
Note: When a client stays connected to a Printer by using the Event
Wait Mode (see section 5.1.3) in order to receive Event Notifications
as they occur, it can close down the IPP connection at any time and
so can avoid future unwanted Event Notifications at any time.
It is true that the client has control over whether to ask for Event
Notifications. However, if the client subscribes to an event and
does a Get-Notifications request, it gets all events for the
Subscription Object in the sequence number range (see section 5.1.2),
not just those it wants. If a client subscribes to a Per-Printer
Subscription job event, such as ’job-completed’, and someone then
starts and cancels thousands of jobs, the client would have to
receive these events in addition to those it is interested in. A
client can protect itself better by subscribing to its own jobs by
using a Per-Job Subscription, rather than create a Per-Printer
subscription whose Job events apply to all jobs.
17.4. Security Requirements for Printers
For the Get-Notifications operation defined in this document, the
same Printer conformance requirements apply for supporting and using
Client Authentication, Server Authentication and Operation Privacy as
stated in [RFC2910] section 8 for all IPP operations.
17.5. Security Requirements for Clients
For the Get-Notifications operation defined in this document, the
same client conformance requirements apply for supporting and using
Client Authentication, Server Authentication, and Operation Privacy
as stated in [RFC2910], section 8, for all IPP operations.
18. Description of Base IPP Documents (Informative)
The base set of IPP documents includes the following:
Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer’s Guide [RFC3196]
Mapping between LPD and IPP Protocols [RFC2569]
"Design Goals for an Internet Printing Protocol" takes a broad look
at distributed printing functionality, and it enumerates real-life
scenarios that help clarify the features that need to be included in
a printing protocol for the Internet. It identifies requirements for
three types of users: end users, operators, and administrators. It
calls out a subset of end user requirements that are satisfied in
IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator operations have
been added to IPP/1.1.
"Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol" describes IPP from a high-level view, defines a
roadmap for the various documents that form the suite of IPP
specification documents, and gives background and rationale for the
IETF working group’s major decisions.
"Internet Printing Protocol/1.1: Model and Semantics" describes a
simplified model with abstract objects, their attributes, and their
operations that are independent of encoding and transport. It
introduces a Printer and a Job object. The Job object optionally
supports multiple documents per Job. It also addresses security,
internationalization, and directory issues.
"Internet Printing Protocol/1.1: Encoding and Transport" is a formal
mapping of the abstract operations and attributes defined in the
model document onto HTTP/1.1 [RFC2616]. It defines the encoding
rules for a new Internet MIME media type called "application/ipp".
This document also defines the rules for transporting over HTTP a
message body whose Content-Type is "application/ipp". This document
defines the ’ipp’ scheme for identifying IPP printers and jobs.
"Internet Printing Protocol/1.1: Implementer’s Guide" gives insight
and advice to implementers of IPP clients and IPP objects. It is
intended to help them understand IPP/1.1 and some of the
considerations that may assist them in the design of their client
and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation
for some of the specification decisions is also included.
"Mapping between LPD and IPP Protocols" gives some advice to
implementers of gateways between IPP and LPD (Line Printer Daemon)
implementations.
19. Contributors
Carl Kugler and Harry Lewis contributed the basic idea of in-band
"smart polling" coupled with multiple responses for a single
operation on the same connection, with one response for each event as
it occurs. Without their continual persuasion, we would not have
arrived at this Delivery Method specification and would not have been
able to agree on a single REQUIRED Delivery Method for IPP.
Carl Kugler
IBM Corporation
6300 Diagonal Highway
Boulder, CO 80301
EMail: kugler@us.ibm.com
Authors’ Addresses
Robert Herriot
Global Workflow Solutions
706 Colorado Ave.
Palo Alto, CA 94303
Phone: 650-324-4000
EMail: bob@herriot.com
Thomas N. Hastings
Xerox Corporation
710 S Aviation Blvd. ESAE 242
El Segundo CA 90245
Phone: 310-333-6413
Fax: 310-333-6342
EMail: hastings@cp10.es.xerox.com
Harry Lewis
IBM Corporation
6300 Diagonal Hwy
Boulder, CO 80301
Phone: (303) 924-5337
EMail: harryl@us.ibm.com
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