< draft-ietf-ipp-not-spec-11.txt   draft-ietf-ipp-not-spec-12.txt >
Internet Printing Protocol WG R. Herriot Internet Printing Protocol WG R. Herriot
INTERNET-DRAFT consultant INTERNET-DRAFT Global Workflow Solutions
<draft-ietf-ipp-not-spec-11.txt> T. Hastings <draft-ietf-ipp-not-spec-12.txt> T. Hastings
Updates RFC 2910 and 2911 Xerox Corporation Updates RFC 2910 and 2911 Xerox Corporation
[Target Category: standards track] February 21, 2003 [Target Category: standards track] June 21, 2004
Expires: August 21, 2003 Expires: December 21, 2004
Internet Printing Protocol (IPP): Internet Printing Protocol (IPP):
Event Notifications and Subscriptions Event Notifications and Subscriptions
Copyright (C) The Internet Society (2003). All Rights Reserved. Copyright (C) The Internet Society (2004). All Rights Reserved.
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC 2026. Internet-Drafts are all provisions of Section 10 of RFC 2026. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its working documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
skipping to change at page 2, line 29 skipping to change at page 2, line 29
4.1 Printer and Per-Printer Subscription Objects..................14 4.1 Printer and Per-Printer Subscription Objects..................14
4.2 Printer, Job and Per-Job Subscription Objects.................14 4.2 Printer, Job and Per-Job Subscription Objects.................14
5 Subscription Object.............................................15 5 Subscription Object.............................................15
5.1 Rules for Support of Subscription Template Attributes.........15 5.1 Rules for Support of Subscription Template Attributes.........15
5.2 Rules for Processing Subscription Template Attributes.........16 5.2 Rules for Processing Subscription Template Attributes.........16
5.3 Subscription Template Attributes..............................20 5.3 Subscription Template Attributes..............................20
5.3.1 notify-recipient-uri (uri)..................................22 5.3.1 notify-recipient-uri (uri)..................................22
5.3.1.1 notify-schemes-supported (1setOf uriScheme)..............23 5.3.1.1 notify-schemes-supported (1setOf uriScheme)..............23
5.3.2 notify-pull-method (type2 keyword)..........................23 5.3.2 notify-pull-method (type2 keyword)..........................23
5.3.2.1 notify-pull-method-supported (1setOf type2 keyword).......24 5.3.2.1 notify-pull-method-supported (1setOf type2 keyword).......23
5.3.3 notify-events (1setOf type2 keyword)........................24 5.3.3 notify-events (1setOf type2 keyword)........................24
5.3.3.1 notify-events-default (1setOf type2 keyword)..............24 5.3.3.1 notify-events-default (1setOf type2 keyword)..............24
5.3.3.2 notify-events-supported (1setOf type2 keyword)............25 5.3.3.2 notify-events-supported (1setOf type2 keyword)............24
5.3.3.3 notify-max-events-supported (integer(2:MAX))..............25 5.3.3.3 notify-max-events-supported (integer(2:MAX))..............24
5.3.3.4 Standard Values for Subscribed Events.....................25 5.3.3.4 Standard Values for Subscribed Events.....................25
5.3.3.4.1 No Events...............................................25 5.3.3.4.1 No Events...............................................25
5.3.3.4.2 Subscribed Printer Events...............................26 5.3.3.4.2 Subscribed Printer Events...............................25
5.3.3.4.3 Subscribed Job Events...................................27 5.3.3.4.3 Subscribed Job Events...................................27
5.3.3.5 Rules for Matching of Subscribed Events...................28 5.3.3.5 Rules for Matching of Subscribed Events...................28
5.3.3.5.1 Rules for Matching of Printer Events....................29 5.3.3.5.1 Rules for Matching of Printer Events....................28
5.3.3.5.2 Rules for Matching of Job Events........................29 5.3.3.5.2 Rules for Matching of Job Events........................28
5.3.3.5.3 Special Cases for Matching Rules........................30 5.3.3.5.3 Special Cases for Matching Rules........................29
5.3.4 notify-attributes (1setOf type2 keyword)....................31 5.3.4 notify-attributes (1setOf type2 keyword)....................30
5.3.4.1 notify-attributes-supported (1setOf type2 keyword)........32 5.3.4.1 notify-attributes-supported (1setOf type2 keyword)........32
5.3.5 notify-user-data (octetString(63))..........................32 5.3.5 notify-user-data (octetString(63))..........................32
5.3.6 notify-charset (charset)....................................33 5.3.6 notify-charset (charset)....................................32
5.3.7 notify-natural-language (naturalLanguage)...................33 5.3.7 notify-natural-language (naturalLanguage)...................33
5.3.8 notify-lease-duration (integer(0:67108863)).................34 5.3.8 notify-lease-duration (integer(0:67108863)).................33
5.3.8.1 notify-lease-duration-default (integer(0:67108863)).......35 5.3.8.1 notify-lease-duration-default (integer(0:67108863)).......34
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)))....................................35 | rangeOfInteger(0:67108863)))....................................35
5.3.9 notify-time-interval (integer(0:MAX)).......................35 5.3.9 notify-time-interval (integer(0:MAX)).......................35
5.4 Subscription Description Attributes...........................36 5.4 Subscription Description Attributes...........................36
5.4.1 notify-subscription-id (integer (1:MAX))...................37 5.4.1 notify-subscription-id (integer (1:MAX))...................36
5.4.2 notify-sequence-number (integer (0:MAX))....................37 5.4.2 notify-sequence-number (integer (0:MAX))....................37
5.4.3 notify-lease-expiration-time (integer(0:MAX))...............38 5.4.3 notify-lease-expiration-time (integer(0:MAX))...............37
5.4.4 notify-printer-up-time (integer(1:MAX)).....................39 5.4.4 notify-printer-up-time (integer(1:MAX)).....................38
5.4.5 notify-printer-uri (uri)....................................39 5.4.5 notify-printer-uri (uri)....................................39
5.4.6 notify-job-id (integer(1:MAX))..............................40 5.4.6 notify-job-id (integer(1:MAX))..............................39
5.4.7 notify-subscriber-user-name (name(MAX)).....................40 5.4.7 notify-subscriber-user-name (name(MAX)).....................40
6 Printer Description Attributes Related to Notification..........41 6 Printer Description Attributes Related to Notification..........40
6.1 printer-state-change-time (integer(1:MAX))....................41 6.1 printer-state-change-time (integer(1:MAX))....................40
6.2 printer-state-change-date-time (dateTime).....................41 6.2 printer-state-change-date-time (dateTime).....................41
7 New Values for Existing Printer Description Attributes..........42 7 New Values for Existing Printer Description Attributes..........41
7.1 operations-supported (1setOf type2 enum)......................42 7.1 operations-supported (1setOf type2 enum)......................41
8 Attributes Only in Event Notifications..........................42 8 Attributes Only in Event Notifications..........................42
8.1 notify-subscribed-event (type2 keyword).......................43 8.1 notify-subscribed-event (type2 keyword).......................42
8.2 notify-text (text(MAX)).......................................43 8.2 notify-text (text(MAX)).......................................42
9 Event Notification Content......................................43 9 Event Notification Content......................................43
9.1 Content of Machine Consumable Event Notifications.............46 9.1 Content of Machine Consumable Event Notifications.............46
9.1.1 Event Notification Content Common to All Events.............47 9.1.1 Event Notification Content Common to All Events.............46
9.1.2 Additional Event Notification Content for Job Events........49 9.1.2 Additional Event Notification Content for Job Events........47
9.1.3 Additional Event Notification Content for Printer Events....50 9.1.3 Additional Event Notification Content for Printer Events....48
9.2 Content of Human Consumable Event Notification................50 9.2 Content of Human Consumable Event Notification................48
9.2.1 Event Notification Content Common to All Events.............51 9.2.1 Event Notification Content Common to All Events.............49
9.2.2 Additional Event Notification Content for Job Events........53 9.2.2 Additional Event Notification Content for Job Events........51
9.2.3 Additional Event Notification Content for Printer Events....54 9.2.3 Additional Event Notification Content for Printer Events....51
10 Delivery Methods...............................................54
11 Operations for Notification....................................57
11.1 Subscription Creation Operations.............................57
11.1.1 Create-Job-Subscriptions Operation.........................57
11.1.1.1 Create-Job-Subscriptions Request.........................58
11.1.1.1.1 notify-job-id (integer(1:MAX)).........................58
11.1.1.2 Create-Job-Subscriptions Response........................59
11.1.2 Create-Printer-Subscriptions operation.....................60
11.1.2.1 Create-Printer-Subscriptions Request.....................60
11.1.2.2 Create-Printer-Subscriptions Response....................61
11.1.3 Job Creation Operations - Extensions for Notification......61
11.1.3.1 Job Creation Request.....................................62
11.1.3.2 Job Creation Response....................................62
11.2 Other Operations.............................................63
11.2.1 Restart-Job Operation - Extensions for Notification........63
11.2.2 Validate-Job Operation - Extensions for Notification.......64
11.2.3 Get-Printer-Attributes - Extensions for Notification.......64
11.2.4 Get-Subscription-Attributes operation......................65
11.2.4.1 Get-Subscription-Attributes Request......................65
11.2.4.1.1 "notify-subscription-id" (integer (1:MAX)).............66
11.2.4.1.2 "requested-attributes" (1setOf keyword)................66
11.2.4.2 Get-Subscription-Attributes Response.....................66
11.2.5 Get-Subscriptions operation................................68
11.2.5.1 Get-Subscriptions Request................................68
11.2.5.1.1 "notify-job-id" (integer(1:MAX)).......................69
11.2.5.1.2 "limit" (integer(1:MAX))...............................69
11.2.5.1.3 "requested-attributes" (1setOf type2 keyword)..........69
11.2.5.1.4 "my-subscriptions" (boolean)...........................70
11.2.5.2 Get-Subscriptions Response...............................70
11.2.6 Renew-Subscription operation...............................71
11.2.6.1 Renew-Subscription Request...............................71
11.2.6.1.1 "notify-subscription-id" (integer (1:MAX)).............72
11.2.6.1.2 "notify-lease-duration" (integer(0:MAX))...............72
11.2.6.2 Renew-Subscription Response..............................72
11.2.6.2.1 "notify-lease-duration" (integer(0:MAX))...............73
11.2.7 Cancel-Subscription operation..............................73
11.2.7.1 Cancel-Subscription Request..............................74
11.2.7.1.1 "notify-subscription-id" (integer (1:MAX)).............74
11.2.7.2 Cancel-Subscription Response.............................75
12 Status Codes...................................................75 10 Delivery Methods...............................................52
12.1 successful-ok-ignored-subscriptions (0x0003).................75
12.2 client-error-ignored-all-subscriptions (0x0414)..............76
13 Status Codes in Subscription Attributes Groups.................76 11 Operations for Notification....................................54
13.1 client-error-uri-scheme-not-supported (0x040C)...............76 11.1 Subscription Creation Operations.............................54
13.2 client-error-attributes-or-values-not-supported (0x040B).....77 11.1.1 Create-Job-Subscriptions Operation.........................54
13.3 client-error-too-many-subscriptions (0x0415).................77 11.1.1.1 Create-Job-Subscriptions Request.........................55
13.4 successful-ok-too-many-events (0x0005).......................77 11.1.1.1.1 notify-job-id (integer(1:MAX)).........................55
13.5 successful-ok-ignored-or-substituted-attributes (0x0001).....77 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
14 Encodings of Additional Attribute Tags.........................77 12 Status Codes...................................................72
12.1 successful-ok-ignored-subscriptions (0x0003).................73
12.2 client-error-ignored-all-subscriptions (0x0414)..............73
15 Conformance Requirements.......................................78 13 Status Codes in Subscription Attributes Groups.................73
15.1 Conformance requirements for clients.........................78 13.1 client-error-uri-scheme-not-supported (0x040C)...............74
15.2 Conformance requirements for Printers........................78 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
16 Appendix A - Model for Notification with Cascading Printers 14 Encodings of Additional Attribute Tags.........................74
(Informative).....................................................79
17 Appendix B - Distributed Model for Notification (Informative)..81 15 Conformance Requirements.......................................75
15.1 Conformance requirements for clients.........................75
15.2 Conformance requirements for Printers........................75
18 Appendix C - Extended Notification Recipient (Informative).....82 16 Model for Notification with Cascading Printers (Informative)...76
19 Appendix D - Details about Conformance Terminology (Normative).83 17 Distributed Model for Notification (Informative)...............77
20 Appendix E - Object Model for Notification (Normative).........83 18 Extended Notification Recipient (Informative)..................78
20.1 Object relationships.........................................84
20.2 Printer Object and Per-Printer Subscription Objects..........85
20.3 Job Object and Per-Job Subscription Objects..................85
21 Appendix F - Per-Job versus Per-Printer Subscription Objects 19 Object Model for Notification (Normative)......................79
(Normative).......................................................85 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
22 Normative References...........................................86 21 Normative References...........................................82
23 Informative References.........................................87 22 Informative References.........................................83
24 IANA Considerations............................................87 23 IANA Considerations............................................83
24.1 Attribute Registrations......................................88 23.1 Attribute Registrations......................................84
24.2 Additional Enum Attribute Value Registrations................89 23.2 Additional Enum Attribute Value Registrations within the IPP
24.3 Operation Registrations......................................89 registry..........................................................85
24.4 Status code Registrations....................................90 23.3 Operation Registrations......................................85
24.5 Attribute Group tag Registrations............................90 23.4 Status code Registrations....................................86
24.6 Registration of Events.......................................90 23.5 Attribute Group tag Registrations............................86
24.7 Registration of Event Notification Delivery Methods..........91 23.6 Registration of Events.......................................86
24.7.1 Requirements for Registration of Event Notification Delivery 23.7 Registration of Event Notification Delivery Methods..........87
Methods................................................91 23.7.1 Requirements for Registration of Event Notification Delivery
24.7.1.1 Required Characteristics.................................91 Methods................................................87
24.7.1.2 Naming Requirements......................................92 23.7.1.1 Required Characteristics.................................87
24.7.1.3 Functionality Requirements...............................92 23.7.1.2 Naming Requirements......................................88
24.7.1.4 Usage and Implementation Requirements....................92 23.7.1.3 Functionality Requirements...............................88
24.7.1.5 Publication Requirements.................................93 23.7.1.4 Usage and Implementation Requirements....................88
24.7.2 Registration Procedure.....................................93 23.7.1.5 Publication Requirements.................................89
24.7.2.1 Present the proposal to the Community....................93 23.7.2 Registration Procedure.....................................89
24.7.2.2 Delivery Method Reviewer.................................93 23.7.2.1 Present the proposal to the Community....................89
24.7.2.3 IANA Registration........................................94 23.7.2.2 Delivery Method Reviewer.................................89
24.7.3 Delivery Method Document Registrations.....................94 23.7.2.3 IANA Registration........................................90
24.7.4 Registration Template......................................95 23.7.3 Delivery Method Document Registrations.....................90
23.7.4 Registration Template......................................91
25 Intellectural Property.........................................95 24 Intellectual Property..........................................91
26 Internationalization Considerations............................96 25 Internationalization Considerations............................92
27 Security Considerations........................................96 26 Security Considerations........................................92
27.1 Client access rights.........................................96 26.1 Client access rights.........................................92
27.2 Printer security threats.....................................98 26.2 Printer security threats.....................................94
27.3 Notification Recipient security threats......................98 26.3 Notification Recipient security threats......................94
28 Contributors...................................................99 27 Contributors...................................................95
29 Author's Addresses............................................100 28 Author's Addresses.............................................96
30 Appendix G - Description of the base IPP documents (Informative) 29 Description of the base IPP documents (Informative)............96
101
31 Appendix H - Full Copyright Statement (Informative)...........102 30 Full Copyright Statement.......................................97
Tables Tables
Table 1 - Subscription Template Attributes........................22 Table 1 - Subscription Template Attributes........................22
Table 2 - Subscription Description Attributes.....................37 Table 2 - Subscription Description Attributes.....................36
Table 3 - Printer Description Attributes Associated with Notification Table 3 - Printer Description Attributes Associated with Notification
..............................................................41 ..............................................................40
Table 4 - Operation-id assignments................................42 Table 4 - Operation-id assignments................................42
Table 5 - Attributes in Event Notification Content................48 Table 5 - Attributes in Event Notification Content................47
Table 6 - Additional Event Notification Content for Job Events....49 Table 6 - Additional Event Notification Content for Job Events....48
Table 7 - Combinations of Events and Subscribed Events for "job- Table 7 - Combinations of Events and Subscribed Events for "job-
impressions-completed" ........................................49 impressions-completed"........................................48
Table 8 - Additional Event Notification Content for Printer Events50 Table 8 - Additional Event Notification Content for Printer Events48
Table 9 - Printer Name in Event Notification Content..............52 Table 9 - Printer Name in Event Notification Content..............50
Table 10 - Event Name in Event Notification Content...............52 Table 10 - Event Name in Event Notification Content...............50
Table 11 - Event Time in Event Notification Content...............52 Table 11 - Event Time in Event Notification Content...............50
Table 12 - Job Name in Event Notification Content.................53 Table 12 - Job Name in Event Notification Content.................51
Table 13 - Job State in Event Notification Content................53 Table 13 - Job State in Event Notification Content................51
Table 14 - Printer State in Event Notification Content............54 Table 14 - Printer State in Event Notification Content............52
Table 15 - Information about the Delivery Method..................55 Table 15 - Information about the Delivery Method..................53
Table 16 - Printer Conformance Requirements for Operations........79 Table 16 - Printer Conformance Requirements for Operations........76
Figures Figures
Figure 1 - Model for Notification.................................10 Figure 1 - Model for Notification.................................10
Figure 2 - Model for Notification with Cascading Printers.........80 Figure 2 - Model for Notification with Cascading Printers.........77
Figure 3 - Opaque Use of a Notification Server Transparent to the Figure 3 - Opaque Use of a Notification Server Transparent to the
Client ........................................................81 Client........................................................78
Figure 4 - Use of an Extended Notification Recipient transparent to Figure 4 - Use of an Extended Notification Recipient transparent to
the Printer ...................................................82 the Printer...................................................79
Figure 5 - Object Model for Notification..........................84 Figure 5 - Object Model for Notification..........................80
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 30 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 [ipp-not-req]:
Internet Printing Protocol (IPP): "Job Progress Attributes" Internet Printing Protocol (IPP): "Job Progress Attributes"
[RFC3381] [RFC3381]
Internet Printing Protocol (IPP): "The 'ippget' Delivery Method Internet Printing Protocol (IPP): "The 'ippget' Delivery Method
for Event Notifications" [ipp-get-method] for Event Notifications" [ipp-get-method]
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 [ipp-get-method]. Conforming client
and Printer implementations MAY support additional Push or Pull and Printer implementations MAY support additional Push or Pull
Delivery Methods as well. Note: this document does not define any Delivery Methods as well. Note: this document does not define any
Delivery Methods itself, but it does define the rules for conformance Delivery Methods itself, but it does define the rules for conformance
for Delivery Method Documents and their registration with IANA (see for Delivery Method Documents and their registration with IANA (see
section 24.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
skipping to change at page 7, line 50 skipping to change at page 7, line 50
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 2. The address (URL) of one Notification Recipient for a Push
Delivery Method or the method for a Pull Delivery Method. Delivery Method or the method for a Pull Delivery Method.
3.The Delivery Method (i.e., the protocol) which the Printer uses 3. The Delivery Method (i.e., the protocol) which the Printer uses
to deliver the Event Notification. to deliver the Event Notification.
4.Some opaque data that the Printer delivers to the Notification 4. Some opaque data that the Printer delivers to the Notification
Recipient in the Event Notification. For example, the Recipient in the Event Notification. For example, the
Notification Recipient might use this opaque data as a Notification Recipient might use this opaque data as a
forwarding address for the Event Notification. forwarding address for the Event Notification.
5.The charset to use in text fields within an 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 6. The natural language to use in the text fields of the Event
Notification Notification
7.The requested lease time in seconds for the Subscription Object 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 10, line 7 skipping to change at page 10, line 10
- 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 deletes the Per-Printer Subscription Object or (2) thereby deletes the Per-Printer Subscription Object or (2)
deletes the Per-Job Subscription Object. deletes the 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: b) either:
i) If the Delivery Method is a Push Delivery Method as i) If the Delivery Method is a Push Delivery Method as
indicated by the presence of the Subscription Object's indicated by the presence of the Subscription Object's
"notify-recipient-uri" attribute, delivers the Event "notify-recipient-uri" attribute, delivers the Event
Notification using the Delivery Method and target address Notification using the Delivery Method and target address
identified in the Subscription Object's "notify-recipient- identified in the Subscription Object's "notify-recipient-
uri" attribute, OR uri" attribute, OR
ii) If the Delivery Method is a Pull Delivery Method as ii) If the Delivery Method is a Pull Delivery Method as
indicated by the presence of the Subscription Object's indicated by the presence of the Subscription Object's
"notify-pull-method" attribute, saves Event Notification "notify-pull-method" attribute, saves Event Notification
for a time period called the Event Life defined by the for a time period called the Event Life defined by the
skipping to change at page 10, line 47 skipping to change at page 10, line 50
embedded printer: embedded printer:
output device or server output device or server
PDA, desktop, or server +---------------+ PDA, desktop, or server +---------------+
+--------+ | ########### | +--------+ | ########### |
| client |-----Subscription ---------># Printer # | | client |-----Subscription ---------># Printer # |
+--------+ Creation Operation | # Object # | +--------+ Creation Operation | # Object # |
+------------+ | #####|##### | +------------+ | #####|##### |
|Notification| +-------|-------+ |Notification| +-------|-------+
|Recipient |<----IPP Event Notifications----+ |Recipient |<----IPP Event Notifications----+
+------------+ (Job and/or Printer Events) +------------+ (Job and/or Printer Events)
Figure 1 - Model for Notification Figure 1 - Model for Notification
2.2 Additional Models for Notification (Informative) 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..
See Appendix 19 for complete details.
Note: a feature that is OPTIONAL in this document becomes REQUIRED if Note: a feature that is OPTIONAL in this document becomes REQUIRED if
the Printer implements a Delivery Method that REQUIRES the feature. the Printer implements a Delivery Method that REQUIRES the feature.
READ-ONLY - an adjective used in an attribute definition to indicate READ-ONLY - an adjective used in an attribute definition to indicate
that an IPP Printer MUST NOT allow the attribute's value to be that an IPP Printer MUST NOT allow the attribute's value to be
modified. modified.
3.2 Other Terminology 3.2 Other Terminology
skipping to change at page 14, line 28 skipping to change at page 14, line 28
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 20. 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 and default values for the Subscription Object supported 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 this document calls such attributes "notify-xxx". and 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-default", "notify-events-supported" and "notify-max- events-default", "notify-events-supported" and "notify-max-
events-supported". events-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, then the Printer MUST NOT support any associated "notify-yyy" 1, 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 shows that if the Printer doesn't support "notify-events", it 1 shows that if the Printer doesn't support "notify-events", it
MUST NOT support "notify-events-default", "notify-events- MUST NOT support "notify-events-default", "notify-events-
supported" and "notify-max-events-supported". Note this rule supported" and "notify-max-events-supported". Note this rule
does not apply to attributes whose names do not start with the does not apply to attributes whose names do not start with the
string "notify-" and are thus defined in another object and used string "notify-" and 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" attribute that specifies the supported values for supported" attribute that specifies the supported values for
"notify-xxx". Column 2 of Table 1 specifies the name of each "notify-xxx". Column 2 of Table 1 specifies the name of each
"yyy-supported" attribute. The naming rules of IPP/1.1 (see "yyy-supported" attribute. The naming rules of IPP/1.1 (see
[RFC2911]) are used when "yyy-supported" is "notify-xxx- [RFC2911]) are used when "yyy-supported" is "notify-xxx-
supported". supported".
6.Some "notify-xxx" attributes have a corresponding "notify-xxx- 6. Some "notify-xxx" attributes have a corresponding "notify-xxx-
default" attribute that specifies the value for "notify-xxx" if default" attribute that specifies the value for "notify-xxx" if
the client does not supply it. Column 2 of Table 1 specifies the client does not supply it. Column 2 of Table 1 specifies
the name of each "notify-xxx-default" attribute. The naming the name of each "notify-xxx-default" attribute. The naming
rules of IPP/1.1 (see [RFC2911]) are used. rules of IPP/1.1 (see [RFC2911]) are used.
If a client wishes to present an end user with a list of supported If a client wishes to present an end user with a list of supported
values from which to choose, the client SHOULD query the Printer for values from which to choose, the client SHOULD query the Printer for
its supported value attributes. The client SHOULD also query the its supported value attributes. The client SHOULD also query the
default value attributes. If the client then limits selectable default value attributes. If the client then limits selectable
values to only those values that are supported, the client can values to only those values that are supported, the client can
skipping to change at page 17, line 13 skipping to change at page 17, line 13
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 the
response with the 'unsupported' out-of-band value. response with the 'unsupported' out-of-band value.
Note: The rules of this step are the same as for Unsupported Note: The rules of this step are the same as for Unsupported
Attributes [RFC2911] section 3.1.7. except that the unsupported Attributes [RFC2911] section 3.1.7. except that the unsupported
attributes are returned in the Subscription Attributes Group attributes are returned in the Subscription Attributes Group
rather than the Unsupported Attributes Group because Subscription rather than the Unsupported Attributes Group because Subscription
Creation Operations can create more than one Subscription Object). 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:
c) the status code 'client-error-bad-request' AND a)the status code 'client-error-bad-request' AND
d) 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" attribute
in a section 5.3. For some attributes, the "notify-xxx" is in a section 5.3. For some attributes, the "notify-xxx" is
populated with the value of some other attribute, and for populated with the value of some other attribute, and for
others, the "notify-xxx" is NOT populated on the Subscription others, the "notify-xxx" is NOT populated on the Subscription
object at all. 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 Attributes
Group that require the Printer not to create the Subscription Group that require the Printer not to create the Subscription
Object OR 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
skipping to change at page 19, line 30 skipping to change at page 19, line 30
details). The Printer returns the first value in the list below details). The Printer returns the first value in the list below
that describes the status. that describes the status.
'client-error-uri-scheme-not-supported': the Subscription 'client-error-uri-scheme-not-supported': the Subscription
Object was not created because the scheme of the "notify- Object was not created because the scheme of the "notify-
recipient-uri" attribute is not supported. See section recipient-uri" attribute is not supported. See section
13.1 for more details about this status code. See step #3 13.1 for more details about this status code. See step #3
in this section for the case that causes this error, and in this section for the case that causes this error, and
the resulting step #6a) that causes the Printer not to the resulting step #6a) that causes the Printer not to
create the Subscription Object. create the Subscription Object.
'client-error-attributes-or-values-not-supported': the 'client-error-attributes-or-values-not-supported': the
Subscription Object was not created because the method of Subscription Object was not created because the method of
the "notify-pull-method" attribute is not supported. See the "notify-pull-method" attribute is not supported. See
section 13.1 for more details about this status code. See section 13.1 for more details about this status code. See
step #3 in this section for the case that causes this step #3 in this section for the case that causes this
error, and the resulting step #6a) that causes the Printer error, and the resulting step #6a) that causes the Printer
not to create the Subscription Object. not to create the Subscription Object.
'client-error-too-many-subscriptions': the Subscription 'client-error-too-many-subscriptions': the Subscription
Object was not created because the Printer has no space for Object was not created because the Printer has no space for
additional Subscription Objects. The client SHOULD try additional Subscription Objects. The client MAY try again
again later. See section 13.3 for more details about this later. See section 13.3 for more details about this status
status code. See steps #6b) and #6c) in this section for code. See steps #6b) and #6c) in this section for the
the cases that causes this error. cases that causes this error.
'successful-ok-too-many-events': the Subscription Object was 'successful-ok-too-many-events': the Subscription Object was
created without the "notify-events" values included in this created without the "notify-events" values included in this
Subscription Attributes Group because the "notify-events" Subscription Attributes Group because the "notify-events"
attribute contains too many values. See section 13.4 for attribute contains too many values. See section 13.4 for
more details about this status code. See step #2 in this more details about this status code. See step #2 in this
section and section 5.3.3 for the cases that cause this section and section 5.3.3 for the cases that cause this
status code. status code.
'successful-ok-ignored-or-substituted-attributes' : the 'successful-ok-ignored-or-substituted-attributes' : the
Subscription Object was created but some supplied Subscription Object was created but some supplied
Subscription Template Attributes are unsupported. These Subscription Template Attributes are unsupported. These
unsupported attributes are also in the Subscription unsupported attributes are also in the Subscription
Attributes Group. See section 13.5 for more details about Attributes Group. See section 13.5 for more details about
this status code. See step #2 in this section for the this status code. See step #2 in this section for the
cases that cause this status code. cases that cause this status code.
9. The Printer MUST validate all Subscription Template Attributes and
9.The Printer MUST validate all Subscription Template Attributes and
MUST return all unsupported attributes and values in the MUST return all unsupported attributes and values in the
corresponding Subscription Attributes Group of the response (see corresponding Subscription Attributes Group of the response (see
step #2) unless it determines that it could not create additional step #2) unless it determines that it could not create additional
Subscription Objects because of condition #6b) or condition #6c). Subscription Objects because of condition #6b) or condition #6c).
Then, the Printer NEED NOT validate these additional Subscription Then, the Printer NEED NOT validate these additional Subscription
Template Attributes and the client MUST NOT expect to find Template Attributes and the client MUST NOT expect to find
unsupported attributes from step #2 in such additional unsupported attributes from step #2 in such additional
Subscription Attribute Groups. Subscription Attribute Groups.
5.3 Subscription Template Attributes 5.3 Subscription Template Attributes
skipping to change at page 22, line 6 skipping to change at page 22, line 6
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 -events-default (1setOf type2
keyword) keyword) keyword) keyword)
notify-events-supported (1setOf type2 notify-events-supported (1setOf type2
keyword) keyword)
notify-max-events-supported notify-max-events-supported
(integer(2:MAX)) (integer(2:MAX))
notify-attributes (1setOf notify-attributes-supported (1setOf notify-attributes (1setOf notify-attributes-supported (1setOf
type2 keyword) type2 keyword) type2 keyword) type2 keyword)
notify-user-data notify-user-data
(octetString(63)) (octetString(63))
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.
skipping to change at page 23, line 29 skipping to change at page 23, line 18
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.
The Printer MUST treat the address part of this attribute as opaque.
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
skipping to change at page 29, line 7 skipping to change at page 28, line 29
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 Given that the Printer causes Printer Event E to occur, for each Per-
Per-Job or Per-Printer Subscription S in the Printer, if E equals a Job or Per-Printer Subscription S in the Printer, if E equals a value
value of this attribute in S or E is a sub-value of a value of this 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 value of this attribute in S or E is a sub-value of a value of a value of this attribute in S or E is a sub-value of a value of
this attribute in S, the Printer MUST generate an Event this attribute in S, the Printer MUST generate an Event
Notification. Notification.
2.For each Per-Job Subscription S associated with Job J, if E 2. For each Per-Job Subscription S associated with Job J, if E
equals a value of this attribute in S or E is a sub-value of a equals a value of this attribute in S or E is a sub-value of a
value of this attribute in S, the Printer MUST generate an Event value of 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 equals a value of this attribute in S or E is a sub-value of a E equals a value of this attribute in S or E is a sub-value of a
value of this attribute in, the Printer MUST NOT generate an value of this attribute in, the Printer MUST NOT generate an
Event Notification from S. Event Notification from S.
Consider the example: There are three Subscription Objects listening Consider the example: There are three Subscription Objects listening
for the Job Event 'job-completed'. Subscription Object A is a Per- for the Job Event 'job-completed'. Subscription Object A is a Per-
Printer Subscription Object. Subscription Object B is a Per-Job Printer Subscription Object. Subscription Object B is a Per-Job
Subscription Object for Job 1, and Subscription Object C is a Per-Job Subscription Object for Job 1, and Subscription Object C is a Per-Job
Subscription Object for Job 2. In addition, Per-Printer Subscription Subscription Object for Job 2. In addition, Per-Printer Subscription
Object D is listening for the Job Event 'job-state-changed'. When Object D is listening for the Job Event 'job-state-changed'. When
skipping to change at page 30, line 15 skipping to change at page 29, line 40
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 rule for special cases. This section contains two rules for the special case where a single
Event produces multiple Event Notifications destined for the same
Notification Recipient. These two rules clarify whether a Printer
should send multiple Event Notifications or consolidate them into a
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.
If an Event matches two values of this "notify-events" attribute in a Consider the example: At the time a Job completes, there are two Per-
single Subscription object (e.g., a value and its sub-value), a Printer Subscription Objects A and B with the same Notification
Printer MAY deliver one Event Notification for each matched value in Recipient R. Subscription Object A has the Subscribed Job Event
the Subscription Object or it MAY deliver only one Event Notification 'job-state-changed'. Subscription Object B has the Subscribed Job
per Subscription Object. The rules in sections 5.3.3.5.1 and Event 'job-completed'. Both Subscription Objects match the Event
5.3.3.5.2 are purposefully flexible about the number of Event 'job-completed'. The Printer delivers two Event Notifications to the
Notifications sent when Event E matches two or more values in a Notification Recipient R. One with the value of 'job-state-changed'
Subscription Object. for the "notify-subscribed-event" attribute and the other with the
value of 'job-completed' for the "notify-subscribed-event"
attribute.
Consider the example: There are two Per-Printer Subscription Objects If an Event matches two Subscribed Events in a single Subscription
when a Job completes. Subscription Object A has the Subscribed Job object (e.g., a value and its sub-value), a Printer MAY deliver one
Event 'job-state-changed'. Subscription Object B has the Subscribed Event Notification for each matched value in the Subscription Object
Job Events 'job-state-changed' and 'job-completed'. The Printer or it MAY deliver only a single Event Notification. The rules in
delivers an Event Notification to the Notification Recipient of sections 5.3.3.5.1 and 5.3.3.5.2 are purposefully flexible about the
Subscription Object A with the value of 'job-state-changed' for the number of Event Notifications sent when Event E matches two or more
"notify-subscribing-event" attribute. The Printer delivers either values in a Subscription Object.
one or two Event Notifications to the Notification Recipient of
Subscription Object B, depending on implementation. If it delivers Consider the example: At the time a Job completes, a Subscription
two Event Notifications, one has the value of 'job-state-changed' Object A has two Subscribed Job Events 'job-state-changed' and 'job-
for the "notify-subscribing-event" attribute, and the other has the completed'. Both Subscribed Job Events match the Event 'job-
value of 'job-completed' for the "notify-subscribing-event" completed'. The Printer delivers either one or two Event
attribute. If it delivers one Event Notification, it has the value Notifications to the Notification Recipient of Subscription Object A,
of either 'job-state-changed' or 'job-completed' for the "notify- depending on implementation. If it delivers two Event Notifications,
subscribing-event" attribute, depending on implementation. The one has the value of 'job-state-changed' for the "notify-subscribed-
algorithm for choosing such a value is implementation dependent. event" attribute, and the other has the value of 'job-completed' for
the "notify-subscribed-event" attribute. If it delivers one Event
Notification, it has the value of either 'job-state-changed' or 'job-
completed' for the "notify-subscribed-event" attribute, depending on
implementation. The algorithm for choosing such a value is
implementation dependent.
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.
skipping to change at page 31, line 37 skipping to change at page 31, line 24
Subscription Object attribute that the Printer supports in an Event Subscription Object attribute that the Printer supports in an Event
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))
skipping to change at page 36, line 5 skipping to change at page 35, line 37
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 'job-
progress' Event for the associated Subscription Object within progress' Event for the associated Subscription Object within
the past N seconds, the Printer MUST deliver an Event 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
skipping to change at page 37, line 42 skipping to change at page 37, line 13
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
passive traffic monitoring threat. passive traffic monitoring threat.
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 SNMP index values, which also cannot be 0. "job-id" and with MIB table index values, which are recommended not
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).
skipping to change at page 41, line 15 skipping to change at page 40, line 34
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-date-time (dateTime) No Yes
printer-state-change-time (integer(1:MAX)) No Yes
printer-state-change-date-time (dateTime) No Yes
6.1 printer-state-change-time (integer(1:MAX)) 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
skipping to change at page 42, line 28 skipping to change at page 42, line 6
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
Value Operation Name 0x0016 Create-Printer-Subscriptions
0x0017 Create-Job-Subscriptions
0x0016 Create-Printer-Subscriptions 0x0018 Get-Subscription-Attributes
0x0019 Get-Subscriptions
0x0017 Create-Job-Subscriptions 0x001A Renew-Subscription
0x001B Cancel-Subscription
0x0018 Get-Subscription-Attributes
0x0019 Get-Subscriptions
0x001A Renew-Subscription
0x001B Cancel-Subscription
8 Attributes Only in Event Notifications 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
skipping to change at page 43, line 35 skipping to change at page 43, line 5
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
contain any encoding information, such as 'text/plain'. The
'text/plain' encoding is implicit and thus the charset must be
specified by an alternate mechanism, namely the "notify-charset"
attribute.
The Delivery Method Document specifies whether the Printer includes 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
skipping to change at page 45, line 40 skipping to change at page 45, line 18
response; for others it MUST NOT deliver a response. response; for others it 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 Event Notifications. The Printer returns the Event request Event Notifications. The Printer returns the Event
Notifications in a response to such a request. Notifications 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
skipping to change at page 47, line 8 skipping to change at page 46, line 32
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
notify-natural-language (naturalLanguage) SHOULD Subscription notify-natural-language (naturalLanguage) SHOULD Subscription
notify-user-data (octetString(63)) ** SHOULD Subscription notify-user-data (octetString(63)) ** SHOULD Subscription
notify-text (text) SHOULD Event notify-text (text) SHOULD Event
Notification Notification
attributes from the "notify-attributes" MAY Printer attributes from the "notify-attributes" MAY Printer
attribute *** attribute ***
attributes from the "notify-attributes" MAY Job attributes from the "notify-attributes" MAY Job
attribute *** attribute ***
attributes from the "notify-attributes" MAY Subscription attributes from the "notify-attributes" MAY Subscription
attribute *** attribute ***
*A Printer MUST deliver this value only if and only if it supports *A Printer MUST deliver this value only if and only if it supports
the Printer's "printer-current-time" attribute. the Printer's "printer-current-time" attribute.
** If the Subscription Object does not contain a "notify-user-data" ** If the Subscription Object does not contain a "notify-user-data"
attribute and the Delivery Method Document REQUIRES the Printer to attribute and the Delivery Method Document REQUIRES the Printer to
deliver the "notify-user-data" source value in the Event deliver the "notify-user-data" source value in the Event
Notification, the Printer MUST deliver an octet-string of length 0. Notification, the Printer MUST deliver an octet-string of length 0.
skipping to change at page 49, line 17 skipping to change at page 48, line 6
"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-impressions-completed (integer(0:MAX)) * MUST Job
job-state-reasons (1setOf type2 keyword) MUST Job
job-impressions-completed (integer(0:MAX)) * MUST Job
* The Printer MUST deliver the "job-impressions-completed" attribute * 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-completed' 'job-completed'
'job-progress' 'job-progress' 'job-completed' 'job-state-changed'
'job-completed' 'job-completed'
'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-reasons (1setOf type2 MUST Printer
printer-state (type1 enum) 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 Table 14) (see Table 14)
d)for Job Events only: d) for Job Events only:
i) the job identity (see Table 12) i) the job identity (see Table 12)
ii) the Event (see Table 10) and/or Job state information (see ii) the Event (see Table 10) and/or Job state information (see
Table 13) 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.
skipping to change at page 52, line 6 skipping to change at page 50, line 18
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
notify-printer-uri (uri) MAY Subscription
printer-name (name(127)) MAY Printer
notify-printer-uri (uri) MAY Subscription
Table 10 lists the source of the information for the Event name. A 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-id (integer(1:MAX)) MAY Job
job-name (name(MAX)) MAY Job
job-id (integer(1:MAX)) MAY Job
Table 13 lists the source of the information for the job state. If a 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-reasons (1setOf type2 keyword) MAY Job
job-state (type1 enum) MAY Job
job-state-reasons (1setOf type2 keyword) MAY Job
9.2.3 Additional Event Notification Content for Printer Events 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-is-accepting-jobs (boolean) MAY Printer
printer-state-reasons (1setOf type2 keyword) 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 [ipp-get-method] 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 24.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
skipping to change at page 55, line 24 skipping to change at page 53, line 9
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 [ipp-ntfy] because the table contains an [ipp-ntfy]
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 keyword method Delivery Method or the keyword method
name for the Pull Delivery Method? name for the Pull Delivery Method?
2. Is the Delivery Method REQUIRED,
2.Is the Delivery Method REQUIRED,
RECOMMENDED, or OPTIONAL for an IPP RECOMMENDED, or OPTIONAL for an IPP
Printer to support? Printer to support?
3. What transport and delivery protocols
3.What transport and delivery protocols
does the Printer use to deliver the does the Printer use to deliver the
Event Notification Content, i.e., what Event Notification Content, i.e., what
is the entire network stack? is the entire network stack?
4. Can several Event Notifications be
4.Can several Event Notifications be
combined into a Compound Event combined into a Compound Event
Notification? Notification?
5. Is the Delivery Method initiated by the
5.Is the Delivery Method initiated by the
Notification Recipient (pull), or by the Notification Recipient (pull), or by the
Printer (push)? Printer (push)?
6. Is the Event Notification content
Document Method Conformance Requirement Delivery Method
Realization
6.Is the Event Notification content
Machine Consumable or Human Consumable? Machine Consumable or Human Consumable?
7. What section in this document answers
7.What section in this document answers
the following question? For a Machine the following question? For a Machine
Consumable Event Notification, what is Consumable Event Notification, what is
the representation and encoding of the representation and encoding of
values defined in section 9.1 of [ipp- values defined in section 9.1 of [ipp-
ntfy] and the conformance requirements ntfy] and the conformance requirements
thereof? For a Human Consumable Event thereof? For a Human Consumable Event
Notification, what is the representation Notification, what is the representation
and encoding of pieces of information and encoding of pieces of information
defined in section 9.2 of [ipp-ntfy] and defined in section 9.2 of [ipp-ntfy] and
the conformance requirements thereof? the conformance requirements thereof?
8. What are the latency and reliability of
8.What are the latency and reliability of
the transport and delivery protocol? the transport and delivery protocol?
9. What are the security aspects of the
9.What are the security aspects of the
transport and delivery protocol, e.g., transport and delivery protocol, e.g.,
how it is handled in firewalls? how it is handled in firewalls?
10. What are the content length 10. What are the content length
restrictions? restrictions?
11. What are the additional values or 11. What are the additional values or
pieces of information that a Printer pieces of information that a Printer
delivers in an Event Notification delivers in an Event Notification
content and the conformance requirements content and the conformance requirements
thereof? thereof?
Document Method Conformance Requirement Delivery Method
Realization
12. What are the additional Subscription 12. What are the additional Subscription
Template and/or Subscription Description Template and/or Subscription Description
attributes and the conformance attributes and the conformance
requirements thereof? requirements thereof?
13. What are the additional Printer 13. What are the additional Printer
Description attributes and the Description attributes and the
conformance requirements thereof? conformance requirements thereof?
11 Operations for Notification 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.
skipping to change at page 64, line 48 skipping to change at page 62, line 12
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 Table 1. This group name is also used in the Get- of Table 1. This group name is also used in the Get-
Subscription-Attributes and Get-Subscriptions operation with an Subscription-Attributes and Get-Subscriptions operation with an
analogous meaning. analogous meaning.
4.Extended Group Name: The 'all' group name, which names all 4. Extended Group Name: The 'all' group name, which names all
Printer attributes according to [RFC2911] section 3.2.5. In Printer attributes according to [RFC2911] section 3.2.5. In
this extension 'all' names all attributes specified in [RFC2911] this extension 'all' names all attributes specified in [RFC2911]
plus those named in items 1 and 2 of this list. plus 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.
skipping to change at page 67, line 35 skipping to change at page 64, line 51
requested by the client. If the client had requested a group requested by the client. If the client had requested a group
name, such as 'all', the resulting unsupported attributes name, such as 'all', the resulting unsupported attributes
returned MUST NOT include attribute keyword names described in returned MUST NOT include attribute keyword names described in
the standard but not supported by the implementation. the standard but not supported by the implementation.
Group 3: Subscription Attributes Group 3: Subscription Attributes
This group contains a set of attributes with their current This group contains a set of attributes with their current
values. Each attribute returned in this group: values. Each attribute returned in this group:
a)MUST be specified by the "requested-attributes" attribute a) MUST be specified by the "requested-attributes" attribute
in the request, AND in the request, AND
b)MUST be present on the specified Subscription Object AND b) MUST be present on the specified Subscription Object AND
c)MUST NOT be restricted by the security policy in force. c) MUST NOT be restricted by the security policy in force.
For example, a Printer MAY prohibit a client who is not the For example, a Printer MAY prohibit a client who is not the
creator of a Subscription Object from seeing some or all of creator of a Subscription Object from seeing some or all of
its attributes. See [RFC2911] end of section 3.3.4.2 and its attributes. 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 in any order. The client MUST accept the attributes in Object in any order. The client MUST accept the attributes in
any order. any order.
11.2.5 Get-Subscriptions operation 11.2.5 Get-Subscriptions operation
skipping to change at page 76, line 29 skipping to change at page 73, line 40
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.
skipping to change at page 78, line 36 skipping to change at page 75, line 44
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 the Subscription Attributes Group in responses. and the Subscription Attributes Group in responses.
- support all of the following attributes: - support all of the following attributes:
a.REQUIRED Subscription Object attributes in section 5. a. REQUIRED Subscription Object attributes in section 5.
b.REQUIRED Printer Description object attributes in section 6. b. REQUIRED Printer Description object attributes in section 6.
c.REQUIRED attributes in Event Notification content in section c. REQUIRED attributes in Event Notification content in section
8. 8.
- support the 'ippget' Pull Delivery Method and meet the - support the 'ippget' Pull Delivery Method and meet the
conformance requirements as defined in [ipp-get-method] for conformance requirements as defined in [ipp-get-method] for
Printers. The Printer MAY support additional Push and Pull Printers. The Printer 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 each supported Delivery Method (the conformance for each supported Delivery Method (the conformance
skipping to change at page 79, line 16 skipping to change at page 76, line 22
- for all of the Job Creation Operations that the Printer - for all of the Job Creation Operations that the Printer
supports, MUST support the REQUIRED extensions for notification supports, MUST support the REQUIRED extensions for notification
defined in section 11.1.3. defined in section 11.1.3.
- meet the conformance requirements for operations as described - meet the conformance requirements for operations as described
in Table 16 and meet the requirements for Printers as specified in Table 16 and meet the requirements for Printers as specified
in the indicated sub-sections of section 11: in 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 Appendix A - Model for Notification with Cascading Printers 16 Model for Notification with Cascading Printers (Informative)
(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 the
diagram). diagram).
b)Printer 1 performs the client-supplied Subscription Creation b) Printer 1 performs the client-supplied Subscription Creation
Operations and also forwards the Subscription Creation Operations and also forwards the Subscription Creation
Operations to Printer 2 with the Notification Recipient changed Operations to Printer 2 with the Notification Recipient changed
to be the Printer 1. When an Event occurs in Printer 2, Printer to be the Printer 1. When an Event occurs in Printer 2, Printer
2 delivers the Event Notification (B) to Notification Recipient 2 delivers the Event Notification (B) to Notification Recipient
of Printer 1, which relays the received Event Notification (B) of Printer 1, which relays the received Event Notification (B)
to the client-supplied Notification Recipient (as Event to the client-supplied Notification Recipient (as Event
Notifications(A) in the diagram). Note, when a client performs Notifications(A) in the diagram). Note, when a client performs
a Subscription Creation Operation, Printer 1 need not forward a Subscription Creation Operation, Printer 1 need not forward
the Subscription Creation Operation to Printer 2 if it would the Subscription Creation Operation to Printer 2 if it would
create a duplicate Subscription Object on Printer 2. create a duplicate Subscription Object on Printer 2.
skipping to change at page 80, line 48 skipping to change at page 77, line 44
+--------+ 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 Appendix B - 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 82, line 5 skipping to change at page 78, line 43
|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 Appendix C - 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 82, line 50 skipping to change at page 79, line 43
+---------------+ +---------------+
+--------+ | ########### | +--------+ | ########### |
| 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 Appendix D - Details about Conformance Terminology (Normative) 19 Object Model for Notification (Normative)
The following paragraphs provide more details about conformance
terminology.
REQUIRED - an adjective used to indicate that a conforming IPP
Printer implementation MUST support the indicated operation,
object, attribute, attribute value, status code, or out-of-band
value in requests and responses. See [RFC2911] "Appendix A -
Terminology for a definition of "support". Since support of this
entire Notification specification is OPTIONAL for conformance to
IPP/1.1, the use of the term REQUIRED in this document means
"REQUIRED if this OPTIONAL Notification specification is
implemented".
RECOMMENDED - an adjective used to indicate that a conforming IPP
Printer implementation is recommended to support the indicated
operation, object, attribute, attribute value, status code, or
out-of-band value in requests and responses. Since support of
this entire Notification specification is OPTIONAL for conformance
to IPP/1.1, the use of the term RECOMMENDED in this document means
"RECOMMENDED if this OPTIONAL Notification specification is
implemented".
OPTIONAL - an adjective used to indicate that a conforming IPP
Printer implementation MAY, but is NOT REQUIRED to, support the
indicated operation, object, attribute, attribute value, status
code, or out-of-band value in requests and responses.
20 Appendix E - 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 |<--------------------------------------------->| |
skipping to change at page 84, line 34 skipping to change at page 80, line 34
+----+ | j2 | +----+ | j2 |
| s5 |<------>| | | s5 |<------>| |
+----++ | | +----++ | |
| s6 |<----->| | s5 and s6 are Per-Job Subscription | s6 |<----->| | s5 and s6 are Per-Job Subscription
+----+ ++--------++ Objects +----+ ++--------++ Objects
| | | |
| j3 | | j3 |
| | | |
| | <----> indicates association | | <----> indicates association
+---------+ +---------+
Figure 5 - Object Model for Notification Figure 5 - Object Model for Notification
s1, s2, and s3 are Per-Printer Subscription Objects and can s1, s2, and s3 are Per-Printer Subscription Objects and can
identify Printer and/or Job Events. identify Printer and/or Job Events.
s4, s5, and s6 are Per-Job Subscription Objects and can identify s4, s5, and s6 are Per-Job Subscription Objects and can identify
Printer and/or Job Events. Printer and/or Job Events.
20.1 Object relationships 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:
20.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 in (or is associated with) exactly one Printer object contained in (or is associated with) exactly one Printer object
(p1). (p1).
20.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 Subscription Objects (s4-s6). Job j1 is associated with Job Subscription Objects (s4-s6). Job j1 is associated with
Per-Job Subscription Object s4, Job j2 is associated with Per- Per-Job Subscription Object s4, Job j2 is associated with Per-
Job Subscription Objects s5 and s6, and Job j3 is not associated Job Subscription Objects s5 and s6, and Job j3 is not associated
with any Per-Job Subscription Object. with 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.
21 Appendix F - Per-Job versus Per-Printer Subscription Objects 20 Per-Job versus Per-Printer Subscription Objects (Normative)
(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 as part of the Job Creation operations (Create-Job, Objects as part of the Job Creation operations (Create-Job,
Print-Job, and Print-URI), rather than using the OPTIONAL Print-Job, and Print-URI), rather than using the OPTIONAL
Create-Job-Subscriptions operation, especially since Printer Create-Job-Subscriptions operation, especially since Printer
implementations NEED NOT support the Create-Job-Subscriptions implementations NEED NOT support the Create-Job-Subscriptions
operation, since it is OPTIONAL. operation, since it is OPTIONAL.
2.For Per-Job Subscription Objects, the Subscription Object is 2. For Per-Job Subscription Objects, the Subscription Object is
only valid while the job is "not-complete" (see sections 5.4.3) only valid while the job is "not-complete" (see sections 5.4.3)
while for the Per-Printer Subscription Objects, the Subscription while for the Per-Printer Subscription Objects, the Subscription
Object is valid until the time (in seconds) that the Printer Object is valid until the time (in seconds) that the Printer
returned in the "notify-lease-expiration-time" operation returned in 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 by the Create-Job-Subscriptions operation) while Job references by the Create-Job-Subscriptions operation) while Job
Events in a Per-Printer Subscription Object apply to ALL jobs Events in a Per-Printer Subscription Object apply to ALL jobs
contained in the IPP Printer. contained in the IPP Printer.
22 Normative References 21 Normative References
[ipp-get-method] [ipp-get-method]
Herriot, R., and T. Hastings, "Internet Printing Protocol (IPP): Herriot, R., and T. Hastings, "Internet Printing Protocol (IPP):
The 'ippget' Delivery Method for Event Notifications", <draft-ietf- The 'ippget' Delivery Method for Event Notifications", <draft-ietf-
ipp-notify-get-09.txt>, February 21, 2003. ipp-notify-get-10.txt>, June 21, 2004.
[RFC2119] [RFC2119]
S. Bradner, "Key words for use in RFCs to Indicate Requirement S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119 , March 1997 Levels", RFC 2119 , March 1997
[RFC2396] [RFC2396]
Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource
Identifiers (URI): Generic Syntax", RFC 2396, August 1998. Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
[RFC2717] [RFC2717]
skipping to change at page 87, line 5 skipping to change at page 83, line 5
[RFC2911] [RFC2911]
deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. Powell, deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. Powell,
"Internet Printing Protocol/1.1: Model and Semantics", RFC 2911, "Internet Printing Protocol/1.1: Model and Semantics", RFC 2911,
September 2000. September 2000.
[RFC3381] [RFC3381]
Hastings, T., Lewis, H., and R. Bergman, "IPP: Job Progress Hastings, T., Lewis, H., and R. Bergman, "IPP: Job Progress
Attributes", RFC 3381, September 2002. Attributes", RFC 3381, September 2002.
23 Informative References 22 Informative References
[IANA-CON] [IANA-CON]
Narte, T. and H. Alvestrand, "Guidelines for Writing an IANA Narte, T. and H. Alvestrand, "Guidelines for Writing an IANA
Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.
[ipp-not-req] [ipp-not-req]
deBry, R., Lewis, H., and T. Hastings, "Internet Printing deBry, R., Lewis, H., and T. Hastings, "Internet Printing
Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp- Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
not-06.txt>, work in progress, July 17, 2001. not-07.txt>, June 21, 2004.
[RFC2565] [RFC2565]
Herriot, R., Butler, S., Moore, P., and R. Turner, "Internet Herriot, R., Butler, S., Moore, P., and R. Turner, "Internet
Printing Protocol/1.0: Encoding and Transport", RFC 2565, April Printing Protocol/1.0: Encoding and Transport", RFC 2565, April
1999. 1999.
[RFC2566] [RFC2566]
deBry, R., , Hastings, T., Herriot, R., Isaacson, S., and P. deBry, R., , Hastings, T., Herriot, R., Isaacson, S., and P.
Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC
2566, April 1999. 2566, April 1999.
skipping to change at page 87, line 48 skipping to change at page 83, line 48
[RFC2616] [RFC2616]
Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol - Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -
HTTP/1.1", RFC 2616, June 1999. HTTP/1.1", RFC 2616, June 1999.
[RFC3196] [RFC3196]
Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. Holst, Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. Holst,
"Internet Printing Protocol/1.1: Implementer's Guide", RFC3196, "Internet Printing Protocol/1.1: Implementer's Guide", RFC3196,
November 2001. November 2001.
24 IANA Considerations 23 IANA Considerations
This section contains the registration information for IANA to add to This section contains the registration information for IANA to add to
the 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 will be 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) Note to RFC Editors: Replace RFC NNNN below (but not RFC xxxx)
with the RFC number for this document, so that it accurately with the RFC number for this document, so that it accurately
reflects the content of the information for the IANA Registry. reflects the content of the information for the IANA Registry.
24.1 Attribute Registrations 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 are to be 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) [RFCNNNN] 5.3.4
notify-attributes-supported (1setOf type2 keyword) notify-attributes-supported (1setOf type2 keyword)
[RFCNNNN] 5.3.4.1 [RFCNNNN] 5.3.4.1
skipping to change at page 89, line 12 skipping to change at page 85, line 12
notify-subscriber-user-name (name(MAX))) [RFCNNNN] 5.4.7 notify-subscriber-user-name (name(MAX))) [RFCNNNN] 5.4.7
notify-subscription-id (integer (1:MAX))) [RFCNNNN] 5.4.1 notify-subscription-id (integer (1:MAX))) [RFCNNNN] 5.4.1
Printer Description Attributes: Printer Description Attributes:
printer-state-change-date-time (dateTime)) [RFCNNNN] 6.2 printer-state-change-date-time (dateTime)) [RFCNNNN] 6.2
printer-state-change-time (integer(1:MAX))) [RFCNNNN] 6.1 printer-state-change-time (integer(1:MAX))) [RFCNNNN] 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) [RFCNNNN] 8.1
notify-text (text(MAX)) [RFCNNNN] 8.2 notify-text (text(MAX)) [RFCNNNN] 8.2
24.2 Additional Enum Attribute Value Registrations 23.2 Additional Enum Attribute Value Registrations within the IPP
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 according to the in this document. These are to be registered within the IPP registry
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 (type2 enum) [RFC2911] 4.4.15
0x0016 Create-Printer-Subscriptions [RFCNNNN] 7.1 0x0016 Create-Printer-Subscriptions [RFCNNNN] 7.1
0x0017 Create-Job-Subscriptions [RFCNNNN] 7.1 0x0017 Create-Job-Subscriptions [RFCNNNN] 7.1
0x0018 Get-Subscription-Attributes [RFCNNNN] 7.1 0x0018 Get-Subscription-Attributes [RFCNNNN] 7.1
0x0019 Get-Subscriptions [RFCNNNN] 7.1 0x0019 Get-Subscriptions [RFCNNNN] 7.1
0x001A Renew-Subscription [RFCNNNN] 7.1 0x001A Renew-Subscription [RFCNNNN] 7.1
0x001B Cancel-Subscription [RFCNNNN] 7.1 0x001B Cancel-Subscription [RFCNNNN] 7.1
24.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 are to be 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 [RFCNNNN] 11.2.7
Create-Job - Extensions [RFCNNNN] 11.1.3 Create-Job - Extensions [RFCNNNN] 11.1.3
Create-Job-Subscriptions [RFCNNNN] 11.1.1 Create-Job-Subscriptions [RFCNNNN] 11.1.1
Create-Printer-Subscriptions [RFCNNNN] 11.1.2 Create-Printer-Subscriptions [RFCNNNN] 11.1.2
Get-Printer-Attributes - Extensions [RFCNNNN] 11.2.3 Get-Printer-Attributes - Extensions [RFCNNNN] 11.2.3
Get-Subscription-Attributes [RFCNNNN] 11.2.4 Get-Subscription-Attributes [RFCNNNN] 11.2.4
Get-Subscriptions [RFCNNNN] 11.2.5 Get-Subscriptions [RFCNNNN] 11.2.5
Print-Job - Extensions [RFCNNNN] 11.1.3 Print-Job - Extensions [RFCNNNN] 11.1.3
Print-URI - Extensions [RFCNNNN] 11.1.3 Print-URI - Extensions [RFCNNNN] 11.1.3
Renew-Subscription [RFCNNNN] 11.2.6 Renew-Subscription [RFCNNNN] 11.2.6
Validate-Job Operation - Extensions [RFCNNNN] 11.2.2 Validate-Job Operation - Extensions [RFCNNNN] 11.2.2
24.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 are to be 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 [RFCNNNN] 12.1
0x0400:0x04FF - Client Error: 0x0400:0x04FF - Client Error:
0x0414 client-error-ignored-all-subscriptions [RFCNNNN] 12.2 0x0414 client-error-ignored-all-subscriptions [RFCNNNN] 12.2
24.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 are to be 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 [RFCNNNN] 14
0x07 event-notification-attributes-tag [RFCNNNN] 14 0x07 event-notification-attributes-tag [RFCNNNN] 14
24.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 will be
registered according to the procedures of [RFC2911] section 7.1 as registered according to the procedures of [RFC2911] section 7.1 as
additional keyword attribute values for use with the "notify-events" additional keyword attribute values for use with the "notify-events"
Subscription Template attribute (see section 5.3.3), i.e., registered Subscription Template attribute (see section 5.3.3), i.e., registered
as keyword values for the "notify-events", "notify-events-default", as keyword values for the "notify-events", "notify-events-default",
skipping to change at page 91, line 31 skipping to change at page 87, line 31
printer-finishings-changed [RFCNNNN] 5.3.3.4.2 printer-finishings-changed [RFCNNNN] 5.3.3.4.2
printer-queue-order-changed [RFCNNNN] 5.3.3.4.2 printer-queue-order-changed [RFCNNNN] 5.3.3.4.2
Job Events: Job Events:
job-state-changed [RFCNNNN] 5.3.3.4.3 job-state-changed [RFCNNNN] 5.3.3.4.3
job-created [RFCNNNN] 5.3.3.4.3 job-created [RFCNNNN] 5.3.3.4.3
job-completed [RFCNNNN] 5.3.3.4.3 job-completed [RFCNNNN] 5.3.3.4.3
job-stopped [RFCNNNN] 5.3.3.4.3 job-stopped [RFCNNNN] 5.3.3.4.3
job-config-changed [RFCNNNN] 5.3.3.4.3 job-config-changed [RFCNNNN] 5.3.3.4.3
job-progress [RFCNNNN] 5.3.3.4.3 job-progress [RFCNNNN] 5.3.3.4.3
24.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.
24.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.
24.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.
skipping to change at page 92, line 25 skipping to change at page 88, line 25
Proposed URL scheme name of this Push Delivery Method or the Proposed URL scheme name of this Push Delivery Method or the
keyword name of this Pull Delivery Method: keyword name of this Pull Delivery Method:
Name of proposer: Name of proposer:
Address of proposer: Address of proposer:
Email address of proposer: Email address of proposer:
Is this delivery method REQUIRED or OPTIONAL for conformance to the Is this delivery method REQUIRED or OPTIONAL for conformance to the
IPP Event Notification and Subscriptions document: IPP Event Notification and Subscriptions document:
Is this delivery method defining Machine Consumable and/or Human Is this delivery method defining Machine Consumable and/or Human
Consumable content: Consumable content:
24.7.1.2 Naming Requirements 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].
24.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.
24.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 unlabelled Delivery Methods hampers interoperability even
more. more.
A Delivery Method should therefore be registered ONLY if it adds A Delivery Method should therefore be registered ONLY if it adds
significant functionality that is valuable to a large community, OR significant functionality that is valuable to a large community, OR
if it documents existing practice in a large community. Note that if it documents existing practice in a large community. Note that
Delivery Methods registered for the second reason should be Delivery Methods registered for the second reason should be
explicitly marked as being of limited or specialized use and should explicitly marked as being of limited or specialized use and should
only be used with prior bilateral agreement. only be used with prior bilateral agreement.
24.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.
24.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.
24.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.
24.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.
24.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.
24.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
skipping to change at page 95, line 13 skipping to change at page 91, line 13
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) [ipp-ntfy] 5.3.2
notify-pull-method-supported (1setOf type2 keyword) notify-pull-method-supported (1setOf type2 keyword)
[ipp-ntfy] 5.3.2.1 [ipp-ntfy] 5.3.2.1
<method keyword name> RFC xxxx m.n <method keyword name> RFC xxxx m.n
24.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:
25 Intellectural Property 24 Intellectual Property
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in RFC 2028. Copies of standards-related documentation can be found in RFC 2028. Copies of
claims of rights made available for publication and any assurances of claims of rights made available for publication and any assurances of
skipping to change at page 96, line 5 skipping to change at page 92, line 5
obtain a general license or permission for the use of such obtain a general license or permission for the use of such
proprietary rights by implementers or users of this specification can proprietary rights by implementers or users of this specification can
be obtained from the IETF Secretariat. be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive this standard. Please address the information to the IETF Executive
Director. Director.
26 Internationalization Considerations 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.
27 Security Considerations 26 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.
27.1 Client access rights 26.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, (2) have Operator or Administrator access rights for this owner, (2) have Operator or Administrator access rights for this
skipping to change at page 98, line 29 skipping to change at page 94, line 29
or Administrator access rights for the Printer (see [RFC2911] or Administrator access rights for the Printer (see [RFC2911]
sections 1 and 8.5), or (3) be otherwise authorized by the sections 1 and 8.5), or (3) be otherwise authorized by the
Printer's administrator-configured security policy to cancel the Printer's administrator-configured security policy to cancel the
target Subscription Object. target Subscription Object.
The standard security concerns (delivery to the right user, privacy The standard security concerns (delivery to the right user, privacy
of content, tamper proof content) apply to each Delivery Method. of content, tamper proof content) apply to each Delivery Method.
Some Delivery Methods are more secure than others. Each Delivery Some Delivery Methods are more secure than others. Each Delivery
Method Document MUST discuss its Security Considerations. Method Document MUST discuss its Security Considerations.
27.2 Printer security threats 26.2 Printer security threats
Notification trap door: If a Printer supports the OPTIONAL "notify- Notification trap door: If a Printer supports the OPTIONAL "notify-
attributes" Subscription Template attribute (see section 5.3.4) where attributes" Subscription Template attribute (see section 5.3.4) where
the client can request that the Printer return any specified Job, the client can request that the Printer return any specified Job,
Printer, and Subscription object attributes, the Printer MUST apply Printer, and Subscription object attributes, the Printer MUST apply
the same security policy to these requested attributes in the Get- the same security policy to these requested attributes in the Get-
Notifications request as it does for the Get-Jobs, Get-Job- Notifications request as it does for the Get-Jobs, Get-Job-
Attributes, Get-Printer-Attributes, and Get-Subscription-Attributes Attributes, Get-Printer-Attributes, and Get-Subscription-Attributes
requests. requests.
27.3 Notification Recipient security threats 26.3 Notification Recipient security threats
Unwanted Events Notifications (spam): For any Push Delivery Method, Unwanted Events Notifications (spam): For any Push Delivery Method,
by far the biggest security concern is the abuse of notification: by far the biggest security concern is the abuse of notification:
delivering unwanted Event Notifications to third parties (i.e., delivering unwanted Event Notifications to third parties (i.e.,
spam). The problem is made worse by notification addresses that may spam). The problem is made worse by notification addresses that may
be redistributed to multiple parties. There exist scenarios where be redistributed to multiple parties. There exist scenarios where
third party notification is used (see Scenario #2 and #3 in [ipp-not- third party notification is used (see Scenario #2 and #3 in [ipp-not-
req]). Any fully secure solution would require active agreement of req]). Any fully secure solution would require active agreement of
all recipients before delivering anything. all recipients before delivering anything.
28 Contributors 27 Contributors
The following people made significant contributions to the design and The following people made significant contributions to the design and
review of this specification: review of this specification:
Scott A. Isaacson Scott A. Isaacson
Novell, Inc. Novell, Inc.
122 E 1700 S 122 E 1700 S
Provo, UT 84606 Provo, UT 84606
Phone: 801-861-7366 Phone: 801-861-7366
skipping to change at page 100, line 13 skipping to change at page 96, line 13
e-mail: mshepherd@usa.xerox.com e-mail: mshepherd@usa.xerox.com
Ron Bergman Ron Bergman
Hitachi Koki Imaging Solutions Hitachi Koki Imaging Solutions
1757 Tapo Canyon Road 1757 Tapo Canyon Road
Simi Valley, CA 93063-3394 Simi Valley, CA 93063-3394
Phone: 805-578-4421 Phone: 805-578-4421
Fax: 805-578-4001 Fax: 805-578-4001
Email: rbergma@hitachi-hkis.com Email: rbergma@hitachi-hkis.com
29 Author's Addresses 28 Author's Addresses
Robert Herriot Robert Herriot
Global Workflow Solutions
706 Colorado Ave. 706 Colorado Ave.
Palo Alto, CA 94303 Palo Alto, CA 94303
Phone: 650-327-4466 Phone: 650-324-4000
Fax: 650-327-4466
Email: bob@herriot.com Email: bob@herriot.com
Tom Hastings Tom Hastings
Xerox Corporation Xerox Corporation
737 Hawaii St. ESAE 231 737 Hawaii St. ESAE 231
El Segundo, CA 90245 El Segundo, CA 90245
Phone: 310-333-6413 Phone: 310-333-6413
Fax: 310-333-5514 Fax: 310-333-5514
e-mail: hastings@cp10.es.xerox.com e-mail: hastings@cp10.es.xerox.com
IPP Web Page: http://www.pwg.org/ipp/ 29 Description of the base IPP documents (Informative)
IPP Mailing List: ipp@pwg.org
To subscribe to the ipp mailing list, send the following email:
1) send it to majordomo@pwg.org
2) leave the subject line blank
3) put the following two lines in the message body:
subscribe ipp
end
Implementers of this specification document are encouraged to join
the IPP Mailing List in order to participate in any discussions of
clarification issues and review of registration proposals for
additional attributes and values. In order to reduce spam the
mailing list rejects mail from non-subscribers, so you must subscribe
to the mailing list in order to send a question or comment to the
mailing list.
30 Appendix G - Description of the base IPP documents (Informative)
The base set of IPP documents includes: The base set of IPP documents includes:
Design Goals for an Internet Printing Protocol [RFC2567] Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568] Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911] Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer's Guide [RFC3196] Internet Printing Protocol/1.1: Implementer's Guide [RFC3196]
Mapping between LPD and IPP Protocols [RFC2569] Mapping between LPD and IPP Protocols [RFC2569]
skipping to change at page 102, line 11 skipping to change at page 97, line 39
objects. It is intended to help them understand IPP/1.1 and some of objects. It is intended to help them understand IPP/1.1 and some of
the considerations that may assist them in the design of their client the considerations that may assist them in the design of their client
and/or IPP object implementations. For example, a typical order of and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation processing requests is given, including error checking. Motivation
for some of the specification decisions is also included. for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some The "Mapping between LPD and IPP Protocols" document gives some
advice to implementers of gateways between IPP and LPD (Line Printer advice to implementers of gateways between IPP and LPD (Line Printer
Daemon) implementations. Daemon) implementations.
31 Appendix H - Full Copyright Statement (Informative) 30 Full Copyright Statement
Copyright (C) The Internet Society (1998,1999,2000,2001,2002,2003). Copyright (C) The Internet Society (1998,1999,2000,2001,2002,2003).
All Rights Reserved All Rights Reserved
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
 End of changes. 254 change blocks. 
508 lines changed or deleted 388 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/