draft-ietf-ipp-not-spec-08.txt   draft-ietf-ipp-not-spec-09.txt 
Internet Printing Protocol WG R. Herriot (editor) Internet Printing Protocol WG R. Herriot
INTERNET-DRAFT T. Hastings INTERNET-DRAFT consultant
<draft-ietf-ipp-not-spec-08.txt> M. Shepherd <draft-ietf-ipp-not-spec-09.txt> T. Hastings
Updates RFC 2910 and 2911 Xerox Corporation Updates RFC 2910 and 2911 Xerox Corporation
[Target Category: standards track] R. deBry [Target Category: standards track] June 27, 2002
Expires: May 19, 2002 Utah Valley State College Expires: December 27, 2002
S. Isaacson
Novell, Inc.
J. Martin
Underscore
R. Bergman
Hitachi Koki Imaging Solutions
November 19, 2001
Internet Printing Protocol (IPP): Internet Printing Protocol (IPP):
Event Notifications and Subscriptions Event Notifications and Subscriptions
Copyright (C) The Internet Society (2001). All Rights Reserved. Copyright (C) The Internet Society (2002). All Rights Reserved.
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of [RFC2026]. Internet-Drafts are all provisions of Section 10 of RFC 2026. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its working documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress". material or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed as The list of Internet-Draft Shadow Directories can be accessed as
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Abstract Abstract
This document describes an OPTIONAL extension to the Internet This document describes an OPTIONAL extension to the Internet
Printing Protocol/1.0 (IPP) [RFC2566, RFC2565] and IPP/1.1 [RFC2911, Printing Protocol/1.1: Model and Semantics (RFC 2911, RFC 2910).
RFC2910]. This extension allows a client to subscribe to printing This extension allows a client to subscribe to printing related
related Events. Subscriptions are modeled as Subscription Objects. Events. Subscriptions are modeled as Subscription Objects. The
The Subscription Object specifies that when one of the specified Subscription Object specifies that when one of the specified Events
Events occurs, the Printer sends an asynchronous Event Notification occurs, the Printer sends an asynchronous Event Notification to the
to the specified Notification Recipient via the specified Delivery specified Notification Recipient via the specified Push or Pull
Method (i.e., protocol). A client associates Subscription Objects Delivery Method (i.e., protocol).
with a particular Job by performing the Create-Job-Subscriptions
operation or by submitting a Job with subscription information. A A client associates Subscription Objects with a particular Job by
client associates Subscription Objects with the Printer by performing performing the Create-Job-Subscriptions operation or by submitting a
a Create-Printer-Subscriptions operation. Four other operations are Job with subscription information. A client associates Subscription
defined for Subscription Objects: Get-Subscriptions-Attributes, Get- Objects with the Printer by performing a Create-Printer-Subscriptions
Subscriptions, Renew-Subscription, and Cancel-Subscription. operation. Four other operations are defined for Subscription
Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Renew-
Subscription, and Cancel-Subscription.
Table of Contents Table of Contents
1 Introduction.....................................................7 1 Introduction.....................................................6
1.1 Notification Overview..........................................7 1.1 Notification Overview..........................................6
2 Models for Notification.........................................10 2 Models for Notification..........................................9
2.1 Model for Notification (Simple Case)..........................10 2.1 Model for Notification (Simple Case)...........................9
2.2 Model for Notification with Cascading Printers................11 2.2 Model for Notification with Cascading Printers................10
2.3 Distributed Model for Notification............................11 2.3 Distributed Model for Notification............................10
2.4 Extended Notification Recipient...............................12 2.4 Extended Notification Recipient...............................11
3 Terminology.....................................................12 3 Terminology.....................................................11
3.1 Conformance Terminology.......................................12 3.1 Conformance Terminology.......................................11
3.2 Other Terminology.............................................13 3.2 Other Terminology.............................................12
4 Object Relationships............................................16 4 Object Relationships............................................15
4.1 Printer and Per-Printer Subscription Objects..................16 4.1 Printer and Per-Printer Subscription Objects..................15
4.2 Printer, Job and Per-Job Subscription Objects.................16 4.2 Printer, Job and Per-Job Subscription Objects.................15
5 Subscription Object.............................................16 5 Subscription Object.............................................15
5.1 Rules for Support of Subscription Template Attributes.........17 5.1 Rules for Support of Subscription Template Attributes.........16
5.2 Rules for Processing Subscription Template Attributes.........18 5.2 Rules for Processing Subscription Template Attributes.........17
5.3 Subscription Template Attributes..............................22 5.3 Subscription Template Attributes..............................21
5.3.1 notify-recipient-uri (uri) OR notify-pull-method (type2 5.3.1 notify-recipient-uri (uri)..................................23
keyword)...............................................25 5.3.2 notify-pull-method (type2 keyword)..........................23
5.3.1.1 notify-recipient-uri (uri)................................25 5.3.3 notify-events (1setOf type2 keyword)........................24
5.3.1.2 notify-pull-method (type2 keyword)........................25 5.3.3.1 Standard Values for Subscribed Events.....................24
5.3.2 notify-events (1setOf type2 keyword)........................26 5.3.3.1.1 No Events...............................................25
5.3.2.1 Standard Values for Subscribed Events.....................26 5.3.3.1.2 Subscribed Printer Events...............................25
5.3.2.1.1 No Events...............................................27 5.3.3.1.3 Subscribed Job Events...................................26
5.3.2.1.2 Subscribed Printer Events...............................27 5.3.3.2 Rules for Matching of Subscribed Events...................28
5.3.2.1.3 Subscribed Job Events...................................29 5.3.3.2.1 Rules for Matching of Printer Events....................28
5.3.2.2 Rules for Matching of Subscribed Events...................30 5.3.3.2.2 Rules for Matching of Job Events........................28
5.3.2.2.1 Rules for Matching of Printer Events....................30 5.3.3.2.3 Special Cases for Matching Rules........................29
5.3.2.2.2 Rules for Matching of Job Events........................31 5.3.4 notify-attributes (1setOf type2 keyword)....................30
5.3.2.2.3 Special Cases for Matching Rules........................31 5.3.5 notify-user-data (octetString(63))..........................31
5.3.3 notify-attributes (1setOf type2 keyword)....................32 5.3.6 notify-charset (charset)....................................32
5.3.4 notify-user-data (octetString(63))..........................34 5.3.7 notify-natural-language (naturalLanguage)...................32
5.3.5 notify-charset (charset)....................................34 5.3.8 notify-lease-duration (integer(0:67108863)).................33
5.3.6 notify-natural-language (naturalLanguage)...................35 5.3.9 notify-time-interval (integer(0:MAX)).......................34
5.3.7 notify-lease-duration (integer(0:67108863)).................35 5.4 Subscription Description Attributes...........................35
5.3.8 notify-time-interval (integer(0:MAX)).......................36 5.4.1 notify-subscription-id (integer (1:MAX))...................36
5.4 Subscription Description Attributes...........................38 5.4.2 notify-sequence-number (integer (0:MAX))....................36
5.4.1 notify-subscription-id (integer (1:MAX))...................38 5.4.3 notify-lease-expiration-time (integer(0:MAX))...............37
5.4.2 notify-sequence-number (integer (0:MAX))....................39 5.4.4 notify-printer-up-time (integer(1:MAX)).....................38
5.4.3 notify-lease-expiration-time (integer(0:MAX))...............39 5.4.5 notify-printer-uri (uri)....................................38
5.4.4 notify-printer-up-time (integer(1:MAX)).....................40 5.4.6 notify-job-id (integer(1:MAX))..............................39
5.4.5 notify-printer-uri (uri)....................................41 5.4.7 notify-subscriber-user-name (name(MAX)).....................39
5.4.6 notify-job-id (integer(1:MAX))..............................41 6 Printer Description Attributes Related to Notification..........40
5.4.7 notify-subscriber-user-name (name(MAX)).....................42 6.1 printer-state-change-time (integer(1:MAX))....................40
6.2 printer-state-change-date-time (dateTime).....................40
6 Printer Description Attributes Related to Notification..........42 7 New Values for Existing Printer Description Attributes..........41
6.1 printer-state-change-time (integer(1:MAX))....................43 7.1 operations-supported (1setOf type2 enum)......................41
6.2 printer-state-change-date-time (dateTime).....................43
7 New Values for Existing Printer Description Attributes..........43 8 Attributes Only in Event Notifications..........................41
7.1 operations-supported (1setOf type2 enum)......................43 8.1 notify-subscribed-event (type2 keyword).......................42
8.2 notify-text (text(MAX)).......................................42
8 Attributes Only in Event Notifications..........................44 9 Event Notification Content......................................42
8.1 notify-subscribed-event (type2 keyword).......................44 9.1 Content of Machine Consumable Event Notifications.............45
8.2 notify-text (text(MAX)).......................................45 9.1.1 Event Notification Content Common to All Events.............46
9.1.2 Additional Event Notification Content for Job Events........48
9.1.3 Additional Event Notification Content for Printer Events....49
9.2 Content of Human Consumable Event Notification................49
9.2.1 Event Notification Content Common to All Events.............50
9.2.2 Additional Event Notification Content for Job Events........52
9.2.3 Additional Event Notification Content for Printer Events....53
9 Event Notification Content......................................45 10 Delivery Methods...............................................53
9.1 Content of Machine Consumable Event Notifications.............48
9.1.1 Event Notification Content Common to All Events.............48
9.1.2 Additional Event Notification Content for Job Events........50
9.1.3 Additional Event Notification Content for Printer Events....51
9.2 Content of Human Consumable Event Notification................51
9.2.1 Event Notification Content Common to All Events.............52
9.2.2 Additional Event Notification Content for Job Events........54
9.2.3 Additional Event Notification Content for Printer Events....55
10 Delivery Methods...............................................56 11 Operations for Notification....................................55
11.1 Subscription Creation Operations.............................56
11.1.1 Create-Job-Subscriptions Operation.........................56
11.1.1.1 Create-Job-Subscriptions Request.........................57
11.1.1.1.1 notify-job-id (integer(1:MAX)).........................57
11.1.1.2 Create-Job-Subscriptions Response........................57
11.1.2 Create-Printer-Subscriptions operation.....................59
11.1.2.1 Create-Printer-Subscriptions Request.....................59
11.1.2.2 Create-Printer-Subscriptions Response....................59
11.1.3 Job Creation Operations - Extensions for Notification......59
11.1.3.1 Job Creation Request.....................................60
11.1.3.2 Job Creation Response....................................61
11.2 Other Operations.............................................62
11.2.1 Restart-Job Operation - Extensions for Notification........62
11.2.2 Validate-Job Operation - Extensions for Notification.......62
11.2.3 Get-Printer-Attributes - Extensions for Notification.......63
11.2.4 Get-Subscription-Attributes operation......................64
11.2.4.1 Get-Subscription-Attributes Request......................64
11.2.4.1.1 "notify-subscription-id" (integer (1:MAX)).............65
11.2.4.1.2 "requested-attributes" (1setOf keyword)................65
11.2.4.2 Get-Subscription-Attributes Response.....................65
11.2.5 Get-Subscriptions operation................................66
11.2.5.1 Get-Subscriptions Request................................67
11.2.5.1.1 "notify-job-id" (integer(1:MAX)).......................68
11.2.5.1.2 "limit" (integer(1:MAX))...............................68
11.2.5.1.3 "requested-attributes" (1setOf type2 keyword)..........68
11.2.5.1.4 "my-subscriptions" (boolean)...........................68
11.2.5.2 Get-Subscriptions Response...............................69
11.2.6 Renew-Subscription operation...............................70
11.2.6.1 Renew-Subscription Request...............................70
11.2.6.1.1 "notify-subscription-id" (integer (1:MAX)).............71
11.2.6.1.2 "notify-lease-duration" (integer(0:MAX))...............71
11.2.6.2 Renew-Subscription Response..............................71
11.2.6.2.1 "notify-lease-duration" (integer(0:MAX))...............72
11.2.7 Cancel-Subscription operation..............................72
11.2.7.1 Cancel-Subscription Request..............................73
11.2.7.1.1 "notify-subscription-id" (integer (1:MAX)).............73
11.2.7.2 Cancel-Subscription Response.............................73
11 Operations for Notification....................................58 12 Status Codes...................................................74
11.1 Subscription Creation Operations.............................58 12.1 successful-ok-ignored-subscriptions (0x0003).................74
11.1.1 Create-Job-Subscriptions Operation.........................59 12.2 client-error-ignored-all-subscriptions (0x0414)..............75
11.1.1.1 Create-Job-Subscriptions Request.........................59
11.1.1.2 Create-Job-Subscriptions Response........................60
11.1.2 Create-Printer-Subscriptions operation.....................61
11.1.2.1 Create-Printer-Subscriptions Request.....................62
11.1.2.2 Create-Printer-Subscriptions Response....................62
11.1.3 Job Creation Operations - Extensions for Notification......62
11.1.3.1 Job Creation Request.....................................63
11.1.3.2 Job Creation Response....................................64
11.2 Other Operations.............................................65
11.2.1 Restart-Job Operation - Extensions for Notification........65
11.2.2 Validate-Job Operation - Extensions for Notification.......65
11.2.3 Get-Printer-Attributes - Extensions for Notification.......66
11.2.4 Get-Subscription-Attributes operation......................66
11.2.4.1 Get-Subscription-Attributes Request......................67
11.2.4.2 Get-Subscription-Attributes Response.....................68
11.2.5 Get-Subscriptions operation................................69
11.2.5.1 Get-Subscriptions Request................................69
11.2.5.2 Get-Subscriptions Response...............................71
11.2.6 Renew-Subscription operation...............................72
11.2.6.1 Renew-Subscription Request...............................72
11.2.6.2 Renew-Subscription Response..............................73
11.2.7 Cancel-Subscription operation..............................74
11.2.7.1 Cancel-Subscription Request..............................75
11.2.7.2 Cancel-Subscription Response.............................75
12 Conformance Requirements.......................................76 13 Status Codes in Subscription Attributes Groups.................75
13.1 client-error-uri-scheme-not-supported (0x040C)...............75
13.2 client-error-attributes-or-values-not-supported (0x040B).....75
13.3 client-error-too-many-subscriptions (0x0415).................76
13.4 successful-ok-too-many-events (0x0005).......................76
13.5 successful-ok-ignored-or-substituted-attributes (0x0001).....76
13 IANA Considerations............................................77 14 Encodings of Additional Attribute Tags.........................76
13.1 Attribute Registrations......................................78
13.2 Additional Enum Attribute Value Registrations for the
"operations-supported" Printer Attribute..........................79
13.3 Operation Registrations......................................79
13.4 Status code Registrations....................................80
13.5 Attribute Group tag Registrations............................80
13.6 Registration of Events.......................................80
13.7 Registration of Event Notification Delivery Methods..........81
13.7.1 Requirements for Registration of Event Notification Delivery
Methods................................................81
13.7.1.1 Required Characteristics.................................81
13.7.1.2 Naming Requirements......................................82
13.7.1.3 Functionality Requirements...............................82
13.7.1.4 Usage and Implementation Requirements....................82
13.7.1.5 Publication Requirements.................................83
13.7.2 Registration Procedure.....................................83
13.7.2.1 Present the proposal to the Community....................83
13.7.2.2 Delivery Method Reviewer.................................83
13.7.2.3 IANA Registration........................................84
13.7.3 Delivery Method Document Registrations.....................84
13.7.4 Registration Template......................................84
14 Internationalization Considerations............................85 15 Conformance Requirements.......................................76
15.1 Conformance requirements for clients.........................77
15.2 Conformance requirements for Printers........................77
15 Security Considerations........................................85 16 Normative References...........................................78
16 Status Codes...................................................86 17 Informative References.........................................79
16.1 successful-ok-ignored-subscriptions (0x0003).................86
16.2 client-error-ignored-all-subscriptions (0x0414)..............87
17 Status Codes in Subscription Attributes Groups.................87 18 Security Considerations........................................80
17.1 client-error-uri-scheme-not-supported (0x040C)...............87 18.1 Client access rights.........................................80
17.2 client-error-attributes-or-values-not-supported (0x040B).....87 18.2 Printer security threats.....................................82
17.3 client-error-too-many-subscriptions (0x0415).................88 18.3 Notification Recipient security threats......................82
17.4 successful-ok-too-many-events (0x0005).......................88
17.5 successful-ok-ignored-or-substituted-attributes (0x0001).....88
18 Encodings of Additional Attribute Tags.........................88 19 IANA Considerations............................................82
19 References.....................................................89 19.1 Attribute Registrations......................................83
19.2 Additional Enum Attribute Value Registrations for the
"operations-supported" Printer Attribute..........................84
19.3 Operation Registrations......................................84
19.4 Status code Registrations....................................85
19.5 Attribute Group tag Registrations............................85
19.6 Registration of Events.......................................85
19.7 Registration of Event Notification Delivery Methods..........86
19.7.1 Requirements for Registration of Event Notification Delivery
Methods................................................86
19.7.1.1 Required Characteristics.................................86
19.7.1.2 Naming Requirements......................................87
19.7.1.3 Functionality Requirements...............................87
19.7.1.4 Usage and Implementation Requirements....................87
19.7.1.5 Publication Requirements.................................87
19.7.2 Registration Procedure.....................................88
19.7.2.1 Present the proposal to the Community....................88
19.7.2.2 Delivery Method Reviewer.................................88
19.7.2.3 IANA Registration........................................88
19.7.3 Delivery Method Document Registrations.....................89
19.7.4 Registration Template......................................89
20 Author's Addresses.............................................90 20 Internationalization Considerations............................90
21 Contributors...................................................90
22 Author's Addresses.............................................91
A. Appendix - Model for Notification with Cascading Printers......92 A. Appendix - Model for Notification with Cascading Printers......92
B. Appendix - Distributed Model for Notification..................93 B. Appendix - Distributed Model for Notification..................93
C. Appendix - Extended Notification Recipient.....................94 C. Appendix - Extended Notification Recipient.....................94
D. Appendix - Details about Conformance Terminology...............95 D. Appendix - Details about Conformance Terminology...............95
E. Appendix - Object Model for Notification.......................96 E. Appendix - Object Model for Notification.......................96
skipping to change at page 6, line 28 skipping to change at page 5, line 44
E.2 Printer Object and Per-Printer Subscription Objects..........98 E.2 Printer Object and Per-Printer Subscription Objects..........98
E.3 Job Object and Per-Job Subscription Objects..................98 E.3 Job Object and Per-Job Subscription Objects..................98
F. Appendix - Per-Job versus Per-Printer Subscription Objects.....98 F. Appendix - Per-Job versus Per-Printer Subscription Objects.....98
G. Appendix - Description of the base IPP documents...............99 G. Appendix - Description of the base IPP documents...............99
H. Appendix - Full Copyright Statement...........................100 H. Appendix - Full Copyright Statement...........................100
Tables Tables
Table 1 - Subscription Template Attributes........................24 Table 1 - Subscription Template Attributes........................22
Table 2 - Subscription Description Attributes.....................38 Table 2 - Subscription Description Attributes.....................36
Table 3 - Printer Description Attributes Associated with Notification Table 3 - Printer Description Attributes Associated with Notification
..............................................................42 ..............................................................40
Table 4 - Operation-id assignments................................44 Table 4 - Operation-id assignments................................41
Table 5 - Attributes in Event Notification Content................49 Table 5 - Attributes in Event Notification Content................47
Table 6 - Additional Event Notification Content for Job Events....50 Table 6 - Additional Event Notification Content for Job Events....48
Table 7 - Combinations of Events and Subscribed Events for "job- Table 7 - Combinations of Events and Subscribed Events for "job-
impressions-completed" ........................................51 impressions-completed" ........................................48
Table 8 - Additional Event Notification Content for Printer Events51 Table 8 - Additional Event Notification Content for Printer Events49
Table 9 - Printer Name in Event Notification Content..............53 Table 9 - Printer Name in Event Notification Content..............51
Table 10 - Event Name in Event Notification Content...............53 Table 10 - Event Name in Event Notification Content...............51
Table 11 - Event Time in Event Notification Content...............54 Table 11 - Event Time in Event Notification Content...............51
Table 12 - Job Name in Event Notification Content.................54 Table 12 - Job Name in Event Notification Content.................52
Table 13 - Job State in Event Notification Content................55 Table 13 - Job State in Event Notification Content................52
Table 14 - Printer State in Event Notification Content............56 Table 14 - Printer State in Event Notification Content............53
Table 15 - Information about the Delivery Method..................57 Table 15 - Information about the Delivery Method..................54
Table 16 - Printer Conformance Requirements for Operations........77 Table 16 - Printer Conformance Requirements for Operations........78
Figures Figures
Figure 1 - Model for Notification.................................11 Figure 1 - Model for Notification.................................10
Figure 2 - Model for Notification with Cascading Printers.........93 Figure 2 - Model for Notification with Cascading Printers.........93
Figure 3 - Opaque Use of a Notification Service Transparent to the Figure 3 - Opaque Use of a Notification Service Transparent to the
Client ........................................................94 Client ........................................................94
Figure 4 - Use of an Extended Notification Recipient transparent to Figure 4 - Use of an Extended Notification Recipient transparent to
the Printer ...................................................95 the Printer ...................................................95
Figure 5 - Object Model for Notification..........................97 Figure 5 - Object Model for Notification..........................97
1 Introduction 1 Introduction
This IPP notification specification is an OPTIONAL extension to This IPP notification specification is an OPTIONAL extension to
Internet Printing Protocol/1.0 (IPP) [RFC2566, RFC2565] and IPP/1.1 Internet Printing Protocol/1.1: Model and Semantics [RFC2911,
[RFC2911, RFC2910]. See Appendix G for a description of the base IPP RFC2910]. See Appendix G for a description of the base IPP
documents. This document in combination with the following documents documents. This document in combination with the following documents
is intended to meet the notification requirements described in [ipp- is intended to meet the most important notification requirements
not-req]: described in [ipp-not-req]:
Internet Printing Protocol (IPP): "Job Progress Attributes" Internet Printing Protocol (IPP): "Job Progress Attributes"
[ipp-prog] [ipp-prog]
One or more Delivery Method Documents registered with IANA (see Internet Printing Protocol (IPP): "The 'ippget' Delivery Method
section 10). for Event Notifications" [ipp-get-method]
Note: this document does not define any Delivery Methods, but it does This specification REQUIRES that clients and Printers support the
define the rules for conformance for Delivery Method Documents. 'ippget' Pull Delivery Method [ipp-get-method]. Conforming client
Delivery Method Documents are in preparation (see section 10) and and Printer implementations MAY support additional Push or Pull
will be registered with IANA (see section 13.7.3). 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 19.7.3).
Refer to the Table of Contents for the layout of this document. Refer to the Table of Contents for the layout of this document.
1.1 Notification Overview 1.1 Notification Overview
This document defines operations that a client can perform in order This document defines operations that a client can perform in order
to create Subscription Objects in a Printer and carry out other to create Subscription Objects in a Printer and carry out other
operations on them. A Subscription Object represents a Subscription operations on them. A Subscription Object represents a Subscription
abstraction. The Subscription Object specifies that when one of the abstraction. The Subscription Object specifies that when one of the
specified Events occurs, the Printer sends an asynchronous Event specified Events occurs, the Printer sends an asynchronous Event
skipping to change at page 9, line 26 skipping to change at page 8, line 42
section 11.2 for further details): section 11.2 for further details):
- Restart-Job operation: When a client performs the Restart-Job - Restart-Job operation: When a client performs the Restart-Job
operation [RFC2911], the Printer re-uses the same Job and its operation [RFC2911], the Printer re-uses the same Job and its
Subscription Objects. Subscription Objects.
- Validate-Job operation: When a client performs this operation, - Validate-Job operation: When a client performs this operation,
a client can include zero or more Subscription Template a client can include zero or more Subscription Template
Attributes Groups in the request. The Printer determines if it Attributes Groups in the request. The Printer determines if it
could create one Subscription Object for each Subscription could create one Subscription Object for each Subscription
Template Attributes Group in the request. This document extends Template Attributes Group in the request. This document
this operation's definition in [RFC2911] by adding Subscription extends this operation's definition in [RFC2911] by adding
Template Attributes Groups in the request and Subscription Subscription Template Attributes Groups in the request and
Attributes Groups in the response. Subscription Attributes Groups in the response.
- Get-Subscription-Attributes operation: This operation allows a - Get-Subscription-Attributes operation: This operation allows a
client to obtain the specified attributes of a target client to obtain the specified attributes of a target
Subscription Object. Subscription Object.
- Get-Subscriptions operation: This operation allows a client to - Get-Subscriptions operation: This operation allows a client to
obtain the specified attributes of all Subscription Objects obtain the specified attributes of all Subscription Objects
associated with the Printer or a specified Job. associated with the Printer or a specified Job.
- Renew-Subscription operation: This operation renews the lease - Renew-Subscription operation: This operation renews the lease
skipping to change at page 11, line 37 skipping to change at page 10, line 42
- via the Print Server to the Notification Recipient specified by - via the Print Server to the Notification Recipient specified by
the Subscribing Client. the Subscribing Client.
See Appendix A for more details. See Appendix A for more details.
2.3 Distributed Model for Notification 2.3 Distributed Model for Notification
The preceding sections (2.1 and 2.2) assume that the Notification The preceding sections (2.1 and 2.2) assume that the Notification
software resides in the same device or Server box as the rest of the software resides in the same device or Server box as the rest of the
Printer software. In many implementations, the assumption is correct. Printer software. In many implementations, the assumption is
However, the Notification model also permits a distributed correct. However, the Notification model also permits a distributed
implementation. implementation.
For example, the software that supports both Subscription Creation For example, the software that supports both Subscription Creation
Operations and sending of Event Notifications could be on hardware Operations and sending of Event Notifications could be on hardware
that is separate from the output device. To make this work, there that is separate from the output device. To make this work, there
must be a symbiotic relationship between the output device software must be a symbiotic relationship between the output device software
and the remote Notification software. Without the remote Notification and the remote Notification software. Without the remote
software, the output device software is not a complete Printer. Notification software, the output device software is not a complete
Printer.
The term "Printer" in this document includes the software on the The term "Printer" in this document includes the software on the
output device or server box as well as Notification software that is output device or server box as well as Notification software that is
local to or remote from the output device. local to or remote from the output device.
Appendix B describes this example in detail. Appendix B describes this example in detail.
2.4 Extended Notification Recipient 2.4 Extended Notification Recipient
The model allows for an extended Notification Recipient that is The model allows for an extended Notification Recipient that is
itself a Notification service that forwards each Event Notification itself a Notification service that forwards each Event Notification
to another recipient. The client contacts this Notification Recipient to another recipient. The client contacts this Notification
to arrange for forwarding by means outside the scope of this Recipient to arrange for forwarding by means outside the scope of
document. The Printer need not be aware that the Notification this document. The Printer need not be aware that the Notification
Recipient forwards Event Notifications. Recipient forwards Event Notifications.
Appendix C describes this example in detail. Appendix C describes this example in detail.
3 Terminology 3 Terminology
This section defines terminology used throughout this document. Other This section defines terminology used throughout this document.
terminology is defined in [RFC2911]. Other terminology is defined in [RFC2911].
3.1 Conformance Terminology 3.1 Conformance Terminology
Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD
NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to
conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section
12.1. If an implementation supports the extension defined in this 12.1. If an implementation supports the extension defined in this
document, then these terms apply; otherwise, they do not. These document, then these terms apply; otherwise, they do not. These
terms define conformance to this document only; they do not affect terms define conformance to this document only; they do not affect
conformance to other documents, unless explicitly stated otherwise. conformance to other documents, unless explicitly stated otherwise.
See Appendix D for complete details. See Appendix D for complete details.
Note: a feature that is OPTIONAL in this document becomes REQUIRED if Note: a feature that is OPTIONAL in this document becomes REQUIRED if
the Printer implements a Delivery Method that REQUIRES the feature. the Printer implements a Delivery Method that REQUIRES the feature.
READ-ONLY - an adjective used in an attribute definition to indicate READ-ONLY - an adjective used in an attribute definition to indicate
that an IPP Printer MUST NOT allow the attribute's value to be that an IPP Printer MUST NOT allow the attribute's value to be
modified with the Set-Job-Attributes or Set-Printer-Attributes modified.
operations (see [ipp-set]). Note: there is no Set-Subscription
operation so this term is not used for Subscription object
attributes.
3.2 Other Terminology 3.2 Other Terminology
This document uses the same terminology as [RFC2911], such as This document uses the same terminology as [RFC2911], such as
"client", "Printer", "attribute", "attribute value", "keyword", "client", "Printer", "attribute", "attribute value", "keyword",
"operation", "request", "response", and "support". In addition, the "operation", "request", "response", and "support". In addition, the
following terms are defined for use in this document and the Delivery following terms are defined for use in this document and the Delivery
Method Documents: Method Documents:
Administrator - A human user who establishes policy for and Administrator - A human user who establishes policy for and
skipping to change at page 13, line 35 skipping to change at page 12, line 35
object: Print-Job, Print-URI and Create-Job. The Restart-Job object: Print-Job, Print-URI and Create-Job. The Restart-Job
operation [RFC2911] is not considered a Job Creation operation, operation [RFC2911] is not considered a Job Creation operation,
since the Printer re-uses the existing Job object. The Validate- since the Printer re-uses the existing Job object. The Validate-
Job operation is not considered a Job Creation operation because Job operation is not considered a Job Creation operation because
no Job object is created. Therefore, when a statement also no Job object is created. Therefore, when a statement also
applies to either the Restart-Job and/or the Validate-Job applies to either the Restart-Job and/or the Validate-Job
operation, they are mentioned explicitly. operation, they are mentioned explicitly.
Event - some occurrence (either expected or unexpected) within the Event - some occurrence (either expected or unexpected) within the
printing system of a change of state, condition, or configuration printing system of a change of state, condition, or configuration
of a Job or Printer object. An Event occurs only at one instant in of a Job or Printer object. An Event occurs only at one instant
time and does not span the time the physical Event takes place. in time and does not span the time the physical Event takes place.
For example, jam-occurred and jam-cleared are two distinct, For example, jam-occurred and jam-cleared are two distinct,
instantaneous Events, even though the jam may last for a while. instantaneous Events, even though the jam may last for a while.
Event Notification - the information about an Event that the Printer Event Notification - the information about an Event that the Printer
sends when an Event occurs. sends when an Event occurs.
Compound Event Notification - two or more Event Notifications that a Compound Event Notification - two or more Event Notifications that a
Printer sends together as a single entity. The Delivery Method Printer sends together as a single entity. The Delivery Method
Document specifies whether the Delivery Method supports Compound Document specifies whether the Delivery Method supports Compound
Event Notifications. Event Notifications.
skipping to change at page 14, line 26 skipping to change at page 13, line 26
Delivery Method - the mechanism by which the Printer delivers the Delivery Method - the mechanism by which the Printer delivers the
Event Notification, e.g., via email or via an Event Notification Event Notification, e.g., via email or via an Event Notification
Delivery Method protocol defined for delivering IPP Event Delivery Method protocol defined for delivering IPP Event
Notifications. Notifications.
Delivery Method Document - a document, separate from this document, Delivery Method Document - a document, separate from this document,
that defines a Delivery Method. that defines a Delivery Method.
Push Delivery Method -The Printer sends the Event Notification Push Delivery Method -The Printer sends the Event Notification
shortly after an Event occurs. For some Push Delivery Methods, the shortly after an Event occurs. For some Push Delivery Methods,
Notification Recipient MUST send a response; for others it MUST the Notification Recipient MUST send a response; for others it
NOT send a response. MUST NOT send a response.
Pull Delivery Method - The Printer saves Event Notifications for some Pull Delivery Method - The Printer saves Event Notifications for some
event life time and expects the Notification Recipient to request event life time and expects the Notification Recipient to request
Event Notifications. The Printer returns the Event Notifications Event Notifications. The Printer returns the Event Notifications
in a response to such a request. in a response to such a request.
Event Life - For a Pull Delivery Method, the length of time in Event Life - For a Pull Delivery Method, the length of time in
seconds after an Event occurs during which the Printer will seconds after an Event occurs during which the Printer will
return that Event in response to a request for Event return that Event in response to a request for Event
Notifications. After the Event Life expires, the Printer will Notifications. After the Event Life expires, the Printer will
skipping to change at page 15, line 49 skipping to change at page 14, line 49
Human Consumable Event Notification - localized text for human Human Consumable Event Notification - localized text for human
consumption only. There is no standardized format and thus consumption only. There is no standardized format and thus
programs should not try to parse this text. programs should not try to parse this text.
Machine Consumable Event Notification - bytes for program Machine Consumable Event Notification - bytes for program
consumption. The bytes are formatted according to the Delivery consumption. The bytes are formatted according to the Delivery
Method document. Method document.
Printer - the software that supports an output device or print server Printer - the software that supports an output device or print server
(see IPP/1.1 [RFC2911] which uses the terms Printer and Printer (see IPP/1.1 [RFC2911] which uses the terms Printer and Printer
object interchangeably). This document extends the IPP/1.1 Printer object interchangeably). This document extends the IPP/1.1
definition to include the software that implements Subscription Printer definition to include the software that implements
Creation Operations and the sending of Event Notifications, even Subscription Creation Operations and the sending of Event
if the software for such a Printer would be distributed across a Notifications, even if the software for such a Printer would be
network (see section 2.3). distributed across a network (see section 2.3).
Notification - when not in the phrases 'Event Notification' and Notification - when not in the phrases 'Event Notification' and
'Notification Recipient' - the concepts of this specification, 'Notification Recipient' - the concepts of this specification,
i.e., Events, Subscription Objects, and Event Notifications. i.e., Events, Subscription Objects, and Event Notifications.
4 Object Relationships 4 Object Relationships
This section defines the object relationships between the Printer, This section defines the object relationships between the Printer,
Job, and Subscription Objects. It does not define the Job, and Subscription Objects. It does not define the
implementation. For an illustration of these relationships, see implementation. For an illustration of these relationships, see
skipping to change at page 16, line 42 skipping to change at page 15, line 40
3.A Job object is associated with zero or more Per-Job Subscription 3.A Job object is associated with zero or more Per-Job Subscription
Objects. Objects.
4.Each Per-Job Subscription Object is associated with exactly one 4.Each Per-Job Subscription Object is associated with exactly one
Job object. Job object.
5 Subscription Object 5 Subscription Object
A Subscribing Client creates a Subscription Object with a A Subscribing Client creates a Subscription Object with a
Subscription Creation Operation in order to indicate its interest in Subscription Creation Operation in order to indicate its interest in
certain Events. See section 11 for a description of these operations. certain Events. See section 11 for a description of these
When an Event occurs, the Subscription Object specifies to the operations. When an Event occurs, the Subscription Object specifies
Printer where to send Event Notifications, how to send them and what to the Printer where to send Event Notifications, how to send them
to put in them. See section 9 for details on the contents of an Event and what to put in them. See section 9 for details on the contents
Notification. of an Event Notification.
Using the IPP Job Template attributes as a model (see [RFC2911] Using the IPP Job Template attributes as a model (see [RFC2911]
section 4.2), the attributes of a Subscription Object are divided section 4.2), the attributes of a Subscription Object are divided
into two categories: Subscription Template Attributes and into two categories: Subscription Template Attributes and
Subscription Description Attributes. Subscription Description Attributes.
Subscription Template attributes are, in turn, like the Job Template Subscription Template attributes are, in turn, like the Job Template
attributes, divided into attributes, divided into
1.Subscription Object attributes that a client can supply in a 1.Subscription Object attributes that a client can supply in a
skipping to change at page 18, line 24 skipping to change at page 17, line 16
5.Most "notify-xxx" attributes have a corresponding "yyy- 5.Most "notify-xxx" attributes have a corresponding "yyy-
supported" attribute that specifies the supported values for supported" attribute that specifies the supported values for
"notify-xxx". Column 2 of Table 1 specifies the name of each "notify-xxx". Column 2 of Table 1 specifies the name of each
"yyy-supported" attribute. The naming rules of IPP/1.1 (see "yyy-supported" attribute. The naming rules of IPP/1.1 (see
[RFC2911]) are used when "yyy-supported" is "notify-xxx- [RFC2911]) are used when "yyy-supported" is "notify-xxx-
supported". supported".
6.Some "notify-xxx" attributes have a corresponding "notify-xxx- 6.Some "notify-xxx" attributes have a corresponding "notify-xxx-
default" attribute that specifies the value for "notify-xxx" if default" attribute that specifies the value for "notify-xxx" if
the client does not supply it. Column 2 of Table 1 specifies the the client does not supply it. Column 2 of Table 1 specifies
name of each "notify-xxx-default" attribute. The naming rules of the name of each "notify-xxx-default" attribute. The naming
IPP/1.1 (see [RFC2911]) are used. rules of IPP/1.1 (see [RFC2911]) are used.
If a client wishes to present an end user with a list of supported 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 values from which to choose, the client SHOULD query the Printer for
its supported value attributes. The client SHOULD also query the its supported value attributes. The client SHOULD also query the
default value attributes. If the client then limits selectable default value attributes. If the client then limits selectable
values to only those values that are supported, the client can values to only those values that are supported, the client can
guarantee that the values supplied by the client in the create guarantee that the values supplied by the client in the create
request all fall within the set of supported values at the Printer. request all fall within the set of supported values at the Printer.
When querying the Printer, the client MAY enumerate each attribute by When querying the Printer, the client MAY enumerate each attribute by
name in the Get-Printer-Attributes Request, or the client MAY just name in the Get-Printer-Attributes Request, or the client MAY just
supply the 'subscription-template' group name in order to get the supply the 'subscription-template' group name in order to get the
complete set of supported attributes (both supported and default complete set of supported attributes (both supported and default
attributes - see section 11.2.3). attributes - see section 11.2.3).
5.2 Rules for Processing Subscription Template Attributes 5.2 Rules for Processing Subscription Template Attributes
This section defines a detailed set of rules that a Printer follows This section defines a detailed set of rules that a Printer follows
when it processes Subscription Template Attributes in a Subscription when it processes Subscription Template Attributes in a Subscription
Creation Request. These rules are similar to the rules for processing Creation Request. These rules are similar to the rules for
Operation attributes in [RFC2911]. That is, the Printer may or may processing Operation attributes in [RFC2911]. That is, the Printer
not support an attribute and a client may or may not supply the may or may not support an attribute and a client may or may not
attribute. Some combinations of these cases are OK. Others return supply the attribute. Some combinations of these cases are OK.
warnings or errors, and perhaps a list of unsupported attributes. Others return warnings or errors, and perhaps a list of unsupported
attributes.
A Printer MUST implement the following behavior for processing A Printer MUST implement the following behavior for processing
Subscription Template Attributes in a Subscription Creation Request: Subscription Template Attributes in a Subscription Creation Request:
1.If a client supplies a "notify-xxx" attribute from column 1 of 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 Table 1 and the Printer supports it and its value, the Printer
MUST populate the attribute on the created Subscription Object. MUST populate the attribute on the created Subscription Object.
2.If a client supplies a "notify-xxx" attribute from column 1 of 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 Table 1 and the Printer doesn't support it or its value, the
skipping to change at page 20, line 44 skipping to change at page 19, line 36
the Subscription Template Attributes Group or not. However, the the Subscription Template Attributes Group or not. However, the
attributes in each Subscription Attributes Group can be in any attributes in each Subscription Attributes Group can be in any
order. order.
8.The Printer MUST populate each Subscription Attributes Group of 8.The Printer MUST populate each Subscription Attributes Group of
the response such that each contains: the response such that each contains:
a) the "notify-subscription-id" attribute (see section 5.4.1), if a) the "notify-subscription-id" attribute (see section 5.4.1), if
and only if the Printer creates a Subscription Object. and only if the Printer creates a Subscription Object.
b) the "notify-lease-duration" attribute (see section 5.3.7), if b) the "notify-lease-duration" attribute (see section 5.3.8), if
and only if the Printer creates a Per-Printer Subscription and only if the Printer creates a Per-Printer Subscription
Object. The value of this attribute is the value of the Object. The value of this attribute is the value of the
Subscription Object's "notify-lease-duration" attribute. This Subscription Object's "notify-lease-duration" attribute. This
value MAY be different from the client-supplied value (see value MAY be different from the client-supplied value (see
section 5.3.7). If a client supplies this attribute in the section 5.3.8). If a client supplies this attribute in the
creation of a Per-Job Subscription Object, it MUST appear in creation of a Per-Job Subscription Object, it MUST appear in
this group with the out-of-band value 'unsupported' to indicate this group with the out-of-band value 'unsupported' to indicate
that the Printer doesn't support it in this context. that the Printer doesn't support it in this context.
c) all of the unsupported Subscription Template Attributes from c) all of the unsupported Subscription Template Attributes from
step #2. Note, they are not returned in the Unsupported step #2. Note, they are not returned in the Unsupported
Attributes Group in order to separate the unsupported attributes Attributes Group in order to separate the unsupported attributes
for each Subscription Object. for each Subscription Object.
d) the "notify-status-code" attribute if the Printer does not d) the "notify-status-code" attribute if the Printer does not
create the Subscription Object or if there are unsupported create the Subscription Object or if there are unsupported
attributes from step #2. The possible values of the "notify- attributes from step #2. The possible values of the "notify-
status-code" attribute are shown below (see section 17 for more status-code" attribute are shown below (see section 13 for more
details). The Printer returns the first value in the list below details). The Printer returns the first value in the list below
that describes the status. that describes the status.
'client-error-uri-scheme-not-supported': the Subscription 'client-error-uri-scheme-not-supported': the Subscription
Object was not created because the scheme of the "notify- Object was not created because the scheme of the "notify-
recipient-uri" attribute is not supported. See section 17.1 recipient-uri" attribute is not supported. See section
for more details about this status code. See step #3 in 13.1 for more details about this status code. See step #3
this section for the case that causes this error, and the in this section for the case that causes this error, and
resulting step #6a) that causes the Printer not to create the resulting step #6a) that causes the Printer not to
the Subscription Object. create the Subscription Object.
'client-error-attributes-or-values-not-supported': the 'client-error-attributes-or-values-not-supported': the
Subscription Object was not created because the method of Subscription Object was not created because the method of
the "notify-pull-method" attribute is not supported. See the "notify-pull-method" attribute is not supported. See
section 17.1 for more details about this status code. See section 13.1 for more details about this status code. See
step #3 in this section for the case that causes this step #3 in this section for the case that causes this
error, and the resulting step #6a) that causes the Printer error, and the resulting step #6a) that causes the Printer
not to create the Subscription Object. not to create the Subscription Object.
'client-error-too-many-subscriptions': the Subscription 'client-error-too-many-subscriptions': the Subscription
Object was not created because the Printer has no space for Object was not created because the Printer has no space for
additional Subscription Objects. The client SHOULD try additional Subscription Objects. The client SHOULD try
again later. See section 17.3 for more details about this again later. See section 13.3 for more details about this
status code. See steps #6b) and #6c) in this section for status code. See steps #6b) and #6c) in this section for
the cases that causes this error. the cases that causes this error.
'successful-ok-too-many-events': the Subscription Object was 'successful-ok-too-many-events': the Subscription Object was
created without the "notify-events" values included in this created without the "notify-events" values included in this
Subscription Attributes Group because the "notify-events" Subscription Attributes Group because the "notify-events"
attribute contains too many values. See section 17.4 for attribute contains too many values. See section 13.4 for
more details about this status code. See step #2 in this more details about this status code. See step #2 in this
section and section 5.3.2 for the cases that cause this section and section 5.3.3 for the cases that cause this
status code. status code.
'successful-ok-ignored-or-substituted-attributes' : the 'successful-ok-ignored-or-substituted-attributes' : the
Subscription Object was created but some supplied Subscription Object was created but some supplied
Subscription Template Attributes are unsupported. These Subscription Template Attributes are unsupported. These
unsupported attributes are also in the Subscription unsupported attributes are also in the Subscription
Attributes Group. See section 17.5 for more details about Attributes Group. See section 13.5 for more details about
this status code. See step #2 in this section for the cases this status code. See step #2 in this section for the
that cause this status code. cases that cause this status code.
9.The Printer MUST validate all Subscription Template Attributes and 9.The Printer MUST validate all Subscription Template Attributes and
MUST return all unsupported attributes and values in the MUST return all unsupported attributes and values in the
corresponding Subscription Attributes Group of the response (see corresponding Subscription Attributes Group of the response (see
step #2) unless it determines that it could not create additional step #2) unless it determines that it could not create additional
Subscription Objects because of condition #6b) or condition #6c). Subscription Objects because of condition #6b) or condition #6c).
Then, the Printer NEED NOT validate these additional Subscription Then, the Printer NEED NOT validate these additional Subscription
Template Attributes and the client MUST NOT expect to find Template Attributes and the client MUST NOT expect to find
unsupported attributes from step #2 in such additional unsupported attributes from step #2 in such additional
Subscription Attribute Groups. Subscription Attribute Groups.
5.3 Subscription Template Attributes 5.3 Subscription Template Attributes
This section contains the Subscription Template Attributes defined This section contains the Subscription Template Attributes defined
for the Subscription and Printer objects. for the Subscription and Printer objects.
skipping to change at page 24, line 13 skipping to change at page 22, line 18
attribute. attribute.
Table 1 - Subscription Template Attributes Table 1 - Subscription Template Attributes
Attribute in Subscription Default and Supported Printer Attribute in Subscription Default and Supported Printer
Object Attributes Object Attributes
notify-recipient-uri (uri) * notify-schemes-supported (1setOf notify-recipient-uri (uri) * notify-schemes-supported (1setOf
uriScheme) uriScheme)
notify-pull-method (type2 notify-pull-method-supported (1setOf notify-pull-method (type2 -pull-method-supported (1setOf
keyword) ** type2 keyword) keyword) ** type2ykeyword)
notify-events (1setOf type2 notify-events-default (1setOf type2 notify-events (1setOf type2 notify-events-default (1setOf type2
keyword) keyword) keyword) keyword)
notify-events-supported (1setOf type2 notify-events-supported (1setOf type2
keyword) keyword)
notify-max-events-supported notify-max-events-supported
(integer(2:MAX)) (integer(2:MAX))
notify-attributes (1setOf notify-attributes-supported (1setOf notify-attributes (1setOf notify-attributes-supported (1setOf
type2 keyword) type2 keyword) type2 keyword) type2 keyword)
skipping to change at page 25, line 5 skipping to change at page 23, line 5
notify-lease-duration-supported notify-lease-duration-supported
(1setOf (integer(0: 67108863) | (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) rangeOfInteger(0:67108863)))
notify-time-interval notify-time-interval
(integer(0:MAX)) (integer(0:MAX))
* "notify-recipient-uri" is for Push Delivery Methods only. * "notify-recipient-uri" is for Push Delivery Methods only.
** "notify-pull-method" is for Pull Delivery Methods only. ** "notify-pull-method" is for Pull Delivery Methods only.
5.3.1 notify-recipient-uri (uri) OR notify-pull-method (type2 keyword) 5.3.1 notify-recipient-uri (uri)
The "notify-recipient-uri" attribute MUST be used for Push Delivery
Methods and the "notify-pull-method" attribute MUST be used for Pull
Delivery Methods.
5.3.1.1 notify-recipient-uri (uri)
This attribute's value is a URL, which is a special case of a 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 Its value consists of a scheme and an address. The address specifies
the Notification Recipient and the scheme specifies the Push Delivery the Notification Recipient and the scheme specifies the Push Delivery
Method for each Event Notification associated with this Subscription Method for each Event Notification associated with this Subscription
Object. Object.
If a Printer supports any Push Delivery Methods, a Printer MUST If a Printer supports any Push Delivery Methods, a Printer MUST
support this attribute and return the value as supplied by the client support this attribute and return the value as supplied by the client
(no case conversion or other canonicalization) in any operation (no case conversion or other canonicalization) in any operation
skipping to change at page 25, line 43 skipping to change at page 23, line 37
include the ":" character. include the ":" character.
If the client supplies an unsupported scheme in the value of this If the client supplies an unsupported scheme in the value of this
attribute, then the Printer MUST NOT create the Subscription Object attribute, then the Printer MUST NOT create the Subscription Object
and MUST return the "notify-status-code" attribute with the 'client- and MUST return the "notify-status-code" attribute with the 'client-
error-uri-scheme-not-supported' value in the Subscription Attributes error-uri-scheme-not-supported' value in the Subscription Attributes
Group in the response. Group in the response.
The Printer MUST treat the address part of this attribute as opaque. The Printer MUST treat the address part of this attribute as opaque.
5.3.1.2 notify-pull-method (type2 keyword) 5.3.2 notify-pull-method (type2 keyword)
This attribute's value is a type2 keyword indicating which Pull This attribute's value is a type2 keyword indicating which Pull
Delivery Method is to be used. Delivery Method is to be used.
If a Printer supports any Pull Delivery Methods, a Printer MUST Since a Printer MUST support the 'ippget' Pull Delivery Method [ipp-
support this attribute and return the value as supplied by the client get-method] (see section 15), a Printer MUST support this attribute
in any operation response that includes 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 For a Pull Delivery Method, a client MUST supply this attribute in a
Subscription Creation Operation. Thus there is no need for a default Subscription Creation Operation. Thus there is no need for a default
Printer attribute. Printer attribute.
The keyword value of this attribute on a Subscription object MUST be The keyword value of this attribute on a Subscription object MUST be
a value of the "notify-pull-method-supported (1setOf type2 keyword)" a value of the "notify-pull-method-supported (1setOf type2 keyword)"
Printer attribute. Printer attribute.
If the client supplies an unsupported method in the value of this If the client supplies an unsupported method in the value of this
attribute, then the Printer MUST NOT create the Subscription Object attribute, then the Printer MUST NOT create the Subscription Object
and MUST return the "notify-status-code" attribute with the 'client- and MUST return the "notify-status-code" attribute with the 'client-
error-attributes-or-values-not-supported' value in the Subscription error-attributes-or-values-not-supported' value in the Subscription
Attributes Group in the response. Attributes Group in the response.
5.3.2 notify-events (1setOf type2 keyword) 5.3.3 notify-events (1setOf type2 keyword)
This attribute contains a set of Subscribed Events. When an Event This attribute contains a set of Subscribed Events. When an Event
occurs and it "matches" a value of this attribute, the Printer sends occurs and it "matches" a value of this attribute, the Printer sends
an Event Notification using information in the Subscription Object. an Event Notification using information in the Subscription Object.
The details of "matching" are described subsection 5.3.2.2. The details of "matching" are described subsection 5.3.3.2.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation, the Printer MUST populate this Subscription Creation Operation, the Printer MUST populate this
attribute on the Subscription Object with its "notify-events-default" attribute on the Subscription Object with its "notify-events-default"
attribute value. attribute value.
Each keyword value of this attribute on a Subscription Object MUST be Each keyword value of this attribute on a Subscription Object MUST be
skipping to change at page 26, line 47 skipping to change at page 24, line 43
The number of values of this attribute MUST NOT exceed the value of The number of values of this attribute MUST NOT exceed the value of
the "notify-max-events-supported" attribute. A Printer MUST support the "notify-max-events-supported" attribute. A Printer MUST support
at least 2 values per Subscription Object. If the number of values at least 2 values per Subscription Object. If the number of values
supplied by a client in a Subscription Creation Operation exceeds the supplied by a client in a Subscription Creation Operation exceeds the
value of this attribute, the Printer MUST treat extra values as value of this attribute, the Printer MUST treat extra values as
unsupported values and MUST use the value of 'successful-ok-too-many- unsupported values and MUST use the value of 'successful-ok-too-many-
events' for the "notify-status-code" attribute in the Subscription events' for the "notify-status-code" attribute in the Subscription
Attributes Group of the response. Attributes Group of the response.
5.3.2.1 Standard Values for Subscribed Events 5.3.3.1 Standard Values for Subscribed Events
Each value of this attribute is a keyword and it specifies a Each value of this attribute is a keyword and it specifies a
Subscribed Event that represents certain changes. Some keywords Subscribed Event that represents certain changes. Some keywords
represent a subset of changes of another keyword, e.g., 'job- represent a subset of changes of another keyword, e.g., 'job-
completed' is an Event value which is a sub-value of 'job-state- completed' is an Event value which is a sub-value of 'job-state-
change'. See section 5.3.2.2 for the case where this attribute change'. See section 5.3.3.2 for the case where this attribute
contains both a value and a sub-value. contains both a value and a sub-value.
The values in this section are divided into three categories: No The values in this section are divided into three categories: No
Events, Job Events and Printer Events. Events, Job Events and Printer Events.
A Printer MUST support the Events indicated as "REQUIRED" and MAY A Printer MUST support the Events indicated as "REQUIRED" and MAY
support the Events indicated as "OPTIONAL". support the Events indicated as "OPTIONAL".
5.3.2.1.1 No Events 5.3.3.1.1 No Events
The standard and only keyword value for No Events is: The standard and only keyword value for No Events is:
'none': REQUIRED - no Event Notifications for any Events. As the 'none': REQUIRED - no Event Notifications for any Events. As the
sole value of "notify-events-supported", this value means that the sole value of "notify-events-supported", this value means that the
Printer does not support the sending of Event Notifications. As Printer does not support the sending of Event Notifications. As
the sole value of "notify-events-default", this value means that a the sole value of "notify-events-default", this value means that a
client MUST specify the "notify-events" attribute in order for a client MUST specify the "notify-events" attribute in order for a
Subscription Creation Operation to succeed. If the Printer Subscription Creation Operation to succeed. If the Printer
receives this value as the sole value of a Subscription Creation receives this value as the sole value of a Subscription Creation
Operation, it does not create a Subscription Object. If a Printer Operation, it does not create a Subscription Object. If a Printer
receives this value with other values of a Subscription Creation receives this value with other values of a Subscription Creation
Operation, the Printer MUST treat this value as an unsupported Operation, the Printer MUST treat this value as an unsupported
value. value.
5.3.2.1.2 Subscribed Printer Events 5.3.3.1.2 Subscribed Printer Events
The standard keyword values for Subscribed Printer Events are: The standard keyword values for Subscribed Printer Events are:
'printer-state-changed': REQUIRED - the Printer changed state from 'printer-state-changed': REQUIRED - the Printer changed state from
any state to any other state. Specifically, the value of the any state to any other state. Specifically, the value of the
Printer's "printer-state", "printer-state-reasons" or "printer-is- Printer's "printer-state", "printer-state-reasons" or "printer-is-
accepting-jobs" attributes changed. accepting-jobs" attributes changed.
This Subscribed Event value has the following sub-values: This Subscribed Event value has the following sub-values:
'printer-restarted' and 'printer-shutdown'. A client can listen 'printer-restarted' and 'printer-shutdown'. A client can listen
skipping to change at page 28, line 15 skipping to change at page 26, line 11
'printer-stopped: REQUIRED - when the printer stops printing, 'printer-stopped: REQUIRED - when the printer stops printing,
i.e. the value of the "printer-state" Printer attribute i.e. the value of the "printer-state" Printer attribute
becomes 'stopped'. becomes 'stopped'.
'printer-config-changed': OPTIONAL - when the configuration of a 'printer-config-changed': OPTIONAL - when the configuration of a
Printer has changed, i.e., the value of the "printer-message-from- Printer has changed, i.e., the value of the "printer-message-from-
operator" or any "configuration" Printer attribute has changed. A operator" or any "configuration" Printer attribute has changed. A
"configuration" Printer attribute is an attribute which can change "configuration" Printer attribute is an attribute which can change
value because of some human interaction either direct or indirect, value because of some human interaction either direct or indirect,
and which is not covered by one of the other Events in this and which is not covered by one of the other Events in this
section. Examples of "configuration" Printer attributes are any of section. Examples of "configuration" Printer attributes are any
the Job Template attributes, such as "xxx-supported", "xxx-ready" of the Job Template attributes, such as "xxx-supported", "xxx-
and "xxx-default". Often, such a change is the result of a client ready" and "xxx-default". The client has to perform a Get-
performing a Set-Printer-Attributes operation (see [ipp-set]) on Printer-Attributes to find out the new values of these changed
the Printer. The client has to perform a Get-Printer-Attributes to attributes. This Event is useful for GUI clients and drivers to
find out the new values of these changed attributes. This Event update the available printer capabilities to the user.
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- This Event value has the following sub-values: 'printer-media-
changed' and 'printer-finishings-changed'. A client can listen for changed' and 'printer-finishings-changed'. A client can listen
any of these sub-values if it doesn't want to listen to all for any of these sub-values if it doesn't want to listen to all
printer-configuration changes: printer-configuration changes:
'printer-media-changed': OPTIONAL - when the media loaded on 'printer-media-changed': OPTIONAL - when the media loaded on
a printer has been changed, i.e., the "media-ready" a printer has been changed, i.e., the "media-ready"
attribute has changed. This Event includes two cases: an attribute has changed. This Event includes two cases: an
input tray that goes empty and an input tray that receives input tray that goes empty and an input tray that receives
additional media of the same type or of a different type. additional media of the same type or of a different type.
The client must check the "media-ready" Printer attribute The client must check the "media-ready" Printer attribute
(see [RFC2911] section 4.2.11) separately to find out what (see [RFC2911] section 4.2.11) separately to find out what
changed. changed.
skipping to change at page 29, line 5 skipping to change at page 26, line 48
what changed. what changed.
'printer-queue-order-changed': OPTIONAL - the order of jobs in the 'printer-queue-order-changed': OPTIONAL - the order of jobs in the
Printer's queue has changed, so that an application that is Printer's queue has changed, so that an application that is
monitoring the queue can perform a Get-Jobs operation to determine monitoring the queue can perform a Get-Jobs operation to determine
the new order. This Event does not include when a job enters the the new order. This Event does not include when a job enters the
queue (the 'job-created' Event covers that) and does not include queue (the 'job-created' Event covers that) and does not include
when a job leaves the queue (the 'job-completed' Event covers when a job leaves the queue (the 'job-completed' Event covers
that). that).
5.3.2.1.3 Subscribed Job Events 5.3.3.1.3 Subscribed Job Events
The standard keyword values for Subscribed Job Events are: The standard keyword values for Subscribed Job Events are:
'job-state-changed': REQUIRED - the job has changed from any state 'job-state-changed': REQUIRED - the job has changed from any state
to any other state. Specifically, the Printer sends this Event to any other state. Specifically, the Printer sends this Event
whenever the value of the "job-state" attribute or "job-state- whenever the value of the "job-state" attribute or "job-state-
reasons" attribute changes. When a Job is removed from the Job reasons" attribute changes. When a Job is removed from the Job
Retention or Job History phases (see [RFC2911] section 4.3.7.1), Retention or Job History phases (see [RFC2911] section 4.3.7.1),
no Event is generated. no Event is generated.
This Event value has the following sub-values: 'job-created', This Event value has the following sub-values: 'job-created',
'job-completed' and 'job-stopped'. A client can listen for any of '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 these sub-values if it doesn't want to listen to all 'job-state
changes'. changes'.
'job-created': REQUIRED - the Printer has accepted a Job 'job-created': REQUIRED - the Printer has accepted a Job
Creation operation, a Restart-Job operation [RFC2911], or Creation operation, a Restart-Job operation [RFC2911], or
any job operation that creates a Job object from an any job operation that creates a Job object from an
existing Job object. The Printer sets the job's "time-at- existing Job object. The Printer populates the job's
creation" attribute value (see [RFC2911] section 4.3.14.1). "time-at-creation" attribute value (see [RFC2911] section
The Printer puts the job in the 'pending', 'pending-held' 4.3.14.1). The Printer puts the job in the 'pending',
or 'processing' states. 'pending-held' or 'processing' states.
'job-completed': REQUIRED - the job has reached one of the 'job-completed': REQUIRED - the job has reached one of the
completed states, i.e., the value of the job's "job-state" completed states, i.e., the value of the job's "job-state"
attribute has changed to: 'completed', 'aborted', or attribute has changed to: 'completed', 'aborted', or
'canceled'. The Job's "time-at-completed" and "date-time- 'canceled'. The Job's "time-at-completed" and "date-time-
at-completed" (if supported) attributes are set (see at-completed" (if supported) attributes are set (see
[RFC2911] section 4.3.14). When a Job completes, a [RFC2911] section 4.3.14). When a Job completes, a
Notification Recipient MAY query the Job using the Get-Job- Notification Recipient MAY query the Job using the Get-Job-
Attributes operation. To allow such a query, the Printer Attributes operation. To allow such a query, the Printer
retains the Job in the Job Retention and/or the Job History retains the Job in the Job Retention and/or the Job History
skipping to change at page 30, line 7 skipping to change at page 27, line 52
'job-stopped: OPTIONAL - when the job stops printing, i.e. 'job-stopped: OPTIONAL - when the job stops printing, i.e.
the value of the "job-state" Job attribute becomes the value of the "job-state" Job attribute becomes
'processing-stopped'. 'processing-stopped'.
'job-config-changed': OPTIONAL - when the configuration of a job has 'job-config-changed': OPTIONAL - when the configuration of a job has
changed, i.e., the value of the "job-message-from-operator" or any changed, i.e., the value of the "job-message-from-operator" or any
of the "configuration" Job attributes have changed. A of the "configuration" Job attributes have changed. A
"configuration" Job attribute is an attribute that can change "configuration" Job attribute is an attribute that can change
value because of some human interaction either direct or indirect. value because of some human interaction either direct or indirect.
Examples of "configuration" Job attributes are any of the job Examples of "configuration" Job attributes are any of the job
template attributes and the "job-name" attribute. Often, such a template attributes and the "job-name" attribute. The client
change is the result of the user or the Operator performing a Set- performs a Get-Job-Attributes to find out the new values of the
Job-Attributes operation (see [ipp-set]) on the Job object. The changed attributes. This Event is useful for GUI clients and
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. drivers to update the job information to the user.
'job-progress': OPTIONAL - when the Printer has completed Printing a 'job-progress': OPTIONAL - when the Printer has completed Printing a
sheet. See the separate [ipp-prog] specification for additional sheet. See the separate [ipp-prog] specification for additional
attributes that a Printer MAY send in an Event Notification caused attributes that a Printer MAY send in an Event Notification caused
by this Event. The "notify-time-interval" attribute affects this by this Event. The "notify-time-interval" attribute affects this
Event by causing the Printer NOT to send an Event Notification Event by causing the Printer NOT to send an Event Notification
every time a 'job-progress' Events occurs. See section 5.3.8 for every time a 'job-progress' Events occurs. See section 5.3.9 for
full details. full details.
5.3.2.2 Rules for Matching of Subscribed Events 5.3.3.2 Rules for Matching of Subscribed Events
When an Event occurs, the Printer MUST find each Subscription object When an Event occurs, the Printer MUST find each Subscription object
whose "notify-events" attribute "matches" the Event. The rules for whose "notify-events" attribute "matches" the Event. The rules for
"matching" of Subscribed Events are described separately for Printer "matching" of Subscribed Events are described separately for Printer
Events and for Job Events. This section also describes some special Events and for Job Events. This section also describes some special
cases. cases.
5.3.2.2.1 Rules for Matching of Printer Events 5.3.3.2.1 Rules for Matching of Printer Events
Suppose that the Printer causes Printer Event E to occur. For each Suppose 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 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 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. attribute in S, the Printer MUST generate an Event Notification.
Consider the example. There are three Subscription Objects each with Consider the example. There are three Subscription Objects each with
the Subscribed Printer Event 'printer-state-changed'. Subscription the Subscribed Printer Event 'printer-state-changed'. Subscription
Object A is a Per-Printer Subscription Object. Subscription Object B 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 1, and Subscription Object C
is a Per-Job Subscription Object for Job 2. When the Printer enters is a Per-Job Subscription Object for Job 2. When the Printer enters
the 'stopped' state, the Printer sends an Event Notification to the the 'stopped' state, the Printer sends an Event Notification to the
Notification Recipients of Subscription Objects A, B, and C because Notification Recipients of Subscription Objects A, B, and C because
this is a Printer Event. Note if Job 1 has already completed, the this is a Printer Event. Note if Job 1 has already completed, the
Printer would not send an Event Notification for its Subscription Printer would not send an Event Notification for its Subscription
Object, even if Job 1 is retained in the Job Retention and/or the Job Object, even if Job 1 is retained in the Job Retention and/or the Job
History phases (see [RFC2911] section 4.3.7.1). History phases (see [RFC2911] section 4.3.7.1).
5.3.2.2.2 Rules for Matching of Job Events 5.3.3.2.2 Rules for Matching of Job Events
Suppose that Job J causes Job Event E to occur. Suppose that Job J causes Job Event E to occur.
1.For each Per-Printer Subscription S in the Printer, if E equals 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 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 this attribute in S, the Printer MUST generate an Event
Notification. Notification.
2.For each Per-Job Subscription S associated with Job J, if E 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 equals a value of this attribute in S or E is a sub-value of a
skipping to change at page 31, line 29 skipping to change at page 29, line 20
3.For each Per-Job Subscription S that is NOT associated Job J, if 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 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 value of this attribute in, the Printer MUST NOT generate an
Event Notification from S. Event Notification from S.
Consider the example: There are three Subscription Objects listening Consider the example: There are three Subscription Objects listening
for the Job Event 'job-completed'. Subscription Object A is a Per- for the Job Event 'job-completed'. Subscription Object A is a Per-
Printer Subscription Object. Subscription Object B is a Per-Job 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 1, and Subscription Object C is a Per-Job
Subscription Object for Job 2. In addition, Per-Printer Subscription Subscription Object for Job 2. In addition, Per-Printer Subscription
Object D is listening for the Job Event 'job-state-changed'. When Job Object D is listening for the Job Event 'job-state-changed'. When
1 completes, the Printer sends an Event Notification to the Job 1 completes, the Printer sends an Event Notification to the
Notification Recipient of Subscription Object A (because it is Per- Notification Recipient of Subscription Object A (because it is Per-
Printer) and Subscription Object B because it is a Per-Job Printer) and Subscription Object B because it is a Per-Job
Subscription Object associated with the Job generating the Event. Subscription Object associated with the Job generating the Event.
The Printer also sends an Event Notification to the Notification The Printer also sends an Event Notification to the Notification
Recipient of Subscription Object D because 'job-completed' is a sub- Recipient of Subscription Object D because 'job-completed' is a sub-
value of 'job-state-changed' - the value that Subscription Object D value of 'job-state-changed' - the value that Subscription Object D
is listening for. The Printer does not send an Event Notification to is listening for. The Printer does not send an Event Notification to
the Notification Recipients of Subscription Object C because it is a the Notification Recipients of Subscription Object C because it is a
Per-Job Subscription Object associated with some Job other than the Per-Job Subscription Object associated with some Job other than the
Job generating the Event. Job generating the Event.
5.3.2.2.3 Special Cases for Matching Rules 5.3.3.2.3 Special Cases for Matching Rules
This section contains rule for special cases. This section contains rule for special cases.
If an Event matches Subscribed Events in two different Subscription If an Event matches Subscribed Events in two different Subscription
Objects and the Printer would send two identical Event Notifications Objects and the Printer would send two identical Event Notifications
(except for the "notify-subscription-id" attribute) to the same (except for the "notify-subscription-id" attribute) to the same
Notification Recipient using the same Delivery Method, the Printer Notification Recipient using the same Delivery Method, the Printer
MUST send both Event Notifications. That is, the Printer MUST NOT try MUST send both Event Notifications. That is, the Printer MUST NOT
to consolidate seemingly identical Event Notifications that occur in try to consolidate seemingly identical Event Notifications that occur
separate Subscription objects. Incidentally, the Printer MUST NOT in separate Subscription objects. Incidentally, the Printer MUST NOT
reject Subscription Creation Operations that would create this reject Subscription Creation Operations that would create this
scenario. scenario.
If an Event matches two values of this "notify-events" attribute in a If an Event matches two values of this "notify-events" attribute in a
single Subscription object (e.g., a value and its sub-value), a single Subscription object (e.g., a value and its sub-value), a
Printer MAY send one Event Notification for each matched value in the Printer MAY send one Event Notification for each matched value in the
Subscription Object or it MAY send only one Event Notification per Subscription Object or it MAY send only one Event Notification per
Subscription Object. The rules in sections 5.3.2.2.1 and 5.3.2.2.2 Subscription Object. The rules in sections 5.3.3.2.1 and 5.3.3.2.2
are purposefully ambiguous about the number of Event Notification are purposefully ambiguous about the number of Event Notification
sent when Event E matches two or more values in a Subscription sent when Event E matches two or more values in a Subscription
Object. Object.
Consider the example: There are two Per-Printer Subscription Objects Consider the example: There are two Per-Printer Subscription Objects
when a Job completes. Subscription Object A has the Subscribed Job when a Job completes. Subscription Object A has the Subscribed Job
Event 'job-state-changed'. Subscription Object B has the Subscribed Event 'job-state-changed'. Subscription Object B has the Subscribed
Job Events 'job-state-changed' and 'job-completed'. The Printer sends Job Events 'job-state-changed' and 'job-completed'. The Printer
an Event Notification to the Notification Recipient of Subscription sends an Event Notification to the Notification Recipient of
Object A with the value of 'job-state-changed' for the "notify- Subscription Object A with the value of 'job-state-changed' for the
subscribing-event" attribute. The Printer sends either one or two "notify-subscribing-event" attribute. The Printer sends either one
Event Notifications to the Notification Recipient of Subscription or two Event Notifications to the Notification Recipient of
Object B, depending on implementation. If it sends two Event Subscription Object B, depending on implementation. If it sends two
Notifications, one has the value of 'job-state-changed' for the Event Notifications, one has the value of 'job-state-changed' for
"notify-subscribing-event" attribute, and the other has the value of the "notify-subscribing-event" attribute, and the other has the value
'job-completed' for the "notify-subscribing-event" attribute. If it of 'job-completed' for the "notify-subscribing-event" attribute. If
sends one Event Notification, it has the value of either 'job-state- it sends one Event Notification, it has the value of either 'job-
changed' or 'job-completed' for the "notify-subscribing-event" state-changed' or 'job-completed' for the "notify-subscribing-event"
attribute, depending on implementation. The algorithm for choosing attribute, depending on implementation. The algorithm for choosing
such a value is implementation dependent. such a value is implementation dependent.
5.3.3 notify-attributes (1setOf type2 keyword) 5.3.4 notify-attributes (1setOf type2 keyword)
This attribute contains a set of attribute names. When a Printer This attribute contains a set of attribute names. When a Printer
sends a Machine Consumable Event Notification, it includes a fixed sends a Machine Consumable Event Notification, it includes a fixed
set of attributes (see section 9.1). If this attribute is present set of attributes (see section 9.1). If this attribute is present
and the Event Notification is Machine Consumable, the Printer also and the Event Notification is Machine Consumable, the Printer also
includes the attributes specified by this attribute. includes the attributes specified by this attribute.
A Printer MAY support this attribute. A Printer MAY support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
skipping to change at page 34, line 5 skipping to change at page 31, line 38
Consumable Event Notification, the Printer MUST include in each Event Consumable Event Notification, the Printer MUST include in each Event
Notification: Notification:
a)the attributes specified in section 9.1 and a)the attributes specified in section 9.1 and
b)each attribute named by this attribute. b)each attribute named by this attribute.
The Printer MUST NOT use this attribute to generate a Human The Printer MUST NOT use this attribute to generate a Human
Consumable Event Notification. Consumable Event Notification.
5.3.4 notify-user-data (octetString(63)) 5.3.5 notify-user-data (octetString(63))
This attribute contains opaque data that some Delivery Methods This attribute contains opaque data that some Delivery Methods
include in each Machine Consumable Event Notification. The opaque include in each Machine Consumable Event Notification. The opaque
data might contain, for example: data might contain, for example:
- the identity of the Subscriber - the identity of the Subscriber
- a path or index to some Subscriber information - a path or index to some Subscriber information
- a key that identifies to the Notification Recipient the - a key that identifies to the Notification Recipient the
skipping to change at page 34, line 35 skipping to change at page 32, line 18
Subscription Creation Operation, the Subscription Object either (1) Subscription Creation Operation, the Subscription Object either (1)
MAY contain the "notify-user-data" attribute with a zero length value 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- or (2) NEED NOT contain the attribute at all. There is no "notify-
user-data-default" Printer attribute. user-data-default" Printer attribute.
There is no "notify-user-data-supported" Printer attribute. Rather, There is no "notify-user-data-supported" Printer attribute. Rather,
any octetString whose length does not exceed 63 octets is a supported 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 value. If the length exceeds 63 octets, the Printer MUST treat it as
an unsupported value. an unsupported value.
5.3.5 notify-charset (charset) 5.3.6 notify-charset (charset)
This attribute specifies the charset to be used in the Event This attribute specifies the charset to be used in the Event
Notification content sent to the Notification Recipient, whether the Notification content sent to the Notification Recipient, whether the
Event Notification content is Machine Consumable or Human Consumable. Event Notification content is Machine Consumable or Human Consumable.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation or supplies an unsupported value, the Subscription Creation Operation or supplies an unsupported value, the
skipping to change at page 35, line 10 skipping to change at page 32, line 40
the value of the "attributes-charset" operation attribute, which is a the value of the "attributes-charset" operation attribute, which is a
REQUIRED attribute in all IPP requests (see [RFC2911]). If the value REQUIRED attribute in all IPP requests (see [RFC2911]). If the value
of the "attributes-charset" attribute is unsupported, the Printer of the "attributes-charset" attribute is unsupported, the Printer
MUST populate this attribute in the Subscription Object with the MUST populate this attribute in the Subscription Object with the
value of the Printer's "charset-configured" attribute. There is no value of the Printer's "charset-configured" attribute. There is no
"notify-charset-default" Printer attribute. "notify-charset-default" Printer attribute.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "charset-supported (1setOf charset)" Printer attribute. of the "charset-supported (1setOf charset)" Printer attribute.
5.3.6 notify-natural-language (naturalLanguage) 5.3.7 notify-natural-language (naturalLanguage)
This attribute specifies the natural language to be used in any human This attribute specifies the natural language to be used in any human
consumable text in the Event Notification content sent to the consumable text in the Event Notification content sent to the
Notification Recipient, whether the Event Notification content is Notification Recipient, whether the Event Notification content is
Machine Consumable or Human Consumable. Machine Consumable or Human Consumable.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation or supplies an unsupported value, the Subscription Creation Operation or supplies an unsupported value, the
Printer MUST populate this attribute in the Subscription Object with Printer MUST populate this attribute in the Subscription Object with
the value of the "attributes-natural-language" operation attribute, the value of the "attributes-natural-language" operation attribute,
which is a REQUIRED attribute in all IPP requests (see [RFC2911]). If which is a REQUIRED attribute in all IPP requests (see [RFC2911]).
the value of the "attributes-natural-language" attribute is If the value of the "attributes-natural-language" attribute is
unsupported, the Printer MUST populate this attribute in the unsupported, the Printer MUST populate this attribute in the
Subscription Object with the value of the Printer's "natural- Subscription Object with the value of the Printer's "natural-
language-configured" attribute. There is no "notify-natural-language- language-configured" attribute. There is no "notify-natural-
default" Printer attribute. language-default" Printer attribute.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "generated-natural-language-supported (1setOf type2 of the "generated-natural-language-supported (1setOf type2
naturalLanguage)" Printer attribute. naturalLanguage)" Printer attribute.
5.3.7 notify-lease-duration (integer(0:67108863)) 5.3.8 notify-lease-duration (integer(0:67108863))
This attribute specifies the duration of the lease (in seconds) This attribute specifies the duration of the lease (in seconds)
associated with the Per-Printer Subscription Object at the time the associated with the Per-Printer Subscription Object at the time the
Subscription Object was created or the lease was renewed. 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 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 never expires. See section 5.4.3 on "notify-lease-expiration-time
(integer(0:MAX))" for more details. (integer(0:MAX))" for more details.
This attribute is not present on a Per-Job Subscription Object This attribute is not present on a Per-Job Subscription Object
because the Subscription Object lasts exactly as long as the because the Subscription Object lasts exactly as long as the
associated Job object. See discussion of the 'job-completed' event associated Job object. See discussion of the 'job-completed' event
in section 5.3.2.1.3 about retention of the Job object after in section 5.3.3.1.3 about retention of the Job object after
completion. completion.
A Printer MUST support this attribute. A Printer MUST support this attribute.
For a Subscription Object Creation operation of a Per-Job For a Subscription Object Creation operation of a Per-Job
Subscription Object, the client MUST NOT supply this attribute. If Subscription Object, the client MUST NOT supply this attribute. If
the client does supply this attribute, the Printer MUST treat it as the client does supply this attribute, the Printer MUST treat it as
an unsupported attribute. an unsupported attribute.
For a Subscription Creation Operation of a Per-Printer Subscription For a Subscription Creation Operation of a Per-Printer Subscription
skipping to change at page 36, line 25 skipping to change at page 34, line 7
MUST populate this attribute with its "notify-lease-duration-default" MUST populate this attribute with its "notify-lease-duration-default"
(0:67108863) attribute value. If the client supplies this attribute (0:67108863) attribute value. If the client supplies this attribute
with an unsupported value, the Printer MUST populate 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 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 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 Printer doesn't assign the value of 0 (infinite) unless the client
requests it. requests it.
After the Printer has populated this attribute with a supported After the Printer has populated this attribute with a supported
value, the value represents the "granted duration" of the lease in value, the value represents the "granted duration" of the lease in
seconds and the Printer sets the value of the Subscription Object's seconds and the Printer updates the value of the Subscription
"notify-lease-expiration-time" attribute as specified in section Object's "notify-lease-expiration-time" attribute as specified in
5.4.3. section 5.4.3.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "notify-lease-duration-supported" (1setOf (integer(0:67108863) of the "notify-lease-duration-supported" (1setOf (integer(0:67108863)
| rangeOfInteger(0:67108863))) Printer attribute. | rangeOfInteger(0:67108863))) Printer attribute.
A Printer MAY require authentication in order to return the value of 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- 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-supported", and to allow 0 as a value of the "notify-lease-
duration" attribute. duration" attribute.
Note: The maximum value 67,108,863 is 2 raised to the 26 power minus 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 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 it than MAX so that there is virtually no chance of an overflow when it
is added to "printer-up-time" to produce "notify-lease-expiration- is added to "printer-up-time" to produce "notify-lease-expiration-
time". time".
5.3.8 notify-time-interval (integer(0:MAX)) 5.3.9 notify-time-interval (integer(0:MAX))
The 'job-progress' Event occurs each time that a Printer completes a The 'job-progress' Event occurs each time that a Printer completes a
sheet. Some Notification Recipients do not want to receive an Event sheet. Some Notification Recipients do not want to receive an Event
Notification every time this Event occurs. This attribute allows a Notification every time this Event occurs. This attribute allows a
Subscribing Client to request how often it wants to receive Event Subscribing Client to request how often it wants to receive Event
Notifications for 'job-progress' Events. The value of this attribute Notifications for 'job-progress' Events. The value of this attribute
MAY be any nonnegative integer (0,MAX) indicating the minimum number MAY be any nonnegative integer (0,MAX) indicating the minimum number
of seconds between 'job-progress' Event Notifications. of seconds between 'job-progress' Event Notifications.
The Printer MUST support this attribute if and only if the Printer The Printer MUST support this attribute if and only if the Printer
skipping to change at page 37, line 38 skipping to change at page 35, line 20
a)If the Printer has not sent an Event Notification for the 'job- a)If the Printer has not sent an Event Notification for the 'job-
progress' Event for the associated Subscription Object within progress' Event for the associated Subscription Object within
the past N seconds, the Printer MUST send an Event Notification the past N seconds, the Printer MUST send an Event Notification
for the Event that just occurred. Note when the Printer for the Event that just occurred. Note when the Printer
completes the first page of a Job, this rule implies that the completes the first page of a Job, this rule implies that the
Printer sends an Event Notification for a Per-Job Subscription Printer sends an Event Notification for a Per-Job Subscription
Object. Object.
b)Otherwise, the Printer MUST NOT generate or send an Event b)Otherwise, the Printer MUST NOT generate or send an Event
Notification for the associated Subscription Object. The Printer Notification for the associated Subscription Object. The
MUST NOT increase the value of the "notify-sequence-number" Printer MUST NOT increase the value of the "notify-sequence-
Subscription Object attribute (i.e., the sequence of values of number" Subscription Object attribute (i.e., the sequence of
the "notify-sequence-number" attribute counts the Event values of the "notify-sequence-number" attribute counts the
Notifications that the Printer sent and not the Events that do Event Notifications that the Printer sent and not the Events
not cause an Event Notification to be sent). that do not cause an Event Notification to be sent).
It is RECOMMENDED that a Subscribing Client use this attribute when It is RECOMMENDED that a Subscribing Client use this attribute when
it subscribes to the 'job-progress' Event, and that the value be it subscribes to the 'job-progress' Event, and that the value be
sufficiently large to limit the frequency with which the Printer sufficiently large to limit the frequency with which the Printer
sends Event Notifications requests. sends Event Notifications requests.
This attribute MUST NOT effect any Events other than 'job-progress'. This attribute MUST NOT effect any Events other than 'job-progress'.
5.4 Subscription Description Attributes 5.4 Subscription Description Attributes
Subscription Description Attributes are those attributes that a Subscription Description Attributes are those attributes that a
Printer adds to a Subscription Object at the time of its creation. Printer adds to a Subscription Object at the time of its creation.
A Printer MUST support all attributes in this Table 2. A Printer MUST support all attributes in this Table 2.
A client MUST NOT supply the attributes in Table 2 in a Subscription A client MUST NOT supply the attributes in Table 2 in a Subscription
Template Attributes Group of a Subscription Creation Operation. If Template Attributes Group of a Subscription Creation Operation.
the client supplies them, the Printer MUST NOT set them and MUST There are no corresponding default or supported attributes.
treat them as unsupported attributes. There are no corresponding
default or supported attributes.
Table 2 - Subscription Description Attributes Table 2 - Subscription Description Attributes
Subscription Object attributes: Subscription Object attributes:
notify-subscription-id (integer(1:MAX)) notify-subscription-id (integer(1:MAX))
notify-sequence-number (integer(0:MAX)) notify-sequence-number (integer(0:MAX))
notify-lease-expiration-time (integer(0:MAX)) notify-lease-expiration-time (integer(0:MAX))
skipping to change at page 39, line 26 skipping to change at page 37, line 11
The value of this attribute indicates the number of times that the The value of this attribute indicates the number of times that the
Printer has generated and attempted to send an Event Notification for Printer has generated and attempted to send an Event Notification for
this Subscription object. When an Event Notification contains this this Subscription object. When an Event Notification contains this
attribute, the Notification Recipient can determine whether it missed attribute, the Notification Recipient can determine whether it missed
some Event Notifications (i.e., numbers skipped) or received some Event Notifications (i.e., numbers skipped) or received
duplicates (i.e., same number twice). duplicates (i.e., same number twice).
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Subscription Object, it MUST set the value When the Printer creates a Subscription Object, it MUST populate this
of this attribute to 0. This value indicates that the Printer has not attribute with a value of 0. This value indicates that the Printer
sent any Event Notifications for this Subscription Object. has not sent any Event Notifications for this Subscription Object.
Each time the Printer sends a newly generated Event Notification, it Each time the Printer sends a newly generated Event Notification, it
MUST increase the value of this attribute by 1. For some Delivery MUST increase the value of this attribute by 1. For some Delivery
Methods, the Printer MUST include this attribute in each Event Methods, the Printer MUST include this attribute in each Event
Notification, and the value MUST be the value after it is increased 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 by 1. That is, the value of this attribute in the first Event
Notification after Subscription object creation MUST be 1, the second Notification after Subscription object creation MUST be 1, the second
MUST be 2, etc. If a Delivery Method is defined such that the MUST be 2, etc. If a Delivery Method is defined such that the
Notification Recipient returns a response, the Printer can re-try Notification Recipient returns a response, the Printer can re-try
sending an Event Notification a certain number of times with the same sending an Event Notification a certain number of times with the same
skipping to change at page 40, line 12 skipping to change at page 37, line 42
This attribute specifies the time in the future when the lease on the This attribute specifies the time in the future when the lease on the
Per-Printer Subscription Object will expire, i.e. the "printer-up- 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 time" value at which the lease will expire. If the value is 0, the
lease never expires. lease never expires.
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this When the Printer creates a Per-Job Subscription Object, this
attribute MUST NOT be present - the Subscription Object lasts exactly attribute MUST NOT be present - the Subscription Object lasts exactly
as long as the associated Job object. See also the discussion of the as long as the associated Job object. See also the discussion of the
'job-completed' event in section 5.3.2.1.3 about retention of the Job 'job-completed' event in section 5.3.3.1.3 about retention of the Job
object after completion so that a Notification Recipient can query object after completion so that a Notification Recipient can query
the Job object after receiving the 'job-completed' Event the Job object after receiving the 'job-completed' Event
Notification. Notification.
When the Printer creates a Per-Printer Subscription Object, it When the Printer creates a Per-Printer Subscription Object, it
populates this attribute with a value that is the sum of the values populates this attribute with a value that is the sum of the values
of the Printer's "printer-up-time" attribute and the Subscription of the Printer's "printer-up-time" attribute and the Subscription
Object's "notify-lease-duration" attribute with the following Object's "notify-lease-duration" attribute with the following
exception. If the value of the Subscription Object's "notify-lease- exception. If the value of the Subscription Object's "notify-lease-
duration" attribute is 0 (i.e., no expiration time), then the value 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). of this attribute MUST be set to 0 (i.e., no expiration time).
When the Printer powers up, it MUST set the value of this attribute When the Printer powers up, it MUST populate this attribute in each
in each persistent Subscription Object using the algorithm in the persistent Subscription Object with a value using the algorithm in
previous paragraph. the previous paragraph.
When the "printer-up-time" equals the value of this attribute, the When the "printer-up-time" equals the value of this attribute, the
Printer MUST delete the Subscription Object. A client can extend a Printer MUST delete the Subscription Object. A client can extend a
lease of a Per-Printer Subscription Object with the Renew- lease of a Per-Printer Subscription Object with the Renew-
Subscription operation (see section 11.2.6). Subscription operation (see section 11.2.6).
Note: In order to compute the number of seconds remaining in a lease Note: In order to compute the number of seconds remaining in a lease
for a Per-Printer Subscription Object, a client can subtract the for a Per-Printer Subscription Object, a client can subtract the
Subscription's "notify-printer-up-time" attribute (see section 5.4.4) Subscription's "notify-printer-up-time" attribute (see section 5.4.4)
from the Subscription's "notify-lease-expiration-time" attribute. from the Subscription's "notify-lease-expiration-time" attribute.
skipping to change at page 41, line 6 skipping to change at page 38, line 34
attribute " (see [RFC2911] section 4.4.29). In other words, when attribute " (see [RFC2911] section 4.4.29). In other words, when
this attribute is queried with the Get-Subscriptions or Get- this attribute is queried with the Get-Subscriptions or Get-
Subscription-Attributes operations (see sections 11.2.4 and 11.2.5), 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- the value returned is the current value of the Printer's "printer-up-
time" attribute, rather than the time at which the Subscription time" attribute, rather than the time at which the Subscription
Object was created. Object was created.
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this When the Printer creates a Per-Job Subscription Object, this
attribute MUST NOT be present. When the Printer creates a Per-Printer attribute MUST NOT be present. When the Printer creates a Per-
Subscription Object, this attribute MUST be present. Printer Subscription Object, this attribute MUST be present.
Note: this attribute exists in a Per-Printer Subscription Object so Note: this attribute exists in a Per-Printer Subscription Object so
that a client using the Get-Subscription-Attributes or Get- that a client using the Get-Subscription-Attributes or Get-
Subscription operations can convert the Per-Printer Subscription's Subscription operations can convert the Per-Printer Subscription's
"notify-lease-expiration-time" attribute to wall clock time with one "notify-lease-expiration-time" attribute to wall clock time with one
request. If the value of the "notify-lease-expiration-time" attribute request. If the value of the "notify-lease-expiration-time"
is not 0 (i.e., no expiration time), then the difference between the attribute is not 0 (i.e., no expiration time), then the difference
"notify-lease-expiration-time" attribute and the "notify-printer-up- between the "notify-lease-expiration-time" attribute and the "notify-
time" is the remaining number of seconds on the lease from the printer-up-time" is the remaining number of seconds on the lease from
current time. the current time.
5.4.5 notify-printer-uri (uri) 5.4.5 notify-printer-uri (uri)
This attribute identifies the Printer object that created this This attribute identifies the Printer object that created this
Subscription Object. Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
During a Subscription Creation Operation, the Printer MUST populate During a Subscription Creation Operation, the Printer MUST populate
this attribute with the value of the "printer-uri" operation this attribute with the value of the "printer-uri" operation
skipping to change at page 42, line 4 skipping to change at page 39, line 32
Subscription Object MUST be a Per-Job Subscription Object and this Subscription Object MUST be a Per-Job Subscription Object and this
attribute MUST identify the Job with which the Subscription Object is attribute MUST identify the Job with which the Subscription Object is
associated. associated.
Note: This attribute could be useful to a Notification Recipient that Note: This attribute could be useful to a Notification Recipient that
receives an Event Notification generated from a Per-Job Subscription receives an Event Notification generated from a Per-Job Subscription
Object and caused by a Printer Event. The Event Notification gives Object and caused by a Printer Event. The Event Notification gives
access to the Printer and the Subscription Object. The Event access to the Printer and the Subscription Object. The Event
Notification gives access to the associated Job only via this Notification gives access to the associated Job only via this
attribute. See discussion of the 'job-completed' event in section attribute. See discussion of the 'job-completed' event in section
5.3.2.1.3 about retention of the Job object after completion so that 5.3.3.1.3 about retention of the Job object after completion so that
a Notification Recipient can query the Job object after receiving the a Notification Recipient can query the Job object after receiving the
'job-completed' Event Notification. 'job-completed' Event Notification.
5.4.7 notify-subscriber-user-name (name(MAX)) 5.4.7 notify-subscriber-user-name (name(MAX))
This attribute contains the name of the user who performed the This attribute contains the name of the user who performed the
Subscription Creation Operation. Subscription Creation Operation.
A Printer MUST support this attribute. A Printer MUST support this attribute.
The Printer sets this attribute to the most authenticated printable The Printer MUST populates this attribute with the most authenticated
name that it can obtain from the authentication service over which printable name that it can obtain from the authentication service
the Subscription Creation Operation was received. The Printer uses over which the Subscription Creation Operation was received. The
the same mechanism for determining the value of this attribute as it Printer uses the same mechanism for determining the value of this
does for a Job's "job-originating-user-name" (see [RFC2911] section attribute as it does for a Job's "job-originating-user-name" (see
4.3.6). [RFC2911] section 4.3.6).
Note: To help with authentication, a Subscription Object may have Note: To help with authentication, a Subscription Object may have
additional private attributes about the user, e.g., a credential of a additional private attributes about the user, e.g., a credential of a
principal. Such private attributes are implementation-dependent and principal. Such private attributes are implementation-dependent and
not defined in this document. not defined in this document.
6 Printer Description Attributes Related to Notification 6 Printer Description Attributes Related to Notification
This section defines the Printer Description attributes that are This section defines the Printer Description attributes that are
related to Notification. Table 3 lists the Printer Description related to Notification. Table 3 lists the Printer Description
skipping to change at page 43, line 16 skipping to change at page 40, line 33
This OPTIONAL attribute records the most recent time at which the This OPTIONAL attribute records the most recent time at which the
'printer-state-changed' Printer Event occurred whether or not any 'printer-state-changed' Printer Event occurred whether or not any
Subscription objects were listening for this event. This attribute Subscription objects were listening for this event. This attribute
helps a client or operator to determine how long the Printer has been helps a client or operator to determine how long the Printer has been
in its current state. in its current state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be On power-up, the Printer MUST populate this attribute with the value
the value of its "printer-up-time" attribute, so that it always has a of its "printer-up-time" attribute, so that it always has a value.
value. Whenever the 'printer-state-changed' Printer Event occurs, the Whenever the 'printer-state-changed' Printer Event occurs, the
Printer MUST set this attribute to the value of the Printer's Printer MUST update this attribute with the value of the Printer's
"printer-up-time" attribute. "printer-up-time" attribute.
6.2 printer-state-change-date-time (dateTime) 6.2 printer-state-change-date-time (dateTime)
This OPTIONAL attribute records the most recent time at which the This OPTIONAL attribute records the most recent time at which the
'printer-state-changed' Printer Event occurred whether or not there 'printer-state-changed' Printer Event occurred whether or not there
were any Subscription Objects listening for this event. This were any Subscription Objects listening for this event. This
attribute helps a client or operator to determine how long the attribute helps a client or operator to determine how long the
Printer has been in its current state. Printer has been in its current state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be On power-up, the Printer MUST populate this attribute with the value
the value of its "printer-current-time" attribute, so that it always of its "printer-current-time" attribute, so that it always has a
has a value (see [RFC2911] section 4.4.30 on "printer-current-time"). value (see [RFC2911] section 4.4.30 on "printer-current-time").
Whenever the 'printer-state-changed' Printer Event occurs, the Whenever the 'printer-state-changed' Printer Event occurs, the
Printer MUST set this attribute to the value of the Printer's Printer MUST update this attribute with the value of the Printer's
"printer-current-time" attribute. "printer-current-time" attribute.
7 New Values for Existing Printer Description Attributes 7 New Values for Existing Printer Description Attributes
This section contains those attributes for which additional values This section contains those attributes for which additional values
are added. are added.
7.1 operations-supported (1setOf type2 enum) 7.1 operations-supported (1setOf type2 enum)
The following "operation-id" values are added in order to support the The following "operation-id" values are added in order to support the
skipping to change at page 44, line 42 skipping to change at page 42, line 21
This attribute MUST contain one of the values of the "notify-events" This attribute MUST contain one of the values of the "notify-events"
attribute in the Subscription Object, i.e., one of the Subscribed attribute in the Subscription Object, i.e., one of the Subscribed
Event values. Its value is the Subscribed Event that "matches" the Event values. Its value is the Subscribed Event that "matches" the
Event that caused the Printer to send this Event Notification. This Event that caused the Printer to send this Event Notification. This
Subscribed Event value may be identical to the Event or the Event may 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- be a sub-value of the Subscribed Event. For example, the 'job-
completed' Event (which is a sub-event of the 'job-state-changed' completed' Event (which is a sub-event of the 'job-state-changed'
event) would cause the Printer to send an Event Notification for event) would cause the Printer to send an Event Notification for
either the 'job-completed' or 'job-state-changed' Subscribed Events either the 'job-completed' or 'job-state-changed' Subscribed Events
and to send the 'job-completed' or 'job-state-changed' value for this and to send the 'job-completed' or 'job-state-changed' value for this
attribute, respectively,. See section 5.3.2.2 for the "matching" attribute, respectively,. See section 5.3.3.2 for the "matching"
rules of Subscribed Events and for additional examples. rules of Subscribed Events and for additional examples.
The Delivery Method Document specifies whether the Printer includes The Delivery Method Document specifies whether the Printer includes
the value of this attribute in an Event Notification. the value of this attribute in an Event Notification.
8.2 notify-text (text(MAX)) 8.2 notify-text (text(MAX))
This attribute contains a Human Consumable text message (see section This attribute contains a Human Consumable text message (see section
9.2). This message describes the Event and is encoded as plain text, 9.2). This message describes the Event and is encoded as plain text,
i.e., 'text/plain' with the charset specified by Subscription i.e., 'text/plain' with the charset specified by Subscription
skipping to change at page 45, line 22 skipping to change at page 42, line 44
The Delivery Method Document specifies whether the Printer includes The Delivery Method Document specifies whether the Printer includes
this attribute in an Event Notification. this attribute in an Event Notification.
9 Event Notification Content 9 Event Notification Content
This section defines the Event Notification content that the Printer This section defines the Event Notification content that the Printer
sends when an Event occurs. sends when an Event occurs.
When an Event occurs, the Printer MUST find each Subscription object When an Event occurs, the Printer MUST find each Subscription object
whose "notify-events" attribute "matches" the Event. See section whose "notify-events" attribute "matches" the Event. See section
5.3.2.2 for details on "matching". For each matched Subscription 5.3.3.2 for details on "matching". For each matched Subscription
Object, the Printer MUST create an Event Notification with the Object, the Printer MUST create an Event Notification with the
content and format that the Delivery Method Document specifies. The content and format that the Delivery Method Document specifies. The
content contains the value of attributes specified by the Delivery content contains the value of attributes specified by the Delivery
Method Document. The Printer obtains the values immediately after the Method Document. The Printer obtains the values immediately after
Event occurs. For example, if the "printer-state" attribute changes the Event occurs. For example, if the "printer-state" attribute
from 'idle' to 'processing', the Event 'printer-state-changed' occurs changes from 'idle' to 'processing', the Event 'printer-state-
and the Printer puts various attributes into the Event Notification, changed' occurs and the Printer puts various attributes into the
including "printer-up-time" and "printer-state" with the values that Event Notification, including "printer-up-time" and "printer-state"
they have immediately after the Event occurs, i.e., the value of with the values that they have immediately after the Event occurs,
"printer-state" is 'processing'. i.e., the value of "printer-state" is 'processing'.
Event Notification Ordering: Event Notification Ordering:
When a Printer sends Event Notifications, the Event Notifications When a Printer sends Event Notifications, the Event Notifications
from any given Subscription Object MUST be in time stamp order, i.e., 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 in order of increasing "printer-up-time" attribute value in the Event
Notification (see Table 5). These Event Notifications MAY be Notification (see Table 5). These Event Notifications MAY be
interleaved with those from other Subscription Objects, as long as interleaved with those from other Subscription Objects, as long as
those others are also in time stamp order. The Printer MUST observe those others are also in time stamp order. The Printer MUST observe
these ordering requirements whether sending multiple pending Events these ordering requirements whether sending multiple pending Events
skipping to change at page 52, line 43 skipping to change at page 50, line 28
c) for Printer Events only c) for Printer Events only
9.2.1 Event Notification Content Common to All Events 9.2.1 Event Notification Content Common to All Events
This section lists the source of the information that a Delivery This section lists the source of the information that a Delivery
Method MUST specify for all Events. Method MUST specify for all Events.
There is a separate table for each piece of information. Each row in There is a separate table for each piece of information. Each row in
the table represents a source value for the information and the the table represents a source value for the information and the
values are listed in order of preference, with the first one being values are listed in order of preference, with the first one being
the preferred one. An implementation SHOULD use the source value from the preferred one. An implementation SHOULD use the source value
the earliest row in each table. It MAY use the source value from from the earliest row in each table. It MAY use the source value
another row instead, or it MAY combine the source values from several from another row instead, or it MAY combine the source values from
rows. An implementation is free to determine the best way to present several rows. An implementation is free to determine the best way to
this information. present this information.
In all tables of this section, all rows contain a "MAY" in order to In all tables of this section, all rows contain a "MAY" in order to
state that the Delivery Method specifies the conformance. state that the Delivery Method specifies the conformance.
Table 9 lists the source of the information for the Printer Name. The Table 9 lists the source of the information for the Printer Name.
"printer-name" is more user-friendly unless the Notification The "printer-name" is more user-friendly unless the Notification
Recipient is in a place where the Printer name is not meaningful. For Recipient is in a place where the Printer name is not meaningful.
example, an implementation could have the intelligence to send the For example, an implementation could have the intelligence to send
value of the "printer-name" attribute to a Notification Recipient the value of the "printer-name" attribute to a Notification Recipient
that can access the Printer via value of the "printer-name" attribute that can access the Printer via value of the "printer-name" attribute
and otherwise send the value of the "notify-printer-uri" attribute. and otherwise send the value of the "notify-printer-uri" attribute.
Table 9 - Printer Name in Event Notification Content Table 9 - Printer Name in Event Notification Content
Source Value Sends Source Object Source Value Sends Source Object
printer-name (name(127)) MAY Printer printer-name (name(127)) MAY Printer
notify-printer-uri (uri) MAY Subscription notify-printer-uri (uri) MAY Subscription
skipping to change at page 53, line 32 skipping to change at page 51, line 24
Printer MAY combine this information with state information described Printer MAY combine this information with state information described
for Jobs in Table 13 or for Printers in Table 14. for Jobs in Table 13 or for Printers in Table 14.
Table 10 - Event Name in Event Notification Content Table 10 - Event Name in Event Notification Content
Source Value Sends Source Object Source Value Sends Source Object
notify-subscribed-event (type2 keyword) MAY Subscription notify-subscribed-event (type2 keyword) MAY Subscription
Table 11 lists the source of the information for the time that the Table 11 lists the source of the information for the time that the
Event occurred. A Printer can send this value only if it supports the Event occurred. A Printer can send this value only if it supports
Printer's "printer-current-time" attribute. If a Printer does not the Printer's "printer-current-time" attribute. If a Printer does
support the "printer-current-time" attribute, it MUST NOT send the not support the "printer-current-time" attribute, it MUST NOT send
"printer-up-time" value instead, since it is not an allowed option the "printer-up-time" value instead, since it is not an allowed
for human consumable information. option for human consumable information.
Table 11 - Event Time in Event Notification Content Table 11 - Event Time in Event Notification Content
Source Value Sends Source Object Source Value Sends Source Object
printer-current-time (dateTime) MAY Printer printer-current-time (dateTime) MAY Printer
9.2.2 Additional Event Notification Content for Job Events 9.2.2 Additional Event Notification Content for Job Events
This section lists the source of the additional information that a This section lists the source of the additional information that a
skipping to change at page 56, line 23 skipping to change at page 53, line 35
printer-state-reasons (1setOf type2 keyword) MAY Printer printer-state-reasons (1setOf type2 keyword) MAY Printer
printer-is-accepting-jobs (boolean) MAY Printer printer-is-accepting-jobs (boolean) MAY Printer
10 Delivery Methods 10 Delivery Methods
A Delivery Method is the mechanism, i.e., protocol, by which the A Delivery Method is the mechanism, i.e., protocol, by which the
Printer delivers an Event Notification to a Notification Recipient. Printer delivers an Event Notification to a Notification Recipient.
There are several potential Delivery Methods for Event Notifications, There are several potential Delivery Methods for Event Notifications,
standardized, as well as proprietary. This document does not define standardized, as well as proprietary. This specification REQUIRES
any of these delivery mechanisms. Each Delivery Method MUST be that the 'ippget' Pull Delivery Method [ipp-get-method] be supported.
defined in a Delivery Method Document that is separate from this Conforming implementations MAY support additional Push or Pull
document. New Delivery Methods will be created as needed using an Delivery Methods as well. This document does not define any of these
extension to the registration procedures defined in [RFC2911]. Such delivery mechanisms. Each Delivery Method MUST be defined in a
documents are registered with IANA (see section 13.7.3). 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 19.7.3).
The following sorts of Delivery Methods are expected: The following sorts of Delivery Methods are possible:
- The Notification Recipient polls for Event Notifications at - The Notification Recipient polls for Event Notifications at
intervals directed by the Printer intervals directed by the Printer
- The Printer sends Event Notifications to the Notification - The Printer sends Event Notifications to the Notification
Recipient using http as the transport. Recipient using http as the transport.
- The Printer sends an email message. - The Printer sends an email message.
This section specifies how to define a Delivery Method Document and This section specifies how to define a Delivery Method Document and
what to put in such a document. what to put in such a document.
A Delivery Method Document MUST contain an exact copy of the A Delivery Method Document MUST contain an exact copy of the
following paragraph, caption and table. In addition, column 2 of the following paragraph, caption and table. In addition, column 2 of the
skipping to change at page 58, line 46 skipping to change at page 56, line 15
11.1 Subscription Creation Operations 11.1 Subscription Creation Operations
This section defines the Subscription Creation Operations. The first This section defines the Subscription Creation Operations. The first
section on Create-Job-Subscriptions gives most of the information. section on Create-Job-Subscriptions gives most of the information.
The other Subscription Creation Operations refer to the section on The other Subscription Creation Operations refer to the section on
Create-Job-Subscriptions, even though the Create-Job-Subscriptions Create-Job-Subscriptions, even though the Create-Job-Subscriptions
operation is the only OPTIONAL operation in this document (see operation is the only OPTIONAL operation in this document (see
section 12). section 12).
A Printer MUST support Create-Printer-Subscriptions and the A Printer MUST support Create-Printer-Subscriptions and the
Subscription Template Attributes Group in Job Creation operations. It Subscription Template Attributes Group in Job Creation operations.
MAY support Create-Job-Subscriptions operations. It MAY support Create-Job-Subscriptions operations.
11.1.1 Create-Job-Subscriptions Operation 11.1.1 Create-Job-Subscriptions Operation
The operation creates one or more Per-Job Subscription Objects. The The operation creates one or more Per-Job Subscription Objects. The
client supplies one or more Subscription Template Attributes Groups client supplies one or more Subscription Template Attributes Groups
each containing one or more of Subscription Template Attributes each containing one or more of Subscription Template Attributes
(defined in section 5.3). (defined in section 5.3).
Except for errors, the Printer MUST create exactly one Per-Job Except for errors, the Printer MUST create exactly one Per-Job
Subscription Object from each Subscription Template Attributes Group Subscription Object from each Subscription Template Attributes Group
skipping to change at page 59, line 31 skipping to change at page 56, line 44
completed' states, i.e., 'pending', 'pending-held', 'processing', or completed' states, i.e., 'pending', 'pending-held', 'processing', or
'processing-stopped'. The Printer MUST NOT change the job's "job- 'processing-stopped'. The Printer MUST NOT change the job's "job-
state" attribute because of this operation. If the target job is in state" attribute because of this operation. If the target job is in
any of the 'completed' states, i.e., 'completed', 'canceled', or any of the 'completed' states, i.e., 'completed', 'canceled', or
'aborted, then the Printer MUST reject the request and return the 'aborted, then the Printer MUST reject the request and return the
'client-error-not-possible' status code; the response MUST NOT 'client-error-not-possible' status code; the response MUST NOT
contain any Subscription Attribute Groups. contain any Subscription Attribute Groups.
Access Rights: To create Per-Job Subscription Objects, the Access Rights: To create Per-Job Subscription Objects, the
authenticated user (see [RFC2911] section 8.3) performing this authenticated user (see [RFC2911] section 8.3) performing this
operation MUST either be the job owner or have Operator or operation MUST (1) be the job owner, (2) have Operator or
Administrator access rights for this Printer (see [RFC2911] sections Administrator access rights for this Printer (see [RFC2911] sections
1 and 8.5). Otherwise the Printer MUST reject the operation and 1 and 8.5), or (3) be otherwise authorized by the Printer's
return: the 'client-error-forbidden', 'client-error-not- administrator-configured security policy to create Per-Job
authenticated', or 'client-error-not-authorized' status code as Subscription Objects for the target job. Otherwise the Printer MUST
appropriate. 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 11.1.1.1 Create-Job-Subscriptions Request
The following groups of attributes are part of the Create-Job- The following groups of attributes are part of the Create-Job-
Subscriptions Request: Subscriptions Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
Target: Target:
The "printer-uri" attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [RFC2911] section 3.1.5. operation as described in [RFC2911] section 3.1.5.
Requesting User Name: Requesting User Name:
The "requesting-user-name" attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3. client as described in [RFC2911] section 8.3.
notify-job-id (integer(1:MAX)): 11.1.1.1.1 notify-job-id (integer(1:MAX))
The client MUST supply this attribute and it MUST specify the The client MUST supply this attribute and it MUST specify the
Job object to associate the Per-Job Subscription with. 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 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 the associated Job object. If the client does not supply this
attribute, the Printer MUST reject this request with a 'client- attribute, the Printer MUST reject this request with a 'client-
error-bad-request' status code. error-bad-request' status code.
Group 2-N: Subscription Template Attributes Group 2-N: Subscription Template Attributes
For each occurrence of this group: For each occurrence of this group:
The client MUST supply one or more Subscription Template The client MUST supply one or more Subscription Template
Attributes in any order. See section 5.3 for a description of Attributes in any order. See section 5.3 for a description of
each such attribute. See section 5.2 for details on processing each such attribute. See section 5.2 for details on
these attributes. processing these attributes.
11.1.1.2 Create-Job-Subscriptions Response 11.1.1.2 Create-Job-Subscriptions Response
The Printer MUST return to the client the following sets of The Printer MUST return to the client the following sets of
attributes as part of a Create-Job-Subscriptions response: attributes as part of a Create-Job-Subscriptions response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every In addition to the REQUIRED status code returned in every
response, the response OPTIONALLY includes a "status-message" response, the response OPTIONALLY includes a "status-message"
(text(255)) and/or a "detailed-status-message" (text(MAX)) (text(255)) and/or a "detailed-status-message" (text(MAX))
operation attribute as described in [RFC2911] sections 13 and operation attribute as described in [RFC2911] sections 13 and
3.1.6. 3.1.6.
In this group, the Printer can return any status codes defined In this group, the Printer can return any status codes defined
in [RFC2911] and section 16. The following is a description of in [RFC2911] and section 12. The following is a description of
the important status codes: the important status codes:
successful-ok: the Printer created all Subscription Objects successful-ok: the Printer created all Subscription Objects
requested (see [RFC2911]). requested (see [RFC2911]).
successful-ok-ignored-subscriptions: the Printer created successful-ok-ignored-subscriptions: the Printer created
some Subscription Objects requested but some failed. The some Subscription Objects requested but some failed. The
Subscription Attributes Groups with a "notify-status- Subscription Attributes Groups with a "notify-status-
code" attribute are the ones that failed (see section code" attribute are the ones that failed (see section
16.1). 12.1).
client-error-ignored-all-subscriptions: the Printer created client-error-ignored-all-subscriptions: the Printer created
no Subscription Objects requested and all failed. The no Subscription Objects requested and all failed. The
Subscription Attributes Groups with a "notify-status- Subscription Attributes Groups with a "notify-status-
code" attribute are the ones that failed (see section code" attribute are the ones that failed (see section
16.2). 12.2).
client-error-not-possible: For this operation and other client-error-not-possible: For this operation and other
Per-Job Subscription operations, this error can occur Per-Job Subscription operations, this error can occur
because the specified Job has already completed (see because the specified Job has already completed (see
[RFC2911], whether or not the Job is retained in the Job [RFC2911], whether or not the Job is retained in the Job
Retention and/or Job History phases (see [RFC2911] Retention and/or Job History phases (see [RFC2911]
section 4.3.7.1). section 4.3.7.1).
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. attributes as described in [RFC2911] section 3.1.4.2.
skipping to change at page 61, line 35 skipping to change at page 58, line 48
unsupported Subscription Template Attributes; they are returned unsupported Subscription Template Attributes; they are returned
in the Subscription Attributes Group (see below). in the Subscription Attributes Group (see below).
Group 3-N: Subscription Attributes Group 3-N: Subscription Attributes
These groups MUST be returned unless the Printer is unable to These groups MUST be returned unless the Printer is unable to
interpret the entire request, e.g., the "status-code" parameter interpret the entire request, e.g., the "status-code" parameter
returned in Group 1 has the value: 'client-error-bad-request'. returned in Group 1 has the value: 'client-error-bad-request'.
"notify-status-code" (type2 enum): "notify-status-code" (type2 enum):
Indicates the status of this subscription (see section 17 Indicates the status of this subscription (see section 13
for the status code definitions). Section 5.2 defines when for the status code definitions). Section 5.2 defines when
this attribute MUST be present in this group. this attribute MUST be present in this group.
See section 5.2 for details on the contents of each occurrence See section 5.2 for details on the contents of each occurrence
of this group. of this group.
11.1.2 Create-Printer-Subscriptions operation 11.1.2 Create-Printer-Subscriptions operation
The operation is identical to Create-Job-Subscriptions with The operation is identical to Create-Job-Subscriptions with
exceptions noted in this section. exceptions noted in this section.
skipping to change at page 62, line 11 skipping to change at page 59, line 24
Per-Job Subscription Objects, and associates each newly created Per- Per-Job Subscription Objects, and associates each newly created Per-
Printer Subscription Object with the Printer specified by the Printer Subscription Object with the Printer specified by the
operation target rather than with a specific Job. operation target rather than with a specific Job.
The Printer MUST accept the request in any of its states, i.e., The Printer MUST accept the request in any of its states, i.e.,
'idle', 'processing', or 'stopped'. The Printer MUST NOT change its 'idle', 'processing', or 'stopped'. The Printer MUST NOT change its
"printer-state" attribute because of this operation. "printer-state" attribute because of this operation.
Access Rights: To create Per-Printer Subscription Objects, the Access Rights: To create Per-Printer Subscription Objects, the
authenticated user (see [RFC2911] section 8.3) performing this authenticated user (see [RFC2911] section 8.3) performing this
operation MUST have Operator or Administrator access rights for this operation MUST have (1) Operator or Administrator access rights for
Printer (see [RFC2911] sections 1 and 8.5). Otherwise, the Printer this Printer (see [RFC2911] sections 1 and 8.5), or (2) be otherwise
MUST reject the operation and return: the 'client-error-forbidden', authorized by the Printer's administrator-configured security policy
'client-error-not-authenticated', or 'client-error-not-authorized' to create Per-Printer Subscription Objects for this Printer.
status code as appropriate. 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 11.1.2.1 Create-Printer-Subscriptions Request
The groups are identical to the Create-Job-Subscriptions (see section The groups are identical to the Create-Job-Subscriptions (see section
11.1.1.1) except that the Operation Attributes group MUST NOT contain 11.1.1.1) except that the Operation Attributes group MUST NOT contain
the "notify-job-id" attribute. If the client does supply the the "notify-job-id" attribute. If the client does supply the
"notify-job-id" attribute, then the Printer MUST treat it as any "notify-job-id" attribute, then the Printer MUST treat it as any
other unsupported Operation attribute and MUST return it in the other unsupported Operation attribute and MUST return it in the
Unsupported Attributes group. Unsupported Attributes group.
skipping to change at page 63, line 17 skipping to change at page 60, line 29
the first Subscription Template Attributes Group. the first Subscription Template Attributes Group.
If a Printer does not support this Notification specification, then If a Printer does not support this Notification specification, then
it MUST treat the Subscription Attributes Group like an unknown group it MUST treat the Subscription Attributes Group like an unknown group
and ignore it (see [RFC2911] section 5.2.2). Because the Printer and ignore it (see [RFC2911] section 5.2.2). Because the Printer
ignores the Subscription Attributes Group, it doesn't return them in ignores the Subscription Attributes Group, it doesn't return them in
the response either, thus indicating to the client that the Printer the response either, thus indicating to the client that the Printer
doesn't support Notification. doesn't support Notification.
After completion of a successful Job Creation operation, the Printer After completion of a successful Job Creation operation, the Printer
generates a 'job-created' event (see section 5.3.2.1.3). generates a 'job-created' event (see section 5.3.3.1.3).
Access Rights: To create Per-Job Subscription Objects, the Access Rights: To create Per-Job Subscription Objects, the
authenticated user (see [RFC2911] section 8.3) performing this authenticated user (see [RFC2911] section 8.3) performing this
operation MUST either have permission to create Jobs on the Printer operation MUST either have permission to create Jobs on the Printer
or have Operator or Administrator access rights for this Printer (see or have Operator or Administrator access rights for this Printer (see
[RFC2911] sections 1 and 8.5). Otherwise the Printer MUST reject the [RFC2911] sections 1 and 8.5). Otherwise the Printer MUST reject the
operation and return: the 'client-error-forbidden', 'client-error- operation and return: the 'client-error-forbidden', 'client-error-
not-authenticated', or 'client-error-not-authorized' status code as not-authenticated', or 'client-error-not-authorized' status code as
appropriate. appropriate.
skipping to change at page 64, line 19 skipping to change at page 61, line 29
Response: Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
As defined in [RFC2911] for Print-Job, Print-URI, and Create- As defined in [RFC2911] for Print-Job, Print-URI, and Create-
Job requests. Job requests.
In this group, the Printer can return any status codes defined In this group, the Printer can return any status codes defined
in [RFC2911] and section 16. The following is a description of in [RFC2911] and section 12. The following is a description of
the important status codes: the important status codes:
successful-ok: the Printer created the Job and all successful-ok: the Printer created the Job and all
Subscription Objects requested (see [RFC2911]. Subscription Objects requested (see [RFC2911].
successful-ok-ignored-subscriptions: the Printer created successful-ok-ignored-subscriptions: the Printer created
the Job and not all of the Subscription Objects requested the Job and not all of the Subscription Objects requested
(see section 16.1). This status-code hides 'successful- (see section 12.1). This status-code hides 'successful-
ok-xxx' status-codes that could reveal problems in Job ok-xxx' status-codes that could reveal problems in Job
creation. The Printer MUST NOT return the 'client-error- creation. The Printer MUST NOT return the 'client-error-
ignored-all-subscriptions' status code for Job Creation ignored-all-subscriptions' status code for Job Creation
operations because the Printer returns an error status- operations because the Printer returns an error status-
code only when it fails to create a Job. code only when it fails to create a Job.
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. attributes as described in [RFC2911] section 3.1.4.2.
skipping to change at page 65, line 27 skipping to change at page 62, line 37
operation nor a Subscription Creation operation (see section 3.2). operation nor a Subscription Creation operation (see section 3.2).
For the Restart-Job operation, the client MUST NOT supply any Job For the Restart-Job operation, the client MUST NOT supply any Job
Subscription Attributes Groups. The Printer MUST treat any supplied Subscription Attributes Groups. The Printer MUST treat any supplied
Job Subscription Attributes as unsupported attributes. Job Subscription Attributes as unsupported attributes.
For this operation, the Printer does not return a job-id or any For this operation, the Printer does not return a job-id or any
Subscription Attributes groups because the Printer reuses the Subscription Attributes groups because the Printer reuses the
existing Job object with the same job-id and the existing Per-Job existing Job object with the same job-id and the existing Per-Job
Subscription Objects with the same subscription-ids. However, after Subscription Objects with the same subscription-ids. However, after
successful completion of this operation, the Printer generates a successful completion of this operation, the Printer generates a
'job-created' event (see section 5.3.2.1.3). 'job-created' event (see section 5.3.3.1.3).
11.2.2 Validate-Job Operation - Extensions for Notification 11.2.2 Validate-Job Operation - Extensions for Notification
A client can test whether one or more Subscription Objects could be A client can test whether one or more Subscription Objects could be
created using the Validate-Job operation. The client supplies one or created using the Validate-Job operation. The client supplies one or
more Subscription Template Attributes Groups (defined in section more Subscription Template Attributes Groups (defined in section
5.3), just as in a Job Creation request. 5.3), just as in a Job Creation request.
A Printer MUST support this extension to this operation. A Printer MUST support this extension to this operation.
skipping to change at page 66, line 9 skipping to change at page 63, line 20
Job operation (section 11.1.3.1) with the following exceptions. The Job operation (section 11.1.3.1) with the following exceptions. The
Printer MUST NOT return a Job Object Attributes Group because no Job Printer MUST NOT return a Job Object Attributes Group because no Job
is created. The Printer MUST NOT return the "notify-subscription-id" is created. The Printer MUST NOT return the "notify-subscription-id"
attribute in any Subscription Attribute Group because no Subscription attribute in any Subscription Attribute Group because no Subscription
Object is created. Object is created.
If the Printer would succeed in creating a Subscription Object, the If the Printer would succeed in creating a Subscription Object, the
corresponding Subscription Attributes Group either has no 'status- corresponding Subscription Attributes Group either has no 'status-
code' attribute or a 'status-code' attribute with a value of code' attribute or a 'status-code' attribute with a value of
'successful-ok-too-many-events' or 'successful-ok-ignored-or- 'successful-ok-too-many-events' or 'successful-ok-ignored-or-
substituted-attributes' (see sections 5.2 and 17). The status-codes substituted-attributes' (see sections 5.2 and 13). The status-codes
have the same meaning as in Job Creation except the results state have the same meaning as in Job Creation except the results state
what "would happen". what "would happen".
The Printer MUST validate Subscription Template Attributes Groups in The Printer MUST validate Subscription Template Attributes Groups in
the same manner as the Job Creation operations. the same manner as the Job Creation operations.
11.2.3 Get-Printer-Attributes - Extensions for Notification 11.2.3 Get-Printer-Attributes - Extensions for Notification
This operation is extended so that it returns Printer attributes This operation is extended so that it returns Printer attributes
defined in this document. defined in this document.
skipping to change at page 67, line 11 skipping to change at page 64, line 20
attributes of a Subscription Object. attributes of a Subscription Object.
A Printer MUST support this operation. A Printer MUST support this operation.
This operation is almost identical to the Get-Job-Attributes This operation is almost identical to the Get-Job-Attributes
operation (see [RFC2911] section 3.3.4). The only differences are operation (see [RFC2911] section 3.3.4). The only differences are
that the operation is directed at a Subscription Object rather than a that the operation is directed at a Subscription Object rather than a
Job object, and the returned attribute group contains Subscription Job object, and the returned attribute group contains Subscription
Object attributes rather than Job object attributes. 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 11.2.4.1 Get-Subscription-Attributes Request
The following groups of attributes are part of the Get-Subscription- The following groups of attributes are part of the Get-Subscription-
Attributes request: Attributes request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section [RFC2911] 3.1.4.1. attributes as described in section [RFC2911] 3.1.4.1.
Target: Target:
The "printer-uri" attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [RFC2911] section 3.1.5. operation as described in [RFC2911] section 3.1.5.
"notify-subscription-id" (integer (1:MAX)): 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 The client MUST supply this attribute. The Printer MUST
support this attribute. This attribute specifies the support this attribute. This attribute specifies the
Subscription Object from which the client is requesting Subscription Object from which the client is requesting
attributes. If the client omits this attribute, the Printer attributes. If the client omits this attribute, the Printer
MUST reject this request with the 'client-error-bad-request' MUST reject this request with the 'client-error-bad-request'
status code. status code.
Requesting User Name: 11.2.4.1.2 "requested-attributes" (1setOf keyword)
The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3.
"requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. This attribute specifies the MUST support this attribute. This attribute specifies the
attributes of the specified Subscription Object that the attributes of the specified Subscription Object that the
Printer MUST return in the response. Each value of this Printer MUST return in the response. Each value of this
attribute is either an attribute name (defined in sections 5.3 attribute is either an attribute name (defined in sections 5.3
and 5.4) or an attribute group name. The attribute group names and 5.4) or an attribute group name. The attribute group names
are: are:
- 'subscription-template': all attributes that are both - 'subscription-template': all attributes that are both
defined in section 5.3 and present on the specified defined in section 5.3 and present on the specified
skipping to change at page 69, line 4 skipping to change at page 66, line 23
object. If the Printer object does return unsupported object. If the Printer object does return unsupported
attributes referenced in the "requested-attributes" operation attributes referenced in the "requested-attributes" operation
attribute, the values of the "requested-attributes" attribute attribute, the values of the "requested-attributes" attribute
returned MUST include only the unsupported keywords that were returned MUST include only the unsupported keywords that were
requested by the client. If the client had requested a group requested by the client. If the client had requested a group
name, such as 'all', the resulting unsupported attributes name, such as 'all', the resulting unsupported attributes
returned MUST NOT include attribute keyword names described in returned MUST NOT include attribute keyword names described in
the standard but not supported by the implementation. the standard but not supported by the implementation.
Group 3: Subscription Attributes Group 3: Subscription Attributes
This group contains a set of attributes with their current This group contains a set of attributes with their current
values. Each attribute in this group: values. Each attribute returned in this group:
a)MUST be specified by the "requested-attributes" attribute a)MUST be specified by the "requested-attributes" attribute
in the request, AND in the request, AND
b)MUST be present on the specified Subscription Object AND b)MUST be present on the specified Subscription Object AND
c)MUST NOT be restricted by the security policy in force. c)MUST NOT be restricted by the security policy in force.
For example, a Printer MAY prohibit a client who is not the For example, a Printer MAY prohibit a client who is not the
creator of a Subscription Object from seeing some or all of creator of a Subscription Object from seeing some or all of
its attributes. See [RFC2911] section 8. its attributes. See [RFC2911] end of section 3.3.4.2 and
section 8.
The Printer can return the attributes of the Subscription The Printer can return the attributes of the Subscription
Object in any order. The client MUST accept the attributes in Object in any order. The client MUST accept the attributes in
any order. any order.
11.2.5 Get-Subscriptions operation 11.2.5 Get-Subscriptions operation
This operation allows a client to retrieve the values of attributes This operation allows a client to retrieve the values of attributes
of all Subscription Objects belonging to a Job or Printer. of all Subscription Objects belonging to a Job or Printer.
A Printer MUST supported this operation. A Printer MUST supported this operation.
This operation is similar to the Get-Subscription-Attributes This operation is similar to the Get-Subscription-Attributes
operation, except that this Get-Subscriptions operation returns operation, except that this Get-Subscriptions operation returns
attributes from possibly more than one object. attributes from possibly more than one object.
This operation is similar to the Get-Jobs operation (see [RFC2911] This operation is similar to the Get-Jobs operation (see [RFC2911]
section 3.2.6), except that the operation returns Subscription section 3.2.6), except that the operation returns Subscription
Objects rather than Job objects. 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 11.2.5.1 Get-Subscriptions Request
The following groups of attributes are part of the Get-Subscriptions The following groups of attributes are part of the Get-Subscriptions
request: request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
Target: Target:
The "printer-uri" attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [RFC2911] section 3.1.5. operation as described in [RFC2911] section 3.1.5.
Requesting User Name: Requesting User Name:
The "requesting-user-name" attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3. client as described in [RFC2911] section 8.3.
"notify-job-id" (integer(1:MAX)): 11.2.5.1.1 "notify-job-id" (integer(1:MAX))
If the client specifies this attribute, the Printer returns the If the client specifies this attribute, the Printer returns the
specified attributes of all Per-Job Subscription Objects specified attributes of all Per-Job Subscription Objects
associated with the Job whose "job-id" attribute value equals associated with the Job whose "job-id" attribute value equals
the value of this attribute. If the client does not specify the value of this attribute. If the client does not specify
this attribute, the Printer returns the specified attributes of this attribute, the Printer returns the specified attributes of
all Per-Printer Subscription Objects. Note: there is no way to all Per-Printer Subscription Objects. Note: there is no way to
get all Per-Job Subscriptions known to the Printer in a single get all Per-Job Subscriptions known to the Printer in a single
operation. A Get-Jobs operation followed by a Get- operation. A Get-Jobs operation followed by a Get-
Subscriptions operation for each Job will return all Per-Job Subscriptions operation for each Job will return all Per-Job
Subscriptions. Subscriptions.
"limit" (integer(1:MAX)): 11.2.5.1.2 "limit" (integer(1:MAX))
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. It is an integer value that MUST support this attribute. It is an integer value that
determines the maximum number of Subscription Objects that a determines the maximum number of Subscription Objects that a
client will receive from the Printer even if the "my- client will receive from the Printer even if the "my-
subscriptions" attribute constrains which Subscription Objects subscriptions" attribute constrains which Subscription Objects
are returned. The limit is a "stateless limit" in that if the are returned. The limit is a "stateless limit" in that if the
value supplied by the client is 'N', then only the first 'N' value supplied by the client is 'N', then only the first 'N'
Subscription Objects are returned in the Get-Subscriptions Subscription Objects are returned in the Get-Subscriptions
Response. There is no mechanism to allow for the next 'M' Response. There is no mechanism to allow for the next 'M'
Subscription Objects after the first 'N' Subscription Objects. Subscription Objects after the first 'N' Subscription Objects.
If the client does not supply this attribute, the Printer If the client does not supply this attribute, the Printer
responds with all applicable Subscription Objects. responds with all applicable Subscription Objects.
"requested-attributes" (1setOf type2 keyword): 11.2.5.1.3 "requested-attributes" (1setOf type2 keyword)
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. This attribute specifies the MUST support this attribute. This attribute specifies the
attributes of the specified Subscription Objects that the attributes of the specified Subscription Objects that the
Printer MUST return in the response. Each value of this Printer MUST return in the response. Each value of this
attribute is either an attribute name (defined in sections 5.3 attribute is either an attribute name (defined in sections 5.3
and 5.4) or an attribute group name (defined in section and 5.4) or an attribute group name (defined in section
11.2.4.1). If the client omits this attribute, the Printer MUST 11.2.4.1). If the client omits this attribute, the Printer
respond as if the client had supplied this attribute with the MUST respond as if the client had supplied this attribute with
one value: 'notify-subscription-id'. the one value: 'notify-subscription-id'.
11.2.5.1.4 "my-subscriptions" (boolean)
"my-subscriptions" (boolean):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. If the value is 'false', the MUST support this attribute. If the value is 'false', the
Printer MUST consider the Subscription Objects from all users Printer MUST consider the Subscription Objects from all users
as candidates. If the value is 'true', the Printer MUST return as candidates. If the value is 'true', the Printer MUST return
the Subscription Objects created by the requesting user of this the Subscription Objects created by the requesting user of this
request. If the client does not supply this attribute, the request. If the client does not supply this attribute, the
Printer MUST respond as if the client had supplied the Printer MUST respond as if the client had supplied the
attribute with a value of 'false'. The means for attribute with a value of 'false'. The means for
authenticating the requesting user and matching the authenticating the requesting user and matching the
Subscription Objects is similar to that for Jobs which is Subscription Objects is similar to that for Jobs which is
skipping to change at page 72, line 26 skipping to change at page 70, line 22
The Printer MUST accept this request for a Per-Printer Subscription The Printer MUST accept this request for a Per-Printer Subscription
Object in any of the target Printer's states, i.e., 'idle', Object in any of the target Printer's states, i.e., 'idle',
'processing', or 'stopped', but MUST NOT change the Printer's 'processing', or 'stopped', but MUST NOT change the Printer's
"printer-state" attribute. "printer-state" attribute.
The Printer MUST reject this request for a Per-Job Subscription 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 Object because it has no lease (see section 5.4.3). The status code
returned MUST be 'client-error-not-possible'. returned MUST be 'client-error-not-possible'.
Access Rights: The authenticated user (see [RFC2911] section 8.3) Access Rights: The authenticated user (see [RFC2911] section 8.3)
performing this operation MUST either be the owner of the Per-Printer performing this operation MUST (1) be the owner of the Per-Printer
Subscription Object or have Operator or Administrator access rights Subscription Object, (2) have Operator or Administrator access rights
for the Printer (see [RFC2911] sections 1 and 8.5). Otherwise, the for the Printer (see [RFC2911] sections 1 and 8.5), or (3) be
Printer MUST reject the operation and return: the 'client-error- otherwise authorized by the Printer's administrator-configured
forbidden', 'client-error-not-authenticated', or 'client-error-not- security policy to renew Per-Printer Subscription Objects for the
authorized' status code as appropriate. 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 11.2.6.1 Renew-Subscription Request
The following groups of attributes are part of the Renew-Subscription The following groups of attributes are part of the Renew-Subscription
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
Target: Target:
The "printer-uri" attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [RFC2911] section 3.1.5. operation as described in [RFC2911] section 3.1.5.
"notify-subscription-id" (integer (1:MAX)): 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 The client MUST supply this attribute. The Printer MUST
support this attribute. This attribute specifies the Per- support this attribute. This attribute specifies the Per-
Printer Subscription Object whose lease the Printer MUST renew. Printer Subscription Object whose lease the Printer MUST renew.
If the client omits this attribute, the Printer MUST reject If the client omits this attribute, the Printer MUST reject
this request with the 'client-error-bad-request' status code. this request with the 'client-error-bad-request' status code.
Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be
supplied by the client as described in [RFC2911] section 8.3.
Group 2: Subscription Template Attributes Group 2: Subscription Template Attributes
"notify-lease-duration" (integer(0:MAX)): 11.2.6.1.2 "notify-lease-duration" (integer(0:MAX))
The client MAY supply this attribute. It indicates the number The client MAY supply this attribute. It indicates the number
of seconds to renew the lease for the specified Subscription of seconds to renew the lease for the specified Subscription
Object. A value of 0 requests an infinite lease (which MAY Object. A value of 0 requests an infinite lease (which MAY
require Operator access rights). If the client omits this require Operator access rights). If the client omits this
attribute, the Printer MUST use the value of the Printer's attribute, the Printer MUST use the value of the Printer's
"notify-lease-duration-default" attribute. See section 5.3.7 "notify-lease-duration-default" attribute. See section 5.3.8
for more details. for more details.
11.2.6.2 Renew-Subscription Response 11.2.6.2 Renew-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Renew-Subscription Response: Renew-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
skipping to change at page 74, line 20 skipping to change at page 72, line 20
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 for details on returning
Unsupported Attributes. Unsupported Attributes.
Group 3: Subscription Attributes Group 3: Subscription Attributes
The Printer MUST return the following Subscription Attribute: The Printer MUST return the following Subscription Attribute:
"notify-lease-duration" (integer(0:MAX)): 11.2.6.2.1 "notify-lease-duration" (integer(0:MAX))
The value of this attribute MUST be the number of seconds that The value of this attribute MUST be the number of seconds that
the Printer has granted for the lease of the Subscription the Printer has granted for the lease of the Subscription
Object (see section 5.3.7 for details, such as the value of Object (see section 5.3.8 for details, such as the value of
this attribute when the Printer doesn't support the requested this attribute when the Printer doesn't support the requested
value). value).
11.2.7 Cancel-Subscription operation 11.2.7 Cancel-Subscription operation
This operation allows a client to delete a Subscription Object and This operation allows a client to delete a Subscription Object and
stop the Printer from sending more Event Notifications. Once stop the Printer from sending more Event Notifications. Once
performed, there is no way to reference the Subscription Object. performed, there is no way to reference the Subscription Object.
A Printer MUST supported this operation. A Printer MUST supported this operation.
The Printer MUST accept this request in any of the target Printer's The Printer MUST accept this request in any of the target Printer's
states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change
the Printer's "printer-state" attribute. the Printer's "printer-state" attribute.
If the specified Subscription Object is a Per-Job Subscription If the specified Subscription Object is a Per-Job Subscription
Object, the Printer MUST accept this request in any of the target 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 Job's states, but MUST NOT change the Job's "job-state" attribute or
affect the Job. affect the Job.
Access Rights: The authenticated user (see [RFC2911] section 8.3)
performing this operation MUST either be the owner of the
Subscription Object or have Operator or Administrator access rights
for the 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.
Note: There is no way to change any attributes on a Subscription Note: There is no way to change any attributes on a Subscription
Object, except the "notify-lease-duration" attribute (using the Object, except the "notify-lease-duration" attribute (using the
Renew-Subscription operation). In order to change other attributes, Renew-Subscription operation). In order to change other attributes,
a client performs a Subscription Creation Operation and Cancel- a client performs a Subscription Creation Operation and Cancel-
Subscription operation on the old Subscription Object. If the client Subscription operation on the old Subscription Object. If the client
wants to avoid missing Event Notifications, it performs the wants to avoid missing Event Notifications, it performs the
Subscription Creation Operation first. If this order would create too Subscription Creation Operation first. If this order would create
many Subscription Objects on the Printer, the client reverses the too many Subscription Objects on the Printer, the client reverses the
order. 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 11.2.7.1 Cancel-Subscription Request
The following groups of attributes are part of the Cancel- The following groups of attributes are part of the Cancel-
Subscription Request: Subscription Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
Target: Target:
The "printer-uri" attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [RFC2911] section 3.1.5. operation as described in [RFC2911] section 3.1.5.
"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.
Requesting User Name: Requesting User Name:
The "requesting-user-name" attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3. 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.
11.2.7.2 Cancel-Subscription Response 11.2.7.2 Cancel-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Cancel-Subscription Response: Cancel-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
The following are some of the status codes returned (see The following are some of the status codes returned (see
skipping to change at page 76, line 27 skipping to change at page 74, line 27
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. The attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of "attributes-natural-language" MAY be the natural language of
the Subscription Object, rather than the one requested. the Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 for details on returning
Unsupported Attributes. Unsupported Attributes.
12 Conformance Requirements 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
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.
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 It is OPTIONAL for IPP clients and Printers to implement this Event
Notification specification. Notification specification.
If this Event Notification specification is implemented, Printers 15.1 Conformance requirements for clients
MUST:
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 [ipp-get-method] 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 - meet the Conformance Requirements detailed in section 5 of
[RFC2911]. [RFC2911].
- support the Subscription Template Attributes Group in requests - support the Subscription Template Attributes Group in requests
and the Subscription Attributes Group in responses. and the Subscription Attributes Group in responses.
- support all of the following attributes: - support all of the following attributes:
a.REQUIRED Subscription Object attributes in section 5. a.REQUIRED Subscription Object attributes in section 5.
b.REQUIRED Printer Description object attributes in section 6. b.REQUIRED Printer Description object attributes in section 6.
c.REQUIRED attributes in Event Notification content in section c.REQUIRED attributes in Event Notification content in section
8. 8.
- support the 'ippget' Pull Delivery Method and meet the
conformance requirements as defined in [ipp-get-method] for
Printers. The Printer MAY support additional Push and Pull
Delivery Methods.
- send Event Notifications that conform to the requirements of - send Event Notifications that conform to the requirements of
section 9 and the requirements of the Delivery Method Document section 9 and the requirements of the Delivery Method Document
for each supported Delivery Method (the conformance for each supported Delivery Method (the conformance
requirements for Delivery Method Documents is specified in requirements for Delivery Method Documents is specified in
section 10). section 10).
- for all of the Job Creation Operations that the Printer - for all of the Job Creation Operations that the Printer
supports, MUST support the REQUIRED extensions for notification supports, MUST support the REQUIRED extensions for notification
defined in section 11.1.3. defined in section 11.1.3.
skipping to change at page 77, line 33 skipping to change at page 78, line 23
Create-Job-Subscriptions (section 11.1.1) OPTIONAL Create-Job-Subscriptions (section 11.1.1) OPTIONAL
Get-Subscription-Attributes (section 11.2.3) REQUIRED Get-Subscription-Attributes (section 11.2.3) REQUIRED
Get-Subscriptions (section 11.2.5) REQUIRED Get-Subscriptions (section 11.2.5) REQUIRED
Renew-Subscription (section 11.2.6) REQUIRED Renew-Subscription (section 11.2.6) REQUIRED
Cancel-Subscription (section 11.2.7) REQUIRED Cancel-Subscription (section 11.2.7) REQUIRED
13 IANA Considerations 16 Normative References
[ipp-get-method]
Herriot, R., and T. Hastings, "Internet Printing Protocol (IPP):
The 'ippget' Delivery Method for Event Notifications", <draft-ietf-
ipp-notify-get-07.txt>, June 27, 2002.
[ipp-prog]
Hastings, T., Bergman, R., and H. Lewis, "IPP: Job Progress
Attributes", <draft-ietf-ipp-job-prog-03.txt> work in progress,
July 17, 2001.
[RFC2119]
S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119 , March 1997
[RFC2396]
Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource
Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
[RFC2717]
R. Petke 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.
17 Informative References
[IANA-CON]
Narte, T. and H. Alvestrand, "Guidelines for Writing an IANA
Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
[ipp-not-req]
deBry, R., Lewis, H., and T. Hastings, "Internet Printing
Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
not-06.txt>, work in progress, July 17, 2001.
[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", RFC3196,
November 2001.
18 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.
18.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 [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).
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.
18.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.
18.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:
sending 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 [ipp-not-req]).
Any fully secure solution would require active agreement of all
recipients before sending out anything.
19 IANA Considerations
This section contains the registration information for IANA to add to This section contains the registration information for IANA to add to
the various IPP Registries according to the procedures defined in RFC the various IPP Registries according to the procedures defined in RFC
2911 [RFC2911] section 6 to cover the definitions in this document. 2911 [RFC2911] section 6 to cover the definitions in this document.
In addition, this section defines how Events and Delivery Methods In addition, this section defines how Events and Delivery Methods
will be registered when they are defined in other documents. will be registered when they are defined in other documents.
Note to RFC Editors: Replace RFC NNNN below with the RFC number Note to RFC Editors: Replace RFC NNNN below with the RFC number
for this document, so that it accurately reflects the content of for this document, so that it accurately reflects the content of
the information for the IANA Registry. the information for the IANA Registry.
13.1 Attribute Registrations 19.1 Attribute Registrations
The following table lists all the attributes defined in this The following table lists all the attributes defined in this
document. These are to be registered according to the procedures in document. These are to be registered according to the procedures in
RFC 2911 [RFC2911] section 6.2. RFC 2911 [RFC2911] section 6.2.
Subscription Template attributes: Ref. Section: Subscription Template attributes: Ref. Section:
notify-recipient-uri (uri) RFC NNNN 5.3.1.1 notify-recipient-uri (uri) RFC NNNN 5.3.1
notify-schemes-supported (1setOf uriScheme) RFC NNNN 5.3.1.1 notify-schemes-supported (1setOf uriScheme) RFC NNNN 5.3.1
notify-pull-method (type2 keyword) RFC NNNN 5.3.1.2 notify-pull-method (type2 keyword) RFC NNNN 5.3.2
notify-pull-method-supported (1setOf type2 keyword) notify-pull-method-supported (1setOf type2 keyword)
RFC NNNN 5.3.1.2 RFC NNNN 5.3.2
notify-events (1setOf type2 keyword) RFC NNNN 5.3.2 notify-events (1setOf type2 keyword) RFC NNNN 5.3.3
notify-events-default (1setOf type2 keyword) RFC NNNN 5.3.2 notify-events-default (1setOf type2 keyword) RFC NNNN 5.3.3
notify-events-supported (1setOf type2 keyword) RFC NNNN 5.3.2 notify-events-supported (1setOf type2 keyword) RFC NNNN 5.3.3
notify-max-events-supported (integer(2:MAX)) RFC NNNN 5.3.2 notify-max-events-supported (integer(2:MAX)) RFC NNNN 5.3.3
notify-attributes (1setOf type2 keyword) RFC NNNN 5.3.3 notify-attributes (1setOf type2 keyword) RFC NNNN 5.3.4
notify-attributes-supported (1setOf type2 keyword) notify-attributes-supported (1setOf type2 keyword)
RFC NNNN 5.3.3 RFC NNNN 5.3.4
notify-user-data (octetString(63)) RFC NNNN 5.3.4 notify-user-data (octetString(63)) RFC NNNN 5.3.5
notify-charset (charset) RFC NNNN 5.3.5 notify-charset (charset) RFC NNNN 5.3.6
notify-natural-language (naturalLanguage) RFC NNNN 5.3.6 notify-natural-language (naturalLanguage) RFC NNNN 5.3.7
notify-lease-duration (integer(0:67108863)) RFC NNNN 5.3.7 notify-lease-duration (integer(0:67108863)) RFC NNNN 5.3.8
notify-lease-duration-default (integer(0:67108863)) notify-lease-duration-default (integer(0:67108863))
RFC NNNN 5.3.7 RFC NNNN 5.3.8
notify-lease-duration-supported (1setOf (integer(0: 67108863) | notify-lease-duration-supported (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) RFC NNNN 5.3.7 rangeOfInteger(0:67108863))) RFC NNNN 5.3.8
notify-time-interval (integer(0:MAX)) RFC NNNN 5.3.8 notify-time-interval (integer(0:MAX)) RFC NNNN 5.3.9
Subscription Description Attributes: Subscription Description Attributes:
notify-subscription-id (integer (1:MAX))) RFC NNNN 5.4.1 notify-subscription-id (integer (1:MAX))) RFC NNNN 5.4.1
notify-sequence-number (integer (0:MAX))) RFC NNNN 5.4.2 notify-sequence-number (integer (0:MAX))) RFC NNNN 5.4.2
notify-lease-expiration-time (integer(0:MAX))) RFC NNNN 5.4.3 notify-lease-expiration-time (integer(0:MAX))) RFC NNNN 5.4.3
notify-printer-up-time (integer(1:MAX))) RFC NNNN 5.4.4 notify-printer-up-time (integer(1:MAX))) RFC NNNN 5.4.4
notify-printer-uri (uri)) RFC NNNN 5.4.5 notify-printer-uri (uri)) RFC NNNN 5.4.5
notify-job-id (integer(1:MAX))) RFC NNNN 5.4.6 notify-job-id (integer(1:MAX))) RFC NNNN 5.4.6
notify-subscriber-user-name (name(MAX))) RFC NNNN 5.4.7 notify-subscriber-user-name (name(MAX))) RFC NNNN 5.4.7
skipping to change at page 79, line 6 skipping to change at page 84, line 5
printer-state-change-date-time (dateTime)) RFC NNNN 6.2 printer-state-change-date-time (dateTime)) RFC NNNN 6.2
Attributes Only in Event Notifications Attributes Only in Event Notifications
notify-subscribed-event (type2 keyword) RFC NNNN 8.1 notify-subscribed-event (type2 keyword) RFC NNNN 8.1
notify-text (text(MAX)) RFC NNNN 8.2 notify-text (text(MAX)) RFC NNNN 8.2
The resulting attribute registrations will be published in the The resulting attribute registrations will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attributes/ ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attributes/
area. area.
13.2 Additional Enum Attribute Value Registrations for the "operations- 19.2 Additional Enum Attribute Value Registrations for the "operations-
supported" Printer Attribute supported" Printer Attribute
The following table lists all the new enum attribute values defined The following table lists all the new enum attribute values defined
in this document as additional type2 enum values for use with the in this document as additional type2 enum values for use with the
"operations-supported" Printer Description attribute. These are to "operations-supported" Printer Description attribute. These are to
be registered according to the procedures in RFC 2911 [RFC2911] be registered according to the procedures in RFC 2911 [RFC2911]
section 6.1. section 6.1.
type2 enum Attribute Values: Value Ref. Section: type2 enum Attribute Values: Value Ref. Section:
Create-Printer-Subscriptions 0x0016 RFC NNNN 7.1 Create-Printer-Subscriptions 0x0016 RFC NNNN 7.1
skipping to change at page 79, line 29 skipping to change at page 84, line 28
Get-Subscriptions 0x0019 RFC NNNN 7.1 Get-Subscriptions 0x0019 RFC NNNN 7.1
Renew-Subscription 0x001A RFC NNNN 7.1 Renew-Subscription 0x001A RFC NNNN 7.1
Cancel-Subscription 0x001B RFC NNNN 7.1 Cancel-Subscription 0x001B RFC NNNN 7.1
The resulting enum attribute value registrations will be published in The resulting enum attribute value registrations will be published in
the the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
values/operations-supported/ values/operations-supported/
area. area.
13.3 Operation Registrations 19.3 Operation Registrations
The following table lists all of the operations defined in this The following table lists all of the operations defined in this
document. These are to be registered according to the procedures in document. These are to be registered according to the procedures in
RFC 2911 [RFC2911] section 6.4. RFC 2911 [RFC2911] section 6.4.
Operations: Ref. Section: Operations: Ref. Section:
Create-Job-Subscriptions Operation RFC NNNN 11.1.1 Create-Job-Subscriptions Operation RFC NNNN 11.1.1
Create-Printer-Subscriptions Operation RFC NNNN 11.1.2 Create-Printer-Subscriptions Operation RFC NNNN 11.1.2
Job Creation Operations - Extensions RFC NNNN 11.1.3 Job Creation Operations - Extensions RFC NNNN 11.1.3
Validate-Job Operation - Extensions RFC NNNN 0 Validate-Job Operation - Extensions RFC NNNN 11.2.2
Get-Printer-Attributes - Extensions RFC NNNN 11.2.3 Get-Printer-Attributes - Extensions RFC NNNN 11.2.3
Get-Subscription-Attributes Operation RFC NNNN 11.2.4 Get-Subscription-Attributes Operation RFC NNNN 11.2.4
Get-Subscriptions Operation RFC NNNN 11.2.5 Get-Subscriptions Operation RFC NNNN 11.2.5
Renew-Subscription Operation RFC NNNN 11.2.6 Renew-Subscription Operation RFC NNNN 11.2.6
Cancel-Subscription Operation RFC NNNN 11.2.7 Cancel-Subscription Operation RFC NNNN 11.2.7
The resulting operation registrations will be published in the The resulting operation registrations will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/operations/ ftp://ftp.iana.org/in-notes/iana/assignments/ipp/operations/
area. area.
13.4 Status code Registrations 19.4 Status code Registrations
The following table lists all the status codes defined in this The following table lists all the status codes defined in this
document. These are to be registered according to the procedures in document. These are to be registered according to the procedures in
RFC 2911 [RFC2911] section 6.6. RFC 2911 [RFC2911] section 6.6.
Status codes: Ref. Section: Status codes: Ref. Section:
successful-ok-ignored-subscriptions (0x0003) RFC NNNN 16.1 successful-ok-ignored-subscriptions (0x0003) RFC NNNN 12.1
client-error-ignored-all-subscriptions (0x0414) RFC NNNN 16.2 client-error-ignored-all-subscriptions (0x0414) RFC NNNN 12.2
Status Codes in Subscription Attributes Groups: Status Codes in Subscription Attributes Groups:
client-error-uri-scheme-not-supported (0x040C) RFC NNNN 17.1 client-error-uri-scheme-not-supported (0x040C) RFC NNNN 13.1
client-error-attributes-or-values-not-supported (0x040B) client-error-attributes-or-values-not-supported (0x040B)
RFC NNNN 17.2 RFC NNNN 13.2
client-error-too-many-subscriptions (0x0415) RFC NNNN 17.3 client-error-too-many-subscriptions (0x0415) RFC NNNN 13.3
successful-ok-too-many-events (0x0005) RFC NNNN 17.4 successful-ok-too-many-events (0x0005) RFC NNNN 13.4
successful-ok-ignored-or-substituted-attributes (0x0001) successful-ok-ignored-or-substituted-attributes (0x0001)
RFC NNNN 17.5 RFC NNNN 13.5
The resulting status code registrations will be published in the The resulting status code registrations will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/status-codes/ ftp://ftp.iana.org/in-notes/iana/assignments/ipp/status-codes/
area. area.
13.5 Attribute Group tag Registrations 19.5 Attribute Group tag Registrations
The following table lists all the attribute group tags defined in The following table lists all the attribute group tags defined in
this document. These are to be registered according to the this document. These are to be registered according to the
procedures in RFC 2911 [RFC2911] section 6.5. procedures in RFC 2911 [RFC2911] section 6.5.
Attribute Group Tags: Tag Value: Ref. Section: Attribute Group Tags: Tag Value: Ref. Section:
subscription-attributes-tag 0x06 RFC NNNN 18 subscription-attributes-tag 0x06 RFC NNNN 14
event-notification-attributes-tag 0x07 RFC NNNN 18 event-notification-attributes-tag 0x07 RFC NNNN 14
The resulting attribute group tag registrations will be published in The resulting attribute group tag registrations will be published in
the the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-group- ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-group-
tags/ tags/
area. area.
13.6 Registration of Events 19.6 Registration of Events
When other document define additional type2 keywords to be used with When other document define additional type2 keywords to be used with
the "notify-events" Subscription Template attribute (see section the "notify-events" Subscription Template attribute (see section
5.3.2)), these event keywords will be registered according to the 5.3.3)), these event keywords will be registered according to the
procedures of [RFC2911] section 7.1 as additional attribute values procedures of [RFC2911] section 7.1 as additional attribute values
for use with the "notify-events" Subscription Template attribute, for use with the "notify-events" Subscription Template attribute,
i.e., the "notify-events", "notify-events-default", and "notify- i.e., the "notify-events", "notify-events-default", and "notify-
events-supported" attributes. events-supported" attributes.
Therefore, the IPP Registry entry for an Event will be of the form: Therefore, the IPP Registry entry for an Event will be of the form:
type2 enum Attribute Values: Ref. Section: type2 enum Attribute Values: Ref. Section:
<scheme name> RFC xxxx m.n <scheme name> RFC xxxx m.n
The resulting type2 keyword attribute values will be published in the The resulting type2 keyword attribute values will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
values/notify-events/ values/notify-events/
area. area.
13.7 Registration of Event Notification Delivery Methods 19.7 Registration of Event Notification Delivery Methods
This section describes the requirements and procedures for This section describes the requirements and procedures for
registration and publication of Event Notification Delivery Methods registration and publication of Event Notification Delivery Methods
and for the submission of such proposals. and for the submission of such proposals.
13.7.1 Requirements for Registration of Event Notification Delivery 19.7.1 Requirements for Registration of Event Notification Delivery
Methods Methods
Registered IPP Event Notification Delivery Methods are expected to Registered IPP Event Notification Delivery Methods are expected to
follow a number of requirements described below. follow a number of requirements described below.
13.7.1.1 Required Characteristics 19.7.1.1 Required Characteristics
A Delivery Method Document MUST either (1) contain all of the A Delivery Method Document MUST either (1) contain all of the
semantics of the Delivery Method or (2) contain the IPP Delivery semantics of the Delivery Method or (2) contain the IPP Delivery
Method registration requirements and a profile of some other protocol Method registration requirements and a profile of some other protocol
that in combination is the Delivery Method (e.g., mailto). In either that in combination is the Delivery Method (e.g., mailto). The
case, the Delivery Method Document (and any documents it requires) Delivery Method Document (and any documents it requires) MUST define
MUST define a URL for a Push Delivery Method or a keyword for a Pull either (1) a URL for a Push Delivery Method that the meets the
Delivery method and be a standards track, informational, or requirements of [RFC2717]. or (2) a keyword for a Pull Delivery
experimental RFC that the meets the requirements of [RFC2717]. method.
IPP Event Notification Delivery Method Documents MUST meet the IPP Event Notification Delivery Method Documents MUST meet the
requirements of this document (see sections 9 and 10). requirements of this document (see sections 9 and 10).
In addition, a Delivery Method Document MUST contain the following In addition, a Delivery Method Document MUST contain the following
information: information:
Type of registration: IPP Event Notification Delivery Method Type of registration: IPP Event Notification Delivery Method
Name of this delivery method: Name of this delivery method:
Proposed URL scheme name of this Push Delivery Method or the Proposed URL scheme name of this Push Delivery Method or the
keyword name of this Pull Delivery Method: keyword name of this Pull Delivery Method:
Name of proposer: Name of proposer:
Address of proposer: Address of proposer:
Email address of proposer: Email address of proposer:
Is this delivery method REQUIRED or OPTIONAL for conformance to the Is this delivery method REQUIRED or OPTIONAL for conformance to the
IPP Event Notification and Subscriptions document: IPP Event Notification and Subscriptions document:
Is this delivery method defining Machine Consumable and/or Human Is this delivery method defining Machine Consumable and/or Human
Consumable content: Consumable content:
13.7.1.2 Naming Requirements 19.7.1.2 Naming Requirements
Exactly one (URL scheme or keyword) name MUST be assigned to each Exactly one (URL scheme or keyword) name MUST be assigned to each
Delivery Method. Delivery Method.
Each assigned name MUST uniquely identify a single Delivery Method. Each assigned name MUST uniquely identify a single Delivery Method.
All Push Delivery Method names MUST conform to the rules for URL All Push Delivery Method names MUST conform to the rules for URL
scheme names, according to [RFC2396] and [RFC2717] for schemes in the scheme names, according to [RFC2396] and [RFC2717] for schemes in the
IETF tree. All Pull Delivery Method names MUST conform to the rules IETF tree. All Pull Delivery Method names MUST conform to the rules
for keywords according to [RFC2911]. for keywords according to [RFC2911].
13.7.1.3 Functionality Requirements 19.7.1.3 Functionality Requirements
Delivery Methods MUST function as a protocol that is capable of Delivery Methods MUST function as a protocol that is capable of
delivering (push or pull) IPP Event Notifications to Notification delivering (push or pull) IPP Event Notifications to Notification
Recipients. Recipients.
13.7.1.4 Usage and Implementation Requirements 19.7.1.4 Usage and Implementation Requirements
Use of a large number of Delivery Methods may hamper Use of a large number of Delivery Methods may hamper
interoperability. However, the use of a large number of undocumented interoperability. However, the use of a large number of undocumented
and/or unlabelled Delivery Methods hampers interoperability even and/or unlabelled Delivery Methods hampers interoperability even
more. more.
A Delivery Method should therefore be registered ONLY if it adds A Delivery Method should therefore be registered ONLY if it adds
significant functionality that is valuable to a large community, OR significant functionality that is valuable to a large community, OR
if it documents existing practice in a large community. Note that if it documents existing practice in a large community. Note that
Delivery Methods registered for the second reason should be Delivery Methods registered for the second reason should be
explicitly marked as being of limited or specialized use and should explicitly marked as being of limited or specialized use and should
only be used with prior bilateral agreement. only be used with prior bilateral agreement.
13.7.1.5 Publication Requirements 19.7.1.5 Publication Requirements
Delivery Method Documents MUST be published in a standards track, Delivery Method Documents MUST be published in a standards track,
informational, or experimental RFCs. informational, or experimental RFCs.
13.7.2 Registration Procedure 19.7.2 Registration Procedure
The IPP WG is developing a small number of Delivery Methods which are The IPP WG is developing a small number of Delivery Methods which are
intended to be published as standards track RFCs. However, some intended to be published as standards track RFCs. However, some
parties may wish to register additional Delivery Methods in the parties may wish to register additional Delivery Methods in the
future. This section describes the procedures for these additional future. This section describes the procedures for these additional
Delivery Methods. Delivery Methods.
13.7.2.1 Present the proposal to the Community 19.7.2.1 Present the proposal to the Community
First the Delivery Method Document MUST be an Internet-Draft with a First the Delivery Method Document MUST be an Internet-Draft with a
target category of standards track, informational, or experimental. target category of standards track, informational, or experimental.
The same MUST be true for any documents that it references. The same MUST be true for any documents that it references.
Send the proposed Delivery Method Document proposal to the Send the proposed Delivery Method Document proposal to the
"ipp@pwg.org" mailing list. This mailing list has been established "ipp@pwg.org" mailing list. This mailing list has been established
by [RFC2911] for reviewing proposed registrations and discussing by [RFC2911] for reviewing proposed registrations and discussing
other IPP matters. Proposed Delivery Method Documents are not other IPP matters. Proposed Delivery Method Documents are not
formally registered and MUST NOT be used until approved. formally registered and MUST NOT be used until approved.
The intent of the public posting is to solicit comments and feedback The intent of the public posting is to solicit comments and feedback
on the definition and suitability of the Delivery Method and the name on the definition and suitability of the Delivery Method and the name
chosen for it over a four week period. chosen for it over a four week period.
13.7.2.2 Delivery Method Reviewer 19.7.2.2 Delivery Method Reviewer
The Delivery Method Reviewer is the same person who has been The Delivery Method Reviewer is the same person who has been
appointed by the IETF Application Area Director(s) as the IPP appointed by the IETF Application Area Director(s) as the IPP
Designated Expert according to [RFC2911] and [IANA-CON]. When the Designated Expert according to [RFC2911] and [IANA-CON]. When the
four week period is over and the IPP Designated Expert is convinced four week period is over and the IPP Designated Expert is convinced
that consensus has been achieved, the IPP Designated Expert either that consensus has been achieved, the IPP Designated Expert either
approves the request for registration or rejects it. Rejection may approves the request for registration or rejects it. Rejection may
occur because of significant objections raised on the list or occur because of significant objections raised on the list or
objections raised externally. objections raised externally.
Decisions made by the Reviewer must be posted to the ipp@pwg.org 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 mailing list within 14 days. Decisions made by the Reviewer may be
appealed to the IESG. appealed to the IESG.
13.7.2.3 IANA Registration 19.7.2.3 IANA Registration
Provided that the Delivery Method registration proposal has either Provided that the Delivery Method registration proposal has either
passed review or has been successfully appealed to the IESG, the IANA passed review or has been successfully appealed to the IESG, the IANA
will register the Delivery Method and make it available to the will register the Delivery Method and make it available to the
community. community.
13.7.3 Delivery Method Document Registrations 19.7.3 Delivery Method Document Registrations
Each Push Delivery Method Document defines a URI scheme which is Each Push Delivery Method Document defines a URI scheme which is
registered as an additional value of the "notify-schemes-supported" registered as an additional value of the "notify-schemes-supported"
Printer attribute. These uriScheme values will be registered Printer attribute. These uriScheme values will be registered
according to the procedures of [RFC2911] section 7.1 for additional according to the procedures of [RFC2911] section 7.1 for additional
attribute values. Therefore, the IPP Registry entry for a Push attribute values. Therefore, the IPP Registry entry for a Push
Delivery Method will be of the form: Delivery Method will be of the form:
uriScheme Attribute Values: Ref. Section: uriScheme Attribute Values: Ref. Section:
<scheme name> RFC xxxx m.n <scheme name> RFC xxxx m.n
skipping to change at page 84, line 44 skipping to change at page 89, line 37
Pull Delivery Method will be of the form: Pull Delivery Method will be of the form:
keyword Attribute Values: Ref. Section: keyword Attribute Values: Ref. Section:
<method name> RFC xxxx m.n <method name> RFC xxxx m.n
The resulting Delivery Method URI schemes will be published in the The resulting Delivery Method URI schemes will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute- ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
values/notify-pull-method-supported/ values/notify-pull-method-supported/
area. area.
13.7.4 Registration Template 19.7.4 Registration Template
To: ipp@pwg.org To: ipp@pwg.org
Subject: Registration of a new Delivery Method Subject: Registration of a new Delivery Method
Delivery Method name: Delivery Method name:
(All Push Delivery Method names must be suitable for use as the value (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 of a URL scheme in the IETF tree and all Pull Delivery Method names
must be suitable IPP keywords according to [RFC2911]) must be suitable IPP keywords according to [RFC2911])
skipping to change at page 85, line 13 skipping to change at page 90, line 4
Delivery Method name: Delivery Method name:
(All Push Delivery Method names must be suitable for use as the value (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 of a URL scheme in the IETF tree and all Pull Delivery Method names
must be suitable IPP keywords according to [RFC2911]) must be suitable IPP keywords according to [RFC2911])
Published specification(s): Published specification(s):
(A specification for the Delivery Method must be openly available (A specification for the Delivery Method must be openly available
that accurately describes what is being registered.) that accurately describes what is being registered.)
Person & email address to contact for further information: Person & email address to contact for further information:
14 Internationalization Considerations 20 Internationalization Considerations
This IPP Notification specification continues support for the This IPP Notification specification continues support for the
internationalization of [RFC2911] of attributes containing text internationalization of [RFC2911] of attributes containing text
strings and names. Allowing a Subscribing Client to specify a strings and names. Allowing a Subscribing Client to specify a
different natural language and charset for each Subscription Object different natural language and charset for each Subscription Object
increases the internationalization support. increases the internationalization support.
The Printer MUST be able to localize the content of Human Consumable The Printer MUST be able to localize the content of Human Consumable
Event Notifications and to localize the value of "notify-text" Event Notifications and to localize the value of "notify-text"
attribute in Machine Consumable Event Notifications that it sends to attribute in Machine Consumable Event Notifications that it sends to
Notification Recipients. For localization, the Printer MUST use the Notification Recipients. For localization, the Printer MUST use the
value of the "notify-charset" attribute and the "notify-natural- value of the "notify-charset" attribute and the "notify-natural-
language" attribute in the Subscription Object supplied by the language" attribute in the Subscription Object supplied by the
Subscribing Client. Subscribing Client.
15 Security Considerations 21 Contributors
By far the biggest security concern is the abuse of notification:
sending unwanted Event Notifications to third parties (i.e., spam).
The problem is made worse by notification addresses that may be
redistributed to multiple parties (e.g., mailing lists). There exist
scenarios where third party notification is required (see Scenario #2
and #3 in [ipp-not-req]). The fully secure solution would require
active agreement of all recipients before sending out anything.
However, requirement #9 in [ipp-req] ("There is no requirement for
IPP Printer receiving the print request to validate the identity of
an Event recipient") argues against this. Certain systems may decide
to disallow third party Event Notifications (a traditional fax
model).
Clients submitting Notification requests to the IPP Printer have the
same security issues as submitting an IPP/1.1 print job request. 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 Jobs, if there is no
security on Subscription Objects, sequential assignment of
subscription-ids exposes the system to a passive traffic monitoring
threat.
The Notification access control model should be similar to the IPP
access control model for Jobs. Creating a Per-Printer Subscription
Object is associated with a user. Only the creator or an Operator
can cancel the Subscription Object. The system may limit the listing
of items to only those items owned by the user. Some Subscription
Objects (e.g., those that have a lifetime longer than a job) can be
done only by privileged users (users having Operator and/or
Administrator access rights), if that is the authorization policy.
The standard security concerns (delivery to the right user, privacy
of content, tamper proof content) apply to the Delivery Method. IPP
should use the security mechanism of the Delivery Method used. Some
delivery mechanisms are more secure than others. Therefore,
sensitive Event Notifications should use the Delivery Method that has
the strongest security.
16 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.
16.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
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'.
16.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.
17 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.
17.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.1.
17.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.
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.1.2.
17.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).
17.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.2).
17.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.
18 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"
19 References
[IANA-CON]
Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA
Considerations Section in RFCs, BCP 26, RFC 2434, October 1998.
[ipp-not-req]
deBry, R., Lewis, H., Hastings, T., "Internet Printing
Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
not-06.txt>, work in progress, July 17, 2001.
[ipp-prog]
Hastings, T., Bergman, R., Lewis, H., "IPP: Job Progress
Attributes", <draft-ietf-ipp-job-prog-03.txt> work in
progress, July 17, 2001.
[ipp-set]
Kugler, C., Hastings, T., Herriot, R., Lewis, H, "Internet Printing
Protocol (IPP): Job and Printer Set Operations", <draft-ietf-ipp-
job-printer-set-ops-04.txt>, work in progress, July 17, 2001.
[RFC2026]
S. Bradner, "The Internet Standards Process -- Revision 3", RFC
2026, October 1996.
[RFC2119]
S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119 , March 1997
[RFC2396]
Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource
Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
[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., Powell, P.,
"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., Martin, J., "Mapping between
LPD and IPP Protocols", RFC 2569, April 1999.
[RFC2717]
R. Petke and I. King, "Registration Procedures for URL Scheme
Names", RFC 2717, November 1999.
[RFC2910]
Herriot, R., Butler, S., Moore, P., Turner, R., "Internet Printing
Protocol/1.1: Encoding and Transport", RFC 2910, September 2000.
[RFC2911]
deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
"Internet Printing Protocol/1.1: Model and Semantics", RFC 2911,
September 2000.
20 Author's Addresses
Robert Herriot
2066 Byron St.
Palo Alto, CA 94301
Phone: 650-326-8279
Fax: 650-327-4466
Email: bob@herriot.com
Tom Hastings
Xerox Corporation
737 Hawaii St. ESAE 231
El Segundo, CA 90245
Phone: 310-333-6413 The following people made significant contributions to the design and
Fax: 310-333-5514 review of this specification:
e-mail: hastings@cp10.es.xerox.com
Scott A. Isaacson Scott A. Isaacson
Novell, Inc. Novell, Inc.
122 E 1700 S 122 E 1700 S
Provo, UT 84606 Provo, UT 84606
Phone: 801-861-7366 Phone: 801-861-7366
Fax: 801-861-2517 Fax: 801-861-2517
e-mail: sisaacson@novell.com e-mail: sisaacson@novell.com
skipping to change at page 92, line 4 skipping to change at page 91, line 21
e-mail: mshepherd@crt.xerox.com e-mail: mshepherd@crt.xerox.com
Ron Bergman Ron Bergman
Hitachi Koki Imaging Solutions Hitachi Koki Imaging Solutions
1757 Tapo Canyon Road 1757 Tapo Canyon Road
Simi Valley, CA 93063-3394 Simi Valley, CA 93063-3394
Phone: 805-578-4421 Phone: 805-578-4421
Fax: 805-578-4001 Fax: 805-578-4001
Email: rbergma@hitachi-hkis.com Email: rbergma@hitachi-hkis.com
22 Author's Addresses
Robert Herriot
706 Colorado Ave.
Palo Alto, CA 94303
Phone: 650-327-4466
Fax: 650-327-4466
Email: bob@herriot.com
Tom Hastings
Xerox Corporation
737 Hawaii St. ESAE 231
El Segundo, CA 90245
Phone: 310-333-6413
Fax: 310-333-5514
e-mail: hastings@cp10.es.xerox.com
IPP Web Page: http://www.pwg.org/ipp/ IPP Web Page: http://www.pwg.org/ipp/
IPP Mailing List: ipp@pwg.org IPP Mailing List: ipp@pwg.org
To subscribe to the ipp mailing list, send the following email: To subscribe to the ipp mailing list, send the following email:
1) send it to majordomo@pwg.org 1) send it to majordomo@pwg.org
2) leave the subject line blank 2) leave the subject line blank
3) put the following two lines in the message body: 3) put the following two lines in the message body:
subscribe ipp subscribe ipp
end end
Implementers of this specification document are encouraged to join Implementers of this specification document are encouraged to join
the IPP Mailing List in order to participate in any discussions of the IPP Mailing List in order to participate in any discussions of
clarification issues and review of registration proposals for clarification issues and review of registration proposals for
additional attributes and values. In order to reduce spam the additional attributes and values. In order to reduce spam the
mailing list rejects mail from non-subscribers, so you must subscribe mailing list rejects mail from non-subscribers, so you must subscribe
to the mailing list in order to send a question or comment to the to the mailing list in order to send a question or comment to the
mailing list. mailing list.
A. Appendix - Model for Notification with Cascading Printers A. Appendix - Model for Notification with Cascading Printers
skipping to change at page 92, line 48 skipping to change at page 92, line 38
the Event Notifications directly to the Notification Recipients the Event Notifications directly to the Notification Recipients
supplied by the Client (Event Notifications(C) in the diagram). supplied by the Client (Event Notifications(C) in the diagram).
b)Printer 1 performs the client-supplied Subscription Creation b)Printer 1 performs the client-supplied Subscription Creation
Operations and also forwards the Subscription Creation Operations and also forwards the Subscription Creation
Operations to Printer 2 with the Notification Recipient changed Operations to Printer 2 with the Notification Recipient changed
to be the Printer 1. When an Event occurs in Printer 2, Printer to be the Printer 1. When an Event occurs in Printer 2, Printer
2 sends the Event Notification (B) to Notification Recipient of 2 sends the Event Notification (B) to Notification Recipient of
Printer 1, which relays the received Event Notification (B) to Printer 1, which relays the received Event Notification (B) to
the client-supplied Notification Recipient (as Event the client-supplied Notification Recipient (as Event
Notifications(A) in the diagram). Note, when a client performs a Notifications(A) in the diagram). Note, when a client performs
Subscription Creation Operation, Printer 1 need not forward the a Subscription Creation Operation, Printer 1 need not forward
Subscription Creation Operation to Printer 2 if it would create the Subscription Creation Operation to Printer 2 if it would
a duplicate Subscription Object on Printer 2. create a duplicate Subscription Object on Printer 2.
Note: when Printer 1 is forwarding Subscription Creation Operations Note: when Printer 1 is forwarding Subscription Creation Operations
to Printer 2, it may request Printer 2 to create additional to Printer 2, it may request Printer 2 to create additional
Subscription Objects (called "piggy-backing"). Piggy-backing is Subscription Objects (called "piggy-backing"). Piggy-backing is
useful when: useful when:
- Device A is configured to accept (IPP or non-IPP) requests from - Device A is configured to accept (IPP or non-IPP) requests from
other servers. other servers.
- Server S wants to receive Job Events that the client didn't - Server S wants to receive Job Events that the client didn't
skipping to change at page 96, line 6 skipping to change at page 95, line 45
The following paragraphs provide more details about conformance The following paragraphs provide more details about conformance
terminology. terminology.
REQUIRED - an adjective used to indicate that a conforming IPP REQUIRED - an adjective used to indicate that a conforming IPP
Printer implementation MUST support the indicated operation, Printer implementation MUST support the indicated operation,
object, attribute, attribute value, status code, or out-of-band object, attribute, attribute value, status code, or out-of-band
value in requests and responses. See [RFC2911] "Appendix A - value in requests and responses. See [RFC2911] "Appendix A -
Terminology for a definition of "support". Since support of this Terminology for a definition of "support". Since support of this
entire Notification specification is OPTIONAL for conformance to entire Notification specification is OPTIONAL for conformance to
IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document IPP/1.1, the use of the term REQUIRED in this document means
means "REQUIRED if this OPTIONAL Notification specification is "REQUIRED if this OPTIONAL Notification specification is
implemented". implemented".
RECOMMENDED - an adjective used to indicate that a conforming IPP RECOMMENDED - an adjective used to indicate that a conforming IPP
Printer implementation is recommended to support the indicated Printer implementation is recommended to support the indicated
operation, object, attribute, attribute value, status code, or operation, object, attribute, attribute value, status code, or
out-of-band value in requests and responses. Since support of out-of-band value in requests and responses. Since support of
this entire Notification specification is OPTIONAL for conformance this entire Notification specification is OPTIONAL for conformance
to IPP/1.0 or IPP/1.1, the use of the term RECOMMENDED in this to IPP/1.1, the use of the term RECOMMENDED in this document means
document means "RECOMMENDED if this OPTIONAL Notification "RECOMMENDED if this OPTIONAL Notification specification is
specification is implemented". implemented".
OPTIONAL - an adjective used to indicate that a conforming IPP OPTIONAL - an adjective used to indicate that a conforming IPP
Printer implementation MAY, but is NOT REQUIRED to, support the Printer implementation MAY, but is NOT REQUIRED to, support the
indicated operation, object, attribute, attribute value, status indicated operation, object, attribute, attribute value, status
code, or out-of-band value in requests and responses. code, or out-of-band value in requests and responses.
E. Appendix - Object Model for Notification E. Appendix - Object Model for Notification
This section describes the Notification object model that adds a This section describes the Notification object model that adds a
Subscription Object which together with the Job and Printer object Subscription Object which together with the Job and Printer object
skipping to change at page 99, line 30 skipping to change at page 99, line 27
G. Appendix - Description of the base IPP documents G. Appendix - Description of the base IPP documents
The base set of IPP documents includes: The base set of IPP documents includes:
Design Goals for an Internet Printing Protocol [RFC2567] Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568] Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911] Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]
Mapping between LPD and IPP Protocols [RFC2569] Mapping between LPD and IPP Protocols [RFC2569]
The "Design Goals for an Internet Printing Protocol" document takes a The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, operators, and requirements for three types of users: end users, operators, and
administrators. It calls out a subset of end user requirements that administrators. It calls out a subset of end user requirements that
are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator
operations have been added to IPP/1.1 [RFC2911, RFC2910]. operations have been added to IPP/1.1 [RFC2911, RFC2910].
skipping to change at page 100, line 31 skipping to change at page 100, line 28
and/or IPP object implementations. For example, a typical order of and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation processing requests is given, including error checking. Motivation
for some of the specification decisions is also included. for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some The "Mapping between LPD and IPP Protocols" document gives some
advice to implementers of gateways between IPP and LPD (Line Printer advice to implementers of gateways between IPP and LPD (Line Printer
Daemon) implementations. Daemon) implementations.
H. Appendix - Full Copyright Statement H. Appendix - Full Copyright Statement
Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights Copyright (C) The Internet Society (1998,1999,2000,2001,2002). All
Reserved Rights Reserved
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of Internet organizations, except as needed for the purpose of
 End of changes. 

This html diff was produced by rfcdiff 1.25, available from http://www.levkowetz.com/ietf/tools/rfcdiff/