draft-ietf-ipp-not-spec-12.txt   rfc3995.txt 
Internet Printing Protocol WG R. Herriot Network Working Group R. Herriot
INTERNET-DRAFT Global Workflow Solutions Request for Comments: 3995 Global Workflow Solutions
<draft-ietf-ipp-not-spec-12.txt> T. Hastings Category: Standards Track T. Hastings
Updates RFC 2910 and 2911 Xerox Corporation Updates: 2911, 2910 Xerox Corporation
[Target Category: standards track] June 21, 2004 March 2005
Expires: December 21, 2004
Internet Printing Protocol (IPP):
Event Notifications and Subscriptions
Copyright (C) The Internet Society (2004). All Rights Reserved. Internet Printing Protocol (IPP):
Event Notifications and Subscriptions
Status of this Memo Status of This Memo
This document is an Internet-Draft and is in full conformance with This document specifies an Internet standards track protocol for the
all provisions of Section 10 of RFC 2026. Internet-Drafts are Internet community, and requests discussion and suggestions for
working documents of the Internet Engineering Task Force (IETF), its improvements. Please refer to the current edition of the "Internet
areas, and its working groups. Note that other groups may also Official Protocol Standards" (STD 1) for the standardization state
distribute working documents as Internet-Drafts. and status of this protocol. Distribution of this memo is unlimited.
Internet-Drafts are draft documents valid for a maximum of six months Copyright Notice
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at Copyright (C) The Internet Society (2005).
http://www.ietf.org/ietf/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed as
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.1: Model and Semantics (RFC 2911, RFC 2910). Printing Protocol/1.1: Model and Semantics (RFC 2911, RFC 2910).
This extension allows a client to subscribe to printing related This extension allows a client to subscribe to printing related
Events. Subscriptions are modeled as Subscription Objects. The Events. Subscriptions are modeled as Subscription Objects. The
Subscription Object specifies that when one of the specified Events Subscription Object specifies that when one of the specified Events
occurs, the Printer delivers an asynchronous Event Notification to occurs, the Printer delivers an asynchronous Event Notification to
the specified Notification Recipient via the specified Push or Pull the specified Notification Recipient via the specified Push or Pull
skipping to change at page 2, line 7 skipping to change at page 2, line 7
A client associates Subscription Objects with a particular Job by A client associates Subscription Objects with a particular Job by
performing the Create-Job-Subscriptions operation or by submitting a performing the Create-Job-Subscriptions operation or by submitting a
Job with subscription information. A client associates Subscription Job with subscription information. A client associates Subscription
Objects with the Printer by performing a Create-Printer-Subscriptions Objects with the Printer by performing a Create-Printer-Subscriptions
operation. Four other operations are defined for Subscription operation. Four other operations are defined for Subscription
Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Renew- Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Renew-
Subscription, and Cancel-Subscription. Subscription, and Cancel-Subscription.
Table of Contents Table of Contents
1 Introduction.....................................................7 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Notification Overview..........................................7 1.1. Notification Overview. . . . . . . . . . . . . . . . . . 5
2. Models for Notification. . . . . . . . . . . . . . . . . . . . 8
2 Models for Notification.........................................10 2.1. Model for Simple Notification (Normative). . . . . . . . 8
2.1 Model for Simple Notification (Normative).....................10 2.2. Additional Models for Notification (Informative) . . . . 9
2.2 Additional Models for Notification (Informative)..............11 3. Terminology. . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1. Conformance Terminology. . . . . . . . . . . . . . . . . 9
3 Terminology.....................................................11 3.2. Other Terminology. . . . . . . . . . . . . . . . . . . . 10
3.1 Conformance Terminology.......................................11 4. Object Relationships . . . . . . . . . . . . . . . . . . . . . 12
3.2 Other Terminology.............................................11 4.1. Printer and Per-Printer Subscription Objects . . . . . . 13
4.2. Printer, Job and Per-Job Subscription Objects. . . . . . 13
4 Object Relationships............................................14 5. Subscription Object. . . . . . . . . . . . . . . . . . . . . . 13
4.1 Printer and Per-Printer Subscription Objects..................14 5.1. Rules for Support of Subscription Template Attributes. . 14
4.2 Printer, Job and Per-Job Subscription Objects.................14 5.2. Rules for Processing Subscription Template Attributes. . 15
5.3. Subscription Template Attributes . . . . . . . . . . . . 18
5 Subscription Object.............................................15 5.3.1. notify-recipient-uri (uri) . . . . . . . . . . . 20
5.1 Rules for Support of Subscription Template Attributes.........15 5.3.2. notify-pull-method (type2 keyword) . . . . . . . 21
5.2 Rules for Processing Subscription Template Attributes.........16 5.3.3. notify-events (1setOf type2 keyword) . . . . . . 22
5.3 Subscription Template Attributes..............................20 5.3.4. notify-attributes (1setOf type2 keyword) . . . . 29
5.3.1 notify-recipient-uri (uri)..................................22 5.3.5. notify-user-data (octetString(63)) . . . . . . . 30
5.3.1.1 notify-schemes-supported (1setOf uriScheme)..............23 5.3.6. notify-charset (charset) . . . . . . . . . . . . 31
5.3.2 notify-pull-method (type2 keyword)..........................23 5.3.7. notify-natural-language (naturalLanguage). . . . 31
5.3.2.1 notify-pull-method-supported (1setOf type2 keyword).......23 5.3.8. notify-lease-duration (integer(0:67108863)). . . 32
5.3.3 notify-events (1setOf type2 keyword)........................24 5.3.9. notify-time-interval (integer(0:MAX)). . . . . . 33
5.3.3.1 notify-events-default (1setOf type2 keyword)..............24 5.4. Subscription Description Attributes. . . . . . . . . . . 34
5.3.3.2 notify-events-supported (1setOf type2 keyword)............24 5.4.1. notify-subscription-id (integer (1:MAX)). . . . 35
5.3.3.3 notify-max-events-supported (integer(2:MAX))..............24 5.4.2. notify-sequence-number (integer (0:MAX)) . . . . 35
5.3.3.4 Standard Values for Subscribed Events.....................25 5.4.3. notify-lease-expiration-time (integer(0:MAX)). . 36
5.3.3.4.1 No Events...............................................25 5.4.4. notify-printer-up-time (integer(1:MAX)). . . . . 37
5.3.3.4.2 Subscribed Printer Events...............................25 5.4.5. notify-printer-uri (uri) . . . . . . . . . . . . 37
5.3.3.4.3 Subscribed Job Events...................................27 5.4.6. notify-job-id (integer(1:MAX)) . . . . . . . . . 37
5.3.3.5 Rules for Matching of Subscribed Events...................28 5.4.7. notify-subscriber-user-name (name(MAX)). . . . . 38
5.3.3.5.1 Rules for Matching of Printer Events....................28 6. Printer Description Attributes Related to Notification . . . . 38
5.3.3.5.2 Rules for Matching of Job Events........................28 6.1. printer-state-change-time (integer(1:MAX)) . . . . . . . 39
5.3.3.5.3 Special Cases for Matching Rules........................29 6.2. printer-state-change-date-time (dateTime). . . . . . . . 39
5.3.4 notify-attributes (1setOf type2 keyword)....................30 7. New Values for Existing Printer Description Attributes . . . . 39
5.3.4.1 notify-attributes-supported (1setOf type2 keyword)........32 7.1. operations-supported (1setOf type2 enum) . . . . . . . . 40
5.3.5 notify-user-data (octetString(63))..........................32 8. Attributes Only in Event Notifications . . . . . . . . . . . . 40
5.3.6 notify-charset (charset)....................................32 8.1. notify-subscribed-event (type2 keyword). . . . . . . . . 40
5.3.7 notify-natural-language (naturalLanguage)...................33 8.2. notify-text (text(MAX)). . . . . . . . . . . . . . . . . 41
5.3.8 notify-lease-duration (integer(0:67108863)).................33 9. Event Notification Content . . . . . . . . . . . . . . . . . . 41
5.3.8.1 notify-lease-duration-default (integer(0:67108863)).......34 9.1. Content of Machine Consumable Event Notifications. . . . 44
5.3.8.2 notify-lease-duration-supported (1setOf (integer(0: 67108863) 9.1.1. Event Notification Content Common to All Events. 44
| rangeOfInteger(0:67108863)))....................................35 9.1.2. Additional Event Notification Content for Job
5.3.9 notify-time-interval (integer(0:MAX)).......................35 Events . . . . . . . . . . . . . . . . . . . . . 45
5.4 Subscription Description Attributes...........................36
5.4.1 notify-subscription-id (integer (1:MAX))...................36
5.4.2 notify-sequence-number (integer (0:MAX))....................37
5.4.3 notify-lease-expiration-time (integer(0:MAX))...............37
5.4.4 notify-printer-up-time (integer(1:MAX)).....................38
5.4.5 notify-printer-uri (uri)....................................39
5.4.6 notify-job-id (integer(1:MAX))..............................39
5.4.7 notify-subscriber-user-name (name(MAX)).....................40
6 Printer Description Attributes Related to Notification..........40
6.1 printer-state-change-time (integer(1:MAX))....................40
6.2 printer-state-change-date-time (dateTime).....................41
7 New Values for Existing Printer Description Attributes..........41
7.1 operations-supported (1setOf type2 enum)......................41
8 Attributes Only in Event Notifications..........................42
8.1 notify-subscribed-event (type2 keyword).......................42
8.2 notify-text (text(MAX)).......................................42
9 Event Notification Content......................................43
9.1 Content of Machine Consumable Event Notifications.............46
9.1.1 Event Notification Content Common to All Events.............46
9.1.2 Additional Event Notification Content for Job Events........47
9.1.3 Additional Event Notification Content for Printer Events....48
9.2 Content of Human Consumable Event Notification................48
9.2.1 Event Notification Content Common to All Events.............49
9.2.2 Additional Event Notification Content for Job Events........51
9.2.3 Additional Event Notification Content for Printer Events....51
10 Delivery Methods...............................................52
11 Operations for Notification....................................54
11.1 Subscription Creation Operations.............................54
11.1.1 Create-Job-Subscriptions Operation.........................54
11.1.1.1 Create-Job-Subscriptions Request.........................55
11.1.1.1.1 notify-job-id (integer(1:MAX)).........................55
11.1.1.2 Create-Job-Subscriptions Response........................56
11.1.2 Create-Printer-Subscriptions operation.....................57
11.1.2.1 Create-Printer-Subscriptions Request.....................58
11.1.2.2 Create-Printer-Subscriptions Response....................58
11.1.3 Job Creation Operations - Extensions for Notification......58
11.1.3.1 Job Creation Request.....................................59
11.1.3.2 Job Creation Response....................................59
11.2 Other Operations.............................................60
11.2.1 Restart-Job Operation - Extensions for Notification........60
11.2.2 Validate-Job Operation - Extensions for Notification.......61
11.2.3 Get-Printer-Attributes - Extensions for Notification.......61
11.2.4 Get-Subscription-Attributes operation......................62
11.2.4.1 Get-Subscription-Attributes Request......................63
11.2.4.1.1 "notify-subscription-id" (integer (1:MAX)).............63
11.2.4.1.2 "requested-attributes" (1setOf keyword)................63
11.2.4.2 Get-Subscription-Attributes Response.....................64
11.2.5 Get-Subscriptions operation................................65
11.2.5.1 Get-Subscriptions Request................................66
11.2.5.1.1 "notify-job-id" (integer(1:MAX)).......................66
11.2.5.1.2 "limit" (integer(1:MAX))...............................66
11.2.5.1.3 "requested-attributes" (1setOf type2 keyword)..........67
11.2.5.1.4 "my-subscriptions" (boolean)...........................67
11.2.5.2 Get-Subscriptions Response...............................67
11.2.6 Renew-Subscription operation...............................68
11.2.6.1 Renew-Subscription Request...............................69
11.2.6.1.1 "notify-subscription-id" (integer (1:MAX)).............69
11.2.6.1.2 "notify-lease-duration" (integer(0:MAX))...............69
11.2.6.2 Renew-Subscription Response..............................69
11.2.6.2.1 "notify-lease-duration" (integer(0:MAX))...............70
11.2.7 Cancel-Subscription operation..............................70
11.2.7.1 Cancel-Subscription Request..............................71
11.2.7.1.1 "notify-subscription-id" (integer (1:MAX)).............72
11.2.7.2 Cancel-Subscription Response.............................72
12 Status Codes...................................................72
12.1 successful-ok-ignored-subscriptions (0x0003).................73
12.2 client-error-ignored-all-subscriptions (0x0414)..............73
13 Status Codes in Subscription Attributes Groups.................73
13.1 client-error-uri-scheme-not-supported (0x040C)...............74
13.2 client-error-attributes-or-values-not-supported (0x040B).....74
13.3 client-error-too-many-subscriptions (0x0415).................74
13.4 successful-ok-too-many-events (0x0005).......................74
13.5 successful-ok-ignored-or-substituted-attributes (0x0001).....74
14 Encodings of Additional Attribute Tags.........................74
15 Conformance Requirements.......................................75
15.1 Conformance requirements for clients.........................75
15.2 Conformance requirements for Printers........................75
16 Model for Notification with Cascading Printers (Informative)...76
17 Distributed Model for Notification (Informative)...............77
18 Extended Notification Recipient (Informative)..................78
19 Object Model for Notification (Normative)......................79
19.1 Object relationships.........................................80
19.2 Printer Object and Per-Printer Subscription Objects..........81
19.3 Job Object and Per-Job Subscription Objects..................81
20 Per-Job versus Per-Printer Subscription Objects (Normative)....81
21 Normative References...........................................82
22 Informative References.........................................83
23 IANA Considerations............................................83
23.1 Attribute Registrations......................................84
23.2 Additional Enum Attribute Value Registrations within the IPP
registry..........................................................85
23.3 Operation Registrations......................................85
23.4 Status code Registrations....................................86
23.5 Attribute Group tag Registrations............................86
23.6 Registration of Events.......................................86
23.7 Registration of Event Notification Delivery Methods..........87
23.7.1 Requirements for Registration of Event Notification Delivery
Methods................................................87
23.7.1.1 Required Characteristics.................................87
23.7.1.2 Naming Requirements......................................88
23.7.1.3 Functionality Requirements...............................88
23.7.1.4 Usage and Implementation Requirements....................88
23.7.1.5 Publication Requirements.................................89
23.7.2 Registration Procedure.....................................89
23.7.2.1 Present the proposal to the Community....................89
23.7.2.2 Delivery Method Reviewer.................................89
23.7.2.3 IANA Registration........................................90
23.7.3 Delivery Method Document Registrations.....................90
23.7.4 Registration Template......................................91
24 Intellectual Property..........................................91
25 Internationalization Considerations............................92
26 Security Considerations........................................92
26.1 Client access rights.........................................92
26.2 Printer security threats.....................................94
26.3 Notification Recipient security threats......................94
27 Contributors...................................................95
28 Author's Addresses.............................................96
29 Description of the base IPP documents (Informative)............96
30 Full Copyright Statement.......................................97 9.1.3. Additional Event Notification Content for
Printer Events . . . . . . . . . . . . . . . . . 46
9.2. Content of Human Consumable Event Notification . . . . . 46
9.2.1. Event Notification Content Common to All Events. 47
9.2.2. Additional Event Notification Content for Job
Events . . . . . . . . . . . . . . . . . . . . . 49
9.2.3. Additional Event Notification Content for
Printer Events . . . . . . . . . . . . . . . . . 49
10. Delivery Methods . . . . . . . . . . . . . . . . . . . . . . . 50
11. Operations for Notification. . . . . . . . . . . . . . . . . . 52
11.1. Subscription Creation Operations . . . . . . . . . . . . 52
11.1.1. Create-Job-Subscriptions Operation . . . . . . . 52
11.1.2. Create-Printer-Subscriptions operation . . . . . 55
11.1.3. Job Creation Operations - Extensions for
Notification . . . . . . . . . . . . . . . . . . 56
11.2 Other Operations. . . . . . . . . . . . . . . . . . . . . 58
11.2.1. Restart-Job Operation - Extensions for
Notification . . . . . . . . . . . . . . . . . . 58
11.2.2. Validate-Job Operation - Extensions for
Notification . . . . . . . . . . . . . . . . . . 59
11.2.3. Get-Printer-Attributes - Extensions for
Notification . . . . . . . . . . . . . . . . . . 59
11.2.4. Get-Subscription-Attributes operation. . . . . . 60
11.2.5. Get-Subscriptions operation. . . . . . . . . . . 63
11.2.6. Renew-Subscription operation . . . . . . . . . . 66
11.2.7. Cancel-Subscription operation. . . . . . . . . . 68
12. Status Codes . . . . . . . . . . . . . . . . . . . . . . . . . 70
12.1. successful-ok-ignored-subscriptions (0x0003) . . . . . . 70
12.2. client-error-ignored-all-subscriptions (0x0414). . . . . 71
13. Status Codes in Subscription Attributes Groups . . . . . . . . 71
13.1. client-error-uri-scheme-not-supported (0x040C) . . . . . 71
13.2. client-error-attributes-or-values-not-supported (0x040B) 71
13.3. client-error-too-many-subscriptions (0x0415) . . . . . . 72
13.4. successful-ok-too-many-events (0x0005) . . . . . . . . . 72
13.5. successful-ok-ignored-or-substituted-attributes (0x0001) 72
14. Encodings of Additional Attribute Tags . . . . . . . . . . . . 72
15. Conformance Requirements . . . . . . . . . . . . . . . . . . . 72
15.1. Conformance requirements for clients . . . . . . . . . . 73
15.2. Conformance requirements for Printers. . . . . . . . . . 73
16. Model for Notification with Cascading Printers (Informative) . 74
17. Distributed Model for Notification (Informative) . . . . . . . 75
18. Extended Notification Recipient (Informative). . . . . . . . . 76
19. Object Model for Notification (Normative). . . . . . . . . . . 77
19.1. Object relationships . . . . . . . . . . . . . . . . . . 78
19.2. Printer Object and Per-Printer Subscription Objects. . . 79
19.3. Job Object and Per-Job Subscription Objects. . . . . . . 79
20. Per-Job versus Per-Printer Subscription Objects (Normative). . 79
21. Normative References . . . . . . . . . . . . . . . . . . . . . 80
22. Informative References . . . . . . . . . . . . . . . . . . . . 80
23. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 81
23.1. Attribute Registrations. . . . . . . . . . . . . . . . . 82
23.2. Additional Enum Attribute Value Registrations within
the IPP registry . . . . . . . . . . . . . . . . . . . . 83
23.3. Operation Registrations. . . . . . . . . . . . . . . . . 83
23.4. Status code Registrations. . . . . . . . . . . . . . . . 83
23.5. Attribute Group tag Registrations. . . . . . . . . . . . 84
23.6. Registration of Events . . . . . . . . . . . . . . . . . 84
23.7. Registration of Event Notification Delivery Methods. . . 85
23.7.1. Requirements for Registration of Event
Notification Delivery Methods. . . . . . . . . . 85
23.7.2. Registration Procedure . . . . . . . . . . . . . 86
23.7.3. Delivery Method Document Registrations . . . . . 87
23.7.4. Registration Template. . . . . . . . . . . . . . 88
24. Internationalization Considerations. . . . . . . . . . . . . . 89
25. Security Considerations. . . . . . . . . . . . . . . . . . . . 89
25.1. Client access rights . . . . . . . . . . . . . . . . . . 89
25.2. Printer security threats . . . . . . . . . . . . . . . . 91
25.3. Notification Recipient security threats. . . . . . . . . 91
26. Description of the base IPP documents (Informative). . . . . . 92
27. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 93
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 94
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 95
Tables Tables
Table 1 - Subscription Template Attributes........................22
Table 2 - Subscription Description Attributes.....................36 Table 1 - Subscription Template Attributes. . . . . . . . . . . . 20
Table 3 - Printer Description Attributes Associated with Notification Table 2 - Subscription Description Attributes . . . . . . . . . . 35
..............................................................40 Table 3 - Printer Description Attributes Associated with
Table 4 - Operation-id assignments................................42 Notification. . . . . . . . . . . . . . . . . . . . . . 39
Table 5 - Attributes in Event Notification Content................47 Table 4 - Operation-id assignments. . . . . . . . . . . . . . . . 40
Table 6 - Additional Event Notification Content for Job Events....48 Table 5 - Attributes in Event Notification Content. . . . . . . . 45
Table 7 - Combinations of Events and Subscribed Events for "job- Table 6 - Additional Event Notification Content for Job Events. . 46
impressions-completed"........................................48 Table 7 - Combinations of Events and Subscribed Events for
Table 8 - Additional Event Notification Content for Printer Events48 "job-impressions-completed" . . . . . . . . . . . . . . 46
Table 9 - Printer Name in Event Notification Content..............50 Table 8 - Additional Event Notification Content for Printer
Table 10 - Event Name in Event Notification Content...............50 Events. . . . . . . . . . . . . . . . . . . . . . . . . 46
Table 11 - Event Time in Event Notification Content...............50 Table 9 - Printer Name in Event Notification Content. . . . . . . 48
Table 12 - Job Name in Event Notification Content.................51 Table 10 - Event Name in Event Notification Content. . . . . . . . 48
Table 13 - Job State in Event Notification Content................51 Table 11 - Event Time in Event Notification Content. . . . . . . . 48
Table 14 - Printer State in Event Notification Content............52 Table 12 - Job Name in Event Notification Content. . . . . . . . . 49
Table 15 - Information about the Delivery Method..................53 Table 13 - Job State in Event Notification Content . . . . . . . . 49
Table 16 - Printer Conformance Requirements for Operations........76 Table 14 - Printer State in Event Notification Content . . . . . . 50
Table 15 - Information about the Delivery Method . . . . . . . . . 51
Table 16 - Printer Conformance Requirements for Operations . . . . 74
Figures Figures
Figure 1 - Model for Notification.................................10
Figure 2 - Model for Notification with Cascading Printers.........77 Figure 1 - Model for Notification. . . . . . . . . . . . . . . . . 9
Figure 2 - Model for Notification with Cascading Printers. . . . . 75
Figure 3 - Opaque Use of a Notification Server Transparent to the Figure 3 - Opaque Use of a Notification Server Transparent to the
Client........................................................78 Client. . . . . . . . . . . . . . . . . . . . . . . . . 76
Figure 4 - Use of an Extended Notification Recipient transparent to Figure 4 - Use of an Extended Notification Recipient transparent
the Printer...................................................79 to the Printer. . . . . . . . . . . . . . . . . . . . . 77
Figure 5 - Object Model for Notification..........................80 Figure 5 - Object Model for Notification . . . . . . . . . . . . . 78
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.1: Model and Semantics [RFC2911, Internet Printing Protocol/1.1: Model and Semantics [RFC2911,
RFC2910]. See Appendix 29 for a description of the base IPP RFC2910]. See Appendix 29 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 most important notification requirements is intended to meet the most important notification requirements
described in [ipp-not-req]: described in [RFC3997]:
Internet Printing Protocol (IPP): "Job Progress Attributes" Internet Printing Protocol (IPP): "Job Progress Attributes"
[RFC3381] [RFC3381]
Internet Printing Protocol (IPP): "The 'ippget' Delivery Method
for Event Notifications" [ipp-get-method] Internet Printing Protocol (IPP): "The 'ippget' Delivery Method
for Event Notifications" [RFC3996]
This specification REQUIRES that clients and Printers support the This specification REQUIRES that clients and Printers support the
'ippget' Pull Delivery Method [ipp-get-method]. Conforming client 'ippget' Pull Delivery Method [RFC3996]. Conforming client and
and Printer implementations MAY support additional Push or Pull Printer implementations MAY support additional Push or Pull Delivery
Delivery Methods as well. Note: this document does not define any Methods as well. Note: this document does not define any Delivery
Delivery Methods itself, but it does define the rules for conformance Methods itself, but it does define the rules for conformance for
for Delivery Method Documents and their registration with IANA (see Delivery Method Documents and their registration with IANA (see
section 23.7.3). section 23.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 delivers an asynchronous Event specified Events occurs, the Printer delivers an asynchronous Event
Notification to the specified Notification Recipient via the Notification to the specified Notification Recipient via the
specified Delivery Method (i.e., protocol). specified Delivery Method (i.e., protocol).
When a client (called a Subscribing Client) performs an operation When a client (called a Subscribing Client) performs an operation
that creates a Subscription Object, the operation contains one or that creates a Subscription Object, the operation contains one or
more Subscription Template Attributes Groups. Each such group holds more Subscription Template Attributes Groups. Each such group holds
information used by the Printer to initialize a newly created information used by the Printer to initialize a newly created
Subscription Object. The Printer creates one Subscription Object for Subscription Object. The Printer creates one Subscription Object for
each Subscription Template Attributes Group in the operation. This each Subscription Template Attributes Group in the operation. This
group is like the Job Template Attributes group defined in [RFC2911]. group is like the Job Template Attributes group defined in [RFC2911].
The following is an example of the information included in a The following is an example of the information included in a
Subscription Template Attributes Group (see section 5 for details on Subscription Template Attributes Group (see section 5 for details on
the Subscription Object attributes): the Subscription Object attributes):
1. The names of Subscribed Events that are of interest to the 1. The names of Subscribed Events that are of interest to the
Notification Recipient. Notification Recipient.
2. The address (URL) of one Notification Recipient for a Push
Delivery Method or the method for a Pull Delivery Method.
3. The Delivery Method (i.e., the protocol) which the Printer uses to
deliver the Event Notification.
4. Some opaque data that the Printer delivers to the Notification
Recipient in the Event Notification. For example, the
Notification Recipient might use this opaque data as a forwarding
address for the Event Notification.
5. The charset to use in text fields within an Event Notification
6. The natural language to use in the text fields of the Event
Notification
7. The requested lease time in seconds for the Subscription Object
2. The address (URL) of one Notification Recipient for a Push
Delivery Method or the method for a Pull Delivery Method.
3. The Delivery Method (i.e., the protocol) which the Printer uses
to deliver the Event Notification.
4. Some opaque data that the Printer delivers to the Notification
Recipient in the Event Notification. For example, the
Notification Recipient might use this opaque data as a
forwarding address for the Event Notification.
5. The charset to use in text fields within an Event Notification
6. The natural language to use in the text fields of the Event
Notification
7. The requested lease time in seconds for the Subscription Object
An operation that creates a Subscription Object is called a An operation that creates a Subscription Object is called a
Subscription Creation Operation. These operations include the Subscription Creation Operation. These operations include the
following operations (see section 11.1 for further details): following operations (see section 11.1 for further details):
- Job Creation operation: When a client performs such an - Job Creation operation: When a client performs such an
operation (Print-Job, Print-URI, and Create-Job), a client can operation (Print-Job, Print-URI, and Create-Job), a client can
include zero or more Subscription Template Attributes Groups in include zero or more Subscription Template Attributes Groups in
the request. The Printer creates one Subscription Object for the request. The Printer creates one Subscription Object for
each Subscription Template Attributes Group in the request, and each Subscription Template Attributes Group in the request, and
the Printer associates each such Subscription Object with the the Printer associates each such Subscription Object with the
skipping to change at page 9, line 18 skipping to change at page 7, line 34
Subscription Object, its corresponding Subscription Attributes Subscription Object, its corresponding Subscription Attributes
Group contains the "notify-subscription-id" attribute. This Group contains the "notify-subscription-id" attribute. This
attribute uniquely identifies the Subscription Object and is attribute uniquely identifies the Subscription Object and is
analogous to a "job-id" for a Job object. Some operations analogous to a "job-id" for a Job object. Some operations
described below use the "notify-subscription-id" to identify described below use the "notify-subscription-id" to identify
the target Subscription Object. the target Subscription Object.
This document defines the following additional operations (see This document defines the following additional operations (see
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
a client can include zero or more Subscription Template client can include zero or more Subscription Template Attributes
Attributes Groups in the request. The Printer determines if it Groups in the request. The Printer determines if it could create
could create one Subscription Object for each Subscription one Subscription Object for each Subscription Template Attributes
Template Attributes Group in the request. This document Group in the request. This document extends this operation's
extends this operation's definition in [RFC2911] by adding definition in [RFC2911] by adding Subscription Template Attributes
Subscription Template Attributes Groups in the request and Groups in the request and Subscription Attributes Groups in the
Subscription Attributes Groups in the response. 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
Subscription Object. 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 on
on the target Per-Printer Subscription Object before it the target Per-Printer Subscription Object before it expires. A
expires. A newly created Per-Printer Subscription Object newly created Per-Printer Subscription Object receives an initial
receives an initial lease. It is the duty of the client to use lease. It is the duty of the client to use this operation
this operation frequently enough to preserve a Per-Printer frequently enough to preserve a Per-Printer Subscription Object.
Subscription Object. The Printer deletes a Per-Printer The Printer deletes a Per-Printer Subscription Object when its
Subscription Object when its lease expires. A Per-Job lease expires. A Per-Job Subscription Object last exactly as long
Subscription Object last exactly as long as its associated Job as its associated Job Object and thus doesn't have a lease.
Object and thus doesn't have a lease.
- Cancel-Subscription operation: This operation (1) cancels the - Cancel-Subscription operation: This operation (1) cancels the
lease on the specified Per-Printer Subscription Object and lease on the specified Per-Printer Subscription Object and thereby
thereby deletes the Per-Printer Subscription Object or (2) deletes the Per-Printer Subscription Object or (2) deletes the
deletes the Per-Job Subscription Object. Per-Job Subscription Object.
When an Event occurs, the Printer finds all Subscription Objects When an Event occurs, the Printer finds all Subscription Objects
listening for the Event (see section 9 for details on finding such listening for the Event (see section 9 for details on finding such
Subscription Objects). For each such Subscription Object, the Subscription Objects). For each such Subscription Object, the
Printer: Printer:
a) generates an Event Notification with information specified in a) generates an Event Notification with information specified in
section 9, AND section 9, AND
b) either:
i) If the Delivery Method is a Push Delivery Method as
indicated by the presence of the Subscription Object's
"notify-recipient-uri" attribute, delivers the Event
Notification using the Delivery Method and target address
identified in the Subscription Object's "notify-recipient-
uri" attribute, OR
ii) If the Delivery Method is a Pull Delivery Method as
indicated by the presence of the Subscription Object's
"notify-pull-method" attribute, saves Event Notification
for a time period called the Event Life defined by the
Delivery Method, i.e., the Notification Recipient is
expected to fetch the Event Notifications.
2 Models for Notification b) either:
2.1 Model for Simple Notification (Normative) i) If the Delivery Method is a Push Delivery Method as indicated
by the presence of the Subscription Object's "notify-
recipient-uri" attribute, delivers the Event Notification
using the Delivery Method and target address identified in the
Subscription Object's "notify-recipient-uri" attribute, OR
ii) If the Delivery Method is a Pull Delivery Method as indicated
by the presence of the Subscription Object's "notify-pull-
method" attribute, saves Event Notification for a time period
called the Event Life defined by the Delivery Method, i.e.,
the Notification Recipient is expected to fetch the Event
Notifications.
2. Models for Notification
2.1. Model for Simple Notification (Normative)
As part of a Subscription Creation Operation, an IPP Printer (i.e., As part of a Subscription Creation Operation, an IPP Printer (i.e.,
located in an output device or a server) creates one or more located in an output device or a server) creates one or more
Subscription Objects. In a Subscription Creation Operation, the Subscription Objects. In a Subscription Creation Operation, the
client specifies the Notification Recipient to which the Printer is client specifies the Notification Recipient to which the Printer is
to deliver Event Notifications. A Notification Recipient can be the to deliver Event Notifications. A Notification Recipient can be the
Subscribing Client or a third party. Subscribing Client or a third party.
Figure 1 shows the Notification model for a simple Client-Printer Figure 1 shows the Notification model for a simple Client-Printer
relationship. relationship.
embedded printer: embedded printer:
output device or server
PDA, desktop, or server +---------------+
+--------+ | ########### |
| client |-----Subscription ---------># Printer # |
+--------+ Creation Operation | # Object # |
+------------+ | #####|##### |
|Notification| +-------|-------+
|Recipient |<----IPP Event Notifications----+
+------------+ (Job and/or Printer Events)
Figure 1 - Model for Notification
2.2 Additional Models for Notification (Informative) output device or server
PDA, desktop, or server +---------------+
+--------+ | ########### |
| client |-----Subscription ---------># Printer # |
+--------+ Creation Operation | # Object # |
+------------+ | #####|##### |
|Notification| +-------|-------+
|Recipient |<----IPP Event Notifications----+
+------------+ (Job and/or Printer Events)
Figure 1 - Model for Notification
2.2. Additional Models for Notification (Informative)
Additional models have been proposed (see Appendices 16, 17, and 18). Additional models have been proposed (see Appendices 16, 17, and 18).
3 Terminology 3. Terminology
This section defines terminology used throughout this document. This section defines terminology used throughout this document.
Other 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.
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. modified.
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", "administrator", "operator", and "operation", "request", "response", "administrator", "operator", and
"support". In addition, the following terms are defined for use in "support". In addition, the following terms are defined for use in
this document and the Delivery Method Documents: this document and the Delivery Method Documents:
Compound Event Notification - two or more Event Notifications that a Compound Event Notification - two or more Event Notifications that a
Printer delivers together as a single request or response. The Printer delivers together as a single request or response. The
Delivery Method Document specifies whether the Delivery Method Delivery Method Document specifies whether the Delivery Method
skipping to change at page 12, line 22 skipping to change at page 10, line 41
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 retain seconds after an Event occurs during which the Printer will retain
that Event for delivery in an Event Notification. After the Event that Event for delivery in an Event Notification. After the Event
Life expires, the Printer will no longer deliver an Event Life expires, the Printer will no longer deliver an Event
Notification for that Event in such a response. Notification for that Event in such a response.
Event Notification - the information about an Event that the Printer Event Notification - the information about an Event that the Printer
delivers when an Event occurs. delivers when an Event occurs.
Event Notification Attributes Group - The attributes group which is Event Notification Attributes Group - The attributes group which is
used to deliver an Event Notification in a request (Push used to deliver an Event Notification in a request (Push Delivery
Delivery Methods) or a response (Pull Delivery Methods). Methods) or a response (Pull Delivery Methods).
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 programs consumption only. There is no standardized format and thus programs
should not try to parse this text. should not try to parse this text.
Job Creation operation - One of the operations that creates a Job Job Creation operation - One of the operations that creates a Job
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, since operation [RFC2911] is not considered a Job Creation operation, since
the Printer re-uses the existing Job object. The Validate-Job the Printer re-uses the existing Job object. The Validate-Job
operation is not considered a Job Creation operation because no Job operation is not considered a Job Creation operation because no Job
skipping to change at page 13, line 4 skipping to change at page 11, line 24
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, i.e., 'Notification Recipient' - the concepts of this specification, i.e.,
Events, Subscription Objects, and Event Notifications. Events, Subscription Objects, and Event Notifications.
Notification Recipient - the entity to which the Printer delivers an Notification Recipient - the entity to which the Printer delivers an
Event Notification. For Push Delivery Methods, the IPP Printer sends Event Notification. For Push Delivery Methods, the IPP Printer sends
the Notifications to a Notification Recipient. For Pull Delivery the Notifications to a Notification Recipient. For Pull Delivery
Methods, the Notification Recipient is acting in the role of an IPP Methods, the Notification Recipient is acting in the role of an IPP
client and requests Event Notifications and so the terms "client" and client and requests Event Notifications and so the terms "client" and
"Notification Recipient" are used interchangeably with such Delivery "Notification Recipient" are used interchangeably with such Delivery
Methods. For example, see [ipp-get-method]. Methods. For example, see [RFC3996].
Per-Job Subscription Object - A Subscription Object that is Per-Job Subscription Object - A Subscription Object that is
associated with a single Job. The Create-Job-Subscriptions operation associated with a single Job. The Create-Job-Subscriptions operation
and Job Creation operations create such an object. and Job Creation operations create such an object.
Per-Printer Subscription Object - A Subscription Object that is Per-Printer Subscription Object - A Subscription Object that is
associated with the Printer as a whole. The Create-Printer- associated with the Printer as a whole. The Create-Printer-
Subscriptions operation creates such an object. Subscriptions operation creates such an object.
Printer Event - an Event caused by some change in the Printer that is Printer Event - an Event caused by some change in the Printer that is
skipping to change at page 14, line 23 skipping to change at page 12, line 44
Subscription Template Attributes - Subscription Object attributes Subscription Template Attributes - Subscription Object attributes
that a client can supply in a Subscription Creation Operation and that a client can supply in a Subscription Creation Operation and
associated Printer Object attributes that specify supported and associated Printer Object attributes that specify supported and
default values for the Subscription Object attributes. default values for the Subscription Object attributes.
Subscription Template Attributes Group - The attributes group in a Subscription Template Attributes Group - The attributes group in a
request that contains Subscription Object attributes that are request that contains Subscription Object attributes that are
Subscription Template Attributes. Subscription Template Attributes.
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
Appendix 19. Appendix 19.
4.1 Printer and Per-Printer Subscription Objects 4.1. Printer and Per-Printer Subscription Objects
1. A Printer object can be associated with zero or more Per-Printer 1. A Printer object can be associated with zero or more Per-Printer
Subscription Objects. Subscription Objects.
2. Each Per-Printer Subscription Object is associated with exactly 2. Each Per-Printer Subscription Object is associated with exactly
one Printer object. one Printer object.
4.2 Printer, Job and Per-Job Subscription Objects 4.2. Printer, Job and Per-Job Subscription Objects
1. A Printer object is associated with zero or more Job objects. 1. A Printer object is associated with zero or more Job objects.
2. Each Job object is associated with exactly one Printer object. 2. Each Job object is associated with exactly one Printer object.
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 certain Events. See section 11 for a description of these
operations. When an Event occurs, the Subscription Object specifies operations. When an Event occurs, the Subscription Object specifies
to the Printer where to deliver Event Notifications for Push Delivery to the Printer where to deliver Event Notifications for Push Delivery
Methods only, how to deliver them, and what to include in them. See Methods only, how to deliver them, and what to include in them. See
section 9 for details on the contents of an Event Notification. section 9 for details on the contents 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
Subscription Creation Request and Subscription Creation Request and
2. their associated Printer Object attributes that specify 2. their associated Printer Object attributes that specify supported
supported and default values for the Subscription Object and default values for the Subscription Object attributes
attributes
The remainder of this section specifies general rules for The remainder of this section specifies general rules for
Subscription Template Attributes and describes each attribute in a Subscription Template Attributes and describes each attribute in a
Subscription Object. Subscription Object.
5.1 Rules for Support of Subscription Template Attributes 5.1. Rules for Support of Subscription Template Attributes
Subscription Template Attributes are fundamental to the Notification Subscription Template Attributes are fundamental to the Notification
model described in this specification. The client supplies these model described in this specification. The client supplies these
attributes in Subscription Creation Operations and the Printer uses attributes in Subscription Creation Operations and the Printer uses
these attributes to populate a newly created Subscription Object. these attributes to populate a newly created Subscription Object.
Subscription Objects attributes that are Subscription Template Subscription Objects attributes that are Subscription Template
Attributes conform to the following rules: Attributes conform to the following rules:
1. Each attribute's name starts with the prefix string "notify-" 1. Each attribute's name starts with the prefix string "notify-" and
and this document calls such attributes "notify-xxx". this document calls such attributes "notify-xxx".
2. For each "notify-xxx" Subscription Object attribute defined in 2. For each "notify-xxx" Subscription Object attribute defined in
column 1 of Table 1 in section 5.3, Table 1 specifies column 1 of Table 1 in section 5.3, Table 1 specifies
corresponding Printer attributes: "notify-xxx-default", "notify- corresponding Printer attributes: "notify-xxx-default", "notify-
xxx-supported", "yyy-supported" and "notify-max-xxx-supported" xxx-supported", "yyy-supported" and "notify-max-xxx-supported"
defined in column 2 of Table 1. Note "xxx" stands for the same defined in column 2 of Table 1. Note "xxx" stands for the same
string in each case and "yyy" stands for some other string. string in each case and "yyy" stands for some other string.
3. If a Printer supports "notify-xxx" in column 1 of Table 1, then 3. If a Printer supports "notify-xxx" in column 1 of Table 1, then
the Printer MUST support all associated attributes specified in the Printer MUST support all associated attributes specified in
column 2 of Table 1. For example, Table 1 shows that if the column 2 of Table 1. For example, Table 1 shows that if the
Printer supports "notify-events", it MUST support "notify- Printer supports "notify-events", it MUST support "notify-events-
events-default", "notify-events-supported" and "notify-max- default", "notify-events-supported" and "notify-max-events-
events-supported". supported".
4. If a Printer does not support "notify-xxx" in column 1 of Table 4. If a Printer does not support "notify-xxx" in column 1 of Table 1,
1, then the Printer MUST NOT support any associated "notify-yyy" then the Printer MUST NOT support any associated "notify-yyy"
attributes specified in column 2 of Table 1. For example, Table attributes specified in column 2 of Table 1. For example, Table 1
1 shows that if the Printer doesn't support "notify-events", it shows that if the Printer doesn't support "notify-events", it MUST
MUST NOT support "notify-events-default", "notify-events- NOT support "notify-events-default", "notify-events-supported" and
supported" and "notify-max-events-supported". Note this rule "notify-max-events-supported". Note this rule does not apply to
does not apply to attributes whose names do not start with the attributes whose names do not start with the string "notify-" and
string "notify-" and are thus defined in another object and used are thus defined in another object and used by other attributes.
by other attributes.
5. Most "notify-xxx" attributes have a corresponding "yyy- 5. Most "notify-xxx" attributes have a corresponding "yyy-supported"
supported" attribute that specifies the supported values for attribute that specifies the supported values for "notify-xxx".
"notify-xxx". Column 2 of Table 1 specifies the name of each Column 2 of Table 1 specifies the name of each "yyy-supported"
"yyy-supported" attribute. The naming rules of IPP/1.1 (see attribute. The naming rules of IPP/1.1 (see [RFC2911]) are used
[RFC2911]) are used when "yyy-supported" is "notify-xxx- 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 client does not supply it. Column 2 of Table 1 specifies the
the name of each "notify-xxx-default" attribute. The naming name of each "notify-xxx-default" attribute. The naming rules of
rules of IPP/1.1 (see [RFC2911]) are used. 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 Creation Request. These rules are similar to the rules for
processing Operation attributes in [RFC2911]. That is, the Printer processing Operation attributes in [RFC2911]. That is, the Printer
may or may not support an attribute and a client may or may not may or may not support an attribute and a client may or may not
supply the attribute. Some combinations of these cases are OK. supply the attribute. Some combinations of these cases are OK.
Others return warnings or errors, and perhaps a list of unsupported Others return warnings or errors, and perhaps a list of unsupported
attributes. 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
Printer MUST NOT populate the attribute on the created Printer MUST NOT populate the attribute on the created
Subscription Object with it. The Printer MUST do one of the Subscription Object with it. The Printer MUST do one of the
following: following:
a) If the value of the "notify-xxx" attribute is unsupported, the a) If the value of the "notify-xxx" attribute is unsupported, the
Printer MUST return the attribute with its value in the Printer MUST return the attribute with its value in the
Subscription Attributes Group of the response. Subscription Attributes Group of the response.
b) If "notify-xxx" is an unsupported attribute, the Printer MUST b) If "notify-xxx" is an unsupported attribute, the Printer MUST
return the attribute in the Subscription Attributes Group of the return the attribute in the Subscription Attributes Group of
response with the 'unsupported' out-of-band value. the response with the 'unsupported' out-of-band value.
Note: The rules of this step are the same as for Unsupported
Attributes [RFC2911] section 3.1.7. except that the unsupported
attributes are returned in the Subscription Attributes Group
rather than the Unsupported Attributes Group because Subscription
Creation Operations can create more than one Subscription Object).
Note: The rules of this step are the same as for Unsupported
Attributes [RFC2911] section 3.1.7. except that the unsupported
attributes are returned in the Subscription Attributes Group
rather than the Unsupported Attributes Group because Subscription
Creation Operations can create more than one Subscription Object).
3. If a client is REQUIRED to supply a "notify-xxx" attribute from 3. If a client is REQUIRED to supply a "notify-xxx" attribute from
column 1 of Table 1 and the Printer doesn't support the supplied column 1 of Table 1 and the Printer doesn't support the supplied
value, the Printer MUST NOT create a Subscription Object. The value, the Printer MUST NOT create a Subscription Object. The
rules for Unsupported Attributes in step #2 still apply. rules for Unsupported Attributes in step #2 still apply.
4. If a client does not supply a "notify-xxx" attribute from column 1 4. If a client does not supply a "notify-xxx" attribute from column 1
of Table 1 and the attribute is REQUIRED for the client to supply, of Table 1 and the attribute is REQUIRED for the client to supply,
the Printer MUST reject the Subscription Creation Operation the Printer MUST reject the Subscription Creation Operation
(including Job Creation operations) without creating a (including Job Creation operations) without creating a
Subscription Object, and MUST return in the response: Subscription Object, and MUST return in the response:
a)the status code 'client-error-bad-request' AND a) the status code 'client-error-bad-request' AND
b) no Subscription Attribute Groups. b) no Subscription Attribute Groups.
5. If a client does not supply a "notify-xxx" attribute from column 1 5. If a client does not supply a "notify-xxx" attribute from column 1
of Table 1 that is OPTIONAL for the client to supply, and column 2 of Table 1 that is OPTIONAL for the client to supply, and column 2
of Table 1 either: of Table 1 either:
a) specifies a "notify-xxx-default" attribute, the Printer MUST a) specifies a "notify-xxx-default" attribute, the Printer MUST
behave as if the client had supplied the "notify-xxx-default" behave as if the client had supplied the "notify-xxx-default"
attribute (see step #1) and populate the Subscription object attribute (see step #1) and populate the Subscription object
with the value of the "notify-xxx-default" attribute as part of with the value of the "notify-xxx-default" attribute as part of
the Subscription Creation operation (unlike Job Template the Subscription Creation operation (unlike Job Template
attributes where the Printer does not populate the Job object attributes where the Printer does not populate the Job object
with defaults - see [RFC2911]) OR with defaults - see [RFC2911]) OR
b) does not specify a "notify-xxx-default" attribute, the Printer b) does not specify a "notify-xxx-default" attribute, the Printer
MUST populate the "notify-xxx" attribute on the Subscription MUST populate the "notify-xxx" attribute on the Subscription
Object according to the definition of the "notify-xxx" attribute Object according to the definition of the "notify-xxx"
in a section 5.3. For some attributes, the "notify-xxx" is attribute in a section 5.3. For some attributes, the "notify-
populated with the value of some other attribute, and for xxx" is populated with the value of some other attribute, and
others, the "notify-xxx" is NOT populated on the Subscription for others, the "notify-xxx" is NOT populated on the
object at all. Subscription object at all.
6. A Printer MUST create a Subscription Object for each Subscription 6. A Printer MUST create a Subscription Object for each Subscription
Template Attributes group in a request unless the Printer: Template Attributes group in a request unless the Printer:
a) encounters some attributes in a Subscription Template Attributes a) encounters some attributes in a Subscription Template
Group that require the Printer not to create the Subscription Attributes Group that require the Printer not to create the
Object OR Subscription Object OR
b) would create a Per-Job Subscription Object when it doesn't have b) would create a Per-Job Subscription Object when it doesn't have
space for another Per-Job Subscription Object OR space for another Per-Job Subscription Object OR
c) would create a Per-Printer Subscription Object when it doesn't c) would create a Per-Printer Subscription Object when it doesn't
have space for another Per-Printer Subscription Object. have space for another Per-Printer Subscription Object.
7. A response MUST contain one Subscription Attributes Group for each 7. A response MUST contain one Subscription Attributes Group for each
Subscription Template Attributes Group in the request (and in the Subscription Template Attributes Group in the request (and in the
same order) whether the Printer creates a Subscription Object from same order) whether the Printer creates a Subscription Object from
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.8), 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.8). 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
for each Subscription Object. attributes 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 13 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
that describes the status. below 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 recipient-uri" attribute is not supported. See section 13.1
13.1 for more details about this status code. See step #3 for more details about this status code. See step #3 in
in this section for the case that causes this error, and this section for the case that causes this error, and the
the resulting step #6a) that causes the Printer not to resulting step #6a) that causes the Printer not to create
create the Subscription Object. the Subscription Object.
'client-error-attributes-or-values-not-supported': the
Subscription Object was not created because the method of 'client-error-attributes-or-values-not-supported': the
the "notify-pull-method" attribute is not supported. See Subscription Object was not created because the method of
section 13.1 for more details about this status code. See the "notify-pull-method" attribute is not supported. See
step #3 in this section for the case that causes this section 13.1 for more details about this status code. See
error, and the resulting step #6a) that causes the Printer step #3 in this section for the case that causes this error,
not to create the Subscription Object. and the resulting step #6a) that causes the Printer not to
'client-error-too-many-subscriptions': the Subscription create the Subscription Object.
Object was not created because the Printer has no space for
additional Subscription Objects. The client MAY try again 'client-error-too-many-subscriptions': the Subscription
later. See section 13.3 for more details about this status Object was not created because the Printer has no space for
code. See steps #6b) and #6c) in this section for the additional Subscription Objects. The client MAY try again
cases that causes this error. later. See section 13.3 for more details about this status
'successful-ok-too-many-events': the Subscription Object was code. See steps #6b) and #6c) in this section for the cases
created without the "notify-events" values included in this that causes this error.
Subscription Attributes Group because the "notify-events"
attribute contains too many values. See section 13.4 for 'successful-ok-too-many-events': the Subscription Object was
more details about this status code. See step #2 in this created without the "notify-events" values included in this
section and section 5.3.3 for the cases that cause this Subscription Attributes Group because the "notify-events"
status code. attribute contains too many values. See section 13.4 for
more details about this status code. See step #2 in this
section and section 5.3.3 for the cases that cause this
status code.
'successful-ok-ignored-or-substituted-attributes': the
Subscription Object was created but some supplied
Subscription Template Attributes are unsupported. These
unsupported attributes are also in the Subscription
Attributes Group. See section 13.5 for more details about
this status code. See step #2 in this section for the cases
that cause this status code.
'successful-ok-ignored-or-substituted-attributes' : the
Subscription Object was created but some supplied
Subscription Template Attributes are unsupported. These
unsupported attributes are also in the Subscription
Attributes Group. See section 13.5 for more details about
this status code. See step #2 in this section for the
cases that cause this status code.
9. The Printer MUST validate all Subscription Template Attributes and 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.
Table 1 below shows the Subscription Template Attributes and has two Table 1 below shows the Subscription Template Attributes and has two
columns: columns:
- Attribute in Subscription Object: the name and attribute syntax - Attribute in Subscription Object: the name and attribute syntax of
of each Subscription Object Attribute that is a Subscription each Subscription Object Attribute that is a Subscription Template
Template Attribute Attribute
- Default and Supported Printer Attributes: the default attribute - Default and Supported Printer Attributes: the default attribute
and supported Printer attributes that are associated with the and supported Printer attributes that are associated with the
attribute in column 1. attribute in column 1.
The "notify-recipient-uri" attribute is for use with Push Delivery The "notify-recipient-uri" attribute is for use with Push Delivery
Methods. The "notify-pull-method" attribute is for use with Pull Methods. The "notify-pull-method" attribute is for use with Pull
Delivery Methods. Delivery Methods.
For Push Delivery Methods, a Printer MUST support all attributes in For Push Delivery Methods, a Printer MUST support all attributes in
Table 1 below except for "notify-pull-method" and "notify-attributes" Table 1 below except for "notify-pull-method" and "notify-attributes"
(and "notify-pull-method-supported" and "notify-attributes- (and "notify-pull-method-supported" and "notify-attributes-
supported"). For Pull Delivery Methods, a Printer MUST support all supported"). For Pull Delivery Methods, a Printer MUST support all
attributes in Table 1 below except for "notify-recipient-uri" and attributes in Table 1 below except for "notify-recipient-uri" and
"notify-attributes" (and "notify-schemes-supported" and "notify- "notify-attributes" (and "notify-schemes-supported" and "notify-
attributes-supported"). If a Printer supports both Push and Pull attributes-supported"). If a Printer supports both Push and Pull
Delivery Methods, then it MUST support both "notify-recipient-uri" Delivery Methods, then it MUST support both "notify-recipient-uri"
and "notify-pull-method" attributes. and "notify-pull-method" attributes.
For Pull Delivery Methods, a client MUST supply "notify-recipient- For Pull Delivery Methods, a client MUST supply "notify-recipient-
uri" and MAY omit any of the rest of the attributes in column 1 of uri" and MAY omit any of the rest of the attributes in column 1 of
Table 1 in a Subscription Creation Request. For Push Delivery Table 1 in a Subscription Creation Request. For Push Delivery
Methods, a client MUST supply "notify-pull-method" and MAY omit any Methods, a client MUST supply "notify-pull-method" and MAY omit any
of the rest of the attributes in column 1 of Table 1 in a of the rest of the attributes in column 1 of Table 1 in a
Subscription Creation Request. A client MUST NOT supply both Subscription Creation Request. A client MUST NOT supply both
"notify-recipient-uri" and "notify-pull-method" attributes in the "notify-recipient-uri" and "notify-pull-method" attributes in the
skipping to change at page 22, line 5 skipping to change at page 20, line 5
Note: The Default and Supported Printer attributes listed in column Note: The Default and Supported Printer attributes listed in column
2 of Table 1 do not have separate sections in this specification 2 of Table 1 do not have separate sections in this specification
defining their semantics. Instead, the section for the corresponding defining their semantics. Instead, the section for the corresponding
Subscription Object attribute (column 1 of Table 1) contains the Subscription Object attribute (column 1 of Table 1) contains the
semantics of these Printer attributes. This approach follows the semantics of these Printer attributes. This approach follows the
precedence of the Job Template attributes in section 4.2 of [RFC2911] precedence of the Job Template attributes in section 4.2 of [RFC2911]
where the corresponding "xxx-default" and "xxx-supported" Printer where the corresponding "xxx-default" and "xxx-supported" Printer
attributes are defined in the same section as the "xxx" Job attributes are defined in the same section as the "xxx" Job
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 notify-pull-method-supported (1setOf
keyword) ** type2 keyword) keyword) ** type2 keyword)
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
skipping to change at page 22, line 33 skipping to change at page 20, line 35
notify-charset (charset) charset-supported (1setOf charset) notify-charset (charset) charset-supported (1setOf charset)
notify-natural-language generated-natural-language-supported notify-natural-language generated-natural-language-supported
(naturalLanguage) (1setOf naturalLanguage) (naturalLanguage) (1setOf naturalLanguage)
notify-lease-duration notify-lease-duration-default notify-lease-duration notify-lease-duration-default
(integer(0:MAX)) (integer(0:67108863)) (integer(0:MAX)) (integer(0:67108863))
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) 5.3.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 23, line 18 skipping to change at page 21, line 22
to [RFC2396] the ":" terminates the scheme and so is not part of the to [RFC2396] the ":" terminates the scheme and so is not part of the
scheme. Therefore, values of the "notify-schemes-supported" Printer scheme. Therefore, values of the "notify-schemes-supported" Printer
attribute do not include the ":" character. attribute do not 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.
5.3.1.1 notify-schemes-supported (1setOf uriScheme) 5.3.1.1. notify-schemes-supported (1setOf uriScheme)
This attribute contains the URI schemes supported in the "notify- This attribute contains the URI schemes supported in the "notify-
recipient-uri" Subscription Template attribute. See sections 5.1 and recipient-uri" Subscription Template attribute. See sections 5.1 and
5.2 for the behavior of "xxx-supported" Subscription Template Printer 5.2 for the behavior of "xxx-supported" Subscription Template Printer
attributes. attributes.
5.3.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.
Since a Printer MUST support the 'ippget' Pull Delivery Method [ipp- Since a Printer MUST support the 'ippget' Pull Delivery Method
get-method] (see section 15), a Printer MUST support this attribute [RFC3996] (see section 15), a Printer MUST support this attribute and
and return the value as supplied by the client in any operation return the value as supplied by the client in any operation response
response that includes this attribute. 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.1 notify-pull-method-supported (1setOf type2 keyword) 5.3.2.1. notify-pull-method-supported (1setOf type2 keyword)
See sections 5.1 and 5.2 for the behavior of "xxx-supported" See sections 5.1 and 5.2 for the behavior of "xxx-supported"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.3 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 occurs and it "matches" a value of this attribute, the Printer
delivers an Event Notification using information in the Subscription delivers an Event Notification using information in the Subscription
Object. The details of "matching" are described subsection 5.3.3.5. Object. The details of "matching" are described subsection 5.3.3.5.
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
skipping to change at page 24, line 29 skipping to change at page 22, line 34
Each keyword value of this attribute on a Subscription Object MUST be Each keyword value of this attribute on a Subscription Object MUST be
a value of the "notify-events-supported (1setOf type2 keyword)" a value of the "notify-events-supported (1setOf type2 keyword)"
Printer attribute. Printer attribute.
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-
events' for the "notify-status-code" attribute in the Subscription many-events' for the "notify-status-code" attribute in the
Attributes Group of the response. Subscription Attributes Group of the response.
5.3.3.1 notify-events-default (1setOf type2 keyword) 5.3.3.1. notify-events-default (1setOf type2 keyword)
See sections 5.1 and 5.2 for the behavior of "xxx-default" See sections 5.1 and 5.2 for the behavior of "xxx-default"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.3.2 notify-events-supported (1setOf type2 keyword) 5.3.3.2. notify-events-supported (1setOf type2 keyword)
See sections 5.1 and 5.2 for the behavior of "xxx-supported" See sections 5.1 and 5.2 for the behavior of "xxx-supported"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.3.3 notify-max-events-supported (integer(2:MAX)) 5.3.3.3. notify-max-events-supported (integer(2:MAX))
This attribute specified the maximum number of events that the This attribute specified the maximum number of events that the
Printer supports for the "notify-events" Subscription Template Printer supports for the "notify-events" Subscription Template
attribute. See sections 5.1 and 5.2 for the behavior of "xxx- attribute. See sections 5.1 and 5.2 for the behavior of "xxx-
supported" Subscription Template Printer attributes. supported" Subscription Template Printer attributes.
5.3.3.4 Standard Values for Subscribed Events 5.3.3.4. 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.3.5 for the case where this attribute change'. See section 5.3.3.5 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.3.4.1 No Events 5.3.3.4.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 delivery of Event Notifications. As Printer does not support the delivery 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.3.4.2 Subscribed Printer Events 5.3.3.4.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-
accepting-jobs" attributes changed. is-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
for 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-state changes: printer-state changes:
'printer-restarted': OPTIONAL - when the printer is powered 'printer-restarted': OPTIONAL - when the printer is powered
up . up.
'printer-shutdown': OPTIONAL - when the device is being 'printer-shutdown': OPTIONAL - when the device is being
powered down . powered down.
'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-
operator" or any "configuration" Printer attribute has changed. A from-operator" or any "configuration" Printer attribute has
"configuration" Printer attribute is an attribute which can change changed. A "configuration" Printer attribute is an attribute
value because of some human interaction either direct or indirect, which can change value because of some human interaction either
and which is not covered by one of the other Events in this direct or indirect, and which is not covered by one of the other
section. Examples of "configuration" Printer attributes are any Events in this section. Examples of "configuration" Printer
of the Job Template attributes, such as "xxx-supported", "xxx- attributes are any of the Job Template attributes, such as "xxx-
ready" and "xxx-default". The client has to perform a Get- supported", "xxx-ready" and "xxx-default". The client has to
Printer-Attributes to find out the new values of these changed perform a Get-Printer-Attributes to find out the new values of
attributes. This Event is useful for GUI clients and drivers to these changed attributes. This Event is useful for GUI clients
update the available printer capabilities to the user. 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 changed' and 'printer-finishings-changed'. A client can listen
for 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.
'printer-finishings-changed': OPTIONAL - when the finisher on 'printer-finishings-changed': OPTIONAL - when the finisher on
a printer has been changed, i.e., the "finishings-ready" a printer has been changed, i.e., the "finishings-ready"
attribute has changed. This Event includes two cases: a attribute has changed. This Event includes two cases: a
finisher that goes empty and a finisher that is refilled finisher that goes empty and a finisher that is refilled
(even if it is not full). The client must check the (even if it is not full). The client must check the
"finishings-ready" Printer attribute separately to find out "finishings-ready" Printer attribute separately to find out
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.3.4.3 Subscribed Job Events 5.3.3.4.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 delivers this Event to any other state. Specifically, the Printer delivers 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
any job operation that creates a Job object from an job operation that creates a Job object from an existing Job
existing Job object. The Printer populates the job's object. The Printer populates the job's "time-at-creation"
"time-at-creation" attribute value (see [RFC2911] section attribute value (see [RFC2911] section 4.3.14.1). The Printer
4.3.14.1). The Printer puts the job in the 'pending', puts the job in the 'pending', 'pending-held' or 'processing'
'pending-held' or 'processing' states. 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-
at-completed" (if supported) attributes are set (see completed" (if supported) attributes are set (see [RFC2911]
[RFC2911] section 4.3.14). When a Job completes, a section 4.3.14). When a Job completes, a Notification
Notification Recipient MAY query the Job using the Get-Job- Recipient MAY query the Job using the Get-Job-Attributes
Attributes operation. To allow such a query, the Printer operation. To allow such a query, the Printer retains the Job
retains the Job in the Job Retention and/or the Job History in the Job Retention and/or the Job History phases (see
phases (see [RFC2911] section 4.3.7.1) for a suitable [RFC2911] section 4.3.7.1) for a suitable amount of time that
amount of time that depends on implementation and the depends on implementation and the Delivery Methods supported.
Delivery Methods supported. The Printer also delivers this The Printer also delivers this Event when a Job is removed with
Event when a Job is removed with the Purge-Job operation the Purge-Job operation (see [RFC2911] section 3.2.9). In this
(see [RFC2911] section 3.2.9). In this case, the Event case, the Event Notification MUST report the 'job-state' as
Notification MUST report the 'job-state' as 'canceled' and 'canceled' and the Job object is no longer present for query.
the Job object is no longer present for query.
'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. The client template attributes and the "job-name" attribute. The client
performs a Get-Job-Attributes to find out the new values of the performs a Get-Job-Attributes to find out the new values of the
changed attributes. This Event is useful for GUI clients and 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 [RFC3381] specification for additional sheet. See the separate [RFC3381] specification for additional
attributes that a Printer MAY deliver in an Event Notification attributes that a Printer MAY deliver in an Event Notification
caused by this Event. The "notify-time-interval" attribute caused by this Event. The "notify-time-interval" attribute
affects this Event by causing the Printer NOT to deliver an Event affects this Event by causing the Printer NOT to deliver an Event
Notification every time a 'job-progress' Events occurs. See Notification every time a 'job-progress' Events occurs. See
section 5.3.9 for full details. section 5.3.9 for full details.
5.3.3.5 Rules for Matching of Subscribed Events 5.3.3.5. 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.3.5.1 Rules for Matching of Printer Events 5.3.3.5.1. Rules for Matching of Printer Events
Given that the Printer causes Printer Event E to occur, for each Per- Given that the Printer causes Printer Event E to occur, for each
Job or Per-Printer Subscription S in the Printer, if E equals a value Per-Job or Per-Printer Subscription S in the Printer, if E equals a
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 delivers an Event Notification to the 'stopped' state, the Printer delivers an Event Notification to
the Notification Recipients of Subscription Objects A, B, and C the Notification Recipients of Subscription Objects A, B, and C
because this is a Printer Event. Note if Job 1 has already because this is a Printer Event. Note if Job 1 has already
completed, the Printer would not deliver an Event Notification for completed, the Printer would not deliver an Event Notification for
its Subscription Object, even if Job 1 is retained in the Job its Subscription Object, even if Job 1 is retained in the Job
Retention and/or the Job History phases (see [RFC2911] section Retention and/or the Job History phases (see [RFC2911] section
4.3.7.1). 4.3.7.1).
5.3.3.5.2 Rules for Matching of Job Events 5.3.3.5.2. Rules for Matching of Job Events
Given that Job J causes Job Event E to occur: Given 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
a value of this attribute in S or E is a sub-value of a value of 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
equals a value of this attribute in S or E is a sub-value of a a value of this attribute in S or E is a sub-value of a value of
value of this attribute in S, the Printer MUST generate an Event this attribute in S, the Printer MUST generate an Event
Notification. Notification.
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
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
value of this attribute in, the Printer MUST NOT generate an value of this attribute in, the Printer MUST NOT generate an Event
Event Notification from S. 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 Object D is listening for the Job Event 'job-state-changed'. When
Job 1 completes, the Printer delivers an Event Notification to the Job 1 completes, the Printer delivers 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 delivers an Event Notification to the Notification The Printer also delivers 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 deliver an Event Notification is listening for. The Printer does not deliver an Event Notification
to the Notification Recipients of Subscription Object C because it is to the Notification Recipients of Subscription Object C because it is
a Per-Job Subscription Object associated with some Job other than the a Per-Job Subscription Object associated with some Job other than the
Job generating the Event. Job generating the Event.
5.3.3.5.3 Special Cases for Matching Rules 5.3.3.5.3. Special Cases for Matching Rules
This section contains two rules for the special case where a single This section contains two rules for the special case where a single
Event produces multiple Event Notifications destined for the same Event produces multiple Event Notifications destined for the same
Notification Recipient. These two rules clarify whether a Printer Notification Recipient. These two rules clarify whether a Printer
should send multiple Event Notifications or consolidate them into a should send multiple Event Notifications or consolidate them into a
single Event Notification. single Event Notification.
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 deliver two identical Event Objects and the Printer would deliver two identical Event
Notifications (except for the "notify-subscription-id" attribute) to Notifications (except for the "notify-subscription-id" attribute) to
the same Notification Recipient using the same Delivery Method, the the same Notification Recipient using the same Delivery Method, the
Printer MUST deliver both Event Notifications. That is, the Printer Printer MUST deliver both Event Notifications. That is, the Printer
MUST NOT try to consolidate seemingly identical Event Notifications MUST NOT try to consolidate seemingly identical Event Notifications
that occur in separate Subscription objects. Incidentally, the that occur in separate Subscription objects. Incidentally, the
Printer MUST NOT reject Subscription Creation Operations that would Printer MUST NOT reject Subscription Creation Operations that would
create this scenario. create this scenario.
Consider the example: At the time a Job completes, there are two Per- Consider the example: At the time a Job completes, there are two
Printer Subscription Objects A and B with the same Notification Per-Printer Subscription Objects A and B with the same Notification
Recipient R. Subscription Object A has the Subscribed Job Event Recipient R. Subscription Object A has the Subscribed Job Event
'job-state-changed'. Subscription Object B has the Subscribed Job 'job-state-changed'. Subscription Object B has the Subscribed Job
Event 'job-completed'. Both Subscription Objects match the Event Event 'job-completed'. Both Subscription Objects match the Event
'job-completed'. The Printer delivers two Event Notifications to the 'job-completed'. The Printer delivers two Event Notifications to the
Notification Recipient R. One with the value of 'job-state-changed' Notification Recipient R. One with the value of 'job-state-changed'
for the "notify-subscribed-event" attribute and the other with the for the "notify-subscribed-event" attribute and the other with the
value of 'job-completed' for the "notify-subscribed-event" value of 'job-completed' for the "notify-subscribed-event"
attribute. attribute.
If an Event matches two Subscribed Events in a single Subscription If an Event matches two Subscribed Events in a single Subscription
object (e.g., a value and its sub-value), a Printer MAY deliver one object (e.g., a value and its sub-value), a Printer MAY deliver one
Event Notification for each matched value in the Subscription Object Event Notification for each matched value in the Subscription Object
or it MAY deliver only a single Event Notification. The rules in or it MAY deliver only a single Event Notification. The rules in
sections 5.3.3.5.1 and 5.3.3.5.2 are purposefully flexible about the sections 5.3.3.5.1 and 5.3.3.5.2 are purposefully flexible about the
number of Event Notifications sent when Event E matches two or more number of Event Notifications sent when Event E matches two or more
values in a Subscription Object. values in a Subscription Object.
Consider the example: At the time a Job completes, a Subscription Consider the example: At the time a Job completes, a Subscription
Object A has two Subscribed Job Events 'job-state-changed' and 'job- Object A has two Subscribed Job Events 'job-state-changed' and 'job-
completed'. Both Subscribed Job Events match the Event 'job- completed'. Both Subscribed Job Events match the Event 'job-
completed'. The Printer delivers either one or two Event completed'. The Printer delivers either one or two Event
Notifications to the Notification Recipient of Subscription Object A, Notifications to the Notification Recipient of Subscription Object A,
depending on implementation. If it delivers two Event Notifications, depending on implementation. If it delivers two Event Notifications,
one has the value of 'job-state-changed' for the "notify-subscribed- one has the value of 'job-state-changed' for the "notify-
event" attribute, and the other has the value of 'job-completed' for subscribed-event" attribute, and the other has the value of 'job-
the "notify-subscribed-event" attribute. If it delivers one Event completed' for the "notify-subscribed-event" attribute. If it
Notification, it has the value of either 'job-state-changed' or 'job- delivers one Event Notification, it has the value of either 'job-
completed' for the "notify-subscribed-event" attribute, depending on state-changed' or 'job-completed' for the "notify-subscribed-event"
implementation. The algorithm for choosing such a value is attribute, depending on implementation. The algorithm for choosing
implementation dependent. such a value is implementation dependent.
5.3.4 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
delivers a Machine Consumable Event Notification, it includes a fixed delivers 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 31, line 25 skipping to change at page 29, line 38
Notification. It MUST NOT contain any of the attributes in Section Notification. It MUST NOT contain any of the attributes in Section
9.1 that a Printer automatically puts in an Event Notification; it 9.1 that a Printer automatically puts in an Event Notification; it
would be redundant. If a client supplies an attribute in Section would be redundant. If a client supplies an attribute in Section
9.1, the Printer MUST treat it as an unsupported attribute value of 9.1, the Printer MUST treat it as an unsupported attribute value of
the "notify-attributes" attribute. the "notify-attributes" attribute.
The following rules apply to each keyword value N of the "notify- The following rules apply to each keyword value N of the "notify-
attributes" attribute: If the value N names: attributes" attribute: If the value N names:
a) a Subscription attribute, the Printer MUST use the attribute N in a) a Subscription attribute, the Printer MUST use the attribute N in
the Subscription Object that is being used to generate the Event the Subscription Object that is being used to generate the Event
Notification. Notification.
b) a Job attribute and the Printer is generating an Event b) a Job attribute and the Printer is generating an Event
Notification from a Per-Job Subscription Object S, the Printer Notification from a Per-Job Subscription Object S, the Printer
MUST use the attribute N in the Job object associated with S. MUST use the attribute N in the Job object associated with S.
c) a Job attribute and the Printer is generating an Event c) a Job attribute and the Printer is generating an Event
Notification from a Per-Printer Subscription Object and the Event Notification from a Per-Printer Subscription Object and the Event
is: is:
. a Job Event, the Printer MUST use the attribute N in the Job - a Job Event, the Printer MUST use the attribute N in the Job
object that caused the Event. object that caused the Event.
. a Printer Event, the Printer MUST use the attribute N in the - a Printer Event, the Printer MUST use the attribute N in the
active Job. active Job.
If a Printer supports this attribute and a Subscription Object If a Printer supports this attribute and a Subscription Object
contains this attribute and the Delivery Method generates a Machine contains this attribute and the Delivery Method generates a Machine
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.1 notify-attributes-supported (1setOf type2 keyword) 5.3.4.1. notify-attributes-supported (1setOf type2 keyword)
See sections 5.1 and 5.2 for the behavior of "xxx-supported" See sections 5.1 and 5.2 for the behavior of "xxx-supported"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.5 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 ultimate
ultimate recipient of the Event Notification recipient of the Event Notification
- the id for a Notification Recipient that had previously - the id for a Notification Recipient that had previously registered
registered with an Instant Messaging Service with an Instant Messaging Service
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 the Operation. If the client does not supply this attribute in the
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.6 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 33, line 14 skipping to change at page 31, line 32
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.7 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
skipping to change at page 33, line 39 skipping to change at page 32, line 9
section 3.1.4). If the value of the "attributes-natural-language" section 3.1.4). If the value of the "attributes-natural-language"
attribute is unsupported, the Printer MUST populate this attribute in attribute is unsupported, the Printer MUST populate this attribute in
the Subscription Object with the value of the Printer's "natural- the Subscription Object with the value of the Printer's "natural-
language-configured" attribute (see [RFC2911] section 4.4.19). There language-configured" attribute (see [RFC2911] section 4.4.19). There
is no "notify-natural-language-default" Printer attribute. is no "notify-natural-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 (see [RFC2911] section 4.4.20). naturalLanguage)" Printer attribute (see [RFC2911] section 4.4.20).
5.3.8 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
skipping to change at page 34, line 48 skipping to change at page 33, line 18
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 the than MAX so that there is virtually no chance of an overflow when the
Printer adds it to the Printer's "printer-up-time" attribute value Printer adds it to the Printer's "printer-up-time" attribute value
(see [RFC2911] section 4.4.29) to produce the "notify-lease- (see [RFC2911] section 4.4.29) to produce the "notify-lease-
expiration-time" Subscription Description attribute value (see expiration-time" Subscription Description attribute value (see
section 5.4.3). section 5.4.3).
5.3.8.1 notify-lease-duration-default (integer(0:67108863)) 5.3.8.1. notify-lease-duration-default (integer(0:67108863))
See sections 5.1 and 5.2 for the behavior of "xxx-default" See sections 5.1 and 5.2 for the behavior of "xxx-default"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.8.2 notify-lease-duration-supported (1setOf (integer(0: 67108863) | 5.3.8.2. notify-lease-duration-supported (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) rangeOfInteger(0:67108863)))
See sections 5.1 and 5.2 for the behavior of "xxx-supported" See sections 5.1 and 5.2 for the behavior of "xxx-supported"
Subscription Template Printer attributes. Subscription Template Printer attributes.
5.3.9 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
supports the 'job-progress' Event. supports the 'job-progress' Event.
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 the Operation. If the client does not supply this attribute in the
Subscription Creation Operation, the Subscription Object either (1) Subscription Creation Operation, the Subscription Object either (1)
MAY contain the "notify-time-interval" attribute with a '0' value or MAY contain the "notify-time-interval" attribute with a '0' value or
(2) NEED NOT contain this attribute at all. There is no "notify- (2) NEED NOT contain this attribute at all. There is no "notify-
time-interval-default" Printer attribute. time-interval-default" Printer attribute.
There is no "notify-time-interval-supported" Printer attribute. There is no "notify-time-interval-supported" Printer attribute.
If the 'job-progress' Event occurs and a Subscription Object contains If the 'job-progress' Event occurs and a Subscription Object contains
the 'job-progress' Event as a value of the 'notify-events' attribute, the 'job-progress' Event as a value of the 'notify-events' attribute,
there are two cases to consider: there are two cases to consider:
1. This attribute is not present on the Subscription Object or has 1. This attribute is not present on the Subscription Object or has
the value of 0. The Printer MUST generate and deliver an Event the value of 0. The Printer MUST generate and deliver an Event
Notification (as is the case with other Events). Notification (as is the case with other Events).
2. This attribute is present with a nonzero value of N: 2. This attribute is present with a nonzero value of N:
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
progress' Event for the associated Subscription Object within 'job-progress' Event for the associated Subscription Object
the past N seconds, the Printer MUST deliver an Event within the past N seconds, the Printer MUST deliver an Event
Notification for the Event that just occurred. Note when the Notification for the Event that just occurred. Note when the
Printer completes the first page of a Job, this rule implies Printer completes the first page of a Job, this rule implies
that the Printer delivers an Event Notification for a Per-Job that the Printer delivers an Event Notification for a Per-Job
Subscription Object. Subscription Object.
b) Otherwise, the Printer MUST NOT generate or deliver an Event b) Otherwise, the Printer MUST NOT generate or deliver an Event
Notification for the associated Subscription Object. The Notification for the associated Subscription Object. The
Printer MUST NOT increase the value of the "notify-sequence- Printer MUST NOT increase the value of the "notify-sequence-
number" Subscription Object attribute (i.e., the sequence of number" Subscription Object attribute (i.e., the sequence of
values of the "notify-sequence-number" attribute counts the values of the "notify-sequence-number" attribute counts the
Event Notifications that the Printer sent and not the Events Event Notifications that the Printer sent and not the Events
that do 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
delivers Event Notifications requests. delivers 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. Template Attributes Group of a Subscription Creation Operation.
There are no corresponding default or supported attributes. There are no corresponding default or supported attributes.
Table 2 - Subscription Description Attributes Table 2 - Subscription Description Attributes
Subscription Object attributes:
notify-subscription-id (integer(1:MAX)) Subscription Object attributes:
notify-sequence-number (integer(0:MAX))
notify-lease-expiration-time (integer(0:MAX))
notify-printer-up-time (integer(1:MAX))
notify-printer-uri (uri)
notify-job-id (integer(1:MAX))
notify-subscriber-user-name (name(MAX))
5.4.1 notify-subscription-id (integer (1:MAX)) notify-subscription-id (integer(1:MAX))
notify-sequence-number (integer(0:MAX))
notify-lease-expiration-time (integer(0:MAX))
notify-printer-up-time (integer(1:MAX))
notify-printer-uri (uri)
notify-job-id (integer(1:MAX))
notify-subscriber-user-name (name(MAX))
5.4.1. notify-subscription-id (integer (1:MAX))
This attribute identifies a Subscription Object instance with a This attribute identifies a Subscription Object instance with a
number that is unique within the context of the Printer. The Printer number that is unique within the context of the Printer. The Printer
generates this value at the time it creates the Subscription Object. generates this value at the time it creates the Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
The Printer MAY assign the value of this attribute sequentially as it The Printer MAY assign the value of this attribute sequentially as it
creates Subscription Objects. However, if there is no security on creates Subscription Objects. However, if there is no security on
Subscription objects, sequential assignment exposes the system to a Subscription objects, sequential assignment exposes the system to a
skipping to change at page 37, line 16 skipping to change at page 35, line 39
The Printer SHOULD avoid re-using recent values of this attribute The Printer SHOULD avoid re-using recent values of this attribute
during continuous operation of the Printer as well as across power during continuous operation of the Printer as well as across power
cycles. Then a Subscribing Client is unlikely to find that a stale cycles. Then a Subscribing Client is unlikely to find that a stale
reference accesses a new Subscription Object. reference accesses a new Subscription Object.
The 0 value is not permitted in order to allow for compatibility with The 0 value is not permitted in order to allow for compatibility with
"job-id" and with MIB table index values, which are recommended not "job-id" and with MIB table index values, which are recommended not
to be 0. to be 0.
5.4.2 notify-sequence-number (integer (0:MAX)) 5.4.2. notify-sequence-number (integer (0:MAX))
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 deliver an Event Notification Printer has generated and attempted to deliver an Event Notification
for this Subscription object. When an Event Notification contains for this Subscription object. When an Event Notification contains
this attribute, the Notification Recipient can determine whether it this attribute, the Notification Recipient can determine whether it
missed some Event Notifications (i.e., numbers skipped) or received missed 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.
skipping to change at page 37, line 46 skipping to change at page 36, line 20
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
delivering an Event Notification a certain number of times with the delivering an Event Notification a certain number of times with the
same sequence number when the Notification Recipient fails to return same sequence number when the Notification Recipient fails to return
a response. a response.
If a Subscription Object lasts long enough to reach the value of MAX, If a Subscription Object lasts long enough to reach the value of MAX,
its next value MUST be 0, i.e., it wraps. its next value MUST be 0, i.e., it wraps.
5.4.3 notify-lease-expiration-time (integer(0:MAX)) 5.4.3. notify-lease-expiration-time (integer(0:MAX))
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.3.4.3 about retention of the Job 'job-completed' event in section 5.3.3.4.3 about retention of the Job
object after completion so that a Notification Recipient can query object after completion so that a Notification Recipient can query
skipping to change at page 38, line 39 skipping to change at page 37, line 10
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.
5.4.4 notify-printer-up-time (integer(1:MAX)) 5.4.4. notify-printer-up-time (integer(1:MAX))
This attribute is an alias for the Printer's "printer-up-time" This attribute is an alias for the Printer's "printer-up-time"
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-
time" attribute, rather than the time at which the Subscription up-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- attribute MUST NOT be present. When the Printer creates a Per-
Printer 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" request. If the value of the "notify-lease-expiration-time"
attribute is not 0 (i.e., no expiration time), then the difference attribute is not 0 (i.e., no expiration time), then the difference
between the "notify-lease-expiration-time" attribute and the "notify- between the "notify-lease-expiration-time" attribute and the
printer-up-time" is the remaining number of seconds on the lease from "notify-printer-up-time" is the remaining number of seconds on the
the current time. lease from 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
attribute in the request. From the Printer URI, the client can, for attribute in the request. From the Printer URI, the client can, for
example, determine what security scheme was used. example, determine what security scheme was used.
5.4.6 notify-job-id (integer(1:MAX)) 5.4.6. notify-job-id (integer(1:MAX))
This attribute specifies whether the containing Subscription Object This attribute specifies whether the containing Subscription Object
is a Per-Job or Per-Printer Subscription Object, and for Per-Job is a Per-Job or Per-Printer Subscription Object, and for Per-Job
Subscription Objects, it specifies the associated Job. Subscription Objects, it specifies the associated Job.
A Printer MUST support this attribute. A Printer MUST support this attribute.
If this attribute is not present, the Subscription Object MUST be a If this attribute is not present, the Subscription Object MUST be a
Per-Printer Subscription. If this attribute is present, the Per-Printer Subscription. If this attribute is present, the
Subscription Object MUST be a Per-Job Subscription Object and this Subscription Object MUST be a Per-Job Subscription Object and this
skipping to change at page 40, line 7 skipping to change at page 38, line 23
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.3.4.3 about retention of the Job object after completion so that 5.3.3.4.3 about retention of the Job object after completion so that
a Notification Recipient can query the Job object after receiving the 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 MUST populates this attribute with the most authenticated The Printer MUST populates this attribute with the most authenticated
printable name that it can obtain from the authentication service printable name that it can obtain from the authentication service
over which the Subscription Creation Operation was received. The over which the Subscription Creation Operation was received. The
Printer uses the same mechanism for determining the value of this Printer uses the same mechanism for determining the value of this
attribute as it does for a Job's "job-originating-user-name" (see attribute as it does for a Job's "job-originating-user-name" (see
[RFC2911] section 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
attributes, indicates the Printer support required for conformance, attributes, indicates the Printer support required for conformance,
and whether or not the attribute is READ-ONLY (see section 3.1): and whether or not the attribute is READ-ONLY (see section 3.1):
Table 3 - Printer Description Attributes Associated with Notification Table 3 - Printer Description Attributes Associated with Notification
Printer object attributes: REQUIRED READ-ONLY Printer object attributes: REQUIRED READ-ONLY
printer-state-change-time (integer(1:MAX)) No Yes printer-state-change-time (integer(1:MAX)) No Yes
printer-state-change-date-time (dateTime) No Yes printer-state-change-date-time (dateTime) No Yes
6.1 printer-state-change-time (integer(1:MAX)) 6.1. printer-state-change-time (integer(1:MAX))
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 populate this attribute with the value On power-up, the Printer MUST populate this attribute with the value
of its "printer-up-time" attribute, so that it always has a value. of its "printer-up-time" attribute, so that it always has a value.
Whenever the 'printer-state-changed' Printer Event occurs, the Whenever the 'printer-state-changed' Printer Event occurs, the
Printer MUST update this attribute with 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 populate this attribute with the value On power-up, the Printer MUST populate this attribute with the value
of its "printer-current-time" attribute, so that it always has a of its "printer-current-time" attribute, so that it always 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 update this attribute with 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
new operations defined in this document: new operations defined in this document:
Table 4 - Operation-id assignments Table 4 - Operation-id assignments
Value Operation Name
0x0016 Create-Printer-Subscriptions Value Operation Name
0x0017 Create-Job-Subscriptions
0x0018 Get-Subscription-Attributes
0x0019 Get-Subscriptions
0x001A Renew-Subscription
0x001B Cancel-Subscription
8 Attributes Only in Event Notifications 0x0016 Create-Printer-Subscriptions
0x0017 Create-Job-Subscriptions
0x0018 Get-Subscription-Attributes
0x0019 Get-Subscriptions
0x001A Renew-Subscription
0x001B Cancel-Subscription
8. Attributes Only in Event Notifications
This section contains those attributes that exist only in Event This section contains those attributes that exist only in Event
Notifications and do not exist in any objects. Notifications and do not exist in any objects.
8.1 notify-subscribed-event (type2 keyword) 8.1. notify-subscribed-event (type2 keyword)
This attribute indicates the Subscribed Event that caused the Printer This attribute indicates the Subscribed Event that caused the Printer
to deliver this Event Notification. This attribute exists only in to deliver this Event Notification. This attribute exists only in
Event Notifications. Event Notifications.
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 deliver this Event Notification. Event that caused the Printer to deliver this Event Notification.
This Subscribed Event value may be identical to the Event or the This Subscribed Event value may be identical to the Event or the
skipping to change at page 42, line 43 skipping to change at page 41, line 5
changed' event) would cause the Printer to deliver an Event changed' event) would cause the Printer to deliver an Event
Notification for either the 'job-completed' or 'job-state-changed' Notification for either the 'job-completed' or 'job-state-changed'
Subscribed Events and to deliver the 'job-completed' or 'job-state- Subscribed Events and to deliver the 'job-completed' or 'job-state-
changed' value for this attribute, respectively. See section 5.3.3.5 changed' value for this attribute, respectively. See section 5.3.3.5
for the "matching" rules of Subscribed Events and for additional for the "matching" rules of Subscribed Events and for additional
examples. 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
Object's "notify-charset" attribute. Object's "notify-charset" attribute.
Note: this attribute contains a text message only and must not Note: this attribute contains a text message only and must not
contain any encoding information, such as 'text/plain'. The contain any encoding information, such as 'text/plain'. The
'text/plain' encoding is implicit and thus the charset must be 'text/plain' encoding is implicit and thus the charset must be
specified by an alternate mechanism, namely the "notify-charset" specified by an alternate mechanism, namely the "notify-charset"
attribute. attribute.
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
delivers when an Event occurs. delivers 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.3.5 for details on "matching". For each matched Subscription 5.3.3.5 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
skipping to change at page 44, line 12 skipping to change at page 42, line 19
separate Event Notifications may differ from the order sent by the separate Event Notifications may differ from the order sent by the
Printer (e.g., email). Printer (e.g., email).
Example: Consider two Per-Printer Subscription Objects: SO1 and SO2. Example: Consider two Per-Printer Subscription Objects: SO1 and SO2.
SO1 requests 'job-state-changed' events and SO2 requests 'printer- SO1 requests 'job-state-changed' events and SO2 requests 'printer-
state-changed' events. The number in parens is the time stamp. The state-changed' events. The number in parens is the time stamp. The
following Event Notification sequences are the only ones that conform following Event Notification sequences are the only ones that conform
to the ordering requirements for the Printer to deliver the Event to the ordering requirements for the Printer to deliver the Event
Notifications: Notifications:
(a) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO1: (a) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO1:
'job-completed' (1009), SO2: 'printer-stopped' (1005) 'job-completed' (1009), SO2: 'printer-stopped' (1005)
(b) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO2: (b) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO2:
'printer-stopped' (1005), SO1: 'job-completed' (1009) 'printer-stopped' (1005), SO1: 'job-completed' (1009)
(c) SO1: 'job-created' (1000), SO2: 'printer-stopped' (1005), SO1: (c) SO1: 'job-created' (1000), SO2: 'printer-stopped' (1005), SO1:
'job-stopped' (1005), SO1: 'job-completed' (1009) 'job-stopped' (1005), SO1: 'job-completed' (1009)
(d) SO2: 'printer-stopped (1005), SO1: 'job-created' (1000), SO1: (d) SO2: 'printer-stopped (1005), SO1: 'job-created' (1000), SO1:
'job-stopped' (1005), SO1: 'job-completed' (1009) 'job-stopped' (1005), SO1: 'job-completed' (1009)
Examples (b) and (c) are interleaved; examples (a) and (d) are not Examples (b) and (c) are interleaved; examples (a) and (d) are not
interleaved and are not appropriate for some Delivery Methods. interleaved and are not appropriate for some Delivery Methods.
If two different Events occur simultaneously, or nearly so (e.g., If two different Events occur simultaneously, or nearly so (e.g.,
"printer-up-time" has the same value for both), the Printer MUST "printer-up-time" has the same value for both), the Printer MUST
create a separate Event Notification for each Event, even if the create a separate Event Notification for each Event, even if the
associated Subscription Object is the same for both Events. However, associated Subscription Object is the same for both Events. However,
the Printer MAY combine these distinct Event Notifications into a the Printer MAY combine these distinct Event Notifications into a
single Compound Event Notification if the Delivery Method supports single Compound Event Notification if the Delivery Method supports
skipping to change at page 45, line 5 skipping to change at page 43, line 11
several Events occur in quick succession each matching a different several Events occur in quick succession each matching a different
Subscribed Event in the Subscription Object, the Printer MUST NOT Subscribed Event in the Subscription Object, the Printer MUST NOT
generate a single Event Notification from several of these Events, generate a single Event Notification from several of these Events,
but MAY combine distinct Event Notifications into a single Compound but MAY combine distinct Event Notifications into a single Compound
Event Notification if the Delivery Method supports Compound Event Event Notification if the Delivery Method supports Compound Event
Notifications. Notifications.
After the Printer has created the Event Notification, the Printer After the Printer has created the Event Notification, the Printer
delivers it via either a: delivers it via either a:
Push Delivery Method: The Printer delivers the Event Push Delivery Method: The Printer delivers the Event Notification
Notification shortly after an Event occurs. For some Push shortly after an Event occurs. For some Push Delivery Methods,
Delivery Methods, the Notification Recipient MUST deliver a the Notification Recipient MUST deliver a response; for others it
response; for others it MUST NOT deliver a response. MUST NOT deliver a response.
Pull Delivery Method: The Printer saves Event Notifications for Pull Delivery Method: The Printer saves Event Notifications for
some Event Life and expects the Notification Recipient to some Event Life and expects the Notification Recipient to request
request Event Notifications. The Printer returns the Event Event Notifications. The Printer returns the Event Notifications
Notifications in a response to such a request. in a response to such a request.
If an error that meets the following conditions occurs, the Printer If an error that meets the following conditions occurs, the Printer
MUST cancel the Subscription Object. MUST cancel the Subscription Object.
a) the error occurs during the delivering of an Event Notification a) the error occurs during the delivering of an Event Notification
generated from Subscription Object S AND generated from Subscription Object S AND
b) the error would continue to occur every time the Printer delivers b) the error would continue to occur every time the Printer delivers
an Event Notification generated from Subscription Object S in the an Event Notification generated from Subscription Object S in the
future. future.
For example, if the address of the "notify-recipient-uri" of For example, if the address of the "notify-recipient-uri" of
Subscription Object A references a non-existent target and the Subscription Object A references a non-existent target and the
Printer determines this fact, it MUST delete Subscription Object A. Printer determines this fact, it MUST delete Subscription Object A.
The next two sections describe the values that a Printer delivers in The next two sections describe the values that a Printer delivers in
the content of Machine Consumable and Human Consumable Event the content of Machine Consumable and Human Consumable Event
Notifications, respectively. Notifications, respectively.
The tables in the sub-sections of this section contain the following The tables in the sub-sections of this section contain the following
columns: columns:
a) Source Value: the name of the attribute that supplies the value a) Source Value: the name of the attribute that supplies the value
for the Event Notification. Asterisks in this field refer to a for the Event Notification. Asterisks in this field refer to a
note below the table. note below the table.
b) Delivers: if the Printer supports the value (column 1) on the b) Delivers: if the Printer supports the value (column 1) on the
Source Object (column 3) the Delivery Method MUST specify: Source Object (column 3) the Delivery Method MUST specify:
MUST: that the Printer MUST deliver the value. MUST: that the Printer MUST deliver the value.
SHOULD: either that the Printer MUST deliver the value or that SHOULD: either that the Printer MUST deliver the value or that
the value is incompatible with the Delivery Method. the value is incompatible with the Delivery Method.
MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT,
or NEED NOT deliver the value. The Delivery Method specifies or NEED NOT deliver the value. The Delivery Method specifies
the level of conformance for the Printer. the level of conformance for the Printer.
c) Source Object: the object from which the source value comes. If c) Source Object: the object from which the source value comes. If
the object is "Event Notification", the Printer fabricates the the object is "Event Notification", the Printer fabricates the
value when it delivers the Event Notification. See section 8. value when it delivers the Event Notification. See section 8.
9.1 Content of Machine Consumable Event Notifications 9.1. Content of Machine Consumable Event Notifications
This section defines the attributes that a Delivery Method MUST This section defines the attributes that a Delivery Method MUST
mention in a Delivery Method Document when specifying the Machine mention in a Delivery Method Document when specifying the Machine
Consumable Event Notification's contents. Consumable Event Notification's contents.
This document does not define the order of attributes in Event This document does not define the order of attributes in Event
Notifications. However, Delivery Method Documents MAY define the Notifications. However, Delivery Method Documents MAY define the
order of some or all of the attributes. order of some or all of the attributes.
A Delivery Method Document MUST specify additional attributes (if A Delivery Method Document MUST specify additional attributes (if
skipping to change at page 46, line 32 skipping to change at page 44, line 39
Notification Recipients MUST be able to accept Event Notifications Notification Recipients MUST be able to accept Event Notifications
containing attributes they do not recognize. What a Notification containing attributes they do not recognize. What a Notification
Recipient does with an unrecognized attribute is implementation- Recipient does with an unrecognized attribute is implementation-
dependent. Notification Recipients MAY attempt to display dependent. Notification Recipients MAY attempt to display
unrecognized attributes anyway or MAY ignore them. unrecognized attributes anyway or MAY ignore them.
The next three sections define the attributes in Event Notification The next three sections define the attributes in Event Notification
Contents that are: Contents that are:
1. for all Events 1. for all Events
2. for Job Events only 2. for Job Events only
3. for Printer Events only 3. for Printer Events only
9.1.1 Event Notification Content Common to All Events 9.1.1. Event Notification Content Common to All Events
This section lists the attributes that a Delivery Method Document This section lists the attributes that a Delivery Method Document
MUST specify for all Events. MUST specify for all Events.
Table 5 lists potential values in each Event Notification. Table 5 lists potential values in each Event Notification.
Table 5 - Attributes in Event Notification Content Table 5 - Attributes in Event Notification Content
Source Value Delivers Source Object Source Value Delivers Source Object
notify-subscription-id (integer(1:MAX)) MUST Subscription notify-subscription-id (integer(1:MAX)) MUST Subscription
notify-printer-uri (uri) MUST Subscription notify-printer-uri (uri) MUST Subscription
notify-subscribed-event (type2 keyword) MUST Event notify-subscribed-event (type2 keyword) MUST Event
Notification Notification
printer-up-time (integer(MIN:MAX)) MUST Printer printer-up-time (integer(MIN:MAX)) MUST Printer
printer-current-time (dateTime) * MUST Printer printer-current-time (dateTime) * MUST Printer
notify-sequence-number (integer (0:MAX)) SHOULD Subscription notify-sequence-number (integer (0:MAX)) SHOULD Subscription
notify-charset (charset) SHOULD Subscription notify-charset (charset) SHOULD Subscription
skipping to change at page 47, line 45 skipping to change at page 45, line 46
*** The last three rows represent additional attributes that a client *** The last three rows represent additional attributes that a client
MAY request via the "notify-attributes" attribute. A Printer MAY MAY request via the "notify-attributes" attribute. A Printer MAY
support the "notify-attributes" attribute. The Delivery Method MUST support the "notify-attributes" attribute. The Delivery Method MUST
say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED
NOT support the "notify-attributes" attribute and specific values of NOT support the "notify-attributes" attribute and specific values of
this attribute. The Delivery Method MAY say that support for the this attribute. The Delivery Method MAY say that support for the
"notify-attributes" is conditioned on support of the attribute by the "notify-attributes" is conditioned on support of the attribute by the
Printer or it MAY say that Printer MUST support the "notify- Printer or it MAY say that Printer MUST support the "notify-
attributes" attribute if the Printer supports the Delivery Method. attributes" attribute if the Printer supports the Delivery Method.
9.1.2 Additional Event Notification Content for Job Events 9.1.2. Additional Event Notification Content for Job Events
This section lists the additional attributes that a Delivery Method This section lists the additional attributes that a Delivery Method
Document MUST specify for Job Events. See Table 6. Document MUST specify for Job Events. See Table 6.
Table 6 - Additional Event Notification Content for Job Events Table 6 - Additional Event Notification Content for Job Events
Source Value Delivers Source Source Value Delivers Source
Object Object
job-id (integer(1:MAX)) MUST Job job-id (integer(1:MAX)) MUST Job
job-state (type1 enum) MUST Job job-state (type1 enum) MUST Job
job-state-reasons (1setOf type2 keyword) MUST Job job-state-reasons (1setOf type2 keyword) MUST Job
job-impressions-completed (integer(0:MAX)) * MUST Job job-impressions-completed (integer(0:MAX)) * MUST Job
* The Printer MUST deliver the "job-impressions-completed" attribute * The Printer MUST deliver the "job-impressions-completed" attribute
in an Event Notification only for the combinations of Events and in an Event Notification only for the combinations of Events and
Subscribed Events shown in Table 7. Subscribed Events shown in Table 7.
Table 7 - Combinations of Events and Subscribed Events for "job- Table 7 - Combinations of Events and Subscribed Events for "job-
impressions-completed" impressions-completed"
Job Event Subscribed Job Event Job Event Subscribed Job Event
'job-progress' 'job-progress' 'job-progress' 'job-progress'
'job-completed' 'job-completed' 'job-completed' 'job-completed'
'job-completed' 'job-state-changed' 'job-completed' 'job-state-changed'
9.1.3 Additional Event Notification Content for Printer Events 9.1.3. Additional Event Notification Content for Printer Events
This section lists the additional attributes that a Delivery Method This section lists the additional attributes that a Delivery Method
Document MUST specify for Printer Events. See Table 8. Document MUST specify for Printer Events. See Table 8.
Table 8 - Additional Event Notification Content for Printer Events Table 8 - Additional Event Notification Content for Printer Events
Source Value Delivers Source Object Source Value Delivers Source Object
printer-state (type1 enum) MUST Printer printer-state (type1 enum) MUST Printer
printer-state-reasons (1setOf type2 MUST Printer printer-state-reasons (1setOf type2 MUST Printer
keyword) keyword)
printer-is-accepting-jobs (boolean) MUST Printer printer-is-accepting-jobs (boolean) MUST Printer
9.2 Content of Human Consumable Event Notification 9.2. Content of Human Consumable Event Notification
This section defines the information that a Delivery Method MUST This section defines the information that a Delivery Method MUST
mention in a Delivery Method Document when specifying the Human mention in a Delivery Method Document when specifying the Human
Consumable Event Notifications contents or the value of the "notify- Consumable Event Notifications contents or the value of the "notify-
text" attribute. text" attribute.
Such a Delivery Method MUST specify the following information and a Such a Delivery Method MUST specify the following information and a
Printer SHOULD deliver it: Printer SHOULD deliver it:
a) the Printer name (see Table 9) a) the Printer name (see Table 9)
b) the time of the Event (see Table 11)
b) the time of the Event (see Table 11) c) for Printer Events only:
c) for Printer Events only:
i) the Event (see Table 10) and/or Printer state information i) the Event (see Table 10) and/or Printer state information (see
(see Table 14) Table 14)
d) for Job Events only:
i) the job identity (see Table 12) d) for Job Events only:
ii) the Event (see Table 10) and/or Job state information (see
Table 13) i) the job identity (see Table 12)
ii) the Event (see Table 10) and/or Job state information (see
Table 13)
The subsections of this section specify the attributes that a Printer The subsections of this section specify the attributes that a Printer
MUST use to obtain this information. MUST use to obtain this information.
A Delivery Method Document MUST specify additional information (if A Delivery Method Document MUST specify additional information (if
any) that a Printer implementation delivers in a Human Consumable any) that a Printer implementation delivers in a Human Consumable
Event Notification or in the "notify-text" attribute. Event Notification or in the "notify-text" attribute.
A client MUST NOT request additional attributes via the "notify- A client MUST NOT request additional attributes via the "notify-
attributes" attribute because this attribute works only for Machine attributes" attribute because this attribute works only for Machine
Consumable Event Notifications. Consumable Event Notifications.
Notification Recipients MUST NOT expect to be able to parse the Human Notification Recipients MUST NOT expect to be able to parse the Human
Consumable Event Notification contents or the value of the "notify- Consumable Event Notification contents or the value of the "notify-
text" attribute. text" attribute.
The next three sections define the attributes in Event Notification The next three sections define the attributes in Event Notification
Contents that are: Contents that are:
a) for all Events a) for all Events
b) for Job Events only b) for Job Events only
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 the preferred one. An implementation SHOULD use the source value
from the earliest row in each table. It MAY use the source value from the earliest row in each table. It MAY use the source value
from another row instead, or it MAY combine the source values from from another row instead, or it MAY combine the source values from
skipping to change at page 50, line 17 skipping to change at page 48, line 20
Table 9 lists the source of the information for the Printer Name. Table 9 lists the source of the information for the Printer Name.
The "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. Recipient is in a place where the Printer name is not meaningful.
For example, an implementation could have the intelligence to deliver For example, an implementation could have the intelligence to deliver
the 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 deliver the value of the "notify-printer-uri" and otherwise deliver the value of the "notify-printer-uri"
attribute. attribute.
Table 9 - Printer Name in Event Notification Content Table 9 - Printer Name in Event Notification Content
Source Value Delivers Source Object Source Value Delivers 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
Table 10 lists the source of the information for the Event name. A Table 10 lists the source of the information for the Event name. A
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 Delivers Source Object Source Value Delivers 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 deliver this value only if it supports Event occurred. A Printer can deliver this value only if it supports
the Printer's "printer-current-time" attribute. If a Printer does the Printer's "printer-current-time" attribute. If a Printer does
not support the "printer-current-time" attribute, it MUST NOT deliver not support the "printer-current-time" attribute, it MUST NOT deliver
the "printer-up-time" value instead, since it is not an allowed the "printer-up-time" value instead, since it is not an allowed
option 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 Delivers Source Object Source Value Delivers 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
Delivery Method MUST specify for Job Events. Delivery Method MUST specify for Job Events.
Table 12 lists the source of the information for the job name. The Table 12 lists the source of the information for the job name. The
"job-name" is likely more meaningful to a user than "job-id". "job-name" is likely more meaningful to a user than "job-id".
Table 12 - Job Name in Event Notification Content Table 12 - Job Name in Event Notification Content
Source Value Delivers Source Object Source Value Delivers Source Object
job-name (name(MAX)) MAY Job job-name (name(MAX)) MAY Job
job-id (integer(1:MAX)) MAY Job job-id (integer(1:MAX)) MAY Job
Table 13 lists the source of the information for the job state. If a Table 13 lists the source of the information for the job state. If a
Printer supports the "job-state-message" and "job-detailed-state- Printer supports the "job-state-message" and "job-detailed-state-
message" attributes, it SHOULD use those attributes for the job state message" attributes, it SHOULD use those attributes for the job state
information, otherwise, it should fabricate such information from the information, otherwise, it should fabricate such information from the
"job-state" and "job-state-reasons". For some Events, a Printer MAY "job-state" and "job-state-reasons". For some Events, a Printer MAY
combine this information with Event information. combine this information with Event information.
Table 13 - Job State in Event Notification Content Table 13 - Job State in Event Notification Content
Source Value Delivers Source Source Value Delivers Source
Object Object
job-state-message (text(MAX)) MAY Job job-state-message (text(MAX)) MAY Job
job-detailed-status-messages (1setOf text(MAX)) MAY Job job-detailed-status-messages (1setOf text(MAX)) MAY Job
job-state (type1 enum) MAY Job job-state (type1 enum) MAY Job
job-state-reasons (1setOf type2 keyword) MAY Job job-state-reasons (1setOf type2 keyword) MAY Job
9.2.3 Additional Event Notification Content for Printer Events 9.2.3. Additional Event Notification Content for Printer Events
This section lists the source of the additional information that a This section lists the source of the additional information that a
Delivery Method MUST specify for Printer Events. Delivery Method MUST specify for Printer Events.
Table 14 lists the source of the information for the printer state. Table 14 lists the source of the information for the printer state.
If a Printer supports the "printer-state-message", it SHOULD use that If a Printer supports the "printer-state-message", it SHOULD use that
attribute for the job state information, otherwise it SHOULD attribute for the job state information, otherwise it SHOULD
fabricate such information from the "printer-state" and "printer- fabricate such information from the "printer-state" and "printer-
state-reasons". For some Events, a Printer MAY combine this state-reasons". For some Events, a Printer MAY combine this
information with Event information. information with Event information.
Table 14 - Printer State in Event Notification Content Table 14 - Printer State in Event Notification Content
Source Value Delivers Source Source Value Delivers Source
Object Object
printer-state-message (text(MAX)) MAY Printer printer-state-message (text(MAX)) MAY Printer
printer-state (type1 enum) MAY Printer printer-state (type1 enum) MAY Printer
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 specification REQUIRES standardized, as well as proprietary. This specification REQUIRES
that the 'ippget' Pull Delivery Method [ipp-get-method] be supported. that the 'ippget' Pull Delivery Method [RFC3996] be supported.
Conforming implementations MAY support additional Push or Pull Conforming implementations MAY support additional Push or Pull
Delivery Methods as well. This document does not define any of these Delivery Methods as well. This document does not define any of these
delivery mechanisms. Each Delivery Method MUST be defined in a delivery mechanisms. Each Delivery Method MUST be defined in a
Delivery Method Document that is separate from this document. New Delivery Method Document that is separate from this document. New
Delivery Methods will be created as needed using an extension to the Delivery Methods will be created as needed using an extension to the
registration procedures defined in [RFC2911]. Such documents are registration procedures defined in [RFC2911]. Such documents are
registered with IANA (see section 23.7.3). registered with IANA (see section 23.7.3).
The following sorts of Delivery Methods are possible: 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 delivers Event Notifications to the Notification - The Printer delivers Event Notifications to the Notification
Recipient using http as the transport. Recipient using http as the transport.
- The Printer delivers an email message. - The Printer delivers 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
table in the Delivery Method Document MUST contain answers to table in the Delivery Method Document MUST contain answers to
questions in column 1 for the Delivery Method. Also, the Delivery questions in column 1 for the Delivery Method. Also, the Delivery
Method document MUST contain a reference to this document and call Method document MUST contain a reference to this document and call
that reference [ipp-ntfy] because the table contains an [ipp-ntfy] that reference [RFC3995] because the table contains an [RFC3995]
reference. reference.
If a Printer supports this Delivery Method, the following are its If a Printer supports this Delivery Method, the following are its
characteristics. characteristics.
Table 15 - Information about the Delivery Method Table 15 - Information about the Delivery Method
Document Method Conformance Requirement Delivery Method Document Method Conformance Requirement Delivery Method
Realization Realization
1. What is the URL scheme name for the Push 1. What is the URL scheme name for the Push Delivery Method or the
Delivery Method or the keyword method keyword method name for the Pull Delivery Method?
name for the Pull Delivery Method?
2. Is the Delivery Method REQUIRED,
RECOMMENDED, or OPTIONAL for an IPP
Printer to support?
3. What transport and delivery protocols
does the Printer use to deliver the
Event Notification Content, i.e., what
is the entire network stack?
4. Can several Event Notifications be
combined into a Compound Event
Notification?
5. Is the Delivery Method initiated by the
Notification Recipient (pull), or by the
Printer (push)?
6. Is the Event Notification content
Machine Consumable or Human Consumable?
7. What section in this document answers
the following question? For a Machine
Consumable Event Notification, what is
the representation and encoding of
values defined in section 9.1 of [ipp-
ntfy] and the conformance requirements
thereof? For a Human Consumable Event
Notification, what is the representation
and encoding of pieces of information
defined in section 9.2 of [ipp-ntfy] and
the conformance requirements thereof?
8. What are the latency and reliability of
the transport and delivery protocol?
9. What are the security aspects of the
transport and delivery protocol, e.g.,
how it is handled in firewalls?
10. What are the content length
restrictions?
11. What are the additional values or
pieces of information that a Printer
delivers in an Event Notification
content and the conformance requirements
thereof?
Document Method Conformance Requirement Delivery Method 2. Is the Delivery Method REQUIRED, RECOMMENDED, or OPTIONAL for an
Realization IPP Printer to support?
12. What are the additional Subscription 3. What transport and delivery protocols does the Printer use to
Template and/or Subscription Description deliver the Event Notification Content, i.e., what is the entire
attributes and the conformance network stack?
requirements thereof?
13. What are the additional Printer
Description attributes and the
conformance requirements thereof?
11 Operations for Notification 4. Can several Event Notifications be combined into a Compound Event
Notification?
5. Is the Delivery Method initiated by the Notification Recipient
(pull), or by the Printer (push)?
6. Is the Event Notification content Machine Consumable or Human
Consumable?
7. What section in this document answers the following question?
For a Machine Consumable Event Notification, what is the
representation and encoding of values defined in section 9.1 of
[RFC3995] and the conformance requirements thereof? For a Human
Consumable Event Notification, what is the representation and
encoding of pieces of information defined in section 9.2 of
[RFC3995] and the conformance requirements thereof?
8. What are the latency and reliability of the transport and
delivery protocol?
9. What are the security aspects of the transport and delivery
protocol, e.g., how it is handled in firewalls?
10. What are the content length restrictions?
11. What are the additional values or pieces of information that a
Printer delivers in an Event Notification content and the
conformance requirements thereof?
12. What are the additional Subscription Template and/or
Subscription Description attributes and the conformance
requirements thereof?
13. What are the additional Printer Description attributes and the
conformance requirements thereof?
11. Operations for Notification
This section defines all of the operations for Notification. Section This section defines all of the operations for Notification. Section
7.1 assigns the "operation-id" for each operation. The following two 7.1 assigns the "operation-id" for each operation. The following two
sub-sections define Subscription Creation Operations, and other sub-sections define Subscription Creation Operations, and other
operations. operations.
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. Subscription Template Attributes Group in Job Creation operations.
It 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
in the request, even if the newly created Subscription Object would in the request, even if the newly created Subscription Object would
have identical behavior to some existing Subscription Object. The have identical behavior to some existing Subscription Object. The
skipping to change at page 55, line 25 skipping to change at page 53, line 16
authenticated user (see [RFC2911] section 8.3) performing this authenticated user (see [RFC2911] section 8.3) performing this
operation MUST (1) be the job owner, (2) 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), or (3) be otherwise authorized by the Printer's 1 and 8.5), or (3) be otherwise authorized by the Printer's
administrator-configured security policy to create Per-Job administrator-configured security policy to create Per-Job
Subscription Objects for the target job. Otherwise the Printer MUST Subscription Objects for the target job. Otherwise the Printer MUST
reject the operation and return: the 'client-error-forbidden', reject the operation and return: the 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized' 'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate. 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.
11.1.1.1.1 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
Job object to associate the Per-Job Subscription with. The object to associate the Per-Job Subscription with. The value of
value of "notify-job-id" MUST be the value of the "job-id" of "notify-job-id" MUST be the value of the "job-id" of the associated
the associated Job object. If the client does not supply this Job object. If the client does not supply this attribute, the
attribute, the Printer MUST reject this request with a 'client- Printer MUST reject this request with a 'client-error-bad-request'
error-bad-request' status code. 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 each such attribute. See section 5.2 for details on processing
processing these attributes. 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
in [RFC2911] and section 12. The following is a description of [RFC2911] and section 12. The following is a description of the
the important status codes: 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
some Subscription Objects requested but some failed. The
Subscription Attributes Groups with a "notify-status-
code" attribute are the ones that failed (see section
12.1).
client-error-ignored-all-subscriptions: the Printer created
no Subscription Objects requested and all failed. The
Subscription Attributes Groups with a "notify-status-
code" attribute are the ones that failed (see section
12.2).
client-error-not-possible: For this operation and other
Per-Job Subscription operations, this error can occur
because the specified Job has already completed (see
[RFC2911], whether or not the Job is retained in the Job
Retention and/or Job History phases (see [RFC2911]
section 4.3.7.1).
Natural Language and Character Set: successful-ok-ignored-subscriptions: the Printer created some
The "attributes-charset" and "attributes-natural-language" Subscription Objects requested but some failed. The
attributes as described in [RFC2911] section 3.1.4.2. Subscription Attributes Groups with a "notify-status-code"
attribute are the ones that failed (see section 12.1).
client-error-ignored-all-subscriptions: the Printer created no
Subscription Objects requested and all failed. The
Subscription Attributes Groups with a "notify-status-code"
attribute are the ones that failed (see section 12.2).
client-error-not-possible: For this operation and other Per-Job
Subscription operations, this error can occur because the
specified Job has already completed (see [RFC2911], whether or
not the Job is retained in the Job Retention and/or Job History
phases (see [RFC2911] section 4.3.7.1).
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2.
Group 2: Unsupported Attributes 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
Unsupported Attributes. This group does not contain any Attributes. This group does not contain any unsupported
unsupported Subscription Template Attributes; they are returned Subscription Template Attributes; they are returned in the
in the Subscription Attributes Group (see below). 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 13 Indicates the status of this subscription (see section 13 for
for the status code definitions). Section 5.2 defines when the status code definitions). Section 5.2 defines when this
this attribute MUST be present in this group. 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
of this group. 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.
The operation creates Per-Printer Subscription Objects instead of The operation creates Per-Printer Subscription Objects instead of
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.,
skipping to change at page 58, line 5 skipping to change at page 55, line 43
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 (1) Operator or Administrator access rights for operation MUST have (1) Operator or Administrator access rights for
this Printer (see [RFC2911] sections 1 and 8.5), or (2) be otherwise this Printer (see [RFC2911] sections 1 and 8.5), or (2) be otherwise
authorized by the Printer's administrator-configured security policy authorized by the Printer's administrator-configured security policy
to create Per-Printer Subscription Objects for this Printer. to create Per-Printer Subscription Objects for this Printer.
Otherwise, the Printer MUST reject the operation and return: the Otherwise, the Printer MUST reject the operation and return: the
'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-forbidden', 'client-error-not-authenticated', or
'client-error-not-authorized' status code as appropriate. '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.
11.1.2.2 Create-Printer-Subscriptions Response 11.1.2.2. Create-Printer-Subscriptions Response
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.2). 11.1.1.2).
11.1.3 Job Creation Operations - Extensions for Notification 11.1.3. Job Creation Operations - Extensions for Notification
This document extends the Job Creation operations (see section 3.2) This document extends the Job Creation operations (see section 3.2)
to create Subscription Objects as a part of the operation. to create Subscription Objects as a part of the operation.
The Job Creation operations are identical to Create-Job-Subscriptions The Job Creation operations are identical to Create-Job-Subscriptions
operation with exceptions noted in this section. operation with exceptions noted in this section.
Unlike the Create-Job-Subscriptions operation, a Job Creation Unlike the Create-Job-Subscriptions operation, a Job Creation
operation associates the newly created Subscription Objects with the operation associates the newly created Subscription Objects with the
Job object created by this operation. The operation succeeds if and Job object created by this operation. The operation succeeds if and
skipping to change at page 59, line 11 skipping to change at page 57, line 5
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.
11.1.3.1 Job Creation Request 11.1.3.1. Job Creation Request
The groups for this operation are sufficiently different from the The groups for this operation are sufficiently different from the
Create-Job-Subscriptions operation that they are all presented here. Create-Job-Subscriptions operation that they are all presented here.
The following groups of attributes are supplied as part of a Job The following groups of attributes are supplied as part of a Job
Creation Request: Creation Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Same as defined in [RFC2911] for Print-Job, Print-URI, and Same as defined in [RFC2911] for Print-Job, Print-URI, and
Create-Job requests. Create-Job requests.
Group 2: Job Template Attributes Group 2: Job Template Attributes
The client OPTIONALLY supplies a set of Job Template attributes The client OPTIONALLY supplies a set of Job Template attributes as
as defined in [RFC2911] section 4.2. defined in [RFC2911] section 4.2.
Group 3 to N: Subscription Template Attributes Group 3 to N: Subscription Template Attributes
The same as Group 2-N in Create-Job-Subscriptions. See section The same as Group 2-N in Create-Job-Subscriptions. See section
11.1.1.1. 11.1.1.1.
Group N+1: Document Content (Print-Job only) Group N+1: Document Content (Print-Job only)
The client MUST supply the document data to be processed. The client MUST supply the document data to be processed.
11.1.3.2 Job Creation Response 11.1.3.2. Job Creation 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 Print-Job, Print-URI, and Create-Job attributes as part of a Print-Job, Print-URI, and Create-Job
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 12. 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
the Job and not all of the Subscription Objects requested
(see section 12.1). This status-code hides 'successful-
ok-xxx' status-codes that could reveal problems in Job
creation. The Printer MUST NOT return the 'client-error-
ignored-all-subscriptions' status code for Job Creation
operations because the Printer returns an error status-
code only when it fails to create a Job.
Natural Language and Character Set: successful-ok-ignored-subscriptions: the Printer created
The "attributes-charset" and "attributes-natural-language" the Job and not all of the Subscription Objects requested
attributes as described in [RFC2911] section 3.1.4.2. (see section 12.1). This status-code hides 'successful-ok-
xxx' status-codes that could reveal problems in Job
creation. The Printer MUST NOT return the 'client-error-
ignored-all-subscriptions' status code for Job Creation
operations because the Printer returns an error status-code
only when it fails to create a Job.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2.
Group 2: Unsupported Attributes 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
Unsupported Attributes. This group does not contain any Attributes. This group does not contain any unsupported
unsupported Subscription Template Attributes; they are returned Subscription Template Attributes; they are returned in the
in the Subscription Attributes Group (see below). Subscription Attributes Group (see below).
Group 3: Job Object Attributes Group 3: Job Object Attributes
The "job-id" of the Job Object just created, etc., as defined The "job-id" of the Job Object just created, etc., as defined in
in [RFC2911] for Print-Job, Print-URI, and Create-Job requests. [RFC2911] for Print-Job, Print-URI, and Create-Job requests.
Group 4 to N: Subscription Attributes Group 4 to N: Subscription Attributes
These groups MUST be returned if and only if the client These groups MUST be returned if and only if the client supplied
supplied Subscription Template Attributes and the operation was Subscription Template Attributes and the operation was accepted.
accepted.
See section 5.2 for details on the contents of each occurrence
of this group.
11.2 Other Operations See section 5.2 for details on the contents of each occurrence of
this group.
11.2. Other Operations
This section defines other operations on Subscription objects. This section defines other operations on Subscription objects.
11.2.1 Restart-Job Operation - Extensions for Notification 11.2.1. Restart-Job Operation - Extensions for Notification
The Restart-Job operation [RFC2911] is neither a Job Creation The Restart-Job operation [RFC2911] is neither a Job Creation
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.3.4.3). 'job-created' event (see section 5.3.3.4.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.
The Printer MUST accept requests that are identical to the Job The Printer MUST accept requests that are identical to the Job
Creation request defined in section 11.1.3.1, except that the request Creation request defined in section 11.1.3.1, except that the request
skipping to change at page 61, line 47 skipping to change at page 59, line 38
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 13). 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.
A Printer MUST support this extension to this operation. A Printer MUST support this extension to this operation.
In addition to the requirements of [RFC2911] section 3.2.5, a Printer In addition to the requirements of [RFC2911] section 3.2.5, a Printer
MUST support the following additional values for the "requested- MUST support the following additional values for the "requested-
attributes" Operation attribute in this operation and return such attributes" Operation attribute in this operation and return such
attributes in the Printer Object Attributes group of its response. attributes in the Printer Object Attributes group of its response.
1. Subscription Template Attributes: Each supported attribute in 1. Subscription Template Attributes: Each supported attribute in
column 2 of Table 1. column 2 of Table 1.
2. New Printer Description Attributes: Each supported attribute in 2. New Printer Description Attributes: Each supported attribute in
section 6. section 6.
3. New Group Name: The 'subscription-template' group name, which 3. New Group Name: The 'subscription-template' group name, which
names all supported Subscription Template Attribute in column 2 names all supported Subscription Template Attribute in column 2 of
of Table 1. This group name is also used in the Get- Table 1. This group name is also used in the Get-Subscription-
Subscription-Attributes and Get-Subscriptions operation with an Attributes and Get-Subscriptions operation with an analogous
analogous meaning. meaning.
4. Extended Group Name: The 'all' group name, which names all 4. Extended Group Name: The 'all' group name, which names all Printer
Printer attributes according to [RFC2911] section 3.2.5. In attributes according to [RFC2911] section 3.2.5. In this
this extension 'all' names all attributes specified in [RFC2911] extension 'all' names all attributes specified in [RFC2911] plus
plus those named in items 1 and 2 of this list. those named in items 1 and 2 of this list.
11.2.4 Get-Subscription-Attributes operation 11.2.4. Get-Subscription-Attributes operation
This operation allows a client to request the values of the This operation allows a client to request the values of the
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
skipping to change at page 63, line 7 skipping to change at page 60, line 45
(see [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized by (see [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized by
the Printer's administrator-configured security policy to query the the Printer's administrator-configured security policy to query the
Subscription Object for the target job. Otherwise the Printer MUST Subscription Object for the target job. Otherwise the Printer MUST
reject the operation and return: the 'client-error-forbidden', reject the operation and return: the 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized' 'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate. Furthermore, the Printer's security status code as appropriate. Furthermore, the Printer's security
policy MAY limit which attributes are returned, in a manner similar policy MAY limit which attributes are returned, in a manner similar
to the Get-Job-Attributes operation (see [RFC2911] end of section to the Get-Job-Attributes operation (see [RFC2911] end of section
3.3.4.2). 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"
attributes as described in section [RFC2911] 3.1.4.1.
Target: The "attributes-charset" and "attributes-natural-language"
The "printer-uri" attribute which defines the target for this attributes as described in section [RFC2911] 3.1.4.1.
operation as described in [RFC2911] section 3.1.5.
Requesting User Name: Target:
The "requesting-user-name" attribute SHOULD be supplied by the The "printer-uri" attribute which defines the target for this
client as described in [RFC2911] section 8.3. operation as described in [RFC2911] section 3.1.5.
11.2.4.1.1 "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.
The client MUST supply this attribute. The Printer MUST 11.2.4.1.1. "notify-subscription-id" (integer (1:MAX))
support this attribute. This attribute specifies the
Subscription Object from which the client is requesting
attributes. If the client omits this attribute, the Printer
MUST reject this request with the 'client-error-bad-request'
status code.
11.2.4.1.2 "requested-attributes" (1setOf keyword) The client MUST supply this attribute. The Printer MUST support this
attribute. This attribute specifies the Subscription Object from
which the client is requesting attributes. If the client omits this
attribute, the Printer MUST reject this request with the 'client-
error-bad-request' status code.
The client OPTIONALLY supplies this attribute. The Printer 11.2.4.1.2. "requested-attributes" (1setOf keyword)
MUST support this attribute. This attribute specifies the
attributes of the specified Subscription Object that the
Printer MUST return in the response. Each value of this
attribute is either an attribute name (defined in sections 5.3
and 5.4) or an attribute group name. The attribute group names
are:
- 'subscription-template': all attributes that are both The client OPTIONALLY supplies this attribute. The Printer MUST
defined in section 5.3 and present on the specified support this attribute. This attribute specifies the attributes of
Subscription Object (column 1 of Table 1). the specified Subscription Object that the Printer MUST return in the
- 'subscription-description': all attributes that are both response. Each value of this attribute is either an attribute name
defined in section 5.4 and present on the specified (defined in sections 5.3 and 5.4) or an attribute group name. The
Subscription Object (Table 2). attribute group names are:
- 'all': all attributes that are present on the specified - 'subscription-template': all attributes that are both defined in
Subscription Object. section 5.3 and present on the specified Subscription Object
(column 1 of Table 1).
A Printer MUST support all these group names. - 'subscription-description': all attributes that are both defined
in section 5.4 and present on the specified Subscription Object
(Table 2).
If the client omits this attribute, the Printer MUST respond as - 'all': all attributes that are present on the specified
if this attribute had been supplied with a value of 'all'. Subscription Object.
11.2.4.2 Get-Subscription-Attributes Response A Printer MUST support all these group names.
If the client omits this attribute, the Printer MUST respond as if
this attribute had been supplied with a value of 'all'.
11.2.4.2. Get-Subscription-Attributes Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Get-Subscription-Attributes Response: Get-Subscription-Attributes Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
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. 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
the Subscription Object, rather than the one requested. Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 and section 3.2.5.2 for details on See [RFC2911] section 3.1.7 and section 3.2.5.2 for details on
returning Unsupported Attributes. returning Unsupported Attributes.
The response NEED NOT contain the "requested-attributes" The response NEED NOT contain the "requested-attributes" operation
operation attribute with any supplied keyword values that were attribute with any supplied keyword values that were requested by
requested by the client but are not supported by the IPP the client but are not supported by the IPP object. If the
object. If the Printer object does return unsupported Printer object does return unsupported attributes referenced in
attributes referenced in the "requested-attributes" operation the "requested-attributes" operation attribute, the values of the
attribute, the values of the "requested-attributes" attribute "requested-attributes" attribute returned MUST include only the
returned MUST include only the unsupported keywords that were unsupported keywords that were requested by the client. If the
requested by the client. If the client had requested a group client had requested a group name, such as 'all', the resulting
name, such as 'all', the resulting unsupported attributes unsupported attributes returned MUST NOT include attribute keyword
returned MUST NOT include attribute keyword names described in names described in the standard but not supported by the
the standard but not supported by the implementation. 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.
values. Each attribute returned in this group: 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
in the request, AND 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
For example, a Printer MAY prohibit a client who is not the example, a Printer MAY prohibit a client who is not the creator of
creator of a Subscription Object from seeing some or all of a Subscription Object from seeing some or all of its attributes.
its attributes. See [RFC2911] end of section 3.3.4.2 and See [RFC2911] end of section 3.3.4.2 and section 8.
section 8.
The Printer can return the attributes of the Subscription The Printer can return the attributes of the Subscription Object
Object in any order. The client MUST accept the attributes in 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.
skipping to change at page 66, line 7 skipping to change at page 63, line 43
(2) be otherwise authorized by the Printer's administrator-configured (2) be otherwise authorized by the Printer's administrator-configured
security policy to query Per-Printer Subscription Objects for the security policy to query Per-Printer Subscription Objects for the
target Printer. Otherwise the Printer MUST reject the operation and target Printer. Otherwise the Printer MUST reject the operation and
return: the 'client-error-forbidden', 'client-error-not- return: the 'client-error-forbidden', 'client-error-not-
authenticated', or 'client-error-not-authorized' status code as authenticated', or 'client-error-not-authorized' status code as
appropriate. Furthermore, the Printer's security policy MAY limit appropriate. Furthermore, the Printer's security policy MAY limit
which attributes are returned, in a manner similar to the Get-Jobs which attributes are returned, in a manner similar to the Get-Jobs
and Get-Printer-Attributes operations (see [RFC2911] end of sections and Get-Printer-Attributes operations (see [RFC2911] end of sections
3.2.6.2 and 3.2.5.2). 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.
11.2.5.1.1 "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
associated with the Job whose "job-id" attribute value equals with the Job whose "job-id" attribute value equals the value of this
the value of this attribute. If the client does not specify attribute. If the client does not specify this attribute, the
this attribute, the Printer returns the specified attributes of Printer returns the specified attributes of all Per-Printer
all Per-Printer Subscription Objects. Note: there is no way to Subscription Objects. Note: there is no way to get all Per-Job
get all Per-Job Subscriptions known to the Printer in a single
operation. A Get-Jobs operation followed by a Get-
Subscriptions operation for each Job will return all Per-Job
Subscriptions.
11.2.5.1.2 "limit" (integer(1:MAX)) Subscriptions known to the Printer in a single operation. A Get-Jobs
operation followed by a Get-Subscriptions operation for each Job will
return all Per-Job Subscriptions.
The client OPTIONALLY supplies this attribute. The Printer 11.2.5.1.2. "limit" (integer(1:MAX))
MUST support this attribute. It is an integer value that
determines the maximum number of Subscription Objects that a
client will receive from the Printer even if the "my-
subscriptions" attribute constrains which Subscription Objects
are returned. The limit is a "stateless limit" in that if the
value supplied by the client is 'N', then only the first 'N'
Subscription Objects are returned in the Get-Subscriptions
Response. There is no mechanism to allow for the next 'M'
Subscription Objects after the first 'N' Subscription Objects.
If the client does not supply this attribute, the Printer The client OPTIONALLY supplies this attribute. The Printer MUST
responds with all applicable Subscription Objects. support this attribute. It is an integer value that determines the
maximum number of Subscription Objects that a client will receive
from the Printer even if the "my-subscriptions" attribute constrains
which Subscription Objects are returned. The limit is a "stateless
limit" in that if the value supplied by the client is 'N', then only
the first 'N' Subscription Objects are returned in the Get-
Subscriptions Response. There is no mechanism to allow for the next
'M' Subscription Objects after the first 'N' Subscription Objects.
If the client does not supply this attribute, the Printer responds
with all applicable Subscription Objects.
11.2.5.1.3 "requested-attributes" (1setOf type2 keyword) 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
MUST support this attribute. This attribute specifies the support this attribute. This attribute specifies the attributes of
attributes of the specified Subscription Objects that the the specified Subscription Objects that the Printer MUST return in
Printer MUST return in the response. Each value of this the response. Each value of this attribute is either an attribute
attribute is either an attribute name (defined in sections 5.3 name (defined in sections 5.3 and 5.4) or an attribute group name
and 5.4) or an attribute group name (defined in section (defined in section 11.2.4.1). If the client omits this attribute,
11.2.4.1). If the client omits this attribute, the Printer the Printer MUST respond as if the client had supplied this attribute
MUST respond as if the client had supplied this attribute with with the one value: 'notify-subscription-id'.
the one value: 'notify-subscription-id'.
11.2.5.1.4 "my-subscriptions" (boolean) 11.2.5.1.4. "my-subscriptions" (boolean)
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer MUST
MUST support this attribute. If the value is 'false', the support this attribute. If the value is 'false', the Printer MUST
Printer MUST consider the Subscription Objects from all users consider the Subscription Objects from all users as candidates. If
as candidates. If the value is 'true', the Printer MUST return the value is 'true', the Printer MUST return the Subscription Objects
the Subscription Objects created by the requesting user of this created by the requesting user of this request. If the client does
request. If the client does not supply this attribute, the not supply this attribute, the Printer MUST respond as if the client
Printer MUST respond as if the client had supplied the 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 Subscription
authenticating the requesting user and matching the Objects is similar to that for Jobs which is described in [RFC2911]
Subscription Objects is similar to that for Jobs which is section 8.
described in [RFC2911] section 8.
11.2.5.2 Get-Subscriptions Response 11.2.5.2 Get-Subscriptions 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
Get-Subscriptions Response: Get-Subscriptions Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
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.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
Same as for Get-Subscription-Attributes. Same as for Get-Subscription-Attributes.
Groups 3 to N: Subscription Attributes Groups 3 to N: Subscription Attributes
The Printer responds with one Subscription Attributes Group for
each requested Subscription Object (see the "notify-job-id"
attribute in the Operation Attributes Group of this operation).
The Printer returns Subscription Objects in any order. The Printer responds with one Subscription Attributes Group for
each requested Subscription Object (see the "notify-job-id"
attribute in the Operation Attributes Group of this operation).
If the "limit" attribute is present in the Operation Attributes The Printer returns Subscription Objects in any order.
group of the request, the number of Subscription Attributes
Groups in the response MUST NOT exceed the value of the "limit"
attribute.
It there are no Subscription Objects associated with the If the "limit" attribute is present in the Operation Attributes
specified Job or Printer, the Printer MUST return zero group of the request, the number of Subscription Attributes Groups
Subscription Attributes Groups and it MUST NOT treat this case in the response MUST NOT exceed the value of the "limit"
as an error, i.e., the status-code MUST be 'successful-ok' attribute.
unless something else causes the status code to have some other
value.
See the Group 3 response (Subscription Attributes Group) of the It there are no Subscription Objects associated with the specified
Get-Subscription-Attributes operation (section 11.2.4.2) for Job or Printer, the Printer MUST return zero Subscription
the attributes that a Printer returns in this group. Attributes Groups and it MUST NOT treat this case as an error,
i.e., the status-code MUST be 'successful-ok' unless something
else causes the status code to have some other value.
11.2.6 Renew-Subscription operation See the Group 3 response (Subscription Attributes Group) of the
Get-Subscription-Attributes operation (section 11.2.4.2) for the
attributes that a Printer returns in this group.
11.2.6. Renew-Subscription operation
This operation allows a client to request the Printer to extend the This operation allows a client to request the Printer to extend the
lease on a Per-Printer Subscription Object. lease on a Per-Printer Subscription Object.
The Printer MUST support this operation. The Printer MUST support this operation.
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.
skipping to change at page 69, line 5 skipping to change at page 66, line 38
performing this operation MUST (1) be the owner of the Per-Printer performing this operation MUST (1) be the owner of the Per-Printer
Subscription Object, (2) 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), or (3) be for the Printer (see [RFC2911] sections 1 and 8.5), or (3) be
otherwise authorized by the Printer's administrator-configured otherwise authorized by the Printer's administrator-configured
security policy to renew Per-Printer Subscription Objects for the security policy to renew Per-Printer Subscription Objects for the
target Printer. Otherwise, the Printer MUST reject the operation and target Printer. Otherwise, the Printer MUST reject the operation and
return: the 'client-error-forbidden', 'client-error-not- return: the 'client-error-forbidden', 'client-error-not-
authenticated', or 'client-error-not-authorized' status code as authenticated', or 'client-error-not-authorized' status code as
appropriate. 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.
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be The "requesting-user-name" (name(MAX)) attribute SHOULD be
supplied by the client as described in [RFC2911] section 8.3. supplied by the client as described in [RFC2911] section 8.3.
11.2.6.1.1 "notify-subscription-id" (integer (1:MAX)) 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
support this attribute. This attribute specifies the Per- attribute. This attribute specifies the Per-Printer Subscription
Printer Subscription Object whose lease the Printer MUST renew. Object whose lease the Printer MUST renew. If the client omits this
If the client omits this attribute, the Printer MUST reject attribute, the Printer MUST reject this request with the 'client-
this request with the 'client-error-bad-request' status code. error-bad-request' status code.
Group 2: Subscription Template Attributes Group 2: Subscription Template Attributes
11.2.6.1.2 "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
of seconds to renew the lease for the specified Subscription seconds to renew the lease for the specified Subscription Object. A
Object. A value of 0 requests an infinite lease (which MAY value of 0 requests an infinite lease (which MAY require Operator
require Operator access rights). If the client omits this access rights). If the client omits this attribute, the Printer MUST
attribute, the Printer MUST use the value of the Printer's use the value of the Printer's "notify-lease-duration-default"
"notify-lease-duration-default" attribute. See section 5.3.8 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:
Same as [RFC2911].
The following are some of the status codes returned (see Status Message:
[RFC2911]: Same as [RFC2911].
successful-ok: The operation successfully renewed the lease The following are some of the status codes returned (see
on the Subscription Object for the requested duration. [RFC2911]:
successful-ok-ignored-or-substituted-attributes: The
operation successfully renewed the lease on the
Subscription Object for some duration other than the
amount requested.
client-error-not-possible: The operation failed because the
"notify-subscription-id" Operation attribute identified a
Per-Job Subscription Object.
client-error-not-found: The operation failed because the
"notify-subscription-id" Operation attribute identified a
non-existent Subscription Object.
Natural Language and Character Set: successful-ok: The operation successfully renewed the lease
The "attributes-charset" and "attributes-natural-language" on the Subscription Object for the requested duration.
attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of successful-ok-ignored-or-substituted-attributes: The
the Subscription Object, rather than the one requested. operation successfully renewed the lease on the Subscription
Object for some duration other than the amount requested.
client-error-not-possible: The operation failed because the
"notify-subscription-id" Operation attribute identified a
Per-Job Subscription Object.
client-error-not-found: The operation failed because the
"notify-subscription-id" Operation attribute identified a
non-existent Subscription Object.
Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of the
Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes 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
Unsupported Attributes. 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:
11.2.6.2.1 "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
the Printer has granted for the lease of the Subscription Printer has granted for the lease of the Subscription Object (see
Object (see section 5.3.8 for details, such as the value of section 5.3.8 for details, such as the value of this attribute when
this attribute when the Printer doesn't support the requested 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 delivering more Event Notifications. Once stop the Printer from delivering 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.
skipping to change at page 71, line 36 skipping to change at page 69, line 19
Access Rights: The authenticated user (see [RFC2911] section 8.3) Access Rights: The authenticated user (see [RFC2911] section 8.3)
performing this operation MUST (1) be the owner of the Subscription performing this operation MUST (1) be the owner of the Subscription
Object, (2) have Operator or Administrator access rights for the Object, (2) have Operator or Administrator access rights for the
Printer (see [RFC2911] sections 1 and 8.5), or (3) be otherwise Printer (see [RFC2911] sections 1 and 8.5), or (3) be otherwise
authorized by the Printer's administrator-configured security policy authorized by the Printer's administrator-configured security policy
to cancel the target Subscription Object. Otherwise, the Printer to cancel the target Subscription Object. Otherwise, the Printer
MUST reject the operation and return: the 'client-error-forbidden', MUST reject the operation and return: the 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized' 'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate. 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.
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)) 11.2.7.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
support this attribute. This attribute specifies the attribute. This attribute specifies the Subscription Object that the
Subscription Object that the Printer MUST cancel. If the Printer MUST cancel. If the client omits this attribute, the Printer
client omits this attribute, the Printer MUST reject this MUST reject this request with the 'client-error-bad-request' status
request with the 'client-error-bad-request' status code. 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
[RFC2911]: [RFC2911]:
successful-ok: The operation successfully canceled successful-ok: The operation successfully canceled
(deleted) the Subscription Object. (deleted) the Subscription Object.
client-error-not-found: The operation failed because the
"notify-subscription-id" Operation attribute identified a
non-existent Subscription Object.
Natural Language and Character Set: client-error-not-found: The operation failed because the
The "attributes-charset" and "attributes-natural-language" "notify-subscription-id" Operation attribute identified a
attributes as described in [RFC2911] section 3.1.4.2. The non-existent Subscription Object.
"attributes-natural-language" MAY be the natural language of
the Subscription Object, rather than the one requested. Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of the
Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes 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
Unsupported Attributes. Attributes.
12 Status Codes 12. Status Codes
The following status codes are defined as extensions for Notification The following status codes are defined as extensions for Notification
and are returned as the value of the "status-code" parameter in the and are returned as the value of the "status-code" parameter in the
Operation Attributes Group of a response (see [RFC2911] section Operation Attributes Group of a response (see [RFC2911] section
3.1.6.1). Operations in this document can also return the status 3.1.6.1). Operations in this document can also return the status
codes defined in section 13 of [RFC2911]. The 'successful-ok' status codes defined in section 13 of [RFC2911]. The 'successful-ok' status
code is an example of such a status code. code is an example of such a status code.
12.1 successful-ok-ignored-subscriptions (0x0003) 12.1. successful-ok-ignored-subscriptions (0x0003)
The Subscription Creation Operation was unable to create all The Subscription Creation Operation was unable to create all
requested Subscription Objects. requested Subscription Objects.
For a Create-Job-Subscriptions or Create-Printer-Subscriptions For a Create-Job-Subscriptions or Create-Printer-Subscriptions
operation, this status code means that the Printer created one or operation, this status code means that the Printer created one or
more Subscription Objects, but not all requested Subscription more Subscription Objects, but not all requested Subscription
Objects. Objects.
For a Job Creation operation, this status code means that the Printer For a Job Creation operation, this status code means that the Printer
created the Job along with zero or more Subscription Objects. The created the Job along with zero or more Subscription Objects. The
Printer returns this status code even if other job attributes are Printer returns this status code even if other job attributes are
unsupported or in conflict. That is, if an IPP Printer finds a unsupported or in conflict. That is, if an IPP Printer finds a
warning that would allow it to return 'successful-ok-ignored- warning that would allow it to return 'successful-ok-ignored-
subscriptions' and either 'successful-ok-ignored-or-substituted- subscriptions' and either 'successful-ok-ignored-or-substituted-
attributes' and/or 'successful-ok-conflicting-attributes', it MUST attributes' and/or 'successful-ok-conflicting-attributes', it MUST
return 'successful-ok-ignored-subscriptions'. return 'successful-ok-ignored-subscriptions'.
12.2 client-error-ignored-all-subscriptions (0x0414) 12.2. client-error-ignored-all-subscriptions (0x0414)
This status code is the same as 'successful-ok-ignored-subscriptions' This status code is the same as 'successful-ok-ignored-subscriptions'
except that only the Create-Job-Subscriptions and Create-Printer- except that only the Create-Job-Subscriptions and Create-Printer-
Subscriptions operation return it. They return this status code only Subscriptions operation return it. They return this status code only
when the Printer creates zero Subscription Objects. when the Printer creates zero Subscription Objects.
13 Status Codes in Subscription Attributes Groups 13. Status Codes in Subscription Attributes Groups
This section contains values of the "notify-status-code" (type2 enum) This section contains values of the "notify-status-code" (type2 enum)
attribute that the Printer returns in a Subscription Attributes Group attribute that the Printer returns in a Subscription Attributes Group
in a response when the corresponding Subscription Object: in a response when the corresponding Subscription Object:
1. is not created or 1. is not created or
2. is created and some of the client-supplied attributes are not 2. is created and some of the client-supplied attributes are not
supported. supported.
The following sections are ordered in decreasing order of importance The following sections are ordered in decreasing order of importance
of the status-codes. of the status-codes.
13.1 client-error-uri-scheme-not-supported (0x040C) 13.1. client-error-uri-scheme-not-supported (0x040C)
This status code is defined in [RFC2911]. This document extends its This status code is defined in [RFC2911]. This document extends its
meaning and allows it to be in a Subscription Attributes Group of a meaning and allows it to be in a Subscription Attributes Group of a
response. response.
The scheme of the client-supplied URI in a "notify-recipient-uri" The scheme of the client-supplied URI in a "notify-recipient-uri"
Subscription Template Attribute in a Subscription Creation Operation Subscription Template Attribute in a Subscription Creation Operation
is not supported. See section 5.3.1. is not supported. See section 5.3.1.
13.2 client-error-attributes-or-values-not-supported (0x040B) 13.2. client-error-attributes-or-values-not-supported (0x040B)
This status code is defined in [RFC2911]. This document extends its This status code is defined in [RFC2911]. This document extends its
meaning and allows it to be in a Subscription Attributes Group of a meaning and allows it to be in a Subscription Attributes Group of a
response. response.
The method of the client-supplied keyword in a "notify-pull-method" The method of the client-supplied keyword in a "notify-pull-method"
Subscription Template Attribute in a Subscription Creation Operation Subscription Template Attribute in a Subscription Creation Operation
is not supported. See section 5.3.2. is not supported. See section 5.3.2.
13.3 client-error-too-many-subscriptions (0x0415) 13.3. client-error-too-many-subscriptions (0x0415)
The number of Subscription Objects supported by the Printer would be The number of Subscription Objects supported by the Printer would be
exceeded if this Subscription Object were created (see section 5.2). exceeded if this Subscription Object were created (see section 5.2).
13.4 successful-ok-too-many-events (0x0005) 13.4. successful-ok-too-many-events (0x0005)
The client supplied more Events in the "notify-events" operation The client supplied more Events in the "notify-events" operation
attribute of a Subscription Creation Operation than the Printer attribute of a Subscription Creation Operation than the Printer
supports, as indicated in its "notify-max-events-supported" Printer supports, as indicated in its "notify-max-events-supported" Printer
attribute (see section 5.3.3). attribute (see section 5.3.3).
13.5 successful-ok-ignored-or-substituted-attributes (0x0001) 13.5. successful-ok-ignored-or-substituted-attributes (0x0001)
This status code is defined in [RFC2911]. This document extends its This status code is defined in [RFC2911]. This document extends its
meaning to include unsupported Subscription Template Attributes and meaning to include unsupported Subscription Template Attributes and
it can appear in a Subscription Attributes Group. it can appear in a Subscription Attributes Group.
14 Encodings of Additional Attribute Tags 14. Encodings of Additional Attribute Tags
This section assigns values to two attributes tags as extensions to This section assigns values to two attributes tags as extensions to
the encoding defined in [RFC2910]). the encoding defined in [RFC2910]).
The "subscription-attributes-tag" delimits Subscription Template The "subscription-attributes-tag" delimits Subscription Template
Attributes Groups in requests and Subscription Attributes Groups in Attributes Groups in requests and Subscription Attributes Groups in
responses. responses.
The "event-notification-attributes-tag" delimits Event Notifications The "event-notification-attributes-tag" delimits Event Notifications
in Delivery Methods that use an IPP-like encoding. in Delivery Methods that use an IPP-like encoding.
The following table specifies the values for the delimiter tags: The following table specifies the values for the delimiter tags:
Tag Value (Hex) Meaning Tag Value (Hex) Meaning
0x06 "subscription-attributes-tag" 0x06 "subscription-attributes-tag"
0x07 "event-notification-attributes-tag" 0x07 "event-notification-attributes-tag"
15 Conformance Requirements 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.
15.1 Conformance requirements for clients 15.1. Conformance requirements for clients
If this Event Notification specification is implemented by a client, If this Event Notification specification is implemented by a client,
the client MUST support the 'ippget' Pull Delivery Method and meet the client MUST support the 'ippget' Pull Delivery Method and meet
the conformance requirements as defined in [ipp-get-method] for the conformance requirements as defined in [RFC3996] for clients. A
clients. A client MAY support additional Delivery Methods. client MAY support additional Delivery Methods.
15.2 Conformance requirements for Printers 15.2. Conformance requirements for Printers
If this Event Notification specification is implemented by a Printer, If this Event Notification specification is implemented by a Printer,
the Printer MUST: 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
and the Subscription Attributes Group in responses. 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 - support the 'ippget' Pull Delivery Method and meet the conformance
conformance requirements as defined in [ipp-get-method] for requirements as defined in [RFC3996] for Printers. The Printer
Printers. The Printer MAY support additional Push and Pull MAY support additional Push and Pull Delivery Methods.
Delivery Methods.
- deliver Event Notifications that conform to the requirements of - deliver 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
for each supported Delivery Method (the conformance each supported Delivery Method (the conformance requirements for
requirements for Delivery Method Documents is specified in 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,
supports, MUST support the REQUIRED extensions for notification MUST support the REQUIRED extensions for notification defined in
defined in section 11.1.3. section 11.1.3.
- meet the conformance requirements for operations as described - meet the conformance requirements for operations as described in
in Table 16 and meet the requirements for Printers as specified Table 16 and meet the requirements for Printers as specified in
in the indicated sub-sections of section 11: the indicated sub-sections of section 11:
Table 16 - Printer Conformance Requirements for Operations
Table 16 - Printer Conformance Requirements for Operations
Operation Printer Operation Printer
Conformance Conformance
Requirements Requirements
Create-Printer-Subscriptions (section 11.1.2) REQUIRED Create-Printer-Subscriptions (section 11.1.2) REQUIRED
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
16 Model for Notification with Cascading Printers (Informative) 16. Model for Notification with Cascading Printers (Informative)
With this model (see Figure 2 below), there is an intervening Print With this model (see Figure 2 below), there is an intervening Print
server between the human user and the output-device. So the system server between the human user and the output-device. So the system
effectively has two Printer objects. There are two cases to effectively has two Printer objects. There are two cases to
consider. consider.
1. When the Printer 1 (in the server) generates Events, the system 1. When the Printer 1 (in the server) generates Events, the system
behaves like the client and Printer in Figure 1. In this case, behaves like the client and Printer in Figure 1. In this case,
Printer 1 delivers Event Notifications that are shown as Event Printer 1 delivers Event Notifications that are shown as Event
Notifications (A) of Figure 2. Notifications (A) of Figure 2.
2. When the Printer 2 (in the output-device) generates Events, there 2. When the Printer 2 (in the output-device) generates Events, there
are two possible system configurations: are two possible system configurations:
a) Printer 1 forwards the client-supplied Subscription Creation a) Printer 1 forwards the client-supplied Subscription Creation
Operations to the downstream Printer 2 and lets Printer 2 Operations to the downstream Printer 2 and lets Printer 2
deliver the Event Notifications directly to the Notification deliver the Event Notifications directly to the Notification
Recipients supplied by the Client (Event Notifications(C) in the Recipients supplied by the Client (Event Notifications(C) in
diagram). 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,
2 delivers the Event Notification (B) to Notification Recipient Printer 2 delivers the Event Notification (B) to Notification
of Printer 1, which relays the received Event Notification (B) Recipient of Printer 1, which relays the received Event
to the client-supplied Notification Recipient (as Event Notification (B) to the client-supplied Notification Recipient
Notifications(A) in the diagram). Note, when a client performs (as Event Notifications(A) in the diagram). Note, when a
a Subscription Creation Operation, Printer 1 need not forward client performs a Subscription Creation Operation, Printer 1
the Subscription Creation Operation to Printer 2 if it would need not forward the Subscription Creation Operation to Printer
create a duplicate Subscription Object on Printer 2. 2 if it would 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
request and Server S wants these Events for jobs it submits and request and Server S wants these Events for jobs it submits and
not for other jobs. not for other jobs.
server S device A server S device A
+------------+ +------------+ +------------+ +------------+
| | | | | | | |
+--------+ Subscription | ###########| | ###########| +--------+ Subscription | ###########| | ###########|
| client |--Creation ----># Printer #| Subscription | # Printer #| | client |--Creation ----># Printer #| Subscription | # Printer #|
+--------+ Operation | # Object 1#|---Creation------|># Object 2#| +--------+ Operation | # Object 1#|---Creation------|># Object 2#|
| ###|#######| Operation | ####|#|####| | ###|#######| Operation | ####|#|####|
+----|---^---+ +-----|-|----+ +----|---^---+ +-----|-|----+
+--------+ Event | | | | +--------+ Event | | | |
skipping to change at page 77, line 44 skipping to change at page 75, line 30
+--------+ Subscription | ###########| | ###########| +--------+ Subscription | ###########| | ###########|
| client |--Creation ----># Printer #| Subscription | # Printer #| | client |--Creation ----># Printer #| Subscription | # Printer #|
+--------+ Operation | # Object 1#|---Creation------|># Object 2#| +--------+ Operation | # Object 1#|---Creation------|># Object 2#|
| ###|#######| Operation | ####|#|####| | ###|#######| Operation | ####|#|####|
+----|---^---+ +-----|-|----+ +----|---^---+ +-----|-|----+
+--------+ Event | | | | +--------+ Event | | | |
|Notific-|<-Notifications(A)-+ +-- Event Notifications(B)--+ | |Notific-|<-Notifications(A)-+ +-- Event Notifications(B)--+ |
|ation Re|<-------------Event Notifications(C)-----------------+ |ation Re|<-------------Event Notifications(C)-----------------+
|cipient | |cipient |
+--------+ +--------+
Figure 2 - Model for Notification with Cascading Printers Figure 2 - Model for Notification with Cascading Printers
17 Distributed Model for Notification (Informative) 17. Distributed Model for Notification (Informative)
A Printer implementation could use some other remote notification A Printer implementation could use some other remote notification
server to provide some or most of the service. For example, the server to provide some or most of the service. For example, the
remote notification server could deliver Event Notifications using remote notification server could deliver Event Notifications using
Delivery Methods that are not directly supported by the output device Delivery Methods that are not directly supported by the output device
or Printer object. Or, the remote notification server could store or Printer object. Or, the remote notification server could store
Subscription Objects (passed to it from the output device in response Subscription Objects (passed to it from the output device in response
to Subscription Creation requests), accept Events, format the Event to Subscription Creation requests), accept Events, format the Event
Notification in the natural language of the Notification Recipient, Notification in the natural language of the Notification Recipient,
and deliver the Event Notifications to the Notification Recipient(s). and deliver the Event Notifications to the Notification Recipient(s).
skipping to change at page 78, line 43 skipping to change at page 76, line 33
|Recipient |<--Event Notifications---| Notification | |Recipient |<--Event Notifications---| Notification |
+------------+ * | Server | +------------+ * | Server |
* +---------------+ * +---------------+
* *
************************* *************************
*** = Implementation configuration opaque boundary *** = Implementation configuration opaque boundary
Figure 3 - Opaque Use of a Notification Server Transparent to the Figure 3 - Opaque Use of a Notification Server Transparent to the
Client Client
18 Extended Notification Recipient (Informative) 18. Extended Notification Recipient (Informative)
The model allows for an extended Notification Recipient that is The model allows for an extended Notification Recipient that is
itself a notification server that forwards each Event Notification to itself a notification server that forwards each Event Notification to
another recipient (called the Ultimate Notification Recipient in this another recipient (called the Ultimate Notification Recipient in this
section). The Delivery Method to the Ultimate Recipient is probably section). The Delivery Method to the Ultimate Recipient is probably
different from the Delivery Method used by the Printer to the different from the Delivery Method used by the Printer to the
extended Notification Recipient. extended Notification Recipient.
This extended Notification Recipient is transparent to the Printer This extended Notification Recipient is transparent to the Printer
but not to the client. but not to the client.
skipping to change at page 79, line 43 skipping to change at page 77, line 29
+---------------+ +---------------+
+--------+ | ########### | +--------+ | ########### |
| client |---Subscription Creation -----------># Printer # | | client |---Subscription Creation -----------># Printer # |
+--------+ Operation | # Object # | +--------+ Operation | # Object # |
| #####|##### | | #####|##### |
+------------+ +------------+ IPP-defined +-------|-------+ +------------+ +------------+ IPP-defined +-------|-------+
|Ultimate | any |Notification|<--Event Notifications----+ |Ultimate | any |Notification|<--Event Notifications----+
|Notification|<----|Recipient | |Notification|<----|Recipient |
|Recipient | +------------+ |Recipient | +------------+
+------------+ (Notification Server) +------------+ (Notification Server)
Figure 4 - Use of an Extended Notification Recipient transparent to Figure 4 - Use of an Extended Notification Recipient transparent to
the Printer the Printer
19 Object Model for Notification (Normative) 19. Object Model for Notification (Normative)
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
provide the complete Notification semantics. provide the complete Notification semantics.
The object relationships can be seen pictorially as: The object relationships can be seen pictorially as:
Subscription Objects (Per-Printer Subscriptions) Printer object Subscription Objects (Per-Printer Subscriptions) Printer object
+----+ +------------+ +----+ +------------+
| s1 |<--------------------------------------------->| | | s1 |<--------------------------------------------->| |
+----++ | | +----++ | |
| s2 |<-------------------------------------------->| p1 | | s2 |<-------------------------------------------->| p1 |
+----++ | | +----++ | |
| s3 |<------------------------------------------->| | | s3 |<------------------------------------------->| |
+----+ +------------+ +----+ +------------+
Job objects Job objects
+---------+ +---------+
| |
+----+ | j1 |
| s4 |<------->| |
+----+ | |
| | s4 is a Per-Job Subscription Object
++--------++
| |
+----+ | j2 |
| s5 |<------>| |
+----++ | |
| s6 |<----->| | s5 and s6 are Per-Job Subscription
+----+ ++--------++ Objects
| | | |
+----+ | j1 | | j3 |
| s4 |<------->| | | |
+----+ | | | | <----> indicates association
| | s4 is a Per-Job Subscription Object +---------+
++--------++
| |
+----+ | j2 |
| s5 |<------>| |
+----++ | |
| s6 |<----->| | s5 and s6 are Per-Job Subscription
+----+ ++--------++ Objects
| |
| j3 |
| |
| | <----> indicates association
+---------+
Figure 5 - Object Model for Notification
s1, s2, and s3 are Per-Printer Subscription Objects and can
identify Printer and/or Job Events.
s4, s5, and s6 are Per-Job Subscription Objects and can identify
Printer and/or Job Events.
19.1 Object relationships Figure 5 - Object Model for Notification
s1, s2, and s3 are Per-Printer Subscription Objects and can identify
Printer and/or Job Events.
s4, s5, and s6 are Per-Job Subscription Objects and can identify
Printer and/or Job Events.
19.1. Object relationships
This sub-section defines the object relationships between the This sub-section defines the object relationships between the
Printer, Job, and Subscription Objects by example. Whether Per- Printer, Job, and Subscription Objects by example. Whether Per-
Printer Subscription Objects are actually contained in a Printer Printer Subscription Objects are actually contained in a Printer
object or are just bi-directionally associated with them in some way object or are just bi-directionally associated with them in some way
is IMPLEMENTATION DEPENDENT and is transparent to the client. is IMPLEMENTATION DEPENDENT and is transparent to the client.
Similarly, whether Per-Job Subscription Objects are actually Similarly, whether Per-Job Subscription Objects are actually
contained in a Job object or are just bi-directionally associated contained in a Job object or are just bi-directionally associated
with them in some way is IMPLEMENTATION DEPENDENT and is transparent with them in some way is IMPLEMENTATION DEPENDENT and is transparent
to the client. The object relationships are defined as follows: to the client. The object relationships are defined as follows:
19.2 Printer Object and Per-Printer Subscription Objects 19.2. Printer Object and Per-Printer Subscription Objects
1. The Printer object contains (is associated with) zero or more 1. The Printer object contains (is associated with) zero or more
Per-Printer Subscription Objects (p1 contains s1-s3 Per-Printer Per-Printer Subscription Objects (p1 contains s1-s3 Per-Printer
Subscription Objects). Subscription Objects).
2. Each Per-Printer Subscription Object (s1, s2, and s3) is 2. Each Per-Printer Subscription Object (s1, s2, and s3) is contained
contained in (or is associated with) exactly one Printer object in (or is associated with) exactly one Printer object (p1).
(p1).
19.3 Job Object and Per-Job Subscription Objects 19.3. Job Object and Per-Job Subscription Objects
1. A Job object (j1, j2, j3) is associated with zero or more Per- 1. A Job object (j1, j2, j3) is associated with zero or more Per-Job
Job Subscription Objects (s4-s6). Job j1 is associated with Subscription Objects (s4-s6). Job j1 is associated with Per-Job
Per-Job Subscription Object s4, Job j2 is associated with Per- Subscription Object s4, Job j2 is associated with Per-Job
Job Subscription Objects s5 and s6, and Job j3 is not associated Subscription Objects s5 and s6, and Job j3 is not associated with
with any Per-Job Subscription Object. any Per-Job Subscription Object.
2. Each Per-Job Subscription Object is associated with exactly one 2. Each Per-Job Subscription Object is associated with exactly one
Job object. Job object.
20 Per-Job versus Per-Printer Subscription Objects (Normative) 20. Per-Job versus Per-Printer Subscription Objects (Normative)
Per-Job and Per-Printer Subscription Objects are quite similar. Per-Job and Per-Printer Subscription Objects are quite similar.
Either type of Subscription Object can subscribe to Job Events, Either type of Subscription Object can subscribe to Job Events,
Printer Events, or both. Both types of Subscription Objects can be Printer Events, or both. Both types of Subscription Objects can be
queried using the Get-Subscriptions and Get-Subscription-Attributes queried using the Get-Subscriptions and Get-Subscription-Attributes
operations and canceled using the Cancel-Subscription operation. operations and canceled using the Cancel-Subscription operation.
Both types of Subscription Objects create Subscription Objects which Both types of Subscription Objects create Subscription Objects which
have the same Subscription Object attributes defined. However, there have the same Subscription Object attributes defined. However, there
are some semantic differences between Per-Job Subscription Objects are some semantic differences between Per-Job Subscription Objects
and Per-Printer Subscription Objects. A Per-Job Subscription Object and Per-Printer Subscription Objects. A Per-Job Subscription Object
is established by the client when submitting a job and after creating is established by the client when submitting a job and after creating
the job using the Create-Job-Subscriptions operation by specifying the job using the Create-Job-Subscriptions operation by specifying
the "job-id" of the Job with the "notify-job-id" attribute. A Per- the "job-id" of the Job with the "notify-job-id" attribute. A Per-
Printer Subscription Object is established between a client and a Printer Subscription Object is established between a client and a
Printer using the Create-Printer-Subscriptions operation. Some Printer using the Create-Printer-Subscriptions operation. Some
specific differences are: specific differences are:
1. A client usually creates one or more Per-Job Subscription 1. A client usually creates one or more Per-Job Subscription Objects
Objects as part of the Job Creation operations (Create-Job, as part of the Job Creation operations (Create-Job, Print-Job, and
Print-Job, and Print-URI), rather than using the OPTIONAL Print-URI), rather than using the OPTIONAL Create-Job-
Create-Job-Subscriptions operation, especially since Printer Subscriptions operation, especially since Printer implementations
implementations NEED NOT support the Create-Job-Subscriptions NEED NOT support the Create-Job-Subscriptions operation, since it
operation, since it is OPTIONAL. is OPTIONAL.
2. For Per-Job Subscription Objects, the Subscription Object is 2. For Per-Job Subscription Objects, the Subscription Object is only
only valid while the job is "not-complete" (see sections 5.4.3) valid while the job is "not-complete" (see sections 5.4.3) while
while for the Per-Printer Subscription Objects, the Subscription for the Per-Printer Subscription Objects, the Subscription Object
Object is valid until the time (in seconds) that the Printer is valid until the time (in seconds) that the Printer returned in
returned in the "notify-lease-expiration-time" operation the "notify-lease-expiration-time" operation attribute.
attribute.
3. Job Events in a Per-Job Subscription Object apply only to "one 3. Job Events in a Per-Job Subscription Object apply only to "one
job" (the Job created by the Job Creation operation or job" (the Job created by the Job Creation operation or references
references by the Create-Job-Subscriptions operation) while Job by the Create-Job-Subscriptions operation) while Job Events in a
Events in a Per-Printer Subscription Object apply to ALL jobs Per-Printer Subscription Object apply to ALL jobs contained in the
contained in the IPP Printer. IPP Printer.
21 Normative References 21. Normative References
[ipp-get-method] [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Herriot, R., and T. Hastings, "Internet Printing Protocol (IPP): Requirement Levels", BCP 14, RFC 2119 , March 1997.
The 'ippget' Delivery Method for Event Notifications", <draft-ietf-
ipp-notify-get-10.txt>, June 21, 2004.
[RFC2119] [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter,
S. Bradner, "Key words for use in RFCs to Indicate Requirement "Uniform Resource Identifiers (URI): Generic
Levels", RFC 2119 , March 1997 Syntax", RFC 2396, August 1998.
[RFC2396] [RFC2717] Petke, R. and I. King, "Registration Procedures for
Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource URL Scheme Names", RFC 2717, November 1999.
Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
[RFC2717] [RFC2910] Herriot, R., Butler, S., Moore, P., and R. Turner,
R. Petke and I. King, "Registration Procedures for URL Scheme "Internet Printing Protocol/1.1: Encoding and
Names", RFC 2717, November 1999. Transport", RFC 2910, September 2000.
[RFC2910] [RFC2911] deBry, R., Hastings, T., Herriot, R., Isaacson, S.,
Herriot, R., Butler, S., Moore, P., and R. Turner, "Internet and P. Powell, "Internet Printing Protocol/1.1:
Printing Protocol/1.1: Encoding and Transport", RFC 2910, September Model and Semantics", RFC 2911, September 2000.
2000.
[RFC2911] [RFC3381] Hastings, T., Lewis, H., and R. Bergman, "IPP: Job
deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. Powell, Progress Attributes", RFC 3381, September 2002.
"Internet Printing Protocol/1.1: Model and Semantics", RFC 2911,
September 2000.
[RFC3381] [RFC3996] Herriot, R., Hastings, T., and H. Lewis, "Internet
Hastings, T., Lewis, H., and R. Bergman, "IPP: Job Progress Printing Protocol (IPP): The 'ippget' Delivery
Attributes", RFC 3381, September 2002. Method for Event Notifications", RFC 3996, March
2005.
22 Informative References 22. Informative References
[IANA-CON] [IANA-CON] Narten, T. and H. Alvestrand, "Guidelines for
Narte, T. and H. Alvestrand, "Guidelines for Writing an IANA Writing an IANA Considerations Section in RFCs",
Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. BCP 26, RFC 2434, October 1998.
[ipp-not-req] [RFC2565] Herriot, R., Butler, S., Moore, P., and R. Turner,
deBry, R., Lewis, H., and T. Hastings, "Internet Printing "Internet Printing Protocol/1.0: Encoding and
Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp- Transport", RFC 2565, April 1999.
not-07.txt>, June 21, 2004.
[RFC2565] [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S.,
Herriot, R., Butler, S., Moore, P., and R. Turner, "Internet and P. Powell, "Internet Printing Protocol/1.0:
Printing Protocol/1.0: Encoding and Transport", RFC 2565, April Model and Semantics", RFC 2566, April 1999.
1999.
[RFC2566] [RFC2567] Wright, D., "Design Goals for an Internet Printing
deBry, R., , Hastings, T., Herriot, R., Isaacson, S., and P. Protocol", RFC 2567, April 1999.
Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC
2566, April 1999.
[RFC2567] [RFC2568] Zilles, S., "Rationale for the Structure and Model
Wright, D., "Design Goals for an Internet Printing Protocol", RFC and Protocol for the Internet Printing Protocol",
2567, April 1999. RFC 2568, April 1999.
[RFC2568] [RFC2569] Herriot, R., Hastings, T., Jacobs, N., and J.
Zilles, S., "Rationale for the Structure and Model and Protocol for Martin, "Mapping between LPD and IPP Protocols",
the Internet Printing Protocol", RFC 2568, April 1999. RFC 2569, April 1999.
[RFC2569] [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
Herriot, R., Hastings, T., Jacobs, N., and J. Martin, "Mapping Masinter, L., Leach, P., and T. Berners-Lee,
between LPD and IPP Protocols", RFC 2569, April 1999. "Hypertext Transfer Protocol - HTTP/1.1", RFC 2616,
June 1999.
[RFC2616] [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C.,
Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., and H. Holst, "Internet Printing Protocol/1.1:
Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol - Implementer's Guide", RFC 3196, November 2001.
HTTP/1.1", RFC 2616, June 1999.
[RFC3196] [RFC3997] Hastings, T., Editor, deBry, R., and H. Lewis,
Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. Holst, "Internet Printing Protocol (IPP): Requirements for
"Internet Printing Protocol/1.1: Implementer's Guide", RFC3196, IPP Notifications", RFC 3997, March 2005.
November 2001.
23 IANA Considerations 23. IANA Considerations
This section contains the registration information for IANA to add to This section contains the registration information that IANA added to
the IPP Registry according to the procedures defined in RFC 2911 the IPP Registry according to the procedures defined in RFC 2911
[RFC2911] section 6 to cover the definitions in this document. In [RFC2911] section 6 to cover the definitions in this document. In
addition, this section defines how Events and Delivery Methods will addition, this section defines how Events and Delivery Methods will
be registered when they are defined in other documents. The be registered when they are defined in other documents. The
resulting registrations will be published in the resulting registrations have been published in the
http://www.iana.org/assignments/ipp-registrations registry. http://www.iana.org/assignments/ipp-registrations registry.
Note to RFC Editors: Replace RFC NNNN below (but not RFC xxxx) 23.1. Attribute Registrations
with the RFC number for this document, so that it accurately
reflects the content of the information for the IANA Registry.
23.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 have been registered according to the procedures in
RFC 2911 [RFC2911] section 6.2. RFC 2911 [RFC2911] section 6.2.
Subscription Template attributes: Reference Section Subscription Template attributes: Reference Section
--------------------------------- --------- ------- --------------------------------- --------- -------
notify-attributes (1setOf type2 keyword) [RFCNNNN] 5.3.4 notify-attributes (1setOf type2 keyword) [RFC3995] 5.3.4
notify-attributes-supported (1setOf type2 keyword) notify-attributes-supported (1setOf type2 keyword)
[RFCNNNN] 5.3.4.1 [RFC3995] 5.3.4.1
notify-charset (charset) [RFCNNNN] 5.3.6 notify-charset (charset) [RFC3995] 5.3.6
notify-events (1setOf type2 keyword) [RFCNNNN] 5.3.3 notify-events (1setOf type2 keyword) [RFC3995] 5.3.3
notify-events-default (1setOf type2 keyword) [RFCNNNN] 5.3.3.1 notify-events-default (1setOf type2 keyword) [RFC3995] 5.3.3.1
notify-events-supported (1setOf type2 keyword) [RFCNNNN] 5.3.3.2 notify-events-supported (1setOf type2 keyword) [RFC3995] 5.3.3.2
notify-lease-duration (integer(0:67108863)) [RFCNNNN] 5.3.8 notify-lease-duration (integer(0:67108863)) [RFC3995] 5.3.8
notify-lease-duration-default (integer(0:67108863)) notify-lease-duration-default (integer(0:67108863))
[RFCNNNN] 5.3.8.1 [RFC3995] 5.3.8.1
notify-lease-duration-supported (1setOf (integer(0: 67108863) | notify-lease-duration-supported (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) [RFCNNNN] 5.3.8.2 rangeOfInteger(0:67108863))) [RFC3995] 5.3.8.2
notify-max-events-supported (integer(2:MAX)) [RFCNNNN] 5.3.3.3 notify-max-events-supported (integer(2:MAX)) [RFC3995] 5.3.3.3
notify-natural-language (naturalLanguage) [RFCNNNN] 5.3.7 notify-natural-language (naturalLanguage) [RFC3995] 5.3.7
notify-pull-method (type2 keyword) [RFCNNNN] 5.3.2 notify-pull-method (type2 keyword) [RFC3995] 5.3.2
notify-pull-method-supported (1setOf type2 keyword) notify-pull-method-supported (1setOf type2 keyword)
[RFCNNNN] 5.3.2.1 [RFC3995] 5.3.2.1
notify-recipient-uri (uri) [RFCNNNN] 5.3.1 notify-recipient-uri (uri) [RFC3995] 5.3.1
notify-schemes-supported (1setOf uriScheme) [RFCNNNN] 5.3.1.1 notify-schemes-supported (1setOf uriScheme) [RFC3995] 5.3.1.1
notify-time-interval (integer(0:MAX)) [RFCNNNN] 5.3.9 notify-time-interval (integer(0:MAX)) [RFC3995] 5.3.9
notify-user-data (octetString(63)) [RFCNNNN] 5.3.5 notify-user-data (octetString(63)) [RFC3995] 5.3.5
Subscription Description Attributes: Subscription Description Attributes:
notify-job-id (integer(1:MAX))) [RFCNNNN] 5.4.6 notify-job-id (integer(1:MAX)) [RFC3995] 5.4.6
notify-lease-expiration-time (integer(0:MAX))) [RFCNNNN] 5.4.3 notify-lease-expiration-time (integer(0:MAX)) [RFC3995] 5.4.3
notify-printer-up-time (integer(1:MAX))) [RFCNNNN] 5.4.4 notify-printer-up-time (integer(1:MAX)) [RFC3995] 5.4.4
notify-printer-uri (uri)) [RFCNNNN] 5.4.5 notify-printer-uri (uri) [RFC3995] 5.4.5
notify-sequence-number (integer (0:MAX))) [RFCNNNN] 5.4.2 notify-sequence-number (integer (0:MAX)) [RFC3995] 5.4.2
notify-subscriber-user-name (name(MAX))) [RFCNNNN] 5.4.7 notify-subscriber-user-name (name(MAX)) [RFC3995] 5.4.7
notify-subscription-id (integer (1:MAX))) [RFCNNNN] 5.4.1 notify-subscription-id (integer (1:MAX)) [RFC3995] 5.4.1
Printer Description Attributes: Printer Description Attributes:
printer-state-change-date-time (dateTime)) [RFCNNNN] 6.2 printer-state-change-date-time (dateTime) [RFC3995] 6.2
printer-state-change-time (integer(1:MAX))) [RFCNNNN] 6.1 printer-state-change-time (integer(1:MAX)) [RFC3995] 6.1
Attributes Only in Event Notifications Attributes Only in Event Notifications
notify-subscribed-event (type2 keyword) [RFCNNNN] 8.1 notify-subscribed-event (type2 keyword) [RFC3995] 8.1
notify-text (text(MAX)) [RFCNNNN] 8.2 notify-text (text(MAX)) [RFC3995] 8.2
23.2 Additional Enum Attribute Value Registrations within the IPP 23.2. Additional Enum Attribute Value Registrations within the IPP
registry registry
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. These are to be registered within the IPP registry in this document. These have been registered within the IPP registry
according to the procedures in RFC 2911 [RFC2911] section 6.1. according to the procedures in RFC 2911 [RFC2911] section 6.1.
Attribute Attribute
Value Name Reference Section Value Name Reference Section
------ ----------------------------- --------- ------- ------ ----------------------------- --------- -------
operations-supported (type2 enum) [RFC2911] 4.4.15 operations-supported (1setOf type2 enum) [RFC2911] 4.4.15
0x0016 Create-Printer-Subscriptions [RFCNNNN] 7.1 0x0016 Create-Printer-Subscriptions [RFC3995] 7.1
0x0017 Create-Job-Subscriptions [RFCNNNN] 7.1 0x0017 Create-Job-Subscriptions [RFC3995] 7.1
0x0018 Get-Subscription-Attributes [RFCNNNN] 7.1 0x0018 Get-Subscription-Attributes [RFC3995] 7.1
0x0019 Get-Subscriptions [RFCNNNN] 7.1 0x0019 Get-Subscriptions [RFC3995] 7.1
0x001A Renew-Subscription [RFCNNNN] 7.1 0x001A Renew-Subscription [RFC3995] 7.1
0x001B Cancel-Subscription [RFCNNNN] 7.1 0x001B Cancel-Subscription [RFC3995] 7.1
23.3 Operation Registrations 23.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 have been registered according to the procedures in
RFC 2911 [RFC2911] section 6.4. RFC 2911 [RFC2911] section 6.4.
Operation Name Reference Section Operation Name Reference Section
--------------------------------- --------- ------- --------------------------------- --------- -------
Cancel-Subscription [RFCNNNN] 11.2.7 Cancel-Subscription [RFC3995] 11.2.7
Create-Job - Extensions [RFCNNNN] 11.1.3 Create-Job - Extensions [RFC3995] 11.1.3
Create-Job-Subscriptions [RFCNNNN] 11.1.1 Create-Job-Subscriptions [RFC3995] 11.1.1
Create-Printer-Subscriptions [RFCNNNN] 11.1.2 Create-Printer-Subscriptions [RFC3995] 11.1.2
Get-Printer-Attributes - Extensions [RFCNNNN] 11.2.3 Get-Printer-Attributes - Extensions [RFC3995] 11.2.3
Get-Subscription-Attributes [RFCNNNN] 11.2.4 Get-Subscription-Attributes [RFC3995] 11.2.4
Get-Subscriptions [RFCNNNN] 11.2.5 Get-Subscriptions [RFC3995] 11.2.5
Print-Job - Extensions [RFCNNNN] 11.1.3 Print-Job - Extensions [RFC3995] 11.1.3
Print-URI - Extensions [RFCNNNN] 11.1.3 Print-URI - Extensions [RFC3995] 11.1.3
Renew-Subscription [RFCNNNN] 11.2.6 Renew-Subscription [RFC3995] 11.2.6
Validate-Job Operation - Extensions [RFCNNNN] 11.2.2 Validate-Job Operation - Extensions [RFC3995] 11.2.2
23.4 Status code Registrations 23.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 have been registered according to the procedures in
RFC 2911 [RFC2911] section 6.6. RFC 2911 [RFC2911] section 6.6.
Value Status Code Name Reference Section Value Status Code Name Reference Section
----- ---------------------------- --------- ------- ----- ---------------------------- --------- -------
0x0000:0x00FF - Successful: 0x0000:0x00FF - Successful:
0x0003 successful-ok-ignored-subscriptions [RFCNNNN] 12.1 0x0003 successful-ok-ignored-subscriptions [RFC3995] 12.1
0x0005 successful-ok-too-many-events [RFC3995] 13.4
0x0400:0x04FF - Client Error: 0x0400:0x04FF - Client Error:
0x0414 client-error-ignored-all-subscriptions [RFCNNNN] 12.2 0x0414 client-error-ignored-all-subscriptions [RFC3995] 12.2
0x0415 client-error-too-many-subscriptions [RFC3995] 13.3
23.5 Attribute Group tag Registrations 23.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 have been registered according to the
procedures in RFC 2911 [RFC2911] section 6.5. procedures in RFC 2911 [RFC2911] section 6.5.
Value Attribute Group Tag Name Reference Section Value Attribute Group Tag Name Reference Section
----- -------------------------------- -------- ------- ----- -------------------------------- -------- -------
0x06 subscription-attributes-tag [RFCNNNN] 14 0x06 subscription-attributes-tag [RFC3995] 14
0x07 event-notification-attributes-tag [RFCNNNN] 14 0x07 event-notification-attributes-tag [RFC3995] 14
23.6 Registration of Events 23.6. Registration of Events
The following table lists all the Events defined in this document as The following table lists all the Events defined in this document as
type2 keywords to be used with the "notify-events", "notify-events- type2 keywords to be used with the "notify-events", "notify-events-
default", and "notify-events-supported" Subscription Template default", and "notify-events-supported" Subscription Template
attributes (see section 5.3.3)). Rather than creating a separate attributes (see section 5.3.3)). Rather than creating a separate
section in the IPP Registry for Events, these event keywords will be section in the IPP Registry for Events, these event keywords have
registered according to the procedures of [RFC2911] section 7.1 as been registered according to the procedures of [RFC2911] section 7.1
additional keyword attribute values for use with the "notify-events" as additional keyword attribute values for use with the "notify-
Subscription Template attribute (see section 5.3.3), i.e., registered events" Subscription Template attribute (see section 5.3.3), i.e.,
as keyword values for the "notify-events", "notify-events-default", registered as keyword values for the "notify-events", "notify-
and "notify-events-supported" attributes: events-default", and "notify-events-supported" attributes:
Attribute (attribute syntax) Attribute (attribute syntax)
Value Reference Section Value Reference Section
--------------------- --------- ------- --------------------- --------- -------
notify-events (1setOf type2 keyword) [RFCNNNN] 5.3.3 notify-events (1setOf type2 keyword) [RFC3995] 5.3.3
notify-events-default (1setOf type2 keyword) [RFCNNNN] 5.3.3.1 notify-events-default (1setOf type2 keyword) [RFC3995] 5.3.3.1
notify-events-supported (1setOf type2 keyword) [RFCNNNN] 5.3.3.2 notify-events-supported (1setOf type2 keyword) [RFC3995] 5.3.3.2
notify-subscribed-event (type2 keyword) [RFCNNNN] 8.1 notify-subscribed-event (type2 keyword) [RFC3995] 8.1
No Events: No Events:
none [RFCNNNN] 5.3.3.4.1 none [RFC3995] 5.3.3.4.1
Printer Events: Printer Events:
printer-state-changed [RFCNNNN] 5.3.3.4.2 printer-state-changed [RFC3995] 5.3.3.4.2
printer-restarted [RFCNNNN] 5.3.3.4.2 printer-restarted [RFC3995] 5.3.3.4.2
printer-shutdown [RFCNNNN] 5.3.3.4.2 printer-shutdown [RFC3995] 5.3.3.4.2
printer-stopped [RFCNNNN] 5.3.3.4.2 printer-stopped [RFC3995] 5.3.3.4.2
printer-config-changed [RFCNNNN] 5.3.3.4.2 printer-config-changed [RFC3995] 5.3.3.4.2
printer-media-changed [RFCNNNN] 5.3.3.4.2 printer-media-changed [RFC3995] 5.3.3.4.2
printer-finishings-changed [RFCNNNN] 5.3.3.4.2 printer-finishings-changed [RFC3995] 5.3.3.4.2
printer-queue-order-changed [RFCNNNN] 5.3.3.4.2 printer-queue-order-changed [RFC3995] 5.3.3.4.2
Job Events: Job Events:
job-state-changed [RFCNNNN] 5.3.3.4.3 job-state-changed [RFC3995] 5.3.3.4.3
job-created [RFCNNNN] 5.3.3.4.3 job-created [RFC3995] 5.3.3.4.3
job-completed [RFCNNNN] 5.3.3.4.3 job-completed [RFC3995] 5.3.3.4.3
job-stopped [RFCNNNN] 5.3.3.4.3 job-stopped [RFC3995] 5.3.3.4.3
job-config-changed [RFCNNNN] 5.3.3.4.3 job-config-changed [RFC3995] 5.3.3.4.3
job-progress [RFCNNNN] 5.3.3.4.3 job-progress [RFC3995] 5.3.3.4.3
23.7 Registration of Event Notification Delivery Methods 23.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.
23.7.1 Requirements for Registration of Event Notification Delivery 23.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.
23.7.1.1 Required Characteristics 23.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). The that in combination is the Delivery Method (e.g., mailto). The
Delivery Method Document (and any documents it requires) MUST define Delivery Method Document (and any documents it requires) MUST define
either (1) a URL for a Push Delivery Method that the meets the either (1) a URL for a Push Delivery Method that the meets the
requirements of [RFC2717]. or (2) a keyword for a Pull Delivery requirements of [RFC2717]. or (2) a keyword for a Pull Delivery
method. 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:
Is this delivery method REQUIRED or OPTIONAL for conformance to the
IPP Event Notification and Subscriptions document:
Is this delivery method defining Machine Consumable and/or Human
Consumable content:
23.7.1.2 Naming Requirements Email address of proposer:
Is this delivery method REQUIRED or OPTIONAL for conformance to
the IPP Event Notification and Subscriptions document:
Is this delivery method defining Machine Consumable and/or Human
Consumable content:
23.7.1.2. Naming Requirements
Exactly one (URL scheme or keyword) name MUST be assigned to each 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].
23.7.1.3 Functionality Requirements 23.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.
23.7.1.4 Usage and Implementation Requirements 23.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 unlabeled 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.
23.7.1.5 Publication Requirements 23.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.
23.7.2 Registration Procedure 23.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.
23.7.2.1 Present the proposal to the Community 23.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.
Deliver the proposed Delivery Method Document proposal to the Deliver 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.
23.7.2.2 Delivery Method Reviewer 23.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.
23.7.2.3 IANA Registration 23.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 be notified by the delivery method reviewer and asked to will be notified by the delivery method reviewer and asked to
register the Delivery Method and make it available to the community. register the Delivery Method and make it available to the community.
23.7.3 Delivery Method Document Registrations 23.7.3. Delivery Method Document Registrations
Each Push Delivery Method Document defines a URI scheme. Such a URI Each Push Delivery Method Document defines a URI scheme. Such a URI
scheme is used in a URI value of the "notification-recipient" (uri) scheme is used in a URI value of the "notification-recipient" (uri)
Subscription Template attribute (see section 5.3.1) and the uriScheme Subscription Template attribute (see section 5.3.1) and the uriScheme
value of the "notify-schemes-supported" (1setOf uriScheme 5.3.1.1) value of the "notify-schemes-supported" (1setOf uriScheme 5.3.1.1)
Printer attribute(see section ). Rather than creating a separate Printer attribute(see section ). Rather than creating a separate
section in the IPP Registry for Delivery Methods, Push Delivery section in the IPP Registry for Delivery Methods, Push Delivery
Methods will be registered as an additional value of the "notify- Methods will be registered as an additional value of the "notify-
schemes-supported" Printer attribute. These uriScheme values will be schemes-supported" Printer attribute. These uriScheme values will be
registered according to the procedures of [RFC2911] section 7.1 for registered according to the procedures of [RFC2911] section 7.1 for
additional attribute values. Therefore, the IPP Registry entry for a additional attribute values. Therefore, the IPP Registry entry for a
Push Delivery Method will be of the form: Push Delivery Method will be of the form:
Attribute Attribute
Value Ref. Section Value Ref. Section
--------------------- -------- ------- --------------------- -------- -------
notify-schemes-supported (1setOf uriScheme) RFC xxxx 5.3.1.1 notify-schemes-supported (1setOf uriScheme) [RFC3995] 5.3.1.1
<scheme name> RFC xxxx m.n <scheme name> RFC xxxx m.n
Each Pull Delivery Method Document defines a keyword method which is Each Pull Delivery Method Document defines a keyword method which is
registered as an additional value of the "notify-pull-method" and registered as an additional value of the "notify-pull-method" and
"notify-pull-method-supported" Printer attributes. These keyword "notify-pull-method-supported" Printer attributes. These keyword
values will be registered according to the procedures of [RFC2911] values will be registered according to the procedures of [RFC2911]
section 7.1 for additional attribute values. Therefore, the IPP section 7.1 for additional attribute values. Therefore, the IPP
Registry entry for a Pull Delivery Method will be of the form: Registry entry for a Pull Delivery Method will be of the form:
Attribute Attribute
Value Ref. Section Value Ref. Section
--------------------- -------- ------- --------------------- -------- -------
notify-pull-method (type2 keyword) [ipp-ntfy] 5.3.2 notify-pull-method (type2 keyword) [RFC3995] 5.3.2
notify-pull-method-supported (1setOf type2 keyword) notify-pull-method-supported (1setOf type2 keyword)
[ipp-ntfy] 5.3.2.1 [RFC3995] 5.3.2.1
<method keyword name> RFC xxxx m.n <method keyword name> RFC xxxx m.n
23.7.4 Registration Template 23.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])
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:
24 Intellectual Property 24. Internationalization Considerations
The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in RFC 2028. Copies of
claims of rights made available for publication and any assurances of
licenses to be made available, or the result of an attempt made to
obtain a general license or permission for the use of such
proprietary rights by implementers or users of this specification can
be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
25 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 delivers attribute in Machine Consumable Event Notifications that it delivers
to Notification Recipients. For localization, the Printer MUST use to Notification Recipients. For localization, the Printer MUST use
the value of the "notify-charset" attribute and the "notify-natural- the 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.
26 Security Considerations 25. Security Considerations
Clients submitting Notification requests to the IPP Printer have the Clients submitting Notification requests to the IPP Printer have the
same security issues as submitting an IPP/1.1 print job request (see 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 [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. IPP/1.1 can therefore be used by the client Notification submission.
Operations that require authentication can use the HTTP Operations that require authentication can use the HTTP
authentication. Operations that require privacy can use the HTTP/TLS authentication. Operations that require privacy can use the HTTP/TLS
privacy. As with IPP/1.1 Print Job Objects, if there is no security privacy. As with IPP/1.1 Print Job Objects, if there is no security
on Subscription Objects, sequential assignment of subscription-ids on Subscription Objects, sequential assignment of subscription-ids
exposes the system to a passive traffic monitoring threat. exposes the system to a passive traffic monitoring threat.
26.1 Client access rights 25.1. Client access rights
The Subscription Object access control model is the same as the The Subscription Object access control model is the same as the
access control model for Job objects. The client MUST have the access control model for Job objects. The client MUST have the
following access rights for the indicated Subscription operations: following access rights for the indicated Subscription operations:
1. Create-Job-Subscriptions (see section 11.1.1): A Per-Job 1. Create-Job-Subscriptions (see section 11.1.1): A Per-Job
Subscription object is associated with a Job. To create Per-Job Subscription object is associated with a Job. To create Per-Job
Subscription Objects, the authenticated user (see [RFC2911] Subscription Objects, the authenticated user (see [RFC2911]
section 8.3) performing this operation MUST (1) be the job section 8.3) performing this operation MUST (1) be the job owner,
owner, (2) have Operator or Administrator access rights for this (2) have Operator or Administrator access rights for this Printer
Printer (see [RFC2911] sections 1 and 8.5), or (3) be otherwise (see [RFC2911] sections 1 and 8.5), or (3) be otherwise authorized
authorized by the Printer's administrator-configured security by the Printer's administrator-configured security policy to
policy to create Per-Job Subscription Objects for the target create Per-Job Subscription Objects for the target job.
job.