draft-ietf-ipp-not-spec-03.txt   draft-ietf-ipp-not-spec-04.txt 
INTERNET-DRAFT There are 7 issues in this draft R. Herriot (editor) INTERNET-DRAFT R. Herriot (editor)
<draft-ietf-ipp-not-spec-03.txt> Xerox Corporation <draft-ietf-ipp-not-spec-04.txt> Xerox Corporation
T. Hastings T. Hastings
Xerox Corporation Xerox Corporation
R. deBry R. deBry
Utah Valley State College Utah Valley State College
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
J. Martin J. Martin
Underscore Underscore
M. Shepherd M. Shepherd
Xerox Corporation Xerox Corporation
R. Bergman R. Bergman
Hitachi Koki Imaging Solutions Hitachi Koki Imaging Solutions
June 30, 2000 July 13, 2000
Internet Printing Protocol (IPP): Internet Printing Protocol (IPP):
IPP Event Notification Specification IPP Event Notification Specification
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of [RFC2026]. Internet-Drafts are working provisions of Section 10 of [RFC2026]. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups. Note that other groups may also distribute working its working groups. Note that other groups may also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference material time. It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as .work in progress.. or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed as The list of Internet-Draft Shadow Directories can be accessed as
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
Abstract Abstract
This document describes an extension to the IPP/1.0, IPP/1.1, and future This document describes an extension to the IPP/1.0, IPP/1.1, and future
skipping to change at page 3, line 12 skipping to change at page 3, line 12
Subscription Objects: Get-Subscriptions-Attributes, Get-Subscriptions, Subscription Objects: Get-Subscriptions-Attributes, Get-Subscriptions,
Renew-Subscription, and Cancel-Subscription. Renew-Subscription, and Cancel-Subscription.
The full set of IPP documents includes: The full 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 [IPP-MOD] Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD]
Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO]
Internet Printing Protocol/1.1: Implementer.s Guide [IPP-IIG] Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
Mapping between LPD and IPP Protocols [RFC2569] Mapping between LPD and IPP Protocols [RFC2569]
The .Design Goals for an Internet Printing Protocol. document takes a The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, Operators, and requirements for three types of users: end users, Operators, and
Administrators. It calls out a subset of end user requirements that are Administrators. It calls out a subset of end user requirements that are
satisfied in IPP/1.0. Operator and Administrator requirements are out satisfied in IPP/1.0. Operator and Administrator requirements are out
of scope for version 1.0. A few OPTIONAL Operator operations have been of scope for version 1.0. A few OPTIONAL Operator operations have been
added to IPP/1.1. added to IPP/1.1.
The .Rationale for the Structure and Model and Protocol for the Internet The "Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol. document describes IPP from a high level view, Printing Protocol" document describes IPP from a high level view,
defines a roadmap for the various documents that form the suite of IPP defines a roadmap for the various documents that form the suite of IPP
specifications, and gives background and rationale for the IETF working specifications, and gives background and rationale for the IETF working
group.s major decisions. group's major decisions.
The .Internet Printing Protocol/1.1: Model and Semantics., describes a The "Internet Printing Protocol/1.1: Model and Semantics", describes a
simplified model with abstract objects, their attributes, and their simplified model with abstract objects, their attributes, and their
operations that are independent of encoding and transport. It introduces operations that are independent of encoding and transport. It introduces
a Printer object and a Job object. The Job object optionally supports a Printer object and a Job object. The Job object optionally supports
multiple documents per Job. It also addresses security, multiple documents per Job. It also addresses security,
internationalization, and directory issues. internationalization, and directory issues.
The .Internet Printing Protocol/1.1: Encoding and Transport. document is The "Internet Printing Protocol/1.1: Encoding and Transport" document is
a formal mapping of the abstract operations and attributes defined in a formal mapping of the abstract operations and attributes defined in
the model document onto HTTP/1.1. It defines the encoding rules for a the model document onto HTTP/1.1. It defines the encoding rules for a
new Internet MIME media type called .application/ipp.. This document new Internet MIME media type called "application/ipp". This document
also defines the rules for transporting over HTTP a message body whose also defines the rules for transporting over HTTP a message body whose
Content-Type is .application/ipp.. This document defines a new scheme Content-Type is "application/ipp". This document defines a new scheme
named .ipp. for identifying IPP printers and jobs. Finally, this named 'ipp' for identifying IPP printers and jobs. Finally, this
document defines interoperability rules for supporting IPP/1.0 clients. document defines interoperability rules for supporting IPP/1.0 clients.
The .Internet Printing Protocol/1.1: Implementer.s Guide. document gives The "Internet Printing Protocol/1.1: Implementer's Guide" document gives
insight and advice to implementers of IPP clients and IPP objects. It insight and advice to implementers of IPP clients and IPP objects. It
is intended to help them understand IPP/1.0 and some of the is intended to help them understand IPP/1.0 and some of the
considerations that may assist them in the design of their client and/or considerations that may assist them in the design of their client and/or
IPP object implementations. For example, a typical order of processing IPP object implementations. For example, a typical order of processing
requests is given, including error checking. Motivation for some of the requests is given, including error checking. Motivation for some of the
specification decisions is also included. specification decisions is also included.
The .Mapping between LPD and IPP Protocols. document gives some advice The "Mapping between LPD and IPP Protocols" document gives some advice
to implementers of gateways between IPP and LPD (Line Printer Daemon) to implementers of gateways between IPP and LPD (Line Printer Daemon)
implementations. implementations.
Table of Contents Table of Contents
1 Introduction.......................................................7 1 Introduction .......................................................8
1.1 Notification Overview.........................................7 1.1 Notification Overview .........................................8
2 Models for Notification............................................9 2 Models for Notification ...........................................11
2.1 Model for Notification (Simple Case)..........................9 2.1 Model for Notification (Simple Case) .........................11
2.2 Model for Notification with Cascading Printers...............10 2.2 Model for Notification with Cascading Printers ...............11
2.3 Distributed Model for Notification...........................10 2.3 Distributed Model for Notification ...........................12
2.4 Extended Notification Recipient..............................11 2.4 Extended Notification Recipient ..............................12
3 Terminology.......................................................11 3 Terminology .......................................................13
3.1 Conformance Terminology......................................11 3.1 Conformance Terminology ......................................13
3.2 Other Terminology............................................11 3.2 Other Terminology ............................................13
4 Object Relationships..............................................13 4 Object Relationships ..............................................16
4.1 Printer and Per-Printer Subscription Objects.................13 4.1 Printer and Per-Printer Subscription Objects .................16
4.2 Printer, Job and Per-Job Subscription Objects................14 4.2 Printer, Job and Per-Job Subscription Objects ................17
5 Subscription Object...............................................14 5 Subscription Object ...............................................17
5.1 Rules for Support of Subscription Template Attributes........14 5.1 Rules for Support of Subscription Template Attributes ........18
5.2 Rules for Processing Subscription Template Attributes........15 5.2 Rules for Processing Subscription Template Attributes ........19
5.3 Subscription Template Attributes.............................18 5.3 Subscription Template Attributes .............................23
5.3.1 notify-recipient-uri (uri)...............................20 5.3.1 notify-recipient-uri (uri) ...............................24
5.3.2 notify-events (1setOf type2 keyword).....................20 5.3.2 notify-events (1setOf type2 keyword) .....................25
5.3.3 notify-attributes (1setOf type2 keyword).................26 5.3.3 notify-attributes (1setOf type2 keyword) .................31
5.3.4 notify-user-data (octetString(63)).......................27 5.3.4 notify-user-data (octetString(63)) .......................32
5.3.5 notify-charset (charset).................................27 5.3.5 notify-charset (charset) .................................33
5.3.6 notify-natural-language (naturalLanguage)................28 5.3.6 notify-natural-language (naturalLanguage) ................34
5.3.7 notify-lease-duration (integer(0:67108863))..............28 5.3.7 notify-lease-duration (integer(0:67108863)) ..............34
5.3.8 notify-persistence (boolean).............................29 5.3.8 notify-time-interval (integer(0:MAX)) ....................35
5.4 Subscription Description Attributes..........................30 5.4 Subscription Description Attributes ..........................37
5.4.1 notify-subscription-id (integer (1:MAX))................31 5.4.1 notify-subscription-id (integer (1:MAX)) ................37
5.4.2 notify-sequence-number (integer (0:MAX)).................31 5.4.2 notify-sequence-number (integer (0:MAX)) .................38
5.4.3 notify-lease-expiration-time (integer(0:MAX))............32 5.4.3 notify-lease-expiration-time (integer(0:MAX)) ............39
5.4.4 notify-printer-up-time (integer(1:MAX))..................32 5.4.4 notify-printer-up-time (integer(1:MAX)) ..................39
5.4.5 notify-printer-uri (uri).................................33 5.4.5 notify-printer-uri (uri) .................................40
5.4.6 notify-job-id (integer(1:MAX))...........................33 5.4.6 notify-job-id (integer(1:MAX)) ...........................40
5.4.7 notify-subscriber-user-name (name(MAX))..................33 5.4.7 notify-subscriber-user-name (name(MAX)) ..................41
6 Printer Description Attributes Related to Notification............34 6 Printer Description Attributes Related to Notification ............41
6.1 notify-max-printer-subscriptions-supported (integer(0:MAX))..34 6.1 printer-state-change-time (integer(1:MAX)) ...................42
6.2 notify-max-job-subscriptions-supported (integer(0:MAX))......34 6.2 printer-state-change-date-time (dateTime) ....................42
6.3 printer-state-change-time (integer(1:MAX))...................35
6.4 printer-state-change-date-time (dateTime)....................35
7 New Values for Existing Printer Description Attributes............36 7 New Values for Existing Printer Description Attributes ............43
7.1 operations-supported (1setOf type2 enum).....................36 7.1 operations-supported (1setOf type2 enum) .....................43
8 Attributes Only in Event Notifications............................36 8 Attributes Only in Event Notifications ............................43
8.1 notify-subscribed-event (type2 keyword)......................36 8.1 notify-subscribed-event (type2 keyword) ......................43
8.2 notify-text (text(MAX))......................................37 8.2 notify-text (text(MAX)) ......................................44
9 Event Notification Content........................................37 9 Event Notification Content ........................................44
9.1 Content of Machine Consumable Event Notifications............38 9.1 Content of Machine Consumable Event Notifications ............46
9.1.1 Attributes in Event Notification Content Common to All 9.1.1 Event Notification Content Common to All Events ..........47
Events .........................................................39 9.1.2 Additional Event Notification Content for Job Events .....49
9.1.2 Additional Attributes in Event Notification Content for Job 9.1.3 Additional Event Notification Content for Printer Events .50
Events .........................................................40 9.2 Content of Human Consumable Event Notification ...............50
9.1.3 Additional Attributes in Event Notification Content for 9.2.1 Event Notification Content Common to All Events ..........51
Printer Events..................................................41 9.2.2 Additional Event Notification Content for Job Events .....53
9.2 Content of Human Consumable Event Notification...............41 9.2.3 Additional Event Notification Content for Printer Events .54
9.2.1 Information in Event Notification Content Common to All
Events .........................................................42
9.2.2 Additional Information in Event Notification Content for Job
Events .........................................................43
9.2.3 Additional Information in Event Notification Content for
Printer Events..................................................44
10Delivery Methods..................................................44 10 Delivery Methods .................................................55
11Operations for Notification.......................................46 11 Operations for Notification ......................................58
11.1 Subscription Creation Operations.............................46 11.1 Subscription Creation Operations .............................58
11.1.1 Create-Job-Subscriptions Operation......................46 11.1.1Create-Job-Subscriptions Operation .......................58
11.1.2 Create-Printer-Subscriptions operation...................48 11.1.2Create-Printer-Subscriptions operation ...................61
11.1.3 Job Creation Operation . Extensions for Notification....49 11.1.3Job Creation Operation - Extensions for Notification .....62
11.2 Other Operations.............................................51 11.2 Other Operations .............................................64
11.2.1Validate-Job Operation - Extensions for Notification.....51 11.2.1Validate-Job Operation - Extensions for Notification .....64
11.2.2Get-Printer-Attributes - Extensions for Notification.....52 11.2.2Get-Printer-Attributes - Extensions for Notification .....65
11.2.3Get-Subscription-Attributes operation....................52 11.2.3Get-Subscription-Attributes operation ....................66
11.2.4Get-Subscriptions operation..............................54 11.2.4Get-Subscriptions operation ..............................68
11.2.5Renew-Subscription operation.............................57 11.2.5Renew-Subscription operation .............................71
11.2.6Cancel-Subscription operation............................59 11.2.6Cancel-Subscription operation ............................74
12Conformance Requirements..........................................60 12 Conformance Requirements .........................................76
13IANA Considerations...............................................61 13 IANA Considerations ..............................................77
13.1 Format and Requirements for IPP Delivery Method Registration 13.1 Format and Requirements for IPP Delivery Method Registration
Proposals.........................................................62 Proposals .........................................................78
14Internationalization Considerations...............................62 14 Internationalization Considerations ..............................78
15Security Considerations...........................................63 15 Security Considerations ..........................................79
16Status Codes......................................................63 16 Status Codes .....................................................80
16.1 successful-ok-ignored-subscriptions (0x0003).................63 16.1 successful-ok-ignored-subscriptions (0x0003) .................80
16.2 client-error-ignored-all-subscriptions (0x0414)..............64 16.2 client-error-ignored-all-subscriptions (0x0414) ..............80
17Status Codes in Subscription Attributes Groups....................64 17 Status Codes in Subscription Attributes Groups ...................80
17.1 client-error-uri-scheme-not-supported (0x040C)...............64 17.1 client-error-uri-scheme-not-supported (0x040C) ...............81
17.2 client-error-too-many-subscriptions (0x0415).................64 17.2 client-error-too-many-subscriptions (0x0415) .................81
17.3 successful-ok-too-many-events (0x0005).......................65 17.3 successful-ok-too-many-events (0x0005) .......................81
17.4 successful-ok-ignored-or-substituted-attributes (0x0001).....65 17.4 successful-ok-ignored-or-substituted-attributes (0x0001) .....81
18Encodings of Additional Attribute Tags............................65 18 Encodings of Additional Attribute Tags ...........................82
19References........................................................65 19 References .......................................................82
20Author.s Addresses................................................66 20 Author's Addresses ...............................................83
A.Appendix - Model for Notification with Cascading Printers.........67 A.Appendix - Model for Notification with Cascading Printers .........84
B.Appendix - Distributed Model for Notification.....................68 B.Appendix - Distributed Model for Notification .....................86
C.Appendix - Extended Notification Recipient........................69 C.Appendix - Extended Notification Recipient ........................87
D.Appendix - Details about Conformance Terminology..................70 D.Appendix - Details about Conformance Terminology ..................88
E.Appendix - Object Model for Notification..........................71 E.Appendix - Object Model for Notification ..........................89
E.1 Appendix - Object relationships..............................71 E.1 Appendix - Object relationships ..............................90
E.2 Printer Object and Per-Printer Subscription Objects..........72 E.2 Printer Object and Per-Printer Subscription Objects ..........91
E.3 Job Object and Per-Job Subscription Objects..................72 E.3 Job Object and Per-Job Subscription Objects ..................91
F.Appendix - Per-Job versus Per-Printer Subscription Objects........72 F.Appendix - Per-Job versus Per-Printer Subscription Objects ........91
G.Appendix: Full Copyright Statement................................73 G.Appendix: Full Copyright Statement ................................93
Tables Tables
Table 1 . Subscription Template Attributes...........................19 Table 1 - Subscription Template Attributes...........................23
Table 2 . Subscription Description Attributes........................30 Table 2 - Subscription Description Attributes........................37
Table 3 . Printer Description Attributes Associated with Notification34 Table 3 - Printer Description Attributes Associated with Notification41
Table 4 . Operation-id assignments...................................36 Table 4 - Operation-id assignments...................................43
Table 5 . Attributes in Event Notification Content....................39 Table 5 - Attributes in Event Notification Content...................47
Table 6 . Additional Attributes in Event Notification Content for Job Table 6 - Additional Event Notification Content for Job Events.......49
Events...........................................................40 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............................................41 Table 8 - Additional Event Notification Content for Printer Events...50
Table 8 . Additional Attributes in Event Notification Content for Table 9 - Printer Name in Event Notification Content.................52
Printer Events...................................................41 Table 10 - Event Name in Event Notification Content..................52
Table 9 . Printer Name in Event Notification Content.................42 Table 11 - Event Time in Event Notification Content..................53
Table 10 . Event Name in Event Notification Content..................43 Table 12 - Job Name in Event Notification Content....................53
Table 11 . Event Time in Event Notification Content..................43 Table 13 - Job State in Event Notification Content...................54
Table 12 . Job Name in Event Notification Content for Job Events.....43 Table 14 - Printer State in Event Notification Content...............54
Table 13 . Job State in Event Notification Content for Job Events....44
Table 14 . Printer State in Event Notification Content for Printer Table 15 - Information about the Delivery Method.....................55
Events...........................................................44 Table 16 - Conformance Requirements for Operations...................76
Table 15 . Conformance Requirements for Operations...................61
Figures Figures
Figure 1 . Model for Notification....................................10 Figure 1 - Model for Notification....................................11
Figure 2 . Model for Notification with Cascading Printers............68 Figure 2 - Model for Notification with Cascading Printers............86
Figure 3 . Opaque Use of a Notification Service Transparent to the Figure 3 - Opaque Use of a Notification Service Transparent to the
Client............................................................69 Client ...........................................................87
Figure 4 . Use of an Extended Notification Recipient transparent to the Figure 4 - Use of an Extended Notification Recipient transparent to the
Printer..........................................................70 Printer ..........................................................88
Figure 5 . Object Model for Notification.............................71 Figure 5 - Object Model for Notification.............................90
1 Introduction 1 Introduction
This IPP notification specification is an extension to IPP/1.0 [RFC2568, This IPP notification specification is an extension to IPP/1.0 [RFC2568,
RFC2569] and IPP/1.1 [ipp-mod, ipp-pro]. This document in combination RFC2569] and IPP/1.1 [ipp-mod, ipp-pro]. This document in combination
with the following documents is intended to meet the notification with the following documents is intended to meet the notification
requirements described in [ipp-not-req]: requirements described in [ipp-not-req]:
Internet Printing Protocol (IPP): .Job Progress Attributes. [ipp- Internet Printing Protocol (IPP): "Job Progress Attributes" [ipp-
prog] prog]
One or more Delivery Method Documents registered with IANA (see One or more Delivery Method Documents registered with IANA (see
section 13). section 13).
Note: this document does not define any Delivery Methods, but it does Note: this document does not define any Delivery Methods, but it does
define the rules for conformance for Delivery Method Documents. define the rules for conformance for Delivery Method Documents.
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
skipping to change at page 7, line 45 skipping to change at page 8, line 45
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 group each Subscription Template Attributes Group in the operation. This group
is like the Job Template Attributes group defined in [ipp-mod]. The is like the Job Template Attributes group defined in [ipp-mod]. The
following is an example of the information included in a Subscription following is an example of the information included in a Subscription
Template Attributes Group (see section 5 for details on the Subscription Template Attributes Group (see section 5 for details on the Subscription
Object attributes): 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. 2. The address (URL) of one Notification Recipient.
3. The Delivery Method (i.e., the protocol) which the Printer uses to 3. The Delivery Method (i.e., the protocol) which the Printer uses to
send the Event Notification. send the Event Notification.
4. Some opaque data that the Printer sends to the Notification 4. Some opaque data that the Printer sends to the Notification
Recipient in the Event Notification. The Notification Recipient Recipient in the Event Notification. The Notification Recipient
might use this opaque data as a forwarding address for the Event might use this opaque data as a forwarding address for the Event
Notification. 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 Subscription An operation that creates a Subscription Object is called a Subscription
Creation Operation. These operations include the following operations Creation Operation. These operations include the following operations
(see section 11.1 for further details): (see section 11.1 for further details):
- Job Creation operation: When a client performs such an operation . Job Creation operation: When a client performs such an operation
(Print-Job, Print-URI, and Create-Job), a client can include zero or (Print-Job, Print-URI, and Create-Job), a client can include zero
more Subscription Template Attributes Groups in the request. The or more Subscription Template Attributes Groups in the request.
Printer creates one Subscription Object for each Subscription Template The Printer creates one Subscription Object for each Subscription
Attributes Group in the request, and the Printer associates each such Template Attributes Group in the request, and the Printer
Subscription Object with the newly created Job. This document extends associates each such Subscription Object with the newly created
these operations. definitions in [ipp-mod] by adding Subscription Job. This document extends these operations' definitions in [ipp-
Template Attributes Groups in the request and Subscription Attributes mod] by adding Subscription Template Attributes Groups in the
Groups in the response. request and Subscription Attributes Groups in the response.
- Create-Job-Subscriptions operation: A client can include one or more . Create-Job-Subscriptions operation: A client can include one or
Subscription Template Attributes Groups in the request. The Printer more Subscription Template Attributes Groups in the request. The
creates one Subscription Object for each Subscription Template Printer creates one Subscription Object for each Subscription
Attributes Group and associates each with the job that is the target of Template Attributes Group and associates each with the job that is
this operation. the target of this operation.
- Create-Printer-Subscriptions operation: A client can include one or . Create-Printer-Subscriptions operation: A client can include one or
more Subscription Template Attributes Groups in the request. The more Subscription Template Attributes Groups in the request. The
Printer creates one Subscription Object for each Subscription Template Printer creates one Subscription Object for each Subscription
Attributes Group and associates each with the Printer that is the target Template Attributes Group and associates each with the Printer that
of this operation. is the target of this operation.
For each of the above operations: For each of the above operations:
the Printer associates a Subscription Object with the Printer or a . the Printer associates a Subscription Object with the Printer or a
specific Job. When a Subscription Object is associated with a Job specific Job. When a Subscription Object is associated with a Job
Object, it is called a Per-Job Subscription Object. When a Subscription Object, it is called a Per-Job Subscription Object. When a
Object is associated with a Printer Object, it is called a Per-Printer Subscription Object is associated with a Printer Object, it is
Subscription Object. called a Per-Printer Subscription Object.
the response contains one Subscription Attributes Group for each . the response contains one Subscription Attributes Group for each
Subscription Template Attributes Group in the request and in the same Subscription Template Attributes Group in the request and in the
order. When the Printer successfully creates a Subscription Object, its same order. When the Printer successfully creates a Subscription
corresponding Subscription Attributes Group contains the .notify- Object, its corresponding Subscription Attributes Group contains
subscription-id. attribute. This attribute uniquely identifies the the "notify-subscription-id" attribute. This attribute uniquely
Subscription Object and is analogous to a .job-id. for a Job object. identifies the Subscription Object and is analogous to a "job-id"
Some operations described below use the .notify-subscription-id. to for a Job object. Some operations described below use the "notify-
identify the target Subscription Object. subscription-id" to identify the target Subscription Object.
This document adds the following additional operations (see section 11.2 This document adds the following additional operations (see section 11.2
for further details): for further details)::
Validate-Job operation: When a client performs this operation, a client
can include zero or more Subscription Template Attributes Groups in the
request. The Printer determines if it could create one Subscription
Object for each Subscription Template Attributes Group in the request.
This document extends this operation.s definition in [ipp-mod] by adding
Subscription Template Attributes Groups in the request and Subscription
Attributes Groups in the response.
Get-Printer-Attributes operation: This document extends this . Validate-Job operation: When a client performs this operation, a
operation.s definition in [ipp-mod] by adding: Subscription Template client can include zero or more Subscription Template Attributes
Attributes, Printer Description Attributes, attributes to existing group Groups in the request. The Printer determines if it could create
names, and new group names for Get-Printer-Attributes to support. one Subscription Object for each Subscription Template Attributes
Group in the request. This document extends this operation's
definition in [ipp-mod] by adding Subscription Template Attributes
Groups in the request and Subscription Attributes Groups in the
response.
Get-Subscription-Attributes operation: This operation allows a client to . Get-Subscription-Attributes operation: This operation allows a
obtain the specified attributes of a target Subscription Object. client to obtain the specified attributes of a target Subscription
Object.
Get-Subscriptions operation: This operation allows a client to obtain . Get-Subscriptions operation: This operation allows a client to
the specified attributes of all Subscription Objects associated with the obtain the specified attributes of all Subscription Objects
Printer or a specified Job. associated with the Printer or a specified Job.
Renew-Subscription operation: This operation renews the lease on the . Renew-Subscription operation: This operation renews the lease on
target Per-Printer Subscription Object before it expires. A newly the target Per-Printer Subscription Object before it expires. A
created Per-Printer Subscription Object receives an initial lease. It newly created Per-Printer Subscription Object receives an initial
is the duty of the client to use this operation frequently enough to lease. It is the duty of the client to use this operation
preserve a Per-Printer Subscription Object. The Printer deletes a Per- frequently enough to preserve a Per-Printer Subscription Object.
Printer Subscription Object when its lease expires. A Per-Job The Printer deletes a Per-Printer Subscription Object when its
Subscription Object last exactly as long as its associated Job Object lease expires. A Per-Job Subscription Object last exactly as long
and thus doesn.t have a lease. as its associated Job Object and thus doesn't have a lease.
Cancel-Subscription operation: This operation cancels the lease on the . Cancel-Subscription operation: This operation cancels the lease on
specified Per-Printer Subscription Object and thereby deletes the the specified Per-Printer Subscription Object and thereby deletes
Subscription Object. the 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 Printer: Subscription Objects). For each such Subscription Object, the 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)delivers the Event Notification using the Delivery Method and i)delivers the Event Notification using the Delivery Method and
target address identified in the Subscription Object.s .notify- target address identified in the Subscription Object's "notify-
recipient-uri. attribute if the Delivery Method is a .push., OR recipient-uri" attribute if the Delivery Method is a "push", OR
ii) saves Event Notification for a time period defined by the ii) saves Event Notification for a time period defined by the
Delivery Method if the Delivery Method is a .pull., i.e., the Delivery Method if the Delivery Method is a "pull", i.e., the
Notification Recipient is expected to fetch the Event Notification Recipient is expected to fetch the Event
Notifications. Notifications.
2 Models for Notification 2 Models for Notification
2.1 Model for Notification (Simple Case) 2.1 Model for Notification (Simple Case)
As part of a Subscription Creation Operation, an IPP Printer (i.e., an As part of a Subscription Creation Operation, an IPP Printer (i.e., an
output device or a server) creates one or more Subscription Objects. In output device or a server) creates one or more Subscription Objects. In
a Subscription Creation Operation, the client specifies the Notification a Subscription Creation Operation, the client specifies the Notification
skipping to change at page 10, line 19 skipping to change at page 11, line 43
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 Model for Notification with Cascading Printers 2.2 Model for Notification with Cascading Printers
With this model, there is an intervening Print server between the human With this model, there is an intervening Print server between the human
user and the Printer in the output device. If the Printer in the output user and the Printer in the output device. If the Printer in the output
device generates an Event, the system can be configured to send Event device generates an Event, the system can be configured to send Event
Notification either Notification either
directly to the Notification Recipient specified by the Subscribing . directly to the Notification Recipient specified by the Subscribing
Client or Client or
via the Print Server to the Notification Recipient specified by the . via the Print Server to the Notification Recipient specified by the
Subscribing Client. Subscribing Client.
See Appendix A for more details. See Appendix A for more details.
2.3 Distributed Model for Notification 2.3 Distributed Model for Notification
The preceding sections (2.1 and 2.2) assume that the Notification The preceding sections (2.1 and 2.2) assume that the Notification
software resides in the same device or Server box as the rest of the software resides in the same device or Server box as the rest of the
Printer software. In many implementations, the assumption is correct. Printer software. In many implementations, the assumption is correct.
However, the Notification model also permits a distributed However, the Notification model also permits a distributed
implementation. implementation.
For example, the software that supports both Subscription Creation For example, the software that supports both Subscription Creation
Operations and sending of Event Notifications could be on hardware that Operations and sending of Event Notifications could be on hardware that
is separate from the output device. To make this work, there must be a is separate from the output device. To make this work, there must be a
symbiotic relationship between the output device software and the remote symbiotic relationship between the output device software and the remote
Notification software. Without the remote Notification software, the Notification software. Without the remote Notification software, the
output device software is not a complete Printer. output device software is not a complete Printer.
The term .Printer. in this document includes the software on the output The term "Printer" in this document includes the software on the output
device or server box as well as Notification software that is local to device or server box as well as Notification software that is local to
or remote from the output device. or remote from the output device.
Appendix B describes this example in detail. Appendix B describes this example in detail.
2.4 Extended Notification Recipient 2.4 Extended Notification Recipient
The model allows for an extended Notification Recipient that is itself a The model allows for an extended Notification Recipient that is itself a
Notification service that forwards each Event Notification to another Notification service that forwards each Event Notification to another
recipient. The client contacts this Notification Recipient to arrange recipient. The client contacts this Notification Recipient to arrange
skipping to change at page 11, line 28 skipping to change at page 13, line 19
This section defines terminology used throughout this document. This section defines terminology used throughout this document.
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 to this specification. These terms are defined in conformance to this specification. These terms are defined in
[ipp-mod section 13.1 on conformance terminology, most of which is [ipp-mod section 13.1 on conformance terminology, most of which is
taken from RFC 2119 [RFC2119]. See Appendix D for complete details. taken from RFC 2119 [RFC2119]. See Appendix D for complete details.
Note: a feature that is OPTIONAL in this document becomes REQUIRED if
the Printer implements a Delivery Method that REQUIRES the feature
READ-ONLY - an adjective used in an attribute definition to indicate READ-ONLY - an adjective used in an attribute definition to indicate
that an IPP Printer MUST NOT allow the attribute.s value to be that an IPP Printer MUST NOT allow the attribute's value to be
modified with the Set-Job-Attributes or Set-Printer-Attributes modified with the Set-Job-Attributes or Set-Printer-Attributes
operations (see [ipp-set]). Note: there is no Set-Subscription operations (see [ipp-set]). Note: there is no Set-Subscription
operation so this term is not used for Subscription object operation so this term is not used for Subscription object
attributes. attributes.
3.2 Other Terminology 3.2 Other Terminology
Administrator - A human user who establishes policy for and Administrator - A human user who establishes policy for and
configures the print system. configures the print system.
skipping to change at page 12, line 8 skipping to change at page 14, line 15
created. Therefore, when a statement also applies to the Validate- created. Therefore, when a statement also applies to the Validate-
Job operation, it is mentioned explicitly. Job operation, it is mentioned explicitly.
Event - some occurrence (either expected or unexpected) within the Event - some occurrence (either expected or unexpected) within the
printing system of a change of state, condition, or configuration printing system of a change of state, condition, or configuration
of a Job or Printer object. An Event occurs only at one instant in of a Job or Printer object. An Event occurs only at one instant in
time and does not span the time the physical Event takes place. time and does not span the time the physical Event takes place.
For example, jam-occurred and jam-cleared are two distinct, For example, jam-occurred and jam-cleared are two distinct,
instantaneous Events, even though the jam may last for a while. instantaneous Events, even though the jam may last for a while.
Job Event . an Event caused by some change in a particular job on the Job Event - an Event caused by some change in a particular job on the
Printer, e.g., job-completed. Printer, e.g., job-completed.
Printer Event . an Event caused by some change in the Printer that is Printer Event - an Event caused by some change in the Printer that is
not specific to a job, e.g., printer-state-changed. not specific to a job, e.g., printer-state-changed.
Subscribed Event . an Event that the Subscribing Client expresses Subscribed Event - an Event that the Subscribing Client expresses
interest in by making it a value of the .notify-events. attribute interest in by making it a value of the "notify-events" attribute
on a Subscription Object. on a Subscription Object.
Subscribed Job Event . a Subscribed Event that is a Job Event. Subscribed Job Event - a Subscribed Event that is a Job Event.
Subscribed Printer Event . a Subscribed Event that is a Printer Subscribed Printer Event - a Subscribed Event that is a Printer
Event. Event.
Event Notification - the information about an Event that the Printer Event Notification - the information about an Event that the Printer
sends when an Event occurs. sends when an Event occurs.
Notification Recipient - the entity to which the Printer sends an Notification Recipient - the entity to which the Printer sends an
Event Notification. Event Notification.
Delivery Method - the mechanism by which the Printer delivers the Delivery Method - the mechanism by which the Printer delivers the
Event Notification, e.g., via email or via SNMP. Event Notification, e.g., via email or via SNMP.
Delivery Method Document - a document, separate from this document, Delivery Method Document - a document, separate from this document,
that defines a Delivery Method. that defines a Delivery Method.
Compound Event Notification - two or more Event Notifications that a
Printer sends together as a single entity. The Delivery Method
Document specifies whether the Delivery Method supports Compound
Event Notifications.
Subscription Object - An object containing a set of attributes that Subscription Object - An object containing a set of attributes that
indicate: the Notification Recipient, the Delivery Method, the indicate: the Notification Recipient, the Delivery Method, the
Subscribed Events that cause the Printer to send an Event Subscribed Events that cause the Printer to send an Event
Notification, and the information to send in an Event Notification. Notification, and the information to send in an Event Notification.
Per-Job Subscription Object - A Subscription Object that is Per-Job Subscription Object - A Subscription Object that is
associated with a single Job. The Create-Job-Subscriptions associated with a single Job. The Create-Job-Subscriptions
operation and Job Creation operations create such an object. operation and Job Creation operations create such an object.
Per-Printer Subscription Object - A Subscription Object that is Per-Printer Subscription Object - A Subscription Object that is
skipping to change at page 13, line 5 skipping to change at page 15, line 32
Subscribing Client - The client that creates the Subscription Object. Subscribing Client - The client that creates the Subscription Object.
Subscription Creation Operation - An operation that creates a Subscription Creation Operation - An operation that creates a
Subscription Object: Job Creation operations, Create-Job- Subscription Object: Job Creation operations, Create-Job-
Subscriptions operation, and Create-Printer-Subscriptions Subscriptions operation, and Create-Printer-Subscriptions
operation. In the context of a Job Creation operation, a operation. In the context of a Job Creation operation, a
Subscription Creation Operation is the part of the Job Creation Subscription Creation Operation is the part of the Job Creation
operation that creates a Subscription object. operation that creates a Subscription object.
Subscription Creation Request . The request portion of a Subscription Creation Request - The request portion of a
Subscription Creation Operation. Subscription Creation Operation.
Subscription Template Attributes . Subscription Object attributes Subscription Template Attributes - Subscription Object attributes
that a client can supply in a Subscription Creation Operation and that a client can supply in a Subscription Creation Operation and
associated Printer Object attributes that specify supported and associated Printer Object attributes that specify supported and
default values for the Subscription Object attributes. default values for the Subscription Object attributes.
Subscription Description Attributes . Subscription Object attributes Subscription Description Attributes - Subscription Object attributes
that a Printer supplies during a Subscription Creation Operation. that a Printer supplies during a Subscription Creation Operation.
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.
Subscription Attributes Group . The attributes group in a response Subscription Attributes Group - The attributes group in a response
that contains Subscription Object attributes. that contains Subscription Object attributes.
Human Consumable Event Notification . localized text for human Human Consumable Event Notification - localized text for human
consumption only. There is no standardized format and thus consumption only. There is no standardized format and thus
programs should not try to parse this text. programs should not try to parse this text.
Machine Consumable Event Notification - bytes for program Machine Consumable Event Notification - bytes for program
consumption. The bytes are formatted according to the Delivery consumption. The bytes are formatted according to the Delivery
Method document. Method document.
Printer . the software that supports an output device or print server Printer - the software that supports an output device or print server
(see IPP/1.1 [ipp-mod] which uses the terms Printer and Printer (see IPP/1.1 [ipp-mod] which uses the terms Printer and Printer
object interchangeably). This document extends the IPP/1.1 Printer object interchangeably). This document extends the IPP/1.1 Printer
definition to include the software that implements Subscription definition to include the software that implements Subscription
Creation Operations and the sending of Event Notifications, even if Creation Operations and the sending of Event Notifications, even if
the software for such a Printer would be distributed across a the software for such a Printer would be distributed across a
network (see section 2.3). network (see section 2.3).
Notification . when not in the phrases .Event Notification. and Notification - when not in the phrases 'Event Notification' and
.Notification Recipient. . the concepts of this specification, 'Notification Recipient' - the concepts of this specification,
i.e., Events, Subscription Objects, and Event Notifications. i.e., Events, Subscription Objects, and Event Notifications.
4 Object Relationships 4 Object Relationships
This section defines the object relationships between the Printer, Job, This section defines the object relationships between the Printer, Job,
and Subscription Objects. It does not define the implementation. For an and Subscription Objects. It does not define the implementation. For an
illustration of these relationships, see Appendix E. illustration of these relationships, see Appendix E.
4.1 Printer and Per-Printer Subscription Objects 4.1 Printer and Per-Printer Subscription Objects
skipping to change at page 14, line 54 skipping to change at page 18, line 15
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-. and 1. Each attribute's name starts with the prefix string "notify-" and
this document calls such attributes .notify-xxx.. this document calls such attributes "notify-xxx".
2. For each .notify-xxx. Subscription Object attribute defined in 2. For each "notify-xxx" Subscription Object attribute defined in
column 1 of Table 1, Table 1 specifies corresponding Printer column 1 of Table 1, Table 1 specifies corresponding Printer
attributes: .notify-xxx-default., .notify-xxx-supported., .yyy- attributes: "notify-xxx-default", "notify-xxx-supported", "yyy-
supported. and .notify-max-xxx-supported. defined in column 2 of supported" and "notify-max-xxx-supported" defined in column 2 of
Table 1. Table 1.
3. If a Printer supports .notify-xxx. in column 1 of Table 1, then the 3. If a Printer supports "notify-xxx" in column 1 of Table 1, then the
Printer MUST support all associated attributes specified in column Printer MUST support all associated attributes specified in column
2 of Table 1. For example, Table 1 shows that if the Printer 2 of Table 1. For example, Table 1 shows that if the Printer
supports .notify-events., it MUST support .notify-events-default., supports "notify-events", it MUST support "notify-events-default",
.notify-events-supported. and .notify-max-events-supported.. "notify-events-supported" and "notify-max-events-supported".
4. If a Printer does not support .notify-xxx. in column 1 of Table 1, 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. then the Printer MUST NOT support any associated "notify-yyy"
attributes specified in column 2 of Table 1. For example, Table 1 attributes specified in column 2 of Table 1. For example, Table 1
shows that if the Printer doesn.t support .notify-events., it MUST shows that if the Printer doesn't support "notify-events", it MUST
NOT support .notify-events-default., .notify-events-supported. and NOT support "notify-events-default", "notify-events-supported" and
.notify-max-events-supported.. Note this rule does not apply to "notify-max-events-supported". Note this rule does not apply to
attributes whose names do not start with the string .notify-. and attributes whose names do not start with the string "notify-" and
are thus defined in another object and used by other attributes. are thus defined in another object and used by other attributes.
5. Most .notify-xxx. attributes have a corresponding .yyy-supported. 5. Most "notify-xxx" attributes have a corresponding "yyy-supported"
attribute that specifies the supported values for .notify-xxx.. attribute that specifies the supported values for "notify-xxx".
Column 2 of Table 1 specifies the name of each .yyy-supported. Column 2 of Table 1 specifies the name of each "yyy-supported"
attribute. The naming rules of IPP/1.1 (see [ipp-mod]) are used attribute. The naming rules of IPP/1.1 (see [ipp-mod]) are used
when .yyy-supported. is .notify-xxx-supported.. when "yyy-supported" is "notify-xxx-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 the default" attribute that specifies the value for "notify-xxx" if the
client does not supply it. Column 2 of Table 1 specifies the name client does not supply it. Column 2 of Table 1 specifies the name
of each .notify-xxx-default. attribute. The naming rules of IPP/1.1 of each "notify-xxx-default" attribute. The naming rules of IPP/1.1
(see [ipp-mod]) are used. (see [ipp-mod]) 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 its values from which to choose, the client SHOULD query the Printer for its
supported value attributes. The client SHOULD also query the default supported value attributes. The client SHOULD also query the default
value attributes. If the client then limits selectable values to only value attributes. If the client then limits selectable values to only
those values that are supported, the client can guarantee that the those values that are supported, the client can guarantee that the
values supplied by the client in the create request all fall within the values supplied by the client in the create request all fall within the
set of supported values at the Printer. When querying the Printer, the set of supported values at the Printer. When querying the Printer, the
client MAY enumerate each attribute by name in the Get-Printer- client MAY enumerate each attribute by name in the Get-Printer-
Attributes Request, or the client MAY just supply the .subscription- Attributes Request, or the client MAY just supply the 'subscription-
template. group name in order to get the complete set of supported template' group name in order to get the complete set of supported
attributes (both supported and default attributes). attributes (both supported and default attributes).
5.2 Rules for Processing Subscription Template Attributes 5.2 Rules for Processing Subscription Template Attributes
This section defines a detailed set of rules that a Printer follows when This section defines a detailed set of rules that a Printer follows when
it processes Subscription Template Attributes in a Subscription Creation it processes Subscription Template Attributes in a Subscription Creation
Request. These rules are similar to the rules for processing Operation Request. These rules for are similar to the rules for processing
attributes in [ipp-mod]. That is, the Printer may or may not support an Operation attributes in [ipp-mod]. That is, the Printer may or may not
attribute and a client may or may not supply the attribute. Some support an attribute and a client may or may not supply the attribute.
Some combinations of these cases are OK. Others return warnings or
combinations of these cases are OK. Others return warnings or errors, errors, and perhaps a list of unsupported attributes.
and perhaps a list of unsupported attributes.
A Printer MUST implement the following behavior for processing A Printer MUST implement the following behavior for processing
Subscription Template Attributes in a Subscription Creation Request: Subscription Template Attributes in a Subscription Creation Request:
1. If a client supplies a .notify-xxx. attribute from column 1 of 1. If a client supplies a "notify-xxx" attribute from column 1 of
Table 1 and the Printer supports it and its value, the Printer MUST Table 1 and the Printer supports it and its value, the Printer MUST
populate the attribute on the created Subscription Object. 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 Subscription Printer MUST NOT populate the attribute on the created Subscription
Object with it. The Printer MUST do one of the following: Object with it. The Printer MUST do one of the 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 [ipp-mod] section 3.1.7. except that the unsupported Attributes [ipp-mod] section 3.1.7. except that the unsupported
attributes are returned in the Subscription Attributes Group rather attributes are returned in the Subscription Attributes Group rather
than the Unsupported Attributes Group because Subscription Creation than the Unsupported Attributes Group because Subscription Creation
Operations can create more than one Subscription Object). 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 rules value, the Printer MUST NOT create a Subscription Object. The rules
for Unsupported Attributes in step #2 still apply. 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 Subscription (including Job Creation operations) without creating a Subscription
Object, and MUST return in the response: Object, and MUST return in the response:
c)the status code .client-error-bad-request. AND c)the status code 'client-error-bad-request' AND
d)no Subscription Attribute Groups. d)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 [ipp-mod]) OR with defaults - see [ipp-mod]) 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 be a Per-Job Subscription Object and the number of Per-Job b)would create a Per-Job Subscription Object when it doesn't have
Subscription Objects already equals the value of the .notify- space for another Per-Job Subscription Object OR
max-job-subscriptions-supported. Printer attribute OR
c)would be a Per-Printer Subscription Object and the number of c)would create a Per-Printer Subscription Object when it doesn't
Per-Printer Subscription Objects already equals the value of the have space for another Per-Printer Subscription Object.
.notify-max-printer-subscriptions-supported. Printer attribute.
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 the 8. The Printer MUST populate each Subscription Attributes Group of the
response such that each contains: response such that each contains:
a)the .notify-subscription-id. attribute (see section 5.4.1), if a)the "notify-subscription-id" attribute (see section 5.4.1), if
and only if the Printer creates a Subscription Object. and only if the Printer creates a Subscription Object.
b)the .notify-lease-duration. attribute (see section 5.3.7), if b)the "notify-lease-duration" attribute (see section 5.3.7), if
and only if the Printer creates a Per-Printer Subscription and only if the Printer creates a Per-Printer Subscription
Object. The value of this attribute is the value of the Object. The value of this attribute is the value of the
Subscription Object.s .notify-lease-duration. attribute. This Subscription Object's "notify-lease-duration" attribute. This
value MAY be different from the client-supplied value (see value MAY be different from the client-supplied value (see
section 5.3.7). If a client supplies this attribute in the section 5.3.7). If a client supplies this attribute in the
creation of a Per-Job Subscription Object, it MUST appear in creation of a Per-Job Subscription Object, it MUST appear in
this group with the out-of-band value .unsupported. to indicate this group with the out-of-band value 'unsupported' to indicate
that the Printer doesn.t support it in this context. that the Printer doesn't support it in this context.
c)all of the unsupported Subscription Template Attributes from c)all of the unsupported Subscription Template Attributes from
step #2. step #2.
d)the .notify-status-code. attribute if the Printer does not d)the "notify-status-code" attribute if the Printer does not
create the Subscription Object or if there are unsupported create the Subscription Object or if there are unsupported
attributes from step #2. The possible values of the .notify- attributes from step #2. The possible values of the "notify-
status-code. attribute are shown below (see section 17 for more status-code" attribute are shown below (see section 17 for more
details). The Printer returns the first value in the list below details). The Printer returns the first value in the list below
that describes the status. that describes the status.
.client-error-uri-scheme-not-supported.: the Subscription 'client-error-uri-scheme-not-supported': the Subscription
Object was not created because the scheme of the .notify- Object was not created because the scheme of the "notify-
recipient-uri. attribute is not supported. See section 17.1 recipient-uri" attribute is not supported. See section 17.1
for more details about this status code. See step #3 in for more details about this status code. See step #3 in
this section for the case that causes this error, and the this section for the case that causes this error, and the
resulting step #6a) that causes the Printer not to create resulting step #6a) that causes the Printer not to create
the Subscription Object. the Subscription Object.
.client-error-too-many-subscriptions.: the Subscription 'client-error-too-many-subscriptions': the Subscription
Object was not created because the number of Subscription Object was not created because the Printer has no space for
Objects would exceed the value of the Printer.s .notify- additional Subscription Objects. The client SHOULD try
max-job-subscriptions-supported. or .notify-max-printer-
subscriptions-supported. attributes. The client SHOULD try
again later. See section 17.2 for more details about this again later. See section 17.2 for more details about this
status code. See steps #6b) and #6c) in this section for status code. See steps #6b) and #6c) in this section for
the cases that causes this error. the cases that causes this error.
.successful-ok-too-many-events.: the Subscription Object was 'successful-ok-too-many-events': the Subscription Object was
created without the .notify-events. values included in this created without the "notify-events" values included in this
Subscription Attributes Group because the .notify-events. Subscription Attributes Group because the "notify-events"
attribute contains too many values. See section 17.3 for attribute contains too many values. See section 17.3 for
more details about this status code. See step #2 in this more details about this status code. See step #2 in this
section and section 5.3.2 for the cases that cause this section and section 5.3.2 for the cases that cause this
status code. status code.
.successful-ok-ignored-or-substituted-attributes. : the 'successful-ok-ignored-or-substituted-attributes' : the
Subscription Object was created but some supplied Subscription Object was created but some supplied
Subscription Template Attributes are unsupported. These Subscription Template Attributes are unsupported. These
unsupported attributes are also in the Subscription unsupported attributes are also in the Subscription
Attributes Group. See section 17.4 for more details about Attributes Group. See section 17.4 for more details about
this status code. See step #2 in this section for the cases this status code. See step #2 in this section for the cases
that cause this status code. 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
skipping to change at page 19, line 8 skipping to change at page 23, line 15
Attribute Groups. Attribute Groups.
5.3 Subscription Template Attributes 5.3 Subscription Template Attributes
This section contains the Subscription Template Attributes defined for This section contains the Subscription Template Attributes defined for
the Subscription and Printer objects. the Subscription and Printer objects.
Table 1 below shows the Subscription Template Attributes and has two Table 1 below shows the Subscription Template Attributes and has two
columns: columns:
Attribute in Subscription Object: the name and attribute syntax of each . Attribute in Subscription Object: the name and attribute syntax of
Subscription Object Attribute that is a Subscription Template Attribute each Subscription Object Attribute that is a Subscription Template
Attribute
Default and Supported Printer Attributes: the default attribute and . Default and Supported Printer Attributes: the default attribute and
supported Printer attributes that are associated with the attribute in supported Printer attributes that are associated with the attribute
column 1. in column 1.
A Printer MUST support all attributes in Table 1 below except for A Printer MUST support all attributes in Table 1 below except for
.notify-attributes. (and .notify-attributes-supported.). A client MUST "notify-attributes" (and "notify-attributes-supported"). A client MUST
supply .notify-recipient-uri. and MAY omit any of the rest of the supply "notify-recipient-uri" and MAY omit any of the rest of the
attributes in column 1 of Table 1 in a Subscription Creation Request. attributes in column 1 of Table 1 in a Subscription Creation Request.
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-events (1setOf type2 notify-events-default (1setOf type2 notify-events (1setOf type2 notify-events-default (1setOf type2
keyword) keyword) keyword) keyword)
notify-events-supported (1setOf type2 notify-events-supported (1setOf type2
keyword) keyword)
notify-max-events-supported notify-max-events-supported
(integer(2:MAX)) (integer(2:MAX))
Attribute in Subscription Default and Supported Printer
Object Attributes
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-languages generated-natural-language-supported notify-natural-languages generated-natural-language-supported
(naturalLanguage) (1setOf naturalLanguage) (naturalLanguage) (1setOf naturalLanguage)
skipping to change at page 19, line 50 skipping to change at page 24, line 21
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-languages generated-natural-language-supported notify-natural-languages 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 (1setOf notify-lease-duration-supported (1setOf
(integer(0: 67108863) | (integer(0: 67108863) |
rangeOfInteger(0:67108863))) rangeOfInteger(0:67108863)))
notify-persistence (boolean) notify-persistence-default (boolean) notify-time-interval
(integer(0:MAX))
notify-persistence-supported (1setOf
Attribute in Subscription Default and Supported Printer
Object Attributes
boolean)
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. Its This attribute's value is a URL, which is a special case of a URI. Its
value consists of a scheme and an address. The address specifies the value consists of a scheme and an address. The address specifies the
Notification Recipient and the scheme specifies the Delivery Method for Notification Recipient and the scheme specifies the Delivery Method for
each Event Notification associated with this Subscription Object. each Event Notification associated with this Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MUST supply this attribute in Subscription Creation Operation. A client MUST supply this attribute in Subscription Creation Operation.
Thus there is no need for a default attribute. Thus there is no need for a default attribute.
The .notify-schemes-supported (1setOf uriScheme). attribute MUST specify The "notify-schemes-supported (1setOf uriScheme)" attribute MUST specify
the schemes supported for this attribute. the schemes supported for this attribute.
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 and attribute, then the Printer MUST not create the Subscription Object and
MUST return the .notify-status-code. attribute with the .client-error- MUST return the "notify-status-code" attribute with the 'client-error-
uri-scheme-not-supported. value in the Subscription Attributes Group in
uri-scheme-not-supported' value in the Subscription Attributes Group in
the response. the response.
The Printer MUST treat the address part of this attribute as opaque.
5.3.2 notify-events (1setOf type2 keyword) 5.3.2 notify-events (1setOf type2 keyword)
This attribute contains a set of Subscribed Events. When an Event This attribute contains a set of Subscribed Events. When an Event
occurs and it .matches. a value of this attribute, the Printer sends an occurs and it "matches" a value of this attribute, the Printer sends an
Event Notification using information in the Subscription Object. The Event Notification using information in the Subscription Object. The
details of .matching. are described subsection 5.3.2.2. details of "matching" are described subsection 5.3.2.2.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute in Subscription Creation
Operation, the Printer MUST populate this attribute on the Subscription Operation, the Printer MUST populate this attribute on the Subscription
Object with its .notify-events-default. attribute value. Object with its "notify-events-default" attribute value.
Each value of this attribute on a Subscription Object MUST be one of the Each value of this attribute on a Subscription Object MUST be one of the
values of the .notify-events-supported (1setOf type2 keyword). values of the "notify-events-supported (1setOf type2 keyword)"
attribute. attribute.
The number of values of this attribute MUST NOT exceed the value of the The number of values of this attribute MUST NOT exceed the value of the
.notify-max-events-supported. attribute. A Printer MUST support at least "notify-max-events-supported" attribute. A Printer MUST support at least
2 values per Subscription Object. If the number of values supplied by a 2 values per Subscription Object. If the number of values supplied by a
client in a Subscription Creation Operation exceeds the value of this client in a Subscription Creation Operation exceeds the value of this
attribute, the Printer MUST treat extra values as unsupported values and attribute, the Printer MUST treat extra values as unsupported values and
MUST use the value of .successful-ok-too-many-events. for the .notify- MUST use the value of 'successful-ok-too-many-events' for the "notify-
status-code. attribute in the Subscription Attributes Group of the status-code" attribute in the Subscription Attributes Group of the
response. response.
ISSUE 01: OK that we changed the number from 5 to 2 because we have
rearranged the categories of Events to have group events?
5.3.2.1 Standard Values for Subscribed Events 5.3.2.1 Standard Values for Subscribed Events
Each value of this attribute is a keyword and it specifies a Subscribed Each value of this attribute is a keyword and it specifies a Subscribed
Event that represents certain changes. Some keywords represent a subset Event that represents certain changes. Some keywords represent a subset
of changes of another keyword, e.g., .job-completed. is an Event value of changes of another keyword, e.g., 'job-completed' is an Event value
which is a sub-value of .job-state-change.. See section 5.3.2.2 for the which is a sub-value of 'job-state-change'. See section 5.3.2.2 for the
case where this attribute contains both a value and a sub-value. case where this attribute contains both a value and a sub-value.
The values in this section are divided into three categories: No Events, The values in this section are divided into three categories: No Events,
Job Events and Printer Events. Job Events and Printer Events.
A Printer MUST support the Events indicated as .REQUIRED. and MAY A Printer MUST support the Events indicated as "REQUIRED" and MAY
support the Events indicated as .OPTIONAL.. support the Events indicated as "OPTIONAL".
5.3.2.1.1 No Events 5.3.2.1.1 No Events
The standard and only keyword value for No Events is: The standard and only keyword value for No Events is:
.none.: REQUIRED - no Event Notifications for any Events. As the 'none': REQUIRED - no Event Notifications for any Events. As the
sole value of .notify-events-supported., this value means that the sole value of "notify-events-supported", this value means that the
Printer does not support the sending of Event Notifications. As the Printer does not support the sending of Event Notifications. As the
sole value of .notify-events-default., this value means that a sole value of "notify-events-default", this value means that a
client MUST specify the .notify-events. attribute in order for a client MUST specify the "notify-events" attribute in order for a
Subscription Creation Operation to succeed. If the Printer receives Subscription Creation Operation to succeed. If the Printer receives
this value as the sole value of a Subscription Creation Operation, this value as the sole value of a Subscription Creation Operation,
it does not create a Subscription Object. If a Printer receives it does not create a Subscription Object. If a Printer receives
this value with other values of a Subscription Creation Operation, this value with other values of a Subscription Creation Operation,
the Printer MUST treat this value as an unsupported value. the Printer MUST treat this value as an unsupported value.
5.3.2.1.2 Subscribed Printer Events 5.3.2.1.2 Subscribed Printer Events
For a Printer, the first Printer Event MUST be .printer-restarted. and
the last Printer Event MUST be .printer-shutdown..
The standard keyword values for Subscribed Printer Events are: The standard keyword values for Subscribed Printer Events are:
.printer-state-changed.: REQUIRED - the Printer changed state from 'printer-state-changed': REQUIRED - the Printer changed state from
any state to any other state. Specifically, the value of the any state to any other state. Specifically, the value of the
Printer.s .printer-state., .printer-state-reasons. or .printer-is- Printer's "printer-state", "printer-state-reasons" or "printer-is-
accepting-jobs. attributes changed. accepting-jobs" attributes changed.
This Subscribed Event value has the following sub-values: .printer- This Subscribed Event value has the following sub-values: 'printer-
restarted. and .printer-shutdown.. A client can listen for any of restarted' and 'printer-shutdown'. A client can listen for any of
these sub-values if it doesn.t want to listen to all printer-state these sub-values if it doesn't want to listen to all printer-state
changes: changes:
.printer-restarted.: OPTIONAL - when the printer is powered up or 'printer-restarted': OPTIONAL - when the printer is powered up .
the Restart-Printer operation is performed (see [ipp-set2]).
This event is the first Printer Event that can be received from
a Printer.
.printer-shutdown.: OPTIONAL - when the device is being powered 'printer-shutdown': OPTIONAL - when the device is being powered
down or the Shutdown-Printer operation has been performed (see down .
[ipp-set2]). This event is the last Printer Event that can be
received from a Printer.
.printer-config-changed.: OPTIONAL - when the configuration of a 'printer-stopped: REQUIRED - when the printer stops printing, i.e.
Printer has changed, i.e., the value of the .printer-message-from- the value of the "printer-state" Printer attribute becomes
operator. or any .configuration. Printer attribute has changed. A 'stopped'.
.configuration. Printer attribute is an attribute which can change
'printer-config-changed': OPTIONAL - when the configuration of a
Printer has changed, i.e., the value of the "printer-message-from-
operator" or any "configuration" Printer attribute has changed. A
"configuration" Printer attribute is an attribute which can change
value because of some human interaction either direct or indirect, value because of some human interaction either direct or indirect,
and which is not covered by one of the other Events in this and which is not covered by one of the other Events in this
section. Examples of .configuration. Printer attributes are any of section. Examples of "configuration" Printer attributes are any of
the Job Template attributes, such as .xxx-supported., .xxx-ready. the Job Template attributes, such as "xxx-supported", "xxx-ready"
and .xxx-default.. Often, such a change is the result of a client and "xxx-default". Often, such a change is the result of a client
performing a Set-Printer-Attributes operation (see [ipp-set]) on performing a Set-Printer-Attributes operation (see [ipp-set]) on
the Printer. The client has to perform a Get-Printer-Attributes to the Printer. The client has to perform a Get-Printer-Attributes to
find out the new values of these changed attributes. This Event is find out the new values of these changed attributes. This Event is
useful for GUI clients and drivers to update the available printer useful for GUI clients and drivers to update the available printer
capabilities to the user. capabilities to the user.
This Event value has the following sub-values: .printer-media- This Event value has the following sub-values: 'printer-media-
changed. and .printer-finishings-changed.. A client can listen for changed' and 'printer-finishings-changed'. A client can listen for
any of these sub-values if it doesn.t want to listen to all any of these sub-values if it doesn't want to listen to all
printer-configuration changes: printer-configuration changes:
.printer-media-changed.: OPTIONAL - when the media loaded on a 'printer-media-changed': OPTIONAL - when the media loaded on a
printer has been changed, i.e., the .media-ready. attribute has printer has been changed, i.e., the "media-ready" attribute has
changed. This Event includes two cases: an input tray that goes changed. This Event includes two cases: an input tray that goes
empty and an input tray that receives additional media of the empty and an input tray that receives additional media of the
same type or of a different type. The client must check the same type or of a different type. The client must check the
.media-ready. Printer attribute (see [ipp-mod] section 4.2.11) "media-ready" Printer attribute (see [ipp-mod] section 4.2.11)
separately to find out what changed. separately to find out what changed.
.printer-finishings-changed.: OPTIONAL - when the finisher on a 'printer-finishings-changed': OPTIONAL - when the finisher on a
printer has been changed, i.e., the .finishings-ready. attribute printer has been changed, i.e., the "finishings-ready" attribute
has changed. This Event includes two cases: a finisher that goes has changed. This Event includes two cases: a finisher that goes
empty and a finisher that is refilled (even if it is not full). empty and a finisher that is refilled (even if it is not full).
The client must check the .finishings-ready. Printer attribute The client must check the "finishings-ready" Printer attribute
separately to find out what changed. separately to find out what changed.
.printer-queue-order-changed.: OPTIONAL - the order of jobs in the 'printer-queue-order-changed': OPTIONAL - the order of jobs in the
Printer.s queue has changed, so that an application that is Printer's queue has changed, so that an application that is
monitoring the queue can perform a Get-Jobs operation to determine monitoring the queue can perform a Get-Jobs operation to determine
the new order. This Event does not include when a job enters the the new order. This Event does not include when a job enters the
queue (the .job-created. Event covers that) and does not include queue (the 'job-created' Event covers that) and does not include
when a job leaves the queue (the .job-completed. Event covers when a job leaves the queue (the 'job-completed' Event covers
that). that).
.printer-no-longer-full.: OPTIONAL - when the Printer has just
become able to accept a Job Creation operation, Send-Document
operation, or Send-URI operation. A Printer sends this Event when
it has acquired more buffer space to accept jobs after it
previously did not have room to accept any more jobs and would have
rejected a Job Creation Operation, a Send-Document operation, or
Send-URI operation. A Notification Recipient listens for this Event
when there is more than one client feeding a printer/server (fan-
in).
.printer-full.: OPTIONAL - when the Printer has just become unable
to accept a Job Creation operation, Send-Document operation, or
Send-URI operation due to lack of buffer space. It is intended that
a Notification Recipient use this Event to stop whatever the
.printer-no-longer-full. Event starts.
ISSUE 02: OK to add .printer-full. Event?
.printer-almost-idle.: OPTIONAL - when the Printer needs another
Job in order to stay busy. A Printer that is an output device MAY
use this Event to request a new job sufficiently ahead of time so
as not to run out of work between jobs. A Printer that is a fan-out
spooler MAY listen for this Event and hold pending Jobs until a
downstream Printer sends this Event to indicate that it needs
another Job in order to stay busy.
.printer-not-almost-idle.: OPTIONAL - when the Printer no-longer
needs another Job in order to stay busy. It is intended that a
Notification Recipient use this Event to stop whatever the
.printer-almost-idle. Event starts.
ISSUE 03: OK to add .printer-not-almost-idle. Event?
5.3.2.1.3 Subscribed Job Events 5.3.2.1.3 Subscribed Job Events
For each Job object, the first Job Event MUST be .job-created. and the
last Job Event MUST be .job-completed..
The standard keyword values for Subscribed Job Events are: The standard keyword values for Subscribed Job Events are:
.job-state-changed.: REQUIRED - the job has changed from any state 'job-state-changed': REQUIRED - the job has changed from any state
to any other state. Specifically, the Printer sends this Event to any other state. Specifically, the Printer sends this Event
whenever the value of the .job-state. attribute or .job-state- whenever the value of the "job-state" attribute or "job-state-
reasons. attribute changes. When a Job is removed from the Job reasons" attribute changes. When a Job is removed from the Job
History (see [ipp-mod] 4.3.7.1), no Event is generated. History (see [ipp-mod] 4.3.7.1), no Event is generated.
This Event value has the following sub-values: .job-created., .job- This Event value has the following sub-values: 'job-created', 'job-
completed. and .job-purged.. A client can listen for any of these completed' and 'job-purged'. A client can listen for any of these
sub-values if it doesn.t want to listen to all .job-state changes.. sub-values if it doesn't want to listen to all 'job-state changes'.
.job-created.: REQUIRED - the Printer has accepted a Job Creation 'job-created': REQUIRED - the Printer has accepted a Job Creation
operation and the job.s .time-at-creation. attribute value is operation and the job's "time-at-creation" attribute value is
set (see [ipp-mod] section 4.3.14.1). The Printer puts the job set (see [ipp-mod] section 4.3.14.1). The Printer puts the job
in the .pending., .pending-held. or .processing. states. This in the 'pending', 'pending-held' or 'processing' states..
event is the first Job Event that can be received from a Job.
.job-completed.: REQUIRED - the job has reached one of the
completed states, i.e., the value of the job.s .job-state.
attribute has changed to: .completed., .aborted., or .canceled..
The Job.s .time-at-completed. and .date-time-at-completed. (if
supported) attributes are set (see [ipp-mod] section 4.3.14).
This event is the last Job Event that can be received from a 'job-completed': REQUIRED - the job has reached one of the
Job. completed states, i.e., the value of the job's "job-state"
attribute has changed to: 'completed', 'aborted', or 'canceled'.
The Job's "time-at-completed" and "date-time-at-completed" (if
supported) attributes are set (see [ipp-mod] section 4.3.14)..
The Printer also sends this Event when a Job is removed with the
Purge-Job operation. In this case, the Event Notification MUST
report the 'job-state' as 'canceled'.
.job-purged.: OPTIONAL - when a .not-completed. job (i.e., not 'job-stopped: OPTIONAL - when the job stops printing, i.e. the
.completed., .canceled., or .aborted.) was purged from the value of the "job-state" Job attribute becomes 'processing-
printer using the Purge-Jobs operation. The Printer MUST stopped'.
immediately send a .job-completed. event after this event to
meet the requirement that .job-completed. is the last event for
the Job.
.job-config-changed.: OPTIONAL - when the configuration of a job 'job-config-changed': OPTIONAL - when the configuration of a job
has changed, i.e., the value of the .job-message-from-operator. or has changed, i.e., the value of the "job-message-from-operator" or
any of the .configuration. Job attributes have changed. A any of the "configuration" Job attributes have changed. A
.configuration. Job attribute is an attribute that can change value "configuration" Job attribute is an attribute that can change value
because of some human interaction either direct or indirect. because of some human interaction either direct or indirect.
Examples of .configuration. Job attributes are any of the job Examples of "configuration" Job attributes are any of the job
template attributes and the .job-name. attribute. Often, such a template attributes and the "job-name" attribute. Often, such a
change is the result of the user or the Operator performing a Set- change is the result of the user or the Operator performing a Set-
Job-Attributes operation (see [ipp-set]) on the Job object. The Job-Attributes operation (see [ipp-set]) on the Job object. The
client performs a Get-Job-Attributes to find out the new values of client performs a Get-Job-Attributes to find out the new values of
the changed attributes. This Event is useful for GUI clients and the changed attributes. This Event is useful for GUI clients and
drivers to update the job information to the user. drivers to update the job information to the user.
.job-progress.: OPTIONAL . an impression, sheet, or copy has 'job-progress': OPTIONAL - when the Printer has completed Printing a
completed. See the separate [ipp-prog] specification. sheet. See the separate [ipp-prog] specification for additional
attributes that a Printer MAY send in an Event Notification caused
by this Event. The "notify-time-interval" attribute affects this
Event by causing the Printer NOT to send an Event Notification
every time a 'job-progress' Events occurs. See section 5.3.8 for
full details.
5.3.2.2 Rules for Matching of Subscribed Events 5.3.2.2 Rules for Matching of Subscribed Events
When an Event occurs, the Printer MUST find each Subscription object When an Event occurs, the Printer MUST find each Subscription object
whose .notify-events. attribute .matches. the Event. The rules for whose "notify-events" attribute "matches" the Event. The rules for
.matching. of Subscribed Events are described separately for Printer "matching" of Subscribed Events are described separately for Printer
Events and for Job Events. This section also describes some special Events and for Job Events. This section also describes some special
cases. cases.
5.3.2.2.1 Rules for Matching of Printer Events 5.3.2.2.1 Rules for Matching of Printer Events
Suppose that the Printer causes Printer Event E to occur. For each Per- Suppose that the Printer causes Printer Event E to occur. For each Per-
Job or Per-Printer Subscription S in the Printer, if E equals a value of Job or Per-Printer Subscription S in the Printer, if E equals a value of
this attribute in S or E is a sub-value of a value of this attribute in 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. S, the Printer MUST generate an Event Notification.
Consider the example. There are three Subscription Objects each with Consider the example. There are three Subscription Objects each with
the Subscribed Printer Event .printer-state-changed.. Subscription the Subscribed Printer Event 'printer-state-changed'. Subscription
Object A is a Per-Printer Subscription Object. Subscription Object B Object A is a Per-Printer Subscription Object. Subscription Object B
is a Per-Job Subscription Object for Job 1, and Subscription Object C is a Per-Job Subscription Object for Job 1, and Subscription Object C
is a Per-Job Subscription Object for Job 2. When the Printer enters is a Per-Job Subscription Object for Job 2. When the Printer enters
the .stopped. state, the Printer sends an Event Notification to the the 'stopped' state, the Printer sends an Event Notification to the
Notification Recipients of Subscription Objects A, B, and C because Notification Recipients of Subscription Objects A, B, and C because
this is a Printer Event. Note if Job 1 has already completed, the this is a Printer Event. Note if Job 1 has already completed, the
Printer would not send an Event Notification for its Subscription Printer would not send an Event Notification for its Subscription
Object. Object.
5.3.2.2.2 Rules for Matching of Job Events 5.3.2.2.2 Rules for Matching of Job Events
Suppose that Job J causes Job Event E to occur. Suppose that Job J causes Job Event E to occur.
3. For each Per-Printer Subscription S in the Printer, if E equals a 3. For each Per-Printer Subscription S in the Printer, if E equals a
skipping to change at page 25, line 20 skipping to change at page 30, line 13
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.
5. For each Per-Job Subscription S that is NOT associated Job J, if E 5. 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 equals a value of this attribute in S or E is a sub-value of a
value of this attribute in, the Printer MUST NOT generate an Event value of this attribute in, the Printer MUST NOT generate an Event
Notification from S. Notification from S.
Consider the example: There are three Subscription Objects listening Consider the example: There are three Subscription Objects listening
for the Job Event .job-completed.. Subscription Object A is a Per- for the Job Event 'job-completed'. Subscription Object A is a Per-
Printer Subscription Object. Subscription Object B is a Per-Job Printer Subscription Object. Subscription Object B is a Per-Job
Subscription Object for Job 1, and Subscription Object C is a Per-Job Subscription Object for Job 1, and Subscription Object C is a Per-Job
Subscription Object for Job 2. In addition, Per-Printer Subscription Subscription Object for Job 2. In addition, Per-Printer Subscription
Object D is listening for the Job Event .job-state-changed.. When Job Object D is listening for the Job Event 'job-state-changed'. When Job
1 completes, the Printer sends an Event Notification to the 1 completes, the Printer sends an Event Notification to the
Notification Recipient of Subscription Object A (because it is Per- Notification Recipient of Subscription Object A (because it is Per-
Printer) and Subscription Object B because it is a Per-Job Printer) and Subscription Object B because it is a Per-Job
Subscription Object associated with the Job generating the Event. Subscription Object associated with the Job generating the Event.
The Printer also sends an Event Notification to the Notification The Printer also sends an Event Notification to the Notification
Recipient of Subscription Object D because .job-completed. is a sub- Recipient of Subscription Object D because 'job-completed' is a sub-
value of .job-state-changed. . the value that Subscription Object D value of 'job-state-changed' - the value that Subscription Object D
is listening for. The Printer does not send an Event Notification to is listening for. The Printer does not send an Event Notification to
the Notification Recipients of Subscription Object C because it is a the Notification Recipients of Subscription Object C because it is a
Per-Job Subscription Object associated with some Job other than the Per-Job Subscription Object associated with some Job other than the
Job generating the Event. Job generating the Event.
5.3.2.2.3 Special Cases for Matching Rules 5.3.2.2.3 Special Cases for Matching Rules
This section contains rule for special cases. This section contains rule for special cases.
If an Event matches Subscribed Events in two different Subscription If an Event matches Subscribed Events in two different Subscription
Objects and the Printer would send two identical Event Notifications Objects and the Printer would send two identical Event Notifications
(except for the .notify-subscription-id. attribute) to the same (except for the "notify-subscription-id" attribute) to the same
Notification Recipient using the same Delivery Method, the Printer MUST Notification Recipient using the same Delivery Method, the Printer MUST
send both Event Notifications. That is, the Printer MUST NOT try to send both Event Notifications. That is, the Printer MUST NOT try to
consolidate seemingly identical Event Notifications that occur in consolidate seemingly identical Event Notifications that occur in
separate Subscription objects. Incidentally, the Printer MUST NOT reject separate Subscription objects. Incidentally, the Printer MUST NOT reject
Subscription Creation Operations that would create this scenario. Subscription Creation Operations that would create this scenario.
If an Event matches two values of this .notify-events. attribute in a If an Event matches two values of this "notify-events" attribute in a
single Subscription object (e.g., a value and its sub-value), a Printer single Subscription object (e.g., a value and its sub-value), a Printer
MAY send one Event Notification for each matched value in the MAY send one Event Notification for each matched value in the
Subscription Object or it MAY send only one Event Notification per Subscription Object or it MAY send only one Event Notification per
Subscription Object. The rules in sections 5.3.2.2.1 and 5.3.2.2.2 are Subscription Object. The rules in sections 5.3.2.2.1 and 5.3.2.2.2 are
purposefully ambiguous about the number of Event Notification sent when purposefully ambiguous about the number of Event Notification sent when
Event E matches two or more values in a Subscription Object. Event E matches two or more values in a Subscription Object.
Consider the example: There are two Per-Printer Subscription Objects Consider the example: There are two Per-Printer Subscription Objects
when a Job completes. Subscription Object A has the Subscribed Job when a Job completes. Subscription Object A has the Subscribed Job
Event .job-state-changed.. Subscription Object B has the Subscribed Event 'job-state-changed'. Subscription Object B has the Subscribed
Job Events .job-state-changed. and .job-completed.. The Printer sends Job Events 'job-state-changed' and 'job-completed'. The Printer sends
an Event Notification to the Notification Recipient of Subscription an Event Notification to the Notification Recipient of Subscription
Object A with the value of .job-state-changed. for the .notify- Object A with the value of 'job-state-changed' for the "notify-
subscribing-event. attribute. The Printer sends either one or two subscribing-event" attribute. The Printer sends either one or two
Event Notifications to the Notification Recipient of Subscription Event Notifications to the Notification Recipient of Subscription
Object B, depending on implementation. If it sends two Event Object B, depending on implementation. If it sends two Event
Notifications, one has the value of .job-state-changed. for the Notifications, one has the value of 'job-state-changed' for the
.notify-subscribing-event. attribute, and the other has the value of "notify-subscribing-event" attribute, and the other has the value of
.job-completed. for the .notify-subscribing-event. attribute. If it 'job-completed' for the "notify-subscribing-event" attribute. If it
sends one Event Notification, it has the value of either .job-state- sends one Event Notification, it has the value of either 'job-state-
changed. or .job-completed. for the .notify-subscribing-event. changed' or 'job-completed' for the "notify-subscribing-event"
attribute, depending on implementation. The algorithm for choosing attribute, depending on implementation. The algorithm for choosing
such a value is implementation dependent. such a value is implementation dependent.
In addition, Delivery Methods MAY allow the Printer to moderate certain
high frequency events (see section 9).
5.3.3 notify-attributes (1setOf type2 keyword) 5.3.3 notify-attributes (1setOf type2 keyword)
This attribute contains a set of attribute names. When a Printer sends a This attribute contains a set of attribute names. When a Printer sends a
Machine Consumable Event Notification, it includes a fixed set of Machine Consumable Event Notification, it includes a fixed set of
attributes (see section 9.1). If this attribute is present and the Event attributes (see section 0). If this attribute is present and the Event
Notification is Machine Consumable, the Printer also includes the Notification is Machine Consumable, the Printer also includes the
attributes specified by this attribute. attributes specified by this attribute.
A Printer MAY support this attribute. A Printer MAY support this attribute.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute in Subscription Creation
Operation or the Printer does not support this attribute, the Operation or the Printer does not support this attribute, the
Subscription Object MUST NOT contain the .notify-attributes. attribute. Subscription Object MUST NOT contain the "notify-attributes" attribute.
There is no .notify-attributes-default. attribute. There is no "notify-attributes-default" attribute.
Each keyword value of this attribute on a Subscription Object MUST be a Each keyword value of this attribute on a Subscription Object MUST be a
value of the .notify-attributes-supported (1setOf type2 keyword). value of the "notify-attributes-supported (1setOf type2 keyword)"
attribute. The .notify-attributes-supported. MAY contain any Printer attribute. The "notify-attributes-supported" MAY contain any Printer
attribute, Job attribute or Subscription Object attribute that the attribute, Job attribute or Subscription Object attribute that the
Printer supports in an Event Notification. It MUST NOT contain any of Printer supports in an Event Notification. It MUST NOT contain any of
the attributes in Section 9.1 that a Printer automatically puts in an the attributes in Section 0 that a Printer automatically puts in an
Event Notification; it would be redundant. If a client supplies an Event Notification; it would be redundant. If a client supplies an
attribute in Section 9.1, the Printer MUST treat it as an unsupported attribute in Section 0, the Printer MUST treat it as an unsupported
attribute value of the .notify-attributes. attribute. attribute value of 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 Notification b) a Job attribute and the Printer is generating an Event Notification
from a Per-Job Subscription Object S, the Printer MUST use the from a Per-Job Subscription Object S, the Printer MUST use the
attribute N in the Job object associated with S. attribute N in the Job object associated with S.
c) a Job attribute and the Printer is generating an Event Notification c) a Job attribute and the Printer is generating an Event Notification
from a Per-Printer Subscription Object and the Event is: from a Per-Printer Subscription Object and the Event 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 contains If a Printer supports this attribute and a Subscription Object contains
this attribute and the Delivery Method generates a Machine Consumable this attribute and the Delivery Method generates a Machine Consumable
Event Notification, the Printer MUST include in each Event Notification: Event Notification, the Printer MUST include in each Event Notification:
a)the attributes specified in section 9.1 and a)the attributes specified in section 0 and
b)each attribute named by this attribute. b)each attribute named by this attribute.
5.3.4 notify-user-data (octetString(63)) 5.3.4 notify-user-data (octetString(63))
This attribute contains opaque data that some Delivery Methods include This attribute contains opaque data that some Delivery Methods include
in each Machine Consumable Event Notification. The opaque data might in each Machine Consumable Event Notification. The opaque data might
contain, for example: contain, for example:
the identity of the Subscriber . the identity of the Subscriber
a path or index to some Subscriber information
a key that identifies to the Notification Recipient the ultimate . a path or index to some Subscriber information
. a key that identifies to the Notification Recipient the ultimate
recipient of the Event Notification recipient of the Event Notification
the id for a Notification Recipient that had previously registered with . the id for a Notification Recipient that had previously registered
an Instant Messaging Service with an Instant Messaging Service
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute in Subscription Creation
Operation, the Subscription Object MUST NOT contain the .notify-user- Operation, the Subscription Object MUST NOT contain the "notify-user-
data. attribute. There is no .notify-user-data-default. attribute. data" attribute. There is no "notify-user-data-default" attribute.
There is no .user-data-supported. attribute. Rather, any octetString There is no "user-data-supported" attribute. Rather, any octetString
whose length does not exceed 63 octets is a supported value. If the whose length does not exceed 63 octets is a supported value. If the
length exceeds 63 octets, the Printer MUST treat it as an unsupported length exceeds 63 octets, the Printer MUST treat it as an unsupported
value. value.
5.3.5 notify-charset (charset) 5.3.5 notify-charset (charset)
This attribute specifies the charset to be used in the Event This attribute specifies the charset to be used in the Event
Notification content sent to the Notification Recipient, whether the Notification content sent to the Notification Recipient, whether the
Event Notification content is Machine Consumable or Human Consumable. Event Notification content is Machine Consumable or Human Consumable.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute in Subscription Creation
Operation or supplies an unsupported value, the Printer MUST populate Operation or supplies an unsupported value, the Printer MUST populate
this attribute in the Subscription Object with the value of the this attribute in the Subscription Object with the value of the
.attributes-charset. operation attribute, which is a REQUIRED attribute "attributes-charset" operation attribute, which is a REQUIRED attribute
in all IPP requests (see [ipp-mod]). If the value of the .attributes- in all IPP requests (see [ipp-mod]). If the value of the "attributes-
charset. attribute is unsupported, the Printer MUST populate this charset" attribute is unsupported, the Printer MUST populate this
attribute in the Subscription Object with the value of the Printer.s attribute in the Subscription Object with the value of the Printer's
.charset-configured. attribute. There is no .notify-charset-default. "charset-configured" attribute. There is no "notify-charset-default"
attribute. attribute.
The value of this attribute on a Subscription Object MUST be a value of The value of this attribute on a Subscription Object MUST be a value of
the .charset-supported (1setOf charset). attribute. the "charset-supported (1setOf charset)" attribute.
5.3.6 notify-natural-language (naturalLanguage) 5.3.6 notify-natural-language (naturalLanguage)
This attribute specifies the natural language to be used in any human This attribute specifies the natural language to be used in any human
consumable text in the Event Notification content sent to the consumable text in the Event Notification content sent to the
Notification Recipient, whether the Event Notification content is Notification Recipient, whether the Event Notification content is
Machine Consumable or Human Consumable. Machine Consumable or Human Consumable.
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute in Subscription Creation
Operation or supplies an unsupported value, the Printer MUST populate Operation or supplies an unsupported value, the Printer MUST populate
this attribute in the Subscription Object with the value of the this attribute in the Subscription Object with the value of the
.attributes-natural-language. operation attribute, which is a REQUIRED "attributes-natural-language" operation attribute, which is a REQUIRED
attribute in all IPP requests (see [ipp-mod]). If the value of the attribute in all IPP requests (see [ipp-mod]). If the value of the
.attributes-natural-language. attribute is unsupported, the Printer MUST "attributes-natural-language" attribute is unsupported, the Printer MUST
populate this attribute in the Subscription Object with the value of the populate this attribute in the Subscription Object with the value of the
Printer.s .natural-language-configured. attribute. There is no .notify- Printer's "natural-language-configured" attribute. There is no "notify-
natural-language-default. attribute. natural-language-default" attribute.
The value of this attribute on a Subscription Object MUST be a value of The value of this attribute on a Subscription Object MUST be a value of
the .generated-natural-language-supported (1setOf type2 the "generated-natural-language-supported (1setOf type2
naturalLanguage). attribute. naturalLanguage)" attribute.
5.3.7 notify-lease-duration (integer(0:67108863)) 5.3.7 notify-lease-duration (integer(0:67108863))
This attribute specifies the duration of the lease associated with the This attribute specifies the duration of the lease associated with the
Per-Printer Subscription Object at the time the Subscription Object was Per-Printer Subscription Object at the time the Subscription Object was
created or the lease was renewed. The duration of the lease is infinite created or the lease was renewed. The duration of the lease is infinite
if the value is 0, i.e., the lease never expires. if the value is 0, i.e., the lease never expires.
This attribute is not present on a Per-Job Subscription Object because This attribute is not present on a Per-Job Subscription Object because
the Subscription Object lasts exactly as long as the associated Job the Subscription Object lasts exactly as long as the associated Job
object. See section 5.4.3 on .notify-lease-expiration-time object. See section 5.4.3 on "notify-lease-expiration-time
(integer(0:MAX)). for more details. (integer(0:MAX))" for more details.
A Printer MUST support this attribute. A Printer MUST support this attribute.
For a Subscription Object Creation operation of a Per-Job Subscription For a Subscription Object Creation operation of a Per-Job Subscription
Object, the client MUST NOT supply this attribute. If the client does Object, the client MUST NOT supply this attribute. If the client does
supply this attribute, the Printer MUST treat it as an unsupported supply this attribute, the Printer MUST treat it as an unsupported
attribute. attribute.
For a Subscription Creation Operation of a Per-Printer Subscription For a Subscription Creation Operation of a Per-Printer Subscription
Object or a Renew-Subscription operation, a client MAY supply this Object or a Renew-Subscription operation, a client MAY supply this
attribute. If the client does not supply this attribute, the Printer attribute. If the client does not supply this attribute, the Printer
MUST populate this attribute with its .notify-lease-duration-default. MUST populate this attribute with its "notify-lease-duration-default"
(0:67108863) attribute value. If the client supplies this attribute with (0:67108863) attribute value. If the client supplies this attribute with
an unsupported value, the Printer MUST populate this attribute with a an unsupported value, the Printer MUST populate this attribute with a
supported value, and this value SHOULD be as close as possible to the supported value, and this value SHOULD be as close as possible to the
value requested by the client. Note: this rule implies that a Printer value requested by the client. Note: this rule implies that a Printer
doesn.t assign the value of 0 (infinite) unless the client requests it. doesn't assign the value of 0 (infinite) unless the client requests it.
After the Printer has populated this attribute with a supported value, After the Printer has populated this attribute with a supported value,
the value represents the .granted duration. of the lease and the Printer the value represents the "granted duration" of the lease and the Printer
sets the value of the Subscription Object.s .notify-lease-expiration- sets the value of the Subscription Object's "notify-lease-expiration-
time. attribute as specified in section 5.4.3. time" attribute as specified in section 5.4.3.
The value of this attribute on a Subscription Object MUST be a value of The value of this attribute on a Subscription Object MUST be a value of
the .notify-lease-duration-supported. (1setOf (integer(0:67108863) | the "notify-lease-duration-supported" (1setOf (integer(0:67108863) |
rangeOfInteger(0:67108863))) attribute. rangeOfInteger(0:67108863))) attribute.
A Printer MAY require authentication in order to return the value of 0 A Printer MAY require authentication in order to return the value of 0
(the lease never expires) as one of the values of .notify-lease- (the lease never expires) as one of the values of "notify-lease-
duration-supported., and to allow 0 as a value of the .notify-lease- duration-supported", and to allow 0 as a value of the "notify-lease-
duration. attribute. duration" attribute.
Note: The maximum value 67,108,863 is 2 raised to the 26 power minus 1 Note: The maximum value 67,108,863 is 2 raised to the 26 power minus 1
and is about 2 years in seconds. The value is considerably less than and is about 2 years in seconds. The value is considerably less than
MAX so that there is virtually no chance of an overflow when it is added MAX so that there is virtually no chance of an overflow when it is added
to .printer-up-time. to produce .notify-lease-expiration-time.. to "printer-up-time" to produce "notify-lease-expiration-time".
5.3.8 notify-persistence (boolean) 5.3.8 notify-time-interval (integer(0:MAX))
This attribute specifies whether the Printer preserves the Subscription The 'job-progress' Event occurs each time that a Printer completes a
Object across power cycles. sheet. Some Notification Recipients do not want to receive an Event
Notification every time this Event occurs. This attribute allows a
Subscribing Client to request how often it want to receive Event
Notifications for 'job-progress' Events.
A Printer MUST support this attribute. The Printer MUST support this attribute if and only if the Printer
supports the 'job-progress' Event.
A client MAY supply this attribute in a Subscription Creation Operation. A client MAY supply this attribute in a Subscription Creation Operation.
If the client does not supply this attribute in Subscription Creation If the client does not supply this attribute, the Printer MUST not
Operation, the Printer MUST populate this attribute with its .notify- populate this attribute on the Subscription Object. There is no default
persistence-default. (boolean) attribute value. If the client supplies "notify-time-interval-default" attribute.
this attribute with an unsupported value, the Printer MUST populate this
attribute with a supported value. The Printer MAY populate this
attribute with a value other than the one the client requests. For
example, if the client specifies .true. and the Printer doesn.t have
space for another Subscription Object, it sets the value of this
attribute to .false.. If the client specifies .false. and the Printer
has a policy of setting this attribute to .true. if there is space, the
Printer sets this attribute to .true..
The value of this attribute on a Subscription Object MUST be a value of There is no "notify-time-interval-supported". The value of this
the .notify-persistence-supported (1setOf boolean). attribute. The attribute MAY be any nonnegative integer (0,MAX).
.notify-persistence-supported. (1setOf boolean) attribute can have one If the 'job-progress' Event occurs and a Subscription Object contains
of the following three values: the 'job-progress' Event as a value of the 'notify-events' attribute,
there are two cases to consider:
true: all Subscription Objects are persistent (if there is space). 1. This attribute is not present on the Subscription Object or has the
value of 0. The Printer MUST generate and send an Event
Notification (as is the case with other Events).
false: no Subscription Objects are persistent 2. This attribute is present with a nonzero value of N:
true, false: some Subscription Objects are persistent and others are a)If the Printer has not sent an Event Notification for the 'job-
not. For example, the Printer may have room for only 2 Subscription progress' Event for the associated Subscription Object within
the past N seconds, the Printer MUST send an Event Notification
for the Event that just occurred. Note when the Printer
completes the first page of a Job, this rule implies that the
Printer sends an Event Notification for a Per-Job Subscription
Objects. Objects.
It is RECOMMENDED that all Subscription Objects be persistent. If Jobs b)Otherwise, the Printer MUST NOT generate or send an Event
are persistent, the Per-Job Subscription Objects MUST be persistent too. Notification for the associated Subscription Object. The Printer
MUST NOT increase the value of the "notify-sequence-number"
Subscription Object attribute (i.e., the sequence of values of
the "notify-sequence-number" attribute counts the Event
Notifications that the Printer sent and not the Events that do
not cause an Event Notification to be sent).
ISSUE 04: it would be better for this attribute to be a Subscription It is RECOMMENDED that a Subscribing Client use this attribute when it
Description attribute that the Printer sets to show whether the Object subscribes to the 'job-progress' Event, and that the value be
is persistent or not. Agree? sufficiently large to limit the frequency with which the Printer sends
Event Notifications.
This attribute MUST not effect any Events other than 'job-progress'.
5.4 Subscription Description Attributes 5.4 Subscription Description Attributes
Subscription Description Attributes are those attributes that a Printer Subscription Description Attributes are those attributes that a Printer
adds to a Subscription Object at the time of its creation. adds to a Subscription Object at the time of its creation.
A Printer MUST support all attributes in this Table 2. A Printer MUST support all attributes in this Table 2.
A client MUST NOT supply the attributes in Table 2 in a Subscription A client MUST NOT supply the attributes in Table 2 in a Subscription
Template Attributes Group of a Subscription Creation Operation. If the Template Attributes Group of a Subscription Creation Operation. If the
client supplies them, the Printer MUST NOT set them and MUST treat them client supplies them, the Printer MUST NOT set them and MUST treat them
as unsupported attributes. There are no corresponding default or as unsupported attributes. There are no corresponding default or
supported attributes. supported attributes.
Table 2 . Subscription Description Attributes Table 2 - Subscription Description Attributes
Subscription Object attributes: Subscription Object attributes:
notify-subscription-id (integer(1:MAX)) notify-subscription-id (integer(1:MAX))
notify-sequence-number (integer(0:MAX)) notify-sequence-number (integer(0:MAX))
notify-lease-expiration-time (integer(0:MAX)) notify-lease-expiration-time (integer(0:MAX))
notify-printer-up-time (integer(1:MAX)) notify-printer-up-time (integer(1:MAX))
notify-printer-uri (uri) notify-printer-uri (uri)
notify-job-id (integer(1:MAX)) notify-job-id (integer(1:MAX))
Subscription Object attributes:
notify-subscriber-user-name (name(MAX)) notify-subscriber-user-name (name(MAX))
5.4.1 notify-subscription-id (integer (1:MAX)) 5.4.1 notify-subscription-id (integer (1:MAX))
This attribute identifies a Subscription Object instance with a number This attribute identifies a Subscription Object instance with a number
that is unique within the context of the Printer. The Printer generates that is unique within the context of the Printer. The Printer generates
this value at the time it creates the Subscription Object. this value at the time it creates the Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
skipping to change at page 31, line 28 skipping to change at page 38, line 16
as it creates Subscription Objects. Sequential assignment makes it easy as it creates Subscription Objects. Sequential assignment makes it easy
for rogue clients to guess the value of this attribute on other for rogue clients to guess the value of this attribute on other
Subscription Objects. Subscription Objects.
The Printer SHOULD avoid re-using recent values of this attribute during The Printer SHOULD avoid re-using recent values of this attribute during
continuous operation of the Printer as well as across power cycles. Then continuous operation of the Printer as well as across power cycles. Then
a Subscribing Client is unlikely to find that a stale reference accesses a Subscribing Client is unlikely to find that a stale reference accesses
a new Subscription Object. 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 SNMP index values, which also cannot 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 send an Event Notification. When Printer has generated and attempted to send an Event Notification. When
an Event Notification contains this attribute, the Notification an Event Notification contains this attribute, the Notification
Recipient can determine whether it missed some Event Notifications Recipient can determine whether it missed some Event Notifications
(i.e., numbers skipped) or received duplicates (i.e., same number (i.e., numbers skipped) or received duplicates (i.e., same number
twice). twice).
skipping to change at page 32, line 8 skipping to change at page 39, line 8
returns a response, the Printer can re-try sending an Event Notification returns a response, the Printer can re-try sending an Event Notification
a certain number of times with the same sequence number when the a certain number of times with the same sequence number when the
Notification Recipient fails to return a response. Notification Recipient fails to return a response.
If a Subscription Object lasts long enough to reach the value of MAX, If a Subscription Object lasts long enough to reach the value of MAX,
its next value MUST be 0, i.e., it wraps. its next value MUST be 0, i.e., it wraps.
5.4.3 notify-lease-expiration-time (integer(0:MAX)) 5.4.3 notify-lease-expiration-time (integer(0:MAX))
This attribute specifies the time in the future when the lease on the This attribute specifies the time in the future when the lease on the
Per-Printer Subscription Object will expire, i.e. the .printer-up-time. Per-Printer Subscription Object will expire, i.e. the "printer-up-time"
value at which the lease will expire. If the value is 0, the lease never value at which the lease will expire. If the value is 0, the lease never
expires. expires.
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this attribute When the Printer creates a Per-Job Subscription Object, this attribute
MUST NOT be present . the Subscription Object lasts exactly as long as MUST NOT be present - the Subscription Object lasts exactly as long as
the associated Job object. the associated Job object.
When the Printer creates a Per-Printer Subscription Object, it populates When the Printer creates a Per-Printer Subscription Object, it populates
this attribute with a value that is the sum of the values of the this attribute with a value that is the sum of the values of the
Printer.s .printer-up-time. attribute and the Subscription Object.s Printer's "printer-up-time" attribute and the Subscription Object's
.notify-lease-duration. attribute with the following exception. If the "notify-lease-duration" attribute with the following exception. If the
value of the Subscription Object.s .notify-lease-duration. attribute is value of the Subscription Object's "notify-lease-duration" attribute is
0 (i.e., no expiration time), then the value of this attribute MUST be 0 (i.e., no expiration time), then the value of this attribute MUST be
set to 0 (i.e., no expiration time). set to 0 (i.e., no expiration time).
When the Printer powers up, it MUST set the value of this attribute in When the Printer powers up, it MUST set the value of this attribute in
each persistent Subscription Object using the algorithm in the previous each persistent Subscription Object using the algorithm in the previous
paragraph. paragraph.
When the .printer-up-time. equals the value of this attribute, the When the "printer-up-time" equals the value of this attribute, the
Printer MUST delete the Subscription Object. A client can extend a lease Printer MUST delete the Subscription Object. A client can extend a lease
of a Per-Printer Subscription Object with the Renew-Subscription of a Per-Printer Subscription Object with the Renew-Subscription
operation (see section 11.2.5). operation (see section 11.2.5).
Note: In order to compute the number of seconds remaining in a lease for Note: In order to compute the number of seconds remaining in a lease for
a Per-Printer Subscription Object, a client can subtract the a Per-Printer Subscription Object, a client can subtract the
Subscription.s .notify-printer-up-time. attribute (see section 5.4.4) Subscription's "notify-printer-up-time" attribute (see section 5.4.4)
from the Subscription.s .notify-lease-expiration-time. attribute. from the Subscription's "notify-lease-expiration-time" attribute.
5.4.4 notify-printer-up-time (integer(1:MAX)) 5.4.4 notify-printer-up-time (integer(1:MAX))
This attribute is an alias for the Printer.s .printer-up-time. attribute This attribute is an alias for the Printer's "printer-up-time" attribute
. (see [ipp-mod] section 4.4.29). " (see [ipp-mod] section 4.4.29).
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this attribute When the Printer creates a Per-Job Subscription Object, this attribute
MUST NOT be present. When the Printer creates a Per-Printer Subscription MUST NOT be present. When the Printer creates a Per-Printer Subscription
Object, this attribute MUST be present. Object, this attribute MUST be present.
Note: this attribute exists in a Per-Printer Subscription Object so that Note: this attribute exists in a Per-Printer Subscription Object so that
a client using the Get-Subscription-Attributes or Get-Subscription a client using the Get-Subscription-Attributes or Get-Subscription
operations can convert the Per-Printer Subscription.s .notify-lease- operations can convert the Per-Printer Subscription's "notify-lease-
expiration-time. attribute to wall clock time with one request. If the expiration-time" attribute to wall clock time with one request. If the
value of the .notify-lease-expiration-time. attribute is not 0 (i.e., no value of the "notify-lease-expiration-time" attribute is not 0 (i.e., no
expiration time), then the difference between the .notify-lease- expiration time), then the difference between the "notify-lease-
expiration-time. attribute and the .notify-printer-up-time. is the expiration-time" attribute and the "notify-printer-up-time" is the
remaining number of seconds on the lease from the current time. remaining number of seconds on the lease from the current time.
5.4.5 notify-printer-uri (uri) 5.4.5 notify-printer-uri (uri)
This attribute identifies the Printer object that created this This attribute identifies the Printer object that created this
Subscription Object. Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
During a Subscription Creation Operation, the Printer MUST populate this During a Subscription Creation Operation, the Printer MUST populate this
attribute with the value of the .printer-uri. operation attribute in the attribute with the value of the "printer-uri" operation attribute in the
request. From the Printer URI, the client can, for example, determine request. From the Printer URI, the client can, for example, determine
what security scheme was used. what security scheme was used.
5.4.6 notify-job-id (integer(1:MAX)) 5.4.6 notify-job-id (integer(1:MAX))
This attribute specifies whether the containing Subscription Object is a This attribute specifies whether the containing Subscription Object is a
Per-Job or Per-Printer Subscription Object, and for Per-Job Subscription Per-Job or Per-Printer Subscription Object, and for Per-Job Subscription
Objects, it specifies the associated Job. Objects, it specifies the associated Job.
A Printer MUST support this attribute. A Printer MUST support this attribute.
If this attribute is not present, the Subscription Object MUST be a Per- If this attribute is not present, the Subscription Object MUST be a Per-
Printer Subscription. If this attribute is present, the Subscription Printer Subscription. If this attribute is present, the Subscription
Object MUST be a Per-Job Subscription Object and this attribute MUST Object MUST be a Per-Job Subscription Object and this attribute MUST
identify the Job with which the Subscription Object is associated. identify the Job with which the Subscription Object is associated.
Note: This attribute could be useful to a Notification Recipient that Note: This attribute could be useful to a Notification Recipient that
receives an Event Notification generated from a Per-Job Subscription receives an Event Notification generated from a Per-Job Subscription
Object and caused by a Printer Event. The Event Notification gives Object and caused by a Printer Event. The Event Notification gives
access to the Printer and the Subscription Object. The Event access to the Printer and the Subscription Object. The Event
Notification gives access to the associated Job only via this attribute. Notification gives access to the associated Job only via this
ISSUE 05: OK that we added the REQUIRED .notify-job-id. attribute attribute..
because it is needed for a Notification Recipient to determine from a
random subscription-id whether a Subscription is Per-Printer or Per-Job
and if the latter which Job.
5.4.7 notify-subscriber-user-name (name(MAX)) 5.4.7 notify-subscriber-user-name (name(MAX))
This attribute contains the name of the user who performed the This attribute contains the name of the user who performed the
Subscription Creation Operation. Subscription Creation Operation.
A Printer MUST support this attribute. A Printer MUST support this attribute.
The Printer sets this attribute to the most authenticated printable name The Printer sets this attribute to the most authenticated printable name
that it can obtain from the authentication service over which the that it can obtain from the authentication service over which the
Subscription Creation Operation was received. The Printer uses the same Subscription Creation Operation was received. The Printer uses the same
mechanism for determining the value of this attribute as it does for a mechanism for determining the value of this attribute as it does for a
Job.s .job-originating-user-name. (see [ipp-mod] section 4.3.6). Job's "job-originating-user-name" (see [ipp-mod] section 4.3.6).
Note: To help with authentication, a Subscription Object may have Note: To help with authentication, a Subscription Object may have
additional private attributes about the user, e.g., a credential of a additional private attributes about the user, e.g., a credential of a
principal. Such private attributes are implementation-dependent and not principal. Such private attributes are implementation-dependent and not
defined in this document. 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 related This section defines the Printer Description attributes that are related
to Notification. Table 3 lists the Printer Description attributes, to Notification. Table 3 lists the Printer Description attributes,
indicates the Printer support required for conformance, and whether or indicates the Printer support required for conformance, and whether or
not the attribute is READ-ONLY (see section 3.1): 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
notify-max-printer-subscriptions-supported Yes No
(integer(0:MAX))
notify-max-job-subscriptions-supported Yes No
(integer(0:MAX))
printer-state-change-time (integer(1:MAX)) No Yes printer-state-change-time (integer(1:MAX)) No Yes
printer-state-change-date-time (dateTime) No Yes Printer object attributes: REQUIRED READ-ONLY
6.1 notify-max-printer-subscriptions-supported (integer(0:MAX))
This attribute specifies the maximum number of un-expired Per-Printer
Subscription Objects that the Printer supports at one time. A value of
MAX indicates no effective maximum.
A Printer MUST support this attribute.
A Printer MUST support at least 1 Per-Printer Subscription Object. An
implementation MAY allow an Administrator to set the value of this
attribute to 0 in order to disable creation of Per-Printer Subscription
Objects.
If the number of Per-Printer Subscription Objects equals the value of
this attribute during a Subscription Creation Operation, the Printer
MUST NOT create any additional Per-Printer Subscription Objects. See
section 11.1.2 for details on the creation of Subscription Objects and
how the Printer indicates such failure in a Subscription Creation
Operation.
ISSUE 06: OK to use MAX to mean no limit and 0 to mean that an admin has
turned off subscriptions?
6.2 notify-max-job-subscriptions-supported (integer(0:MAX))
This attribute specifies the maximum number of Per-Job Subscription
Objects that the Printer supports for each job. For example, if a
Printer can hold 2 Jobs and this attribute has the value of 3, it can
hold a total of 6 Per-Job Subscription Objects. A value of MAX
indicates no effective maximum.
A Printer MUST support this attribute.
A Printer MUST support at least 1 Per-Job Subscription Object per Job.
An implementation MAY allow an Administrator to set the value of this
attribute to 0 in order to disable creation of Per-Job Subscription
Objects.
If the number of Per-Job Subscription Objects associated with the
specified Job equals the value of this attribute during a Subscription
Creation Operation, the Printer MUST NOT create any additional Per-Job
Subscription Objects. See section 11.1 for details on the creation of
Subscription Objects and how the Printer indicates such failure in a
Subscription Creation Operation.
ISSUE 07: OK to use MAX to mean no limit and 0 to mean that an admin has printer-state-change-date-time (dateTime) No Yes
turned off subscriptions?
6.3 printer-state-change-time (integer(1:MAX)) 6.1 printer-state-change-time (integer(1:MAX))
This attribute records the most recent time at which the .printer-state- This attribute records the most recent time at which the 'printer-state-
changed. Printer Event occurred whether or not any Subscription objects changed' Printer Event occurred whether or not any Subscription objects
were listening for this event. This attribute helps a client or were listening for this event. This attribute helps a client or
operator to determine how long the Printer has been in its current operator to determine how long the Printer has been in its current
state. state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be the On power-up, the Printer MUST set the value of this attribute to be the
value of its .printer-up-time. attribute, so that it always has a value. value of its "printer-up-time" attribute, so that it always has a value.
Whenever the .printer-state-changed. Printer Event occurs, the Printer Whenever the 'printer-state-changed' Printer Event occurs, the Printer
MUST set this attribute to the value of the Printer.s .printer-up-time. MUST set this attribute to the value of the Printer's "printer-up-time"
attribute. attribute.
6.4 printer-state-change-date-time (dateTime) 6.2 printer-state-change-date-time (dateTime)
This attribute records the most recent time at which the .printer-state- This attribute records the most recent time at which the 'printer-state-
changed. Printer Event occurred whether or not there were any changed' Printer Event occurred whether or not there were any
Subscription Objects listening for this event. This attribute helps a Subscription Objects listening for this event. This attribute helps a
client or operator to determine how long the Printer has been in its client or operator to determine how long the Printer has been in its
current state. current state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be the On power-up, the Printer MUST set the value of this attribute to be the
value of its .printer-current-time. attribute, so that it always has a value of its "printer-current-time" attribute, so that it always has a
value (see [ipp-mod] section 4.4.30 on .printer-current-time.). Whenever value (see [ipp-mod] section 4.4.30 on "printer-current-time"). Whenever
the .printer-state-changed. Printer Event occurs, the Printer MUST set the 'printer-state-changed' Printer Event occurs, the Printer MUST set
this attribute to the value of the Printer.s .printer-current-time. this attribute to the value of the Printer's "printer-current-time"
attribute. attribute.
7 New Values for Existing Printer Description Attributes 7 New Values for Existing Printer Description Attributes
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 0x0016 Create-Printer-Subscriptions
0x0017 Create-Job-Subscriptions 0x0017 Create-Job-Subscriptions
0x0018 Get-Subscription-Attributes 0x0018 Get-Subscription-Attributes
0x0019 Get-Subscriptions 0x0019 Get-Subscriptions
skipping to change at page 36, line 39 skipping to change at page 43, line 39
This section contains those attributes that exist only in Event This section contains those attributes that exist only in Event
Notifications. Notifications.
8.1 notify-subscribed-event (type2 keyword) 8.1 notify-subscribed-event (type2 keyword)
This attribute indicates the Subscribed Event that caused the Printer to This attribute indicates the Subscribed Event that caused the Printer to
send this Event Notification. This attribute exists only in Event send this Event Notification. This attribute exists only in Event
Notifications. Notifications.
The Printer MUST send this attribute. This attribute exists only in This attribute MUST contain one of the values of the "notify-events"
Event Notifications.
This attribute MUST contain one of the values of the .notify-events.
attribute in the Subscription Object, i.e., one of the Subscribed Event attribute in the Subscription Object, i.e., one of the Subscribed Event
values. Its value is the Subscribed Event that .matches. the Event that values. Its value is the Subscribed Event that "matches" the Event that
caused the Printer to send this Event Notification. This Subscribed caused the Printer to send this Event Notification. This Subscribed
Event value may be identical to the Event or the Event may be a sub- Event value may be identical to the Event or the Event may be a sub-
value of the Subscribed Event. For example, the .job-completed. Event
(which is a sub-event of the .job-state-changed. event) would cause the value of the Subscribed Event. For example, the 'job-completed' Event
Printer to send an Event Notification for either the .job-completed. or (which is a sub-event of the 'job-state-changed' event) would cause the
.job-state-changed. Subscribed Events and to send the .job-completed. or Printer to send an Event Notification for either the 'job-completed' or
.job-state-changed. value for this attribute, respectively,. See 'job-state-changed' Subscribed Events and to send the 'job-completed' or
section 5.3.2.2 for the .matching. rules of Subscribed Events and for 'job-state-changed' value for this attribute, respectively,. See
section 5.3.2.2 for the "matching" rules of Subscribed Events and for
additional examples. additional examples.
The Delivery Method Document specifies whether the Printer includes the The Delivery Method Document specifies whether the Printer includes the
value of this attribute in an Event Notification. 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 Object.s i.e., 'text/plain' with the charset specified by Subscription Object's
.notify-charset. attribute. "notify-charset" attribute.
The Delivery Method Document specifies whether the Printer includes this The Delivery Method Document specifies whether the Printer includes this
attribute in an Event Notification. attribute in an Event Notification.
The Printer MAY support this attribute. If a Printer supports a Delivery
Method that requires this attribute, then the Printer MUST support this
attribute
9 Event Notification Content 9 Event Notification Content
This section defines the Event Notification content that the Printer This section defines the Event Notification content that the Printer
sends when an Event occurs. sends when an Event occurs.
When an Event occurs, the Printer MUST find each Subscription object When an Event occurs, the Printer MUST find each Subscription object
whose .notify-events. attribute .matches. the Event. See section 5.3.2.2 whose "notify-events" attribute "matches" the Event. See section 5.3.2.2
for details on .matching.. For each matched Subscription Object, the for details on "matching". For each matched Subscription Object, the
Printer MUST create an Event Notification with the content and format Printer MUST create an Event Notification with the content and format
that the Delivery Method Document specifies. The content contains the that the Delivery Method Document specifies. The content contains the
value of attributes specified by the Delivery Method Document. The value of attributes specified by the Delivery Method Document. The
Printer obtains the values immediately after the Event occurs. For Printer obtains the values immediately after the Event occurs. For
example, if the .printer-state. attribute changes from .idle. to example, if the "printer-state" attribute changes from 'idle' to
.processing., the Event .printer-state-changed. occurs and the Printer 'processing', the Event 'printer-state-changed' occurs and the Printer
puts various attributes into the Event Notification, including .printer- puts various attributes into the Event Notification, including "printer-
up-time. and .printer-state. with the values that they have immediately up-time" and "printer-state" with the values that they have immediately
after the Event occurs, i.e., the value of .printer-state. is after the Event occurs, i.e., the value of "printer-state" is
.processing.. 'processing'.
If two different Events occur simultaneously, or nearly so (e.g., If two different Events occur simultaneously, or nearly so (e.g.,
.printer-up-time. has the same value for both), the Printer MUST create "printer-up-time" has the same value for both), the Printer MUST create
a separate Event Notification for each Event, even if the associated
Subscription Object is the same for both Events. For example, suppose
that two nearly-simultaneously Events represent two successive .printer-
state-changed. Events, one from .idle. to .processing. and another from
.processing. to .stopped.. These two Events have the same name but are
different instances of the Event. Then the Printer MUST create a
separate Event Notification for each Event and SHOULD accurately report
the .printer-state. of the first Event as .processing. and the second
Event as .stopped..
If the same Event occurs several times in quick succession (e.g., .job-
progress.), the Printer MUST create a separate Event Notification for
each Event unless the Delivery Method Document specifies that the Event
is moderated. Events might be moderated by a time interval (e.g., every
10 seconds) or by the number of Events (every 10th occurrence of the a separate Event Notification for each Event, even if the associated
Event). Subscription Object is the same for both Events. However, the Printer
MAY combine these distinct Event Notifications into a single Compound
Event Notification if the Delivery Method supports Compound Event
Notifications For example, suppose that two nearly-simultaneously Events
represent two successive 'printer-state-changed' Events, one from 'idle'
to 'processing' and another from 'processing' to 'stopped'. These two
Events have the same name but are different instances of the Event. Then
the Printer MUST create a separate Event Notification for each Event and
SHOULD accurately report the "printer-state" of the first Event as
'processing' and the second Event as 'stopped'.
If a Subscription Object contains more than one Subscribed Event, and If a Subscription Object contains more than one Subscribed Event, and
several matching Events occur in quick succession, the Printer MUST several Events occur in quick succession each matching a different
generate a separate Event Notification for each Event. Depending on the Subscribed Event in the Subscription Object, the Printer MUST NOT
Delivery Method, the Printer MAY combine several Event Notifications generate a single Event Notification from several of these Events, but
into a single compound Event Notification. MAY combine distinct Event Notifications into a single Compound Event
Notification if the Delivery Method supports Compound Event
Notifications.
After the Printer has created the Event Notification, the Printer After the Printer has created the Event Notification, the Printer
delivers it via either a: delivers it via either a:
Push Delivery Method: The Printer sends the Event Notification Push Delivery Method: The Printer sends the Event Notification
shortly after an Event occurs. For some Push Delivery Methods, the shortly after an Event occurs. For some Push Delivery Methods, the
Notification Recipient MUST send a response; for others it MUST NOT Notification Recipient MUST send a response; for others it MUST NOT
send a response. send a response.
Pull Delivery Method: The Printer saves Event Notifications for Pull Delivery Method: The Printer saves Event Notifications for
some event-lease time and expects the Notification Recipient to some event-lease time 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.
skipping to change at page 38, line 27 skipping to change at page 45, line 37
Push Delivery Method: The Printer sends the Event Notification Push Delivery Method: The Printer sends the Event Notification
shortly after an Event occurs. For some Push Delivery Methods, the shortly after an Event occurs. For some Push Delivery Methods, the
Notification Recipient MUST send a response; for others it MUST NOT Notification Recipient MUST send a response; for others it MUST NOT
send a response. send a response.
Pull Delivery Method: The Printer saves Event Notifications for Pull Delivery Method: The Printer saves Event Notifications for
some event-lease time and expects the Notification Recipient to some event-lease time 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 MUST
cancel the Subscription Object.
a) the error occurs during the sending of an Event Notification
generated from Subscription Object S AND
b) the error would continue to occur every time the Printer sends an
Event Notification generated from Subscription Object S in the
future.
>From example, if the address of the "notify-recipient-uri" of
Subscription Object A references a non-existent target and the Printer
determines that this fact, it MUST delete Subscription Object A.
The next two sections describe the values that a Printer sends in the The next two sections describe the values that a Printer sends in the
content of Machine Consumable and Human Consumable Event Notifications, content of Machine Consumable and Human Consumable Event Notifications,
respectively. respectively.
The tables in the sub-sections of this section contain the following
columns:
a)Source Value: the name of the attribute that supplies the value
for the Event Notification. Asterisks in this field refer to a
note below the table.
b)Sends: if the Printer supports the value (column 1) on the
Source Object (column 3) the Delivery Method MUST specify:
MUST: that the Printer MUST send the value.
SHOULD: either that the Printer MUST send the value or that
the value is incompatible with the Delivery Method.
MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT,
or NEED NOT send the value. The Delivery Method specifies the
level of conformance for the Printer.
c)Source Object: the object from which the source value comes. If
the object is "Event Notification", the Printer fabricates the
value when it sends 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 mention This section defines the attributes that a Delivery Method MUST mention
in a Delivery Method Document when specifying the Machine Consumable in a Delivery Method Document when specifying the Machine Consumable
Event Notification.s contents. Event Notification's contents.
This document does not define the order of attributes in Event This document does not define the order of attributes in Event
Notifications. However, Delivery Method Documents MAY define the order Notifications. However, Delivery Method Documents MAY define the order
of some or all of the attributes. of some or all of the attributes.
A Delivery Method Document MUST specify additional attributes (if any) A Delivery Method Document MUST specify additional attributes (if any)
that a Printer implementation sends in a Machine Consumable Event that a Printer implementation sends in a Machine Consumable Event
Notification. Notification.
Notification Recipients MUST be able to accept Event Notifications Notification Recipients MUST be able to accept Event Notifications
skipping to change at page 39, line 5 skipping to change at page 47, line 24
The next three sections define the attributes in Event Notification The next three sections define the attributes in Event Notification
Contents that are: Contents that are:
a)for all Events a)for all Events
b)for Job Events only b)for Job Events only
c)for Printer Events only c)for Printer Events only
9.1.1 Attributes in 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 MUST specify This section lists the attributes that a Delivery Method MUST specify
for all Events. for all Events.
The tables in this section and following sections contain the following
columns:
a)Source Value: the name of the attribute that supplies the value
for the Event Notification. Asterisks in this field refer to a
note below the table.
b)Sends: if the Printer supports the value (column 1) on the
Source Object (column 3) the Delivery Method MUST specify:
MUST: that the Printer MUST send the value.
SHOULD: either that the Printer MUST send the value or that
the value is incompatible with the Delivery Method.
MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT,
or NEED NOT send the value.
c)Source Object: the object from which the source value comes. If
the object is .Event Notification., the Printer fabricates the
value when it sends the Event Notification. See section 8.
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 Sends Source Object Source Value Sends 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
Source Value Sends Source Object
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
Source Value Sends Source Object
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 ***
* If the Subscription Object does not contain a .notify-user-data. *A Printer MUST send this value only if and only if it supports the
Printer's "printer-current-time" attribute.
** If the Subscription Object does not contain a "notify-user-data"
attribute and the Delivery Method document REQUIRES the Printer to send attribute and the Delivery Method document REQUIRES the Printer to send
the .notify-user-data. source value in the Event Notification, the the "notify-user-data" source value in the Event Notification, the
Printer MUST send an octet-string of length 0. Printer MUST send an octet-string of length 0.
** The last three rows represent additional attributes that a client MAY *** The last three rows represent additional attributes that a client
request via the .notify-attributes. attribute. A Printer MAY support MAY request via the "notify-attributes" attribute. A Printer MAY
the .notify-attributes. attribute. The Delivery Method MUST say that the support the "notify-attributes" attribute. The Delivery Method MUST say
Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED NOT support the that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED NOT
.notify-attributes. attribute and specific values of this attribute. The support the "notify-attributes" attribute and specific values of this
Delivery Method MAY say that support for the .notify-attributes. is attribute. The Delivery Method MAY say that support for the "notify-
conditioned on support of the attribute by the Printer or it MAY say attributes" is conditioned on support of the attribute by the Printer or
that Printer MUST support the .notify-attribute. attribute if the it MAY say that Printer MUST support the "notify-attribute" attribute if
Printer supports the Delivery Method. the Printer supports the Delivery Method.
9.1.2 Additional Attributes in 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 MUST This section lists the additional attributes that a Delivery Method MUST
specify for Job Events. See Table 6. specify for Job Events. See Table 6.
Table 6 . Additional Attributes in Event Notification Content for Job Table 6 - Additional Event Notification Content for Job Events
Events
Source Value Sends Source Object Source Value Sends Source Object
job-id (integer(1:MAX)) MUST Job job-id (integer(1:MAX)) MUST Job
job-state (type1 enum) MUST Job job-state (type1 enum) MUST Job
job-state-reasons (1setOf type2 keyword) MUST Job job-state-reasons (1setOf type2 keyword) MUST Job
job-impressions-completed (integer(0:MAX)) MUST Job job-impressions-completed (integer(0:MAX)) MUST Job
* *
* The Printer MUST send the .job-impressions-completed. attribute in an * The Printer MUST send the "job-impressions-completed" attribute in an
Event Notification only for the combinations of Events and Subscribed Event Notification only for the combinations of Events and Subscribed
Events shown in Table 7. Events shown in Table 7.
Table 7 . Combinations of Events and Subscribed Events for .job- Table 7 - Combinations of Events and Subscribed Events for "job-
impressions-completed. impressions-completed"
Job Event Subscribed Job Event Job Event Subscribed Job Event
.job-progress. .job-progress. 'job-progress' 'job-progress'
.job-completed. .job-completed. 'job-completed' 'job-completed'
.job-completed. .job-state-changed. 'job-completed' 'job-state-changed'
9.1.3 Additional Attributes in Event Notification Content for Printer 9.1.3 Additional Event Notification Content for Printer Events
Events
This section lists the additional attributes that a Delivery Method MUST This section lists the additional attributes that a Delivery Method MUST
specify for Printer Events. See Table 8. specify for Printer Events. See Table 8.
Table 8 . Additional Attributes in Event Notification Content for Table 8 - Additional Event Notification Content for Printer Events
Printer Events
Source Value Sends Source Object Source Value Sends Source Object
printer-state (type1 enum) MUST Printer printer-state (type1 enum) MUST Printer
printer-state-reasons (1setOf type2 MUST Printer printer-state-reasons (1setOf type2 MUST Printer
keyword) keyword)
printer-is-accepting-jobs (boolean) MUST Printer printer-is-accepting-jobs (boolean) MUST Printer
9.2 Content of Human Consumable Event Notification 9.2 Content of Human Consumable Event Notification
This section defines the information that a Delivery Method MUST mention This section defines the information that a Delivery Method MUST mention
in a Delivery Method Document when specifying the Human Consumable Event in a Delivery Method Document when specifying the Human Consumable Event
Notifications contents or the value of the .notify-text. attribute. Notifications contents or the value of the "notify-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 send it: Printer SHOULD send 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 any) A Delivery Method Document MUST specify additional information (if any)
that a Printer implementation sends in a Human Consumable Event that a Printer implementation sends in a Human Consumable Event
Notification or in the .notify-text. attribute. Notification or in the "notify-text" attribute.
A client MUST NOT request additional attributes via the .notify- A client MUST NOT request additional attributes via the "notify-
attributes. attribute because this attribute works only for Machine attributes" attribute because this attribute works only for Machine
Consumable Event Notifications. Consumable Event Notifications.
Notification Recipients MUST NOT expect to be able to parse the Human Notification Recipients MUST NOT expect to be able to parse the Human
Consumable Event Notification contents or the value of the .notify-text. Consumable Event Notification contents or the value of the "notify-text"
attribute. attribute.
The next three sections define the attributes in Event Notification The next three sections define the attributes in Event Notification
Contents that are: Contents that are:
a)for all Events a)for all Events
b)for Job Events only b)for Job Events only
c)for Printer Events only c)for Printer Events only
9.2.1 Information in Event Notification Content Common to All Events 9.2.1 Event Notification Content Common to All Events
This section lists the source of the information that a Delivery Method This section lists the source of the information that a Delivery Method
MUST specify for all Events. MUST specify for all Events.
There is a separate table for each piece of information. Each row in the There is a separate table for each piece of information. Each row in the
table represents a source value for the information and the values are table represents a source value for the information and the values are
listed in order of preference, with the first one being the preferred listed in order of preference, with the first one being the preferred
one. An implementation SHOULD use the source value from the earliest row one. An implementation SHOULD use the source value from the earliest row
in each table. The tables in this section and following contain the in each table. It MAY use the source value from another row instead, or
following columns for each piece of information: it MAY combine the source values from several rows. An implementation is
free to determine the best way to present this information.
a)Source of Value: the name of the attribute that supplies the
value for the Event Notification
b)Source Object: the object from which the source value comes. In all tables of this section, all rows contain a "MAY" in order to
state that the Delivery Method specifies the conformance.
The tables in this section do not contain a .Sends. column because all .
rows would have a .SHOULD. as defined in section 9.1.1.
Table 9 lists the source of the information for the Printer Name. The Table 9 lists the source of the information for the Printer Name. The
.printer-name. is more user-friendly unless the Notification Recipient "printer-name" is more user-friendly unless the Notification Recipient
is in a place where the Printer name is not meaningful. is in a place where the Printer name is not meaningful. For example, an
implementation could have the intelligence to send the value of the
Table 9 . Printer Name in Event Notification Content "printer-name" attribute to a Notification Recipient that can access the
Printer via value of the "printer-name" attribute and otherwise send the
value of the "notify-printer-uri" attribute.
Source Value Source Object Table 9 - Printer Name in Event Notification Content
printer-name (name(127)) Printer Source Value Sends Source Object
notify-printer-uri (uri) 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 Source Object Source Value Sends Source Object
notify-subscribed-event (type2 keyword) Subscription notify-subscribed-event (type2 keyword) MAY Subscription
Table 11 lists the source of the information for the time that the Event Table 11 lists the source of the information for the time that the Event
occurred. A Printer can send this value only if it supports the occurred. A Printer can send this value only if it supports the
Printer.s .printer-current-time. attribute. If a Printer does not Printer's "printer-current-time" attribute. If a Printer does not
support the support the
.printer-current-time. attribute, it MUST NOT send the .printer-up-time. "printer-current-time" attribute, it MUST NOT send the "printer-up-time"
value instead, since it is not an allowed option for human consumable value instead, since it is not an allowed option for human consumable
information. information.
Table 11 . Event Time in Event Notification Content Table 11 - Event Time in Event Notification Content
Source Value Source Object Source Value Sends Source Object
printer-current-time (dateTime) Printer printer-current-time (dateTime) MAY Printer
9.2.2 Additional Information in Event Notification Content for Job 9.2.2 Additional Event Notification Content for Job Events
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 .job- 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.. name" is likely more meaningful to a user than "job-id".
Table 12 . Job Name in Event Notification Content for Job Events Table 12 - Job Name in Event Notification Content
Source Value Source Object Source Value Sends Source Object
job-name (name(MAX)) Job job-name (name(MAX)) MAY Job
job-id (integer(1:MAX)) 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 for Job Events Table 13 - Job State in Event Notification Content
Source Value Source Object Source Value Sends Source Object
job-state-message (text(MAX)) Job job-state-message (text(MAX)) MAY Job
job-detailed-status-messages (1setOf text(MAX)) Job job-detailed-status-messages (1setOf MAY Job
text(MAX))
job-state (type1 enum) Job job-state (type1 enum) MAY Job
job-state-reasons (1setOf type2 keyword) Job job-state-reasons (1setOf type2 keyword) MAY Job
9.2.3 Additional Information in Event Notification Content for Printer 9.2.3 Additional Event Notification Content for Printer Events
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. If Table 14 lists the source of the information for the printer state. If a
a Printer supports the .printer-state-message., it SHOULD use that Printer supports the "printer-state-message", it SHOULD use that
attribute for the job state information, otherwise it SHOULD fabricate attribute for the job state information, otherwise it SHOULD fabricate
such information from the .printer-state. and .printer-state-reasons.. such information from the "printer-state" and "printer-state-reasons".
For some Events, a Printer MAY combine this information with Event For some Events, a Printer MAY combine this information with Event
information. information.
Table 14 . Printer State in Event Notification Content for Printer Table 14 - Printer State in Event Notification Content
Events
Source Value Source Object Source Value Sends Source Object
printer-state-message (text(MAX)) Printer printer-state-message (text(MAX)) MAY Printer
printer-state (type1 enum) Printer printer-state (type1 enum) MAY Printer
printer-state-reasons (1setOf type2 keyword) Printer printer-state-reasons (1setOf type2 MAY Printer
keyword)
printer-is-accepting-jobs (boolean) 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 Printer A Delivery Method is the mechanism, i.e., protocol, by which the Printer
delivers an Event Notification to a Notification Recipient. There are delivers an Event Notification to a Notification Recipient. There are
several potential Delivery Methods for Event Notifications, several potential Delivery Methods for Event Notifications,
standardized, as well as proprietary. This document does not define any standardized, as well as proprietary. This document does not define any
of these delivery mechanisms. Each Delivery Method MUST be defined in a of these 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
skipping to change at page 45, line 16 skipping to change at page 55, line 30
intervals directed by the Printer intervals directed by the Printer
- The Printer sends Event Notifications to the Notification Recipient - The Printer sends Event Notifications to the Notification Recipient
using http as the transport. using http as the transport.
- The Printer sends an email message. - The Printer sends an email message.
This section specifies how to define a Delivery Method Document and what This section specifies how to define a Delivery Method Document and what
to put in such a document. to put in such a document.
A Delivery Method Document: A Delivery Method Document MUST contain an exact copy of the following
paragraph, caption and table. In addition, column 2 of the table in the
1.MUST define a URL scheme name for the Delivery Method. Delivery Method Document MUST contain answers to questions in column 1
for the Delivery Method. Also, the Delivery Method document MUST contain
a reference to this document and call that reference [ipp-ntfy] because
the table contains an [ipp-ntfy] reference.
2.MUST indicate whether the delivery method is REQUIRED or OPTIONAL for If a Printer supports this Delivery Method, the following are its
an IPP Printer to support if it supports Event Notification. characteristics.
3.MUST define the transport and delivery protocol for the Event Table 15 - Information about the Delivery Method
Notification content that a Printer MUST use, i.e., the entire
network stack.
4.MUST indicate whether or not several Event Notifications can be Document Method Conformance Delivery Method Realization
combined into a compound Event Notification. Requirement
5.MUST describe how the Delivery Method is initiated, i.e., is it 1. What is the URL scheme name
initiated by the receiving user (pull), or is it initiated by the for the Delivery Method?
Printer (push).
6.MUST indicate whether the Delivery Method is Machine Consumable or 2. Is the Delivery Method
Human Consumable. REQUIRED, RECOMMENDED or OPTIONAL
for an IPP Printer to support?
7.MUST define the representation and encoding that a Printer MUST use 3. What transport and delivery
for each value or piece of information listed in section 9 (9.1 for protocols does the Printer use
Machine Consumable Event Notification and/or section 9.2 for Human to deliver the Event
Consumable Event Notification). Notification Content, i.e.,
what is the entire network
stack?
8.MUST specify for each attribute in section 9 whether a Printer MUST, 4. Can several Event
SHOULD, MAY, MUST NOT, SHOULD NOT or NEED NOT send the attribute in Notifications be combined into
an Event Notification content. a Compound Event Notification?
9.MUST define what frequently occurring Events MUST be moderated, if 5. Is the Delivery Method
any, and whether the moderation mechanism is configurable. Also initiated by the Notification
whether Events are moderated by sending one per time unit or one per Recipient (pull), or by the
number of Events. Printer (push)?
10. MUST discuss the latency and reliability of the transport and 6. Is the Event Notification
delivery protocol. content Machine Consumable or
Human Consumable?
7. What section in this document
answers the following
question? For a Machine
Consumable Event Notification,
what is the representation and
encoding of values defined in
section 0 of [ipp-ntfy] and
the conformance requirements
thereof? For a Human
Consumable Event Notification,
what is the representation and
encoding of pieces of
information defined in section
9.2 of [ipp-ntfy] and the
conformance requirements
thereof?
11. MUST discuss the security aspects of the transport and delivery 8. What are the latency and
protocol, e.g., how it is handled in firewalls. reliability of the transport
and delivery protocol?
12. MUST identify content length restrictions, if any. 9. What are the security aspects
of the transport and delivery
protocol, e.g., how it is
handled in firewalls?
13. MAY define additional values or pieces of information that a 10. What are the content length
Printer MUST, SHOULD or MAY send in a Notification content. restrictions?
14. MAY define additional Subscription Template and/or Subscription 11. What are the additional
Description attributes and the conformance requirements thereof. values or pieces of
information that a Printer
sends in an Event Notification
content and the conformance
requirements thereof?
12. What are the additional
Subscription Template and/or
Subscription Description
attributes and the conformance
requirements thereof?
15. MAY define additional Printer Description attributes and the 13. What are the additional
conformance requirements thereof. Printer Description attributes
and the conformance
requirements thereof?
11 Operations for Notification 11 Operations for Notification
This section defines all of the operations for Notification. Section 7.1 This section defines all of the operations for Notification. Section 7.1
assigns of the .operation-id. for each operation. The following two assigns of the "operation-id" for each operation. The following two
sub-sections define Subscription Creation Operations, and other sub-sections define Subscription Creation Operations, and other
operations. operations.
11.1 Subscription Creation Operations 11.1 Subscription Creation Operations
This section defines the Subscription Creation Operations. The first This section defines the Subscription Creation Operations. The first
section on Create-Job-Subscriptions gives most of the information. The section on Create-Job-Subscriptions gives most of the information. The
other Subscription Creation Operations refer to the section on Create- other Subscription Creation Operations refer to the section on Create-
Job-Subscriptions, even though the Create-Job-Subscriptions operation is Job-Subscriptions, even though the Create-Job-Subscriptions operation is
the only OPTIONAL operation in this document (see section 12). the only OPTIONAL operation in this document (see section 12).
skipping to change at page 46, line 37 skipping to change at page 59, line 4
the only OPTIONAL operation in this document (see section 12). the only OPTIONAL operation in this document (see section 12).
A Printer MUST support Create-Printer-Subscriptions and the Subscription A Printer MUST support Create-Printer-Subscriptions and the Subscription
Template Attributes Group in Job Creation operations. It MAY support Template Attributes Group in Job Creation operations. It MAY support
Create-Job-Subscriptions operations. Create-Job-Subscriptions operations.
11.1.1 Create-Job-Subscriptions Operation 11.1.1 Create-Job-Subscriptions Operation
The operation creates one or more Per-Job Subscription Objects. The The operation creates one or more Per-Job Subscription Objects. The
client supplies one or more Subscription Template Attributes Groups each client supplies one or more Subscription Template Attributes Groups each
containing one or more of Subscription Template Attributes (defined in containing one or more of Subscription Template Attributes (defined in
section 5.3). section 5.3).
Except for errors, the Printer MUST create exactly one Per-Job Except for errors, the Printer MUST create exactly one Per-Job
Subscription Object from each Subscription Template Attributes Group in Subscription Object from each Subscription Template Attributes Group in
the request, even if the newly created Subscription Object would have the request, even if the newly created Subscription Object would have
identical behavior to some existing Subscription Object. The Printer identical behavior to some existing Subscription Object. The Printer
MUST associate each newly created Per-Job Subscription Object with the MUST associate each newly created Per-Job Subscription Object with the
target Job, which is specified by the .notify-job-id. operation target Job, which is specified by the "notify-job-id" operation
attribute. attribute.
The Printer MUST accept the request in any of the target job.s .not- The Printer MUST accept the request in any of the target job's 'not-
completed. states, i.e., .pending., .pending-held., .processing., or completed' states, i.e., 'pending', 'pending-held', 'processing', or
.processing-stopped.. The Printer MUST NOT change the job.s .job-state. 'processing-stopped'. The Printer MUST NOT change the job's "job-state"
attribute because of this operation. If the target job is in any of the attribute because of this operation. If the target job is in any of the
.completed. states, i.e., .completed., .canceled., or .aborted, then the 'completed' states, i.e., 'completed', 'canceled', or 'aborted, then the
Printer MUST reject the request and return the .client-error-not- Printer MUST reject the request and return the 'client-error-not-
possible. status code; the response MUST NOT contain any Subscription possible' status code; the response MUST NOT contain any Subscription
Attribute Groups. Attribute Groups.
Access Rights: To create Per-Job Subscription Objects, the Access Rights: To create Per-Job Subscription Objects, the
authenticated user (see [IPP-MOD] section 8.3) performing this operation authenticated user (see [IPP-MOD] section 8.3) performing this operation
MUST either be the job owner or have Operator or Administrator access MUST either be the job owner or have Operator or Administrator access
rights for this Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise rights for this Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise
the Printer MUST reject the operation and return: the .client-error- the Printer MUST reject the operation and return: the 'client-error-
forbidden., .client-error-not-authenticated., or .client-error-not- forbidden', 'client-error-not-authenticated', or 'client-error-not-
authorized. status code as appropriate. authorized' status code as appropriate.
11.1.1.1 Create-Job-Subscriptions Request 11.1.1.1 Create-Job-Subscriptions Request
The following groups of attributes are part of the Create-Job- The following groups of attributes are part of the Create-Job-
Subscriptions Request: Subscriptions Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.1. attributes as described in [ipp-mod] section 3.1.4.1.
Target: Target:
The .printer-uri. attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [ipp-mod] section 3.1.5. operation as described in [ipp-mod] section 3.1.5.
Requesting User Name: Requesting User Name:
The .requesting-user-name. attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [ipp-mod] section 8.3. client as described in [ipp-mod] section 8.3.
notify-job-id (integer(1:MAX)): notify-job-id (integer(1:MAX)):
The client MUST supply this attribute and it MUST specify the Job The client MUST supply this attribute and it MUST specify the Job
object to associate the Per-Job Subscription with. The value of object to associate the Per-Job Subscription with. The value of
.notify-job-id. MUST be the value of the .job-id. of the associated "notify-job-id" MUST be the value of the "job-id" of the associated
Job object. If the client does not supply this attribute, the Job object. If the client does not supply this attribute, the
Printer MUST reject this request with a .client-error-bad-request. Printer MUST reject this request with a 'client-error-bad-request'
status code. status code.
Group 2-N: Subscription Template Attributes Group 2-N: Subscription Template Attributes
For each occurrence of this group: For each occurrence of this group:
The client MUST supply one or more Subscription Template The client MUST supply one or more Subscription Template
Attributes in any order. See section 5.3 for a description of Attributes in any order. See section 5.3 for a description of
each such attribute. See section 5.2 for details on processing each such attribute. See section 5.2 for details on processing
these attributes. these attributes.
skipping to change at page 48, line 13 skipping to change at page 60, line 44
As defined in [ipp-mod]. As defined in [ipp-mod].
The Printer can return any status codes defined in [ipp-mod] and The Printer can return any status codes defined in [ipp-mod] and
section 16. The following is a description of the important status section 16. The following is a description of the important status
codes: codes:
successful-ok: the Printer created all Subscription Objects successful-ok: the Printer created all Subscription Objects
requested. requested.
successful-ok-ignored-subscriptions: the Printer created some successful-ok-ignored-subscriptions: the Printer created some
Subscription Objects requested but some failed. The Subscription Objects requested but some failed. The
Subscription Attributes Groups with a .notify-status-code. Subscription Attributes Groups with a "notify-status-code"
attribute are the ones that failed. attribute are the ones that failed.
client-error-ignored-all-subscriptions: the Printer created no client-error-ignored-all-subscriptions: the Printer created no
Subscription Objects requested and all failed. The Subscription Objects requested and all failed. The
Subscription Attributes Groups with a .notify-status-code. Subscription Attributes Groups with a "notify-status-code"
attribute are the ones that failed attribute are the ones that failed
client-error-not-possible: For this operation and other Per-Job client-error-not-possible: For this operation and other Per-Job
Subscription operations, this error can occur because the Subscription operations, this error can occur because the
specified Job has already completed. specified Job has already completed.
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. attributes as described in [ipp-mod] section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [ipp-mod] section 3.1.7 for details on returning Unsupported See [ipp-mod] section 3.1.7 for details on returning Unsupported
Attributes. This group does not contain any unsupported Attributes. This group does not contain any unsupported
Subscription Template Attributes; they are returned in the Subscription Template Attributes; they are returned in the
Subscription Attributes Group (see below). Subscription Attributes Group (see below).
Group 3-N: Subscription Attributes Group 3-N: Subscription Attributes
These groups MUST be returned if and only if the .status-code. These groups MUST be returned if and only if the "status-code"
parameter returned in Group 1 has the values: .successful-ok., parameter returned in Group 1 has the values: 'successful-ok',
.successful-ok-ignored-subscriptions., or .client-error-ignored- 'successful-ok-ignored-subscriptions', or 'client-error-ignored-
all-subscriptions.. all-subscriptions'.
See section 5.2 for details on the contents of each occurrence of See section 5.2 for details on the contents of each occurrence of
this group. this group.
11.1.2 Create-Printer-Subscriptions operation 11.1.2 Create-Printer-Subscriptions operation
The operation is identical to Create-Job-Subscriptions with exceptions The operation is identical to Create-Job-Subscriptions with exceptions
noted in this section. noted in this section.
The operation creates Per-Printer Subscription Objects instead of Per- The operation creates Per-Printer Subscription Objects instead of Per-
Job Subscription Objects, and associates each newly created Per-Printer Job Subscription Objects, and associates each newly created Per-Printer
Subscription Object with the Printer specified by the operation target Subscription Object with the Printer specified by the operation target
rather than with a specific Job. rather than with a specific Job.
The Printer MUST accept the request in any of its states, i.e., .idle., The Printer MUST accept the request in any of its states, i.e., 'idle',
.processing., or .stopped.. The Printer MUST NOT change its .printer- 'processing', or 'stopped'. The Printer MUST NOT change its "printer-
state. attribute because of this operation. state" attribute because of this operation.
Access Rights: To create Per-Printer Subscription Objects, the Access Rights: To create Per-Printer Subscription Objects, the
authenticated user (see [IPP-MOD] section 8.3) performing this operation authenticated user (see [IPP-MOD] section 8.3) performing this operation
MUST have Operator or Administrator access rights for this Printer (see MUST have Operator or Administrator access rights for this Printer (see
[IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject the [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject the
operation and return: the .client-error-forbidden., .client-error-not- operation and return: the 'client-error-forbidden', 'client-error-not-
authenticated., or .client-error-not-authorized. status code as
authenticated', or 'client-error-not-authorized' status code as
appropriate. appropriate.
11.1.2.1 Create-Printer-Subscriptions Request 11.1.2.1 Create-Printer-Subscriptions Request
The groups are identical to the Create-Job-Subscriptions (see section The groups are identical to the Create-Job-Subscriptions (see section
11.1.1.1) except that the Operation Attributes group MUST NOT contain 11.1.1.1) except that the Operation Attributes group MUST NOT contain
the .notify-job-id. attribute. If the client does supply the .notify- the "notify-job-id" attribute. If the client does supply the "notify-
job-id. attribute, then the Printer MUST treat it as any other job-id" attribute, then the Printer MUST treat it as any other
unsupported Operation attribute and MUST return it in the Unsupported unsupported Operation attribute and MUST return it in the Unsupported
Attributes group. Attributes group.
11.1.2.2 Create-Printer-Subscriptions Response 11.1.2.2 Create-Printer-Subscriptions Response
The groups are identical to the Create-Job-Subscriptions (see section The groups are identical to the Create-Job-Subscriptions (see section
11.1.1.2). 11.1.1.2).
11.1.3 Job Creation Operation . Extensions for Notification 11.1.3 Job Creation Operation - Extensions for Notification
This document extends the Job Creation operations to create Subscription This document extends the Job Creation operations to create Subscription
Objects as a part of the operation. Objects as a part of the operation.
The operation is identical to Create-Job-Subscriptions with exceptions The operation is identical to Create-Job-Subscriptions with exceptions
noted in this section. noted in this section.
Unlike the Create-Job-Subscriptions operation, this operation associates Unlike the Create-Job-Subscriptions operation, this operation associates
the newly created Subscription Objects with the Job object created by the newly created Subscription Objects with the Job object created by
this operation. The operation succeeds if and only if the Job creation this operation. The operation succeeds if and only if the Job creation
succeeds. If the Printer does not create some or all of the requested succeeds. If the Printer does not create some or all of the requested
Subscription Objects, the Printer MUST return a .successful-ok-ignored- Subscription Objects, the Printer MUST return a 'successful-ok-ignored-
subscriptions. status-code instead of a .successful-ok. status-code, but subscriptions' status-code instead of a 'successful-ok' status-code, but
the Printer MUST NOT reject the operation because of a failure to create the Printer MUST NOT reject the operation because of a failure to create
Subscription Objects. Subscription Objects.
If the operation includes a Job Template group, the client MUST supply If the operation includes a Job Template group, the client MUST supply
it after the Operation Attributes group and before the first it after the Operation Attributes group and before the first
Subscription Template Attributes Group. Subscription Template Attributes Group.
If a Printer does not support this Notification specification, then it If a Printer does not support this Notification specification, then it
MUST treat the Subscription Attributes Group like an unknown group and MUST treat the Subscription Attributes Group like an unknown group and
ignore it (see [ipp-mod] section 5.2.2). Because the Printer ignores ignore it (see [ipp-mod] section 5.2.2). Because the Printer ignores
the Subscription Attributes Group, it doesn.t return them in the the Subscription Attributes Group, it doesn't return them in the
response either, thus indicating to the client that the Printer doesn.t response either, thus indicating to the client that the Printer doesn't
support Notification. support Notification.
Access Rights: To create Per-Job Subscription Objects, the Access Rights: To create Per-Job Subscription Objects, the
authenticated user (see [IPP-MOD] section 8.3) performing this operation authenticated user (see [IPP-MOD] section 8.3) performing this operation
MUST either have permission to create Jobs on the Printer. Otherwise MUST either have permission to create Jobs on the Printer. Otherwise
the Printer MUST reject the operation and return: the .client-error- the Printer MUST reject the operation and return: the 'client-error-
forbidden., .client-error-not-authenticated., or .client-error-not- forbidden', 'client-error-not-authenticated', or 'client-error-not-
authorized. status code as appropriate. authorized' status code as appropriate.
11.1.3.1 Job Creation Request 11.1.3.1 Job Creation Request
The groups for this operation are sufficiently different from the The groups for this operation are sufficiently different from the
Create-Job-Subscriptions operation that they are all presented here. The Create-Job-Subscriptions operation that they are all presented here. The
following groups of attributes are supplied as part of a Job Creation following groups of attributes are supplied as part of a Job Creation
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
skipping to change at page 50, line 56 skipping to change at page 64, line 20
requests. requests.
The Printer can return any status codes defined in [ipp-mod] and The Printer can return any status codes defined in [ipp-mod] and
section 16. The following is a description of the important status section 16. The following is a description of the important status
codes: codes:
successful-ok: the Printer created the Job and all Subscription successful-ok: the Printer created the Job and all Subscription
Objects requested. Objects requested.
successful-ok-ignored-subscriptions: the Printer created the Job successful-ok-ignored-subscriptions: the Printer created the Job
and not all of the Subscription Objects requested. This and not all of the Subscription Objects requested. This
status-code hides .successful-ok-xxx. status-codes that could status-code hides 'successful-ok-xxx' status-codes that could
reveal problems in Job creation. The Printer MUST not return reveal problems in Job creation. The Printer MUST not return
the .client-error-ignored-all-subscriptions. status code for the 'client-error-ignored-all-subscriptions' status code for
Job Creation operations because the Printer returns an error Job Creation operations because the Printer returns an error
status-code only when it fails to create a Job. status-code only when it fails to create a Job.
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. attributes as described in [ipp-mod] section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [ipp-mod] section 3.1.7 for details on returning Unsupported See [ipp-mod] section 3.1.7 for details on returning Unsupported
Attributes. This group does not contain any unsupported Attributes. This group does not contain any unsupported
Subscription Template Attributes; they are returned in the Subscription Template Attributes; they are returned in the
Subscription Attributes Group (see below). Subscription Attributes Group (see below).
Group 3: Job Object Attributes Group 3: Job Object Attributes
skipping to change at page 51, line 49 skipping to change at page 65, line 25
A Printer MUST support this extension to this operation. A Printer MUST support this extension to this operation.
The Printer MUST accept requests that are identical to the Job Creation The Printer MUST accept requests that are identical to the Job Creation
request defined in section 11.1.3.1, except that the request MUST not request defined in section 11.1.3.1, except that the request MUST not
contain document data. contain document data.
The Printer MUST return the same groups and attributes as the Print-Job The Printer MUST return the same groups and attributes as the Print-Job
operation (section 11.1.3.1) with the following exceptions. The Printer operation (section 11.1.3.1) with the following exceptions. The Printer
MUST NOT return a Job Object Attributes Group because no Job is created. MUST NOT return a Job Object Attributes Group because no Job is created.
The Printer MUST NOT return the .notify-subscription-id. attribute in The Printer MUST NOT return the "notify-subscription-id" attribute in
any Subscription Attribute Group because no Subscription Object is any Subscription Attribute Group because no Subscription Object is
created. created.
If the Printer would succeed in creating a Subscription Object, the If the Printer would succeed in creating a Subscription Object, the
corresponding Subscription Attributes Group either has no .status-code. corresponding Subscription Attributes Group either has no 'status-code'
attribute or a .status-code. attribute with a value of .successful-ok- attribute or a 'status-code' attribute with a value of 'successful-ok-
too-many-events. or .successful-ok-ignored-or-substituted-attributes. too-many-events' or 'successful-ok-ignored-or-substituted-attributes'
(see sections 5.2 and 17). The status-codes have the same meaning as in (see sections 5.2 and 17). The status-codes have the same meaning as in
Job Creation except the results state what .would happen.. Job Creation except the results state what "would happen".
The Printer MUST validate Subscription Template Attributes Groups in the The Printer MUST validate Subscription Template Attributes Groups in the
same manner as the Job Creation operations. However, to cause the same manner as the Job Creation operations.
Printer to validate as many Subscription Template Attributes as
possible, the Printer MUST assume that is can create up to the number of
Subscription Objects equal to the value of .notify-max-job-
subscriptions-supported..
11.2.2 Get-Printer-Attributes - Extensions for Notification 11.2.2 Get-Printer-Attributes - Extensions for Notification
This operation is extended so that it returns Printer attributes defined This operation is extended so that it returns Printer attributes defined
in this document. 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 [ipp-mod] section 3.2.5, a Printer In addition to the requirements of [ipp-mod] 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 names 3. New Group Name: The 'subscription-template' group name, which names
all supported Subscription Template Attribute in column 2 of Table all supported Subscription Template Attribute in column 2 of Table
1. Note: This group name is also used in the Get-Subscription- 1. This group name is also used in the Get-Subscription-Attributes
Attributes and Get-Subscriptions operation with an analogous and Get-Subscriptions operation with an analogous meaning.
meaning.
4. Extended Group Name .printer-description.: The .printer- 4. Extended Group Name: The 'all' group name, which names all Printer
description. group name, which names all Printer Description
attributes according to [ipp-mod] section 3.2.5. In this extension attributes according to [ipp-mod] section 3.2.5. In this extension
.printer-description. names all attributes specified in [ipp-mod] 'all' names all attributes specified in [ipp-mod] plus those named
plus those named in item 2 of this list. in items 1 and 2 of this list.
5. Extended Group Name .all.: The .all. group name, which names all
Printer attributes according to [ipp-mod] section 3.2.5. In this
extension .all. names all attributes specified in [ipp-mod] plus
those named in items 1 and 2 of this list.
11.2.3 Get-Subscription-Attributes operation 11.2.3 Get-Subscription-Attributes operation
This operation allows a client to request the values of the attributes This operation allows a client to request the values of the attributes
of a Subscription Object. of a Subscription Object.
A Printer MUST support this operation. A Printer MUST support this operation.
This operation is almost identical to the Get-Job-Attributes operation This operation is almost identical to the Get-Job-Attributes operation
(see [ipp-mod] section 3.3.4). The only differences are that the (see [ipp-mod] section 3.3.4). The only differences are that the
skipping to change at page 53, line 19 skipping to change at page 67, line 13
rather than Job object attributes. rather than Job object attributes.
11.2.3.1 Get-Subscription-Attributes Request 11.2.3.1 Get-Subscription-Attributes Request
The following groups of attributes are part of the Get-Subscription- The following groups of attributes are part of the Get-Subscription-
Attributes request: Attributes request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in section [ipp-mod] 3.1.4.1. attributes as described in section [ipp-mod] 3.1.4.1.
Target: Target:
The .printer-uri. attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [ipp-mod] section 3.1.5. operation as described in [ipp-mod] section 3.1.5.
.notify-subscription-id. (integer (1:MAX)): "notify-subscription-id" (integer (1:MAX)):
The client MUST supply this attribute. The Printer MUST support The client MUST supply this attribute. The Printer MUST support
this attribute. This attribute specifies the Subscription Object this attribute. This attribute specifies the Subscription Object
from which the client is requesting attributes. If the client omits from which the client is requesting attributes. If the client omits
this attribute, the Printer MUST reject this request with the this attribute, the Printer MUST reject this request with the
.client-error-bad-request. status code. 'client-error-bad-request' status code.
Requesting User Name: Requesting User Name:
The .requesting-user-name. attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [ipp-mod] section 8.3. client as described in [ipp-mod] section 8.3.
.requested-attributes. (1setOf keyword): "requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute. The Printer MUST The client OPTIONALLY supplies this attribute. The Printer MUST
support this attribute. This attribute specifies the attributes of support this attribute. This attribute specifies the attributes of
the specified Subscription Object that the Printer MUST return in the specified Subscription Object that the Printer MUST return in
the response. Each value of this attribute is either an attribute the response. Each value of this attribute is either an attribute
name (defined in sections 5.3 and 5.4) or an attribute group name. name (defined in sections 5.3 and 5.4) or an attribute group name.
The attribute group names are: The attribute group names are:
- .subscription-template.: all attributes that are both defined - 'subscription-template': all attributes that are both defined
in section 5.3 and present on the specified Subscription in section 5.3 and present on the specified Subscription
Object (column 1 of Table 1). Object (column 1 of Table 1).
- .subscription-description.: all attributes that are both - 'subscription-description': all attributes that are both
defined in section 5.4 and present on the specified defined in section 5.4 and present on the specified
Subscription Object (Table 2). Subscription Object (Table 2).
- .all.: all attributes that are present on the specified - 'all': all attributes that are present on the specified
Subscription Object. Subscription Object.
A Printer MUST support all these group names. A Printer MUST support all these group names.
If the client omits this attribute, the Printer MUST respond as if If the client omits this attribute, the Printer MUST respond as if
this attribute had been supplied with a value of .all.. this attribute had been supplied with a value of 'all'.
11.2.3.2 Get-Subscription-Attributes Response 11.2.3.2 Get-Subscription-Attributes Response
The Printer returns the following sets of attributes as part of the Get- The Printer returns the following sets of attributes as part of the Get-
Subscription-Attributes Response: Subscription-Attributes Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [ipp-mod]. Same as [ipp-mod].
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. The attributes as described in [ipp-mod] section 3.1.4.2. The
.attributes-natural-language. MAY be the natural language of the "attributes-natural-language" MAY be the natural language of the
Subscription Object, rather than the one requested. Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [ipp-mod] section 3.1.7 for details on returning Unsupported See [ipp-mod] section 3.1.7 for details on returning Unsupported
Attributes. Attributes.
The response NEED NOT contain the .requested-attributes. operation The response NEED NOT contain the "requested-attributes" operation
attribute with any supplied values (attribute keywords) that were attribute with any supplied values (attribute keywords) that were
requested by the client but are not supported by the Printer. If requested by the client but are not supported by the Printer. If
the Printer does return unsupported attributes referenced in the the Printer does return unsupported attributes referenced in the
.requested-attributes. operation attribute and that attribute "requested-attributes" operation attribute and that attribute
included group names, such as .all., the unsupported attributes included group names, such as 'all', the unsupported attributes
MUST NOT include attributes described in the standard but not MUST NOT include attributes described in the standard but not
supported by the implementation. supported by the implementation.
Group 3: Subscription Attributes Group 3: Subscription Attributes
This group contains a set of attributes with their current values. This group contains a set of attributes with their current values.
Each attribute in this group: Each attribute in this group:
a)MUST be specified by the .requested-attributes. attribute in the a)MUST be specified by the "requested-attributes" attribute in the
request, AND request, AND
b)MUST be present on the specified Subscription Object AND b)MUST be present on the specified Subscription Object AND
c)MUST NOT be restricted by the security policy in force. For c)MUST NOT be restricted by the security policy in force. For
example, a Printer MAY prohibit a client who is not the creator example, a Printer MAY prohibit a client who is not the creator
of a Subscription Object from seeing some or all of its of a Subscription Object from seeing some or all of its
attributes. See [ipp-mod] section 8. attributes. See [ipp-mod] section 8.
The Printer can return the attributes of the Subscription Object in The Printer can return the attributes of the Subscription Object in
skipping to change at page 55, line 21 skipping to change at page 69, line 31
rather than Job objects. rather than Job objects.
11.2.4.1 Get-Subscriptions Request 11.2.4.1 Get-Subscriptions Request
The following groups of attributes are part of the Get-Subscriptions The following groups of attributes are part of the Get-Subscriptions
request: request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.1. attributes as described in [ipp-mod] section 3.1.4.1.
Target: Target:
The .printer-uri. attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [ipp-mod] section 3.1.5. operation as described in [ipp-mod] section 3.1.5.
Requesting User Name: Requesting User Name:
The .requesting-user-name. attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [ipp-mod] section 8.3. client as described in [ipp-mod] section 8.3.
.notify-job-id. (integer(1:MAX)): "notify-job-id" (integer(1:MAX)):
If the client specifies this attribute, the Printer returns the If the client specifies this attribute, the Printer returns the
specified attributes of all Per-Job Subscription Objects associated specified attributes of all Per-Job Subscription Objects associated
with the Job whose .job-id. attribute value equals the value of with the Job whose "job-id" attribute value equals the value of
this attribute. If the client does not specify this attribute, the this attribute. If the client does not specify this attribute, the
Printer returns the specified attributes of all Per-Printer Printer returns the specified attributes of all Per-Printer
Subscription Objects. Note: there is no way to get all Per-Job Subscription Objects. Note: there is no way to get all Per-Job
Subscriptions. Subscriptions.
.limit. (integer(1:MAX)): "limit" (integer(1:MAX)):
The client OPTIONALLY supplies this attribute. The Printer MUST The client OPTIONALLY supplies this attribute. The Printer MUST
support this attribute. It is an integer value that determines the support this attribute. It is an integer value that determines the
maximum number of Subscription Objects that a client will receive maximum number of Subscription Objects that a client will receive
from the Printer even if the .my-subscriptions. attribute from the Printer even if the "my-subscriptions" attribute
constrains which Subscription Objects are returned. The limit is a constrains which Subscription Objects are returned. The limit is a
.stateless limit. in that if the value supplied by the client is "stateless limit" in that if the value supplied by the client is
.N., then only the first .N. Subscription Objects are returned in 'N', then only the first 'N' Subscription Objects are returned in
the Get-Subscriptions Response. There is no mechanism to allow for the Get-Subscriptions Response. There is no mechanism to allow for
the next .M. Subscription Objects after the first .N. Subscription the next 'M' Subscription Objects after the first 'N' Subscription
Objects. If the client does not supply this attribute, the Printer Objects. If the client does not supply this attribute, the Printer
responds with all applicable Subscription Objects. responds with all applicable Subscription Objects.
.requested-attributes. (1setOf type2 keyword): "requested-attributes" (1setOf type2 keyword):
The client OPTIONALLY supplies this attribute. The Printer MUST The client OPTIONALLY supplies this attribute. The Printer MUST
support this attribute. This attribute specifies the attributes of support this attribute. This attribute specifies the attributes of
the specified Subscription Objects that the Printer MUST return in the specified Subscription Objects that the Printer MUST return in
the response. Each value of this attribute is either an attribute the response. Each value of this attribute is either an attribute
name (defined in sections 5.3 and 5.4) or an attribute group name name (defined in sections 5.3 and 5.4) or an attribute group name
(defined in section 11.2.3.1). If the client omits this attribute, (defined in section 11.2.3.1). If the client omits this attribute,
the Printer MUST respond as if the client had supplied this the Printer MUST respond as if the client had supplied this
attribute with the one value: .notify-subscription-id.. attribute with the one value: 'notify-subscription-id'.
.my-subscriptions. (boolean): "my-subscriptions" (boolean):
The client OPTIONALLY supplies this attribute. The Printer MUST The client OPTIONALLY supplies this attribute. The Printer MUST
support this attribute. If the value is .false., the Printer MUST support this attribute. If the value is 'false', the Printer MUST
consider the Subscription Objects from all users as candidates. If consider the Subscription Objects from all users as candidates. If
the value is .true., the Printer MUST return the Subscription the value is 'true', the Printer MUST return the Subscription
Objects created by the requesting user of this request. If the Objects created by the requesting user of this request. If the
client does not supply this attribute, the Printer MUST respond as client does not supply this attribute, the Printer MUST respond as
if the client had supplied the attribute with a value of .false.. if the client had supplied the attribute with a value of 'false'.
The means for authenticating the requesting user and matching the The means for authenticating the requesting user and matching the
Subscription Objects is similar to that for Jobs which is described Subscription Objects is similar to that for Jobs which is described
in [ipp-mod] section 8. in [ipp-mod] section 8.
11.2.4.2 Get-Subscriptions Response 11.2.4.2 Get-Subscriptions Response
The Printer returns the following sets of attributes as part of the Get- The Printer returns the following sets of attributes as part of the Get-
Subscriptions Response: Subscriptions Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [ipp-mod]. Same as [ipp-mod].
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. attributes as described in [ipp-mod] section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
Same as for Get-Subscription-Attributes. Same as for Get-Subscription-Attributes.
Groups 3 to N: Subscription Attributes Groups 3 to N: Subscription Attributes
The Printer responds with one Subscription Attributes Group for The Printer responds with one Subscription Attributes Group for
each requested Subscription Object (see the .notify-job-id. each requested Subscription Object (see the "notify-job-id"
attribute in the Operation Attributes Group of this operation). attribute in the Operation Attributes Group of this operation).
The Printer returns Subscription Objects in any order. The Printer returns Subscription Objects in any order.
If the .limit. attribute is present in the Operation Attributes If the "limit" attribute is present in the Operation Attributes
group of the request, the number of Subscription Attributes Groups group of the request, the number of Subscription Attributes Groups
in the response MUST NOT exceed the value of the .limit. attribute. in the response MUST NOT exceed the value of the "limit" attribute.
It there are no Subscription Objects associated with the specified It there are no Subscription Objects associated with the specified
Job or Printer, the Printer MUST return zero Subscription Job or Printer, the Printer MUST return zero Subscription
Attributes Groups and it MUST NOT treat this case as an error, Attributes Groups and it MUST NOT treat this case as an error,
i.e., the status-code MUST be .successful-ok. unless something else i.e., the status-code MUST be 'successful-ok' unless something else
causes the status code to have some other value. causes the status code to have some other value.
See the Group 3 response (Subscription Attributes Group) of the See the Group 3 response (Subscription Attributes Group) of the
Get-Subscription-Attributes operation (section 11.2.3.2) for the Get-Subscription-Attributes operation (section 11.2.3.2) for the
attributes that a Printer returns in this group. attributes that a Printer returns in this group.
11.2.5 Renew-Subscription operation 11.2.5 Renew-Subscription operation
This operation allows a client to request the Printer to extend the This operation allows a client to request the Printer to extend the
lease on a Per-Printer Subscription Object. lease on a Per-Printer Subscription Object.
The Printer MUST support this operation. The Printer MUST support this operation.
The Printer MUST accept this request for a Per-Printer Subscription The Printer MUST accept this request for a Per-Printer Subscription
Object in any of the target Printer.s states, i.e., .idle., Object in any of the target Printer's states, i.e., 'idle',
.processing., or .stopped., but MUST NOT change the Printer.s .printer- 'processing', or 'stopped', but MUST NOT change the Printer's "printer-
state. attribute. state" attribute.
The Printer MUST reject this request for a Per-Job Subscription Object The Printer MUST reject this request for a Per-Job Subscription Object
because it has no lease (see section 5.4.3). The status code returned because it has no lease (see section 5.4.3). The status code returned
MUST be .client-error-not-possible.. MUST be 'client-error-not-possible'.
Access Rights: The authenticated user (see [IPP-MOD] section 8.3) Access Rights: The authenticated user (see [IPP-MOD] section 8.3)
performing this operation MUST either be the owner of the Per-Printer performing this operation MUST either be the owner of the Per-Printer
Subscription Object or have Operator or Administrator access rights for Subscription Object or have Operator or Administrator access rights for
the Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer the Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer
MUST reject the operation and return: the .client-error-forbidden., MUST reject the operation and return: the 'client-error-forbidden',
.client-error-not-authenticated., or .client-error-not-authorized. 'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate. status code as appropriate.
11.2.5.1 Renew-Subscription Request 11.2.5.1 Renew-Subscription Request
The following groups of attributes are part of the Renew-Subscription The following groups of attributes are part of the Renew-Subscription
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.1. attributes as described in [ipp-mod] section 3.1.4.1.
Target: Target:
The .printer-uri. attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [ipp-mod] section 3.1.5. operation as described in [ipp-mod] section 3.1.5.
.notify-subscription-id. (integer (1:MAX)): "notify-subscription-id" (integer (1:MAX)):
The client MUST supply this attribute. The Printer MUST support The client MUST supply this attribute. The Printer MUST support
this attribute. This attribute specifies the Per-Printer this attribute. This attribute specifies the Per-Printer
Subscription Object whose lease the Printer MUST renew. If the Subscription Object whose lease the Printer MUST renew. If the
client omits this attribute, the Printer MUST reject this request client omits this attribute, the Printer MUST reject this request
with the .client-error-bad-request. status code. with the 'client-error-bad-request' status code.
Requesting User Name: Requesting User Name:
The .requesting-user-name. (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in [ipp-mod] section 8.3. by the client as described in [ipp-mod] section 8.3.
Group 2: Subscription Template Attributes Group 2: Subscription Template Attributes
.notify-lease-duration. (integer(0:MAX)): "notify-lease-duration" (integer(0:MAX)):
The client MAY supply this attribute. It indicates the number of The client MAY supply this attribute. It indicates the number of
seconds to renew the lease for the specified Subscription Object. seconds to renew the lease for the specified Subscription Object.
A value of 0 requests an infinite lease (which MAY require Operator A value of 0 requests an infinite lease (which MAY require Operator
access rights). If the client omits this attribute, the Printer access rights). If the client omits this attribute, the Printer
MUST use the value of the Printer.s .notify-lease-duration-default. MUST use the value of the Printer's "notify-lease-duration-default"
attribute. See section 5.3.7 for more details. attribute. See section 5.3.7 for more details.
11.2.5.2 Renew-Subscription Response 11.2.5.2 Renew-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Renew-Subscription Response: Renew-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [ipp-mod]. Same as [ipp-mod].
The following are some of the status codes returned: The following are some of the status codes returned:
successful-ok: The operation successfully renewed the lease on the successful-ok: The operation successfully renewed the lease on the
Subscription Object for the requested duration.. Subscription Object for the requested duration..
successful-ok-ignored-or-substituted-attributes: The operation successful-ok-ignored-or-substituted-attributes: The operation
successfully renewed the lease on the Subscription Object for successfully renewed the lease on the Subscription Object for
some duration other than the amount requested. some duration other than the amount requested.
client-error-not-possible: The operation failed because the client-error-not-possible: The operation failed because the
.notify-subscription-id. Operation attribute identified a Per- "notify-subscription-id" Operation attribute identified a Per-
Job Subscription Object. Job Subscription Object.
client-error-not-found: The operation failed because the .notify- client-error-not-found: The operation failed because the "notify-
subscription-id. Operation attribute identified a non-existent subscription-id" Operation attribute identified a non-existent
Subscription Object. Subscription Object.
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. The attributes as described in [ipp-mod] section 3.1.4.2. The
.attributes-natural-language. MAY be the natural language of the "attributes-natural-language" MAY be the natural language of the
Subscription Object, rather than the one requested. Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [ipp-mod] section 3.1.7 for details on returning Unsupported See [ipp-mod] section 3.1.7 for details on returning Unsupported
Attributes. Attributes.
Group 3: Subscription Attributes Group 3: Subscription Attributes
The Printer MUST return the following Subscription Attribute: The Printer MUST return the following Subscription Attribute:
.notify-lease-duration. (integer(0:MAX)): "notify-lease-duration" (integer(0:MAX)):
The value of this attribute MUST be the number of seconds that the The value of this attribute MUST be the number of seconds that the
Printer has granted for the lease of the Subscription Object (see Printer has granted for the lease of the Subscription Object (see
section 5.3.7 for details, such as the value of this attribute when section 5.3.7 for details, such as the value of this attribute when
the Printer doesn.t support the requested value). the Printer doesn't support the requested value).
11.2.6 Cancel-Subscription operation 11.2.6 Cancel-Subscription operation
This operation allows a client to delete a Subscription Object and stop This operation allows a client to delete a Subscription Object and stop
the Printer from sending more Event Notifications. Once performed, the Printer from sending more Event Notifications. Once performed,
there is no way to reference the Subscription Object. there is no way to reference the Subscription Object.
A Printer MUST supported this operation. A Printer MUST supported this operation.
The Printer MUST accept this request in any of the target Printer.s The Printer MUST accept this request in any of the target Printer's
states, i.e., .idle., .processing., or .stopped., but MUST NOT change states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change
the Printer.s .printer-state. attribute. the Printer's "printer-state" attribute.
If the specified Subscription Object is a Per-Job Subscription Object, If the specified Subscription Object is a Per-Job Subscription Object,
the Printer MUST accept this request in any of the target Job.s states, the Printer MUST accept this request in any of the target Job's states,
but MUST NOT change the Job.s .job-state. attribute or affect the Job. but MUST NOT change the Job's "job-state" attribute or affect the Job.
Access Rights: The authenticated user (see [IPP-MOD] section 8.3) Access Rights: The authenticated user (see [IPP-MOD] section 8.3)
performing this operation MUST either be the owner of the Subscription performing this operation MUST either be the owner of the Subscription
Object or have Operator or Administrator access rights for the Printer Object or have Operator or Administrator access rights for the Printer
(see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject (see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject
the operation and return: the .client-error-forbidden., .client-error- the operation and return: the 'client-error-forbidden', 'client-error-
not-authenticated., or .client-error-not-authorized. status code as not-authenticated', or 'client-error-not-authorized' status code as
appropriate. appropriate.
Note: There is no way to change any attributes on a Subscription Note: There is no way to change any attributes on a Subscription
Object, except the .notify-lease-duration. attribute (using the Renew- Object, except the "notify-lease-duration" attribute (using the Renew-
Subscription operation). In order to change other attributes, a client Subscription operation). In order to change other attributes, a client
performs a Subscription Creation Operation and Cancel-Subscription performs a Subscription Creation Operation and Cancel-Subscription
operation on the old Subscription Object. If the client wants to avoid operation on the old Subscription Object. If the client wants to avoid
missing Event Notifications, it performs the Subscription Creation missing Event Notifications, it performs the Subscription Creation
Operation first. If this order would create too many Subscription Operation first. If this order would create too many Subscription
Objects on the Printer, the client reverses the order. Objects on the Printer, the client reverses the order.
11.2.6.1 Cancel-Subscription Request 11.2.6.1 Cancel-Subscription Request
The following groups of attributes are part of the Cancel-Subscription The following groups of attributes are part of the Cancel-Subscription
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.1. attributes as described in [ipp-mod] section 3.1.4.1.
Target: Target:
The .printer-uri. attribute which defines the target for this The "printer-uri" attribute which defines the target for this
operation as described in [ipp-mod] section 3.1.5. operation as described in [ipp-mod] section 3.1.5.
.notify-subscription-id. (integer (1:MAX)): "notify-subscription-id" (integer (1:MAX)):
The client MUST supply this attribute. The Printer MUST support The client MUST supply this attribute. The Printer MUST support
this attribute. This attribute specifies the Subscription Object this attribute. This attribute specifies the Subscription Object
that the Printer MUST cancel. If the client omits this attribute, that the Printer MUST cancel. If the client omits this attribute,
the Printer MUST reject this request with the .client-error-bad- the Printer MUST reject this request with the 'client-error-bad-
request. status code. request' status code.
Requesting User Name: Requesting User Name:
The .requesting-user-name. attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [ipp-mod] section 8.3. client as described in [ipp-mod] section 8.3.
11.2.6.2 Cancel-Subscription Response 11.2.6.2 Cancel-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Cancel-Subscription Response: Cancel-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [ipp-mod]. Same as [ipp-mod].
The following are some of the status codes returned: The following are some of the status codes returned:
successful-ok: The operation successfully canceled (deleted) the successful-ok: The operation successfully canceled (deleted) the
Subscription Object.. Subscription Object..
client-error-not-found: The operation failed because the .notify- client-error-not-found: The operation failed because the "notify-
subscription-id. Operation attribute identified a non-existent subscription-id" Operation attribute identified a non-existent
Subscription Object. Subscription Object.
Natural Language and Character Set: Natural Language and Character Set:
The .attributes-charset. and .attributes-natural-language. The "attributes-charset" and "attributes-natural-language"
attributes as described in [ipp-mod] section 3.1.4.2. The attributes as described in [ipp-mod] section 3.1.4.2. The
.attributes-natural-language. MAY be the natural language of the "attributes-natural-language" MAY be the natural language of the
Subscription Object, rather than the one requested. Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [ipp-mod] section 3.1.7 for details on returning Unsupported See [ipp-mod] section 3.1.7 for details on returning Unsupported
Attributes. Attributes.
12 Conformance Requirements 12 Conformance Requirements
It is OPTIONAL to implement this Event Notification specification. It is OPTIONAL to implement this Event Notification specification.
If this Event Notification specification is implemented, Printers MUST: If this Event Notification specification is implemented, Printers MUST:
meet the Conformance Requirements detailed in section 5 of [ipp-mod]. 1. meet the Conformance Requirements detailed in section 5 of [ipp-mod].
support all of the following attributes: 2. 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 8. c.REQUIRED attributes in Event Notification content in section 8.
send Event Notifications that conform to the requirements of the 3. send Event Notifications that conform to the requirements of the
Delivery Method Document for each supported Delivery Method (the Delivery Method Document for each supported Delivery Method (the
conformance requirements for Delivery Method Documents is specified in conformance requirements for Delivery Method Documents is specified
section 10). in section 10).
support all operations as described in Table 15: 4. support all operations as described in Table 16:
Table 15 . Conformance Requirements for Operations Table 16 - Conformance Requirements for Operations
Attribute Conformance requirements Attribute Conformance requirements
Subscription Attributes Group REQUIRED Subscription Attributes Group REQUIRED
Create-Printer-Subscriptions REQUIRED Create-Printer-Subscriptions REQUIRED
(section 11.1.2) (section 11.1.2)
Create-Job-Subscriptions (section OPTIONAL Create-Job-Subscriptions (section OPTIONAL
11.1.1) 11.1.1)
Validate-Job - extensions (section REQUIRED
11.2.1)
Get-Printer-Attributes - extensions REQUIRED
(section 11.2.2)
Get-Subscription-Attributes (section REQUIRED Get-Subscription-Attributes (section REQUIRED
11.2.3) 11.2.2)
Get-Subscriptions (section 11.2.4) REQUIRED Get-Subscriptions (section 11.2.4) REQUIRED
Renew-Subscription (section 11.2.5) REQUIRED Renew-Subscription (section 11.2.5) REQUIRED
Cancel-Subscription (section 11.2.6) REQUIRED Cancel-Subscription (section 11.2.6) REQUIRED
13 IANA Considerations 13 IANA Considerations
This section describes the procedures for registering Event Notification This section describes the procedures for registering Event Notification
Delivery Method proposals with IANA to be used with this document. Such Delivery Method proposals with IANA to be used with this document. Such
Delivery Method proposals can be IETF standards track documents or Delivery Method proposals can be IETF standards track documents or
vendor-defined documents. In either case, they will be registered with vendor-defined documents. In either case, they will be registered with
IANA using procedures that extend those defined in [ipp-mod] section 6 IANA using procedures that extend those defined in [ipp-mod] section 6
and 11. and 11.
skipping to change at page 62, line 47 skipping to change at page 79, line 14
14 Internationalization Considerations 14 Internationalization Considerations
This IPP Notification specification continues support for the This IPP Notification specification continues support for the
internationalization of [ipp-mod] of attributes containing text strings internationalization of [ipp-mod] of attributes containing text strings
and names. Allowing a Subscribing Client to specify a different natural and names. Allowing a Subscribing Client to specify a different natural
language and charset for each Subscription Object increases the language and charset for each Subscription Object increases the
internationalization support. 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. attribute Event Notifications and to localize the value of "notify-text" attribute
in Machine Consumable Event Notifications that it sends to Notification in Machine Consumable Event Notifications that it sends to Notification
Recipients. For localization, the Printer MUST use the value of the Recipients. For localization, the Printer MUST use the value of the
.notify-charset. attribute and the .notify-natural-language. attribute "notify-charset" attribute and the "notify-natural-language" attribute
in the Subscription Object supplied by the Subscribing Client. in the Subscription Object supplied by the Subscribing Client.
15 Security Considerations 15 Security Considerations
By far the biggest security concern is the abuse of notification: By far the biggest security concern is the abuse of notification:
sending unwanted Event Notifications to third parties (i.e., spam). The sending unwanted Event Notifications to third parties (i.e., spam). The
problem is made worse by notification addresses that may be problem is made worse by notification addresses that may be
redistributed to multiple parties (e.g., mailing lists). There exist redistributed to multiple parties (e.g., mailing lists). There exist
scenarios where third party notification is required (see Scenario #2 scenarios where third party notification is required (see Scenario #2
and #3 in [ipp-not-req]). The fully secure solution would require and #3 in [ipp-not-req]). The fully secure solution would require
active agreement of all recipients before sending out anything. active agreement of all recipients before sending out anything.
However, requirement #9 in [ipp-req] (.There is no requirement for IPP However, requirement #9 in [ipp-req] ("There is no requirement for IPP
Printer receiving the print request to validate the identity of an Event Printer receiving the print request to validate the identity of an Event
recipient.) argues against this. Certain systems may decide to disallow recipient") argues against this. Certain systems may decide to disallow
third party Event Notifications (a traditional fax model). third party Event Notifications (a traditional fax model).
Clients submitting Notification requests to the IPP Printer has the same Clients submitting Notification requests to the IPP Printer has the same
security issues as submitting an IPP/1.1 print job request. The same security issues as submitting an IPP/1.1 print job request. The same
mechanisms used by IPP/1.1 can therefore be used by the client mechanisms used by IPP/1.1 can therefore be used by the client
Notification submission. Operations that require authentication can use Notification submission. Operations that require authentication can use
the HTTP authentication. Operations that require privacy can use the the HTTP authentication. Operations that require privacy can use the
HTTP/TLS privacy. HTTP/TLS privacy.
The Notification access control model should be similar to the IPP The Notification access control model should be similar to the IPP
skipping to change at page 63, line 45 skipping to change at page 80, line 15
The standard security concerns (delivery to the right user, privacy of The standard security concerns (delivery to the right user, privacy of
content, tamper proof content) apply to the Delivery Method. IPP should content, tamper proof content) apply to the Delivery Method. IPP should
use the security mechanism of the Delivery Method used. Some delivery use the security mechanism of the Delivery Method used. Some delivery
mechanisms are more secure than others. Therefore, sensitive Event mechanisms are more secure than others. Therefore, sensitive Event
Notifications should use the Delivery Method that has the strongest Notifications should use the Delivery Method that has the strongest
security. security.
16 Status Codes 16 Status Codes
The following status codes are defined as extensions for Notification The following status codes are defined as extensions for Notification
and are returned as the value of the .status-code. parameter in the and are returned as the value of the "status-code" parameter in the
Operation Attributes Group of a response (see [ipp-mod] section Operation Attributes Group of a response (see [ipp-mod] section
3.1.6.1). Operations in this document can also return the status codes 3.1.6.1). Operations in this document can also return the status codes
defined in section 13 of [ipp-mod]. The .successful-ok. status code is defined in section 13 of [ipp-mod]. The 'successful-ok' status code is
an example of such a status code. an example of such a status code.
16.1 successful-ok-ignored-subscriptions (0x0003) 16.1 successful-ok-ignored-subscriptions (0x0003)
The Subscription Creation Operation was unable to create all requested The Subscription Creation Operation was unable to create all requested
Subscription Objects. Subscription Objects.
For a Create-Job-Subscriptions or Create-Printer-Subscriptions For a Create-Job-Subscriptions or Create-Printer-Subscriptions
operation, this status code means that the Printer created one or more operation, this status code means that the Printer created one or more
Subscription Objects, but not all requested Subscription Objects. Subscription Objects, but not all requested Subscription Objects.
For a Job Creation operation, this status code means that the Printer For a Job Creation operation, this status code means that the Printer
created the Job along with zero or more Subscription Objects. The created the Job along with zero or more Subscription Objects. The
Printer returns this status code even if other job attributes are Printer returns this status code even if other job attributes are
unsupported or in conflict. That is, if an IPP Printer finds a warning unsupported or in conflict. That is, if an IPP Printer finds a warning
that would allow it to return .successful-ok-ignored-subscriptions. and that would allow it to return 'successful-ok-ignored-subscriptions' and
either .successful-ok-ignored-or-substituted-attributes. and/or either 'successful-ok-ignored-or-substituted-attributes' and/or
.successful-ok-conflicting-attributes., it MUST return .successful-ok- 'successful-ok-conflicting-attributes', it MUST return 'successful-ok-
ignored-subscriptions.. ignored-subscriptions'.
16.2 client-error-ignored-all-subscriptions (0x0414) 16.2 client-error-ignored-all-subscriptions (0x0414)
This status code is the same as .successful-ok-ignored-subscriptions. This status code is the same as 'successful-ok-ignored-subscriptions'
except that only the Create-Job-Subscriptions and Create-Printer- except that only the Create-Job-Subscriptions and Create-Printer-
Subscriptions operation return it. They return this status code only Subscriptions operation return it. They return this status code only
when the Printer creates zero Subscription Objects. when the Printer creates zero Subscription Objects.
17 Status Codes in Subscription Attributes Groups 17 Status Codes in Subscription Attributes Groups
This section contains values of the .notify-status-code. attribute that This section contains values of the "notify-status-code" attribute that
the Printer returns in a Subscription Attributes Group in a response the Printer returns in a Subscription Attributes Group in a response
when the corresponding Subscription Object: 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 of The following sections are ordered in decreasing order of importance of
the status-codes. the status-codes.
17.1 client-error-uri-scheme-not-supported (0x040C) 17.1 client-error-uri-scheme-not-supported (0x040C)
This status code is defined in [ipp-mod]. This document extends its This status code is defined in [ipp-mod]. This document extends its
meaning and allows it to be in a Subscription Attributes Group of a meaning and allows it to be in a Subscription Attributes Group of a
response. response.
The scheme of the client-supplied URI in a .notify-recipient-uri. The scheme of the client-supplied URI in a "notify-recipient-uri"
Subscription Template Attribute in a Subscription Creation Operation is Subscription Template Attribute in a Subscription Creation Operation is
not supported. See section 5.3.1. not supported. See section 5.3.1.
17.2 client-error-too-many-subscriptions (0x0415) 17.2 client-error-too-many-subscriptions (0x0415)
The number of Subscription Objects supported by the Printer would be The number of Subscription Objects supported by the Printer would be
exceeded if this Subscription Object were created (see section 5.2). exceeded if this Subscription Object were created (see section 5.2).
17.3 successful-ok-too-many-events (0x0005) 17.3 successful-ok-too-many-events (0x0005)
The client supplied more Events in the .notify-events. operation The client supplied more Events in the "notify-events" operation
attribute of a Subscription Creation Operation than the Printer attribute of a Subscription Creation Operation than the Printer
supports, as indicated in its .notify-max-events-supported. Printer supports, as indicated in its "notify-max-events-supported" Printer
attribute (see section 5.3.2). attribute (see section 5.3.2).
17.4 successful-ok-ignored-or-substituted-attributes (0x0001) 17.4 successful-ok-ignored-or-substituted-attributes (0x0001)
This status code is defined in [ipp-mod]. This document extends its This status code is defined in [ipp-mod]. This document extends its
meaning to include unsupported Subscription Template Attributes and it meaning to include unsupported Subscription Template Attributes and it
can appear in a Subscription Attributes Group. can appear in a Subscription Attributes Group.
18 Encodings of Additional Attribute Tags 18 Encodings of Additional Attribute Tags
This section assigns values to two attributes tags as extensions to the This section assigns values to two attributes tags as extensions to the
encoding defined in [ipp-pro]). encoding defined in [ipp-pro]).
The .subscription-attributes-tag. delimits Subscription Template The "subscription-attributes-tag" delimits Subscription Template
Attributes Groups in requests and Subscription Attributes Groups in Attributes Groups in requests and Subscription Attributes Groups in
responses. responses.
The .event-notification-attributes-tag. delimits Event Notifications in The "event-notification-attributes-tag" delimits Event Notifications in
Delivery Methods that use an IPP-like encoding. Delivery Methods that use an IPP-like encoding.
The following table specifies the values for the delimiter tags: The following table specifies the values for the delimiter tags:
Tag Value (Hex) Meaning Tag Value (Hex) Meaning
0x06 .subscription-attributes-tag. 0x06 "subscription-attributes-tag"
0x07 .event-notification-attributes-tag. 0x07 "event-notification-attributes-tag"
19 References 19 References
[IANA-CON] [IANA-CON]
Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA
Considerations Section in RFCs, Work in Progress, draft-iesg-iana- Considerations Section in RFCs, Work in Progress, draft-iesg-iana-
considerations-04.txt, May 21, 1998. considerations-04.txt, May 21, 1998.
[ipp-mod] [ipp-mod]
deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
.Internet Printing Protocol/1.1: Model and Semantics., <draft-ietf- "Internet Printing Protocol/1.1: Model and Semantics", <draft-ietf-
ipp-model-v11-07.txt>, work in progress, May 22, 2000. ipp-model-v11-07.txt>, work in progress, May 22, 2000.
[ipp-not-req] [ipp-not-req]
deBry, R., Lewis, H., Hastings, T., .Internet Printing deBry, R., Lewis, H., Hastings, T., "Internet Printing
Protocol/1.1: Requirements for IPP Notifications., <draft-ietf-ipp- Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
not-03.txt>, work in progress, August 11, 1999. not-04.txt>, work in progress, July 6, 2000.
[ipp-pro] [ipp-pro]
Herriot, R., Butler, S., Moore, P., Tuner, R., .Internet Printing Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing
Protocol/1.1: Encoding and Transport., <draft-ietf-ipp-protocol- Protocol/1.1: Encoding and Transport", <draft-ietf-ipp-protocol-
v11-06.txt>, work in progress, May 30, 2000. v11-06.txt>, work in progress, May 30, 2000.
[ipp-prog] [ipp-prog]
Hastings, T., Bergman, R., Lewis, H., .Proposed Job Progress Hastings, T., Bergman, R., Lewis, H., "IPP: Job Progress
Attributes for IPP., <draft-ietf-ipp-job-prog.txt> work in Attributes", <draft-ietf-ipp-job-prog-00.txt> work in
progress, February 2, 2000. progress, July 6, 2000.
[ipp-set] [ipp-set]
Kugler, C., , Hastings, T., Herriot, R., Lewis, H, .Internet Kugler, C., , Hastings, T., Herriot, R., Lewis, H, "Internet
Printing Protocol (IPP): Job and Printer Set Operations., <draft- Printing Protocol (IPP): Job and Printer Set Operations", <draft-
ietf-ipp-job-printer-set-ops-01.txt>, work in progress, March 8, ietf-ipp-job-printer-set-ops-02.txt>, work in progress, March 23,
2000. 2000.
[ipp-set2]
Kugler, C., , Hastings, T., Lewis, H, .Internet Printing Protocol
(IPP): Additional Operations, Set 2., <draft-ietf-ipp-ops-
set2.txt>, work in progress, February 3, 2000.
[RFC2026] [RFC2026]
S. Bradner, "The Internet Standards Process -- Revision 3", RFC S. Bradner, "The Internet Standards Process -- Revision 3", RFC
2026, October 1996. 2026, October 1996.
[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
[RFC2566] [RFC2566]
deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
.Internet Printing Protocol/1.0: Model and Semantics., RFC 2566, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566,
April 1999. April 1999.
[RFC2567] [RFC2567]
Wright, D., .Design Goals for an Internet Printing Protocol., RFC Wright, D., "Design Goals for an Internet Printing Protocol", RFC
2567, April 1999. 2567, April 1999.
[RFC2568] [RFC2568]
Zilles, S., .Rationale for the Structure and Model and Protocol for Zilles, S., "Rationale for the Structure and Model and Protocol for
the Internet Printing Protocol., RFC 2568, April 1999. the Internet Printing Protocol", RFC 2568, April 1999.
[RFC2569] [RFC2569]
Herriot, R., Hastings, T., Jacobs, N., Martin, J., .Mapping between Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between
LPD and IPP Protocols., RFC 2569, April 1999. LPD and IPP Protocols", RFC 2569, April 1999.
20 Author.s Addresses 20 Author's Addresses
Scott A. Isaacson (Editor) Scott A. Isaacson (Editor)
Novell, Inc. Novell, Inc.
122 E 1700 S 122 E 1700 S
Provo, UT 84606 Provo, UT 84606
Phone: 801-861-7366 Phone: 801-861-7366
Fax: 801-861-2517 Fax: 801-861-2517
e-mail: sisaacson@novell.com e-mail: sisaacson@novell.com
skipping to change at page 68, line 29 skipping to change at page 85, line 46
2 sends the Event Notification (B) to Notification Recipient of 2 sends the Event Notification (B) to Notification Recipient of
Printer 1, which relays the received Event Notification (B) to Printer 1, which relays the received Event Notification (B) to
the client-supplied Notification Recipient (as Event the client-supplied Notification Recipient (as Event
Notifications(A) in the diagram). Note, when a client performs a Notifications(A) in the diagram). Note, when a client performs a
Subscription Creation Operation, Printer 1 need not forward the Subscription Creation Operation, Printer 1 need not forward the
Subscription Creation Operation to Printer 2 if it would create Subscription Creation Operation to Printer 2 if it would create
a duplicate Subscription Object on Printer 2. a duplicate Subscription Object on Printer 2.
Note: when Printer 1 is forwarding Subscription Creation Operations to Note: when Printer 1 is forwarding Subscription Creation Operations to
Printer 2, it may request Printer 2 to create additional Subscription Printer 2, it may request Printer 2 to create additional Subscription
Objects (called .piggy-backing.). Piggy-backing is useful when: Objects (called "piggy-backing"). Piggy-backing is useful when:
Device A is configured to accept (IPP or non-IPP) requests from other . Device A is configured to accept (IPP or non-IPP) requests from
servers. other servers.
Server S wants to receive Job Events that the client didn.t request and . Server S wants to receive Job Events that the client didn't request
Server S wants these Events for jobs it submits and not for other jobs. and Server S wants these Events for jobs it submits and not for
other jobs.
server S device A server S device A
+------------+ +------------+ +------------+ +------------+
| | | | | | | |
+--------+ Subscription | ###########| | ###########| +--------+ Subscription | ###########| | ###########|
| client |--Creation ----># Printer #| Subscription | # Printer #| | client |--Creation ----># Printer #| Subscription | # Printer #|
+--------+ Operation | # Object 1#|---Creation------|># Object 2#| +--------+ Operation | # Object 1#|---Creation------|># Object 2#|
| ###|#######| Operation | ####|#|####| | ###|#######| Operation | ####|#|####|
+----|---^---+ +-----|-|----+ +----|---^---+ +-----|-|----+
+--------+ Event | | | | +--------+ Event | | | |
|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
B. Appendix - Distributed Model for Notification B. Appendix - Distributed Model for Notification
A Printer implementation could use some other remote notification A Printer implementation could use some other remote notification
service to provide some or most of the service. For example, the remote service to provide some or most of the service. For example, the remote
notification service could send Event Notifications using Delivery notification service could send Event Notifications using Delivery
Methods that are not directly supported by the output device or server. Methods that are not directly supported by the output device or server.
Or, the remote notification service could store Subscription Objects Or, the remote notification service could store Subscription Objects
(passed to it from the output device in response to Subscription (passed to it from the output device in response to Subscription
Creation requests), accept Events, format the Event Notification in the Creation requests), accept Events, format the Event Notification in the
natural language of the Notification Recipient, and send the Event natural language of the Notification Recipient, and send the Event
Notifications to the Notification Recipient(s). Notifications to the Notification Recipient(s).
Figure 3 shows this partitioning. The interface between the output Figure 3 shows this partitioning. The interface between the output
device (or server) and the remote notification service is outside the device (or server) and the remote notification service is outside the
scope of this document and is intended to be transparent to the client scope of this document and is intended to be transparent to the client
and this document. The combination of the output device (or server) and and this document. The combination of the output device (or server) and
skipping to change at page 69, line 18 skipping to change at page 87, line 5
natural language of the Notification Recipient, and send the Event natural language of the Notification Recipient, and send the Event
Notifications to the Notification Recipient(s). Notifications to the Notification Recipient(s).
Figure 3 shows this partitioning. The interface between the output Figure 3 shows this partitioning. The interface between the output
device (or server) and the remote notification service is outside the device (or server) and the remote notification service is outside the
scope of this document and is intended to be transparent to the client scope of this document and is intended to be transparent to the client
and this document. The combination of the output device (or server) and and this document. The combination of the output device (or server) and
the notification service together constitute an IPP Printer conforming the notification service together constitute an IPP Printer conforming
to this Notification document. to this Notification document.
output device or server ***********************
+---------------+ *
PDA, desktop, or server + ########### + * Printer (including
+--------+ | # partial # | * the distributed
* Notification Service)
*
* output device or server
* +---------------+
PDA, desktop, or server * + ########### +
+--------+ * | # partial # |
| client |---IPP Subscription--------># Printer # | | client |---IPP Subscription--------># Printer # |
+--------+ Creation operation | # Object # | +--------+ Creation operation * | # Object # |
| #####|##### | * | #####|##### |
+-------|-------+ * +-------|-------+
| Subscriptions * | Subscriptions
*******| OR Event * | OR Event
+------------+ * | Notifications +------------+ * | Notifications
|Notification| IPP-defined * +------v--------+ |Notification| IPP-defined * +------v--------+
|Recipient |<--Event Notifications---| Notification | |Recipient |<--Event Notifications---| Notification |
+------------+ * | Service | +------------+ * | Service |
* +---------------+ * +---------------+
* *
* *************************
*** = Implementation configuration opaque boundary *** = Implementation configuration opaque boundary
Figure 3 . Opaque Use of a Notification Service Transparent to the Figure 3 - Opaque Use of a Notification Service Transparent to the
Client Client
C. Appendix - Extended Notification Recipient C. Appendix - Extended Notification Recipient
The model allows for an extended Notification Recipient that is itself a The model allows for an extended Notification Recipient that is itself a
notification service that forwards each Event Notification to another notification service that forwards each Event Notification to another
recipient (called the Ultimate Notification Recipient in this section). recipient (called the Ultimate Notification Recipient in this section).
The Delivery Method to the Ultimate Recipient is probably different from The Delivery Method to the Ultimate Recipient is probably different from
the Delivery Method used by the Printer to the extended Notification the Delivery Method used by the Printer to the extended Notification
Recipient. Recipient.
skipping to change at page 70, line 4 skipping to change at page 87, line 49
the Delivery Method used by the Printer to the extended Notification the Delivery Method used by the Printer to the extended Notification
Recipient. Recipient.
This extended Notification Recipient is transparent to the Printer but This extended Notification Recipient is transparent to the Printer but
not to the client. not to the client.
When a client performs a Subscription Creation Operation, it specifies When a client performs a Subscription Creation Operation, it specifies
the extended Notification Recipient as it would any Notification the extended Notification Recipient as it would any Notification
Recipient. In addition, the client specifies the Ultimate Notification Recipient. In addition, the client specifies the Ultimate Notification
Recipient in the Subscription Creation Operation in a manner specified Recipient in the Subscription Creation Operation in a manner specified
by the extended Notification Recipient. Typically, it is either some by the extended Notification Recipient. Typically, it is either some
bytes in the value of .notify-user-data. or some additional parameter in
the value of .notify-recipient-uri.. The client also subscribes directly bytes in the value of "notify-user-data" or some additional parameter in
the value of "notify-recipient-uri". The client also subscribes directly
with the extended Notification Recipient (by means outside this with the extended Notification Recipient (by means outside this
document), since it is a notification service in its own right. document), since it is a notification service in its own right.
The IPP Printer treats the extended Notification Recipient like any The IPP Printer treats the extended Notification Recipient like any
other Notification Recipient and the IPP Printer is not aware of the other Notification Recipient and the IPP Printer is not aware of the
forwarding. The Delivery Method that the extended Notification Recipient forwarding. The Delivery Method that the extended Notification Recipient
uses for delivering the Event Notification to the Ultimate Notification uses for delivering the Event Notification to the Ultimate Notification
Recipient is beyond the scope of this document and is transparent to the Recipient is beyond the scope of this document and is transparent to the
IPP Printer. IPP Printer.
Examples of this extended Notification Recipient are paging, immediate Examples of this extended Notification Recipient are paging, immediate
messaging services, general notification services, and NOS vendors. messaging services, general notification services, and NOS vendors'
infrastructure. Figure 4 shows this approach. infrastructure. Figure 4 shows this approach.
PDA, desktop, or server server or output device PDA, desktop, or server server or output device
+---------------+ +---------------+
+--------+ | ########### | +--------+ | ########### |
| 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 Service) +------------+ (Notification Service)
Figure 4 . Use of an Extended Notification Recipient transparent to the Figure 4 - Use of an Extended Notification Recipient transparent to the
Printer Printer
D. Appendix - Details about Conformance Terminology D. Appendix - Details about Conformance Terminology
The following paragraph provide more details about conformance The following paragraph provide more details about conformance
terminology. terminology.
REQUIRED - an adjective used to indicate that a conforming IPP REQUIRED - an adjective used to indicate that a conforming IPP
Printer implementation MUST support the indicated operation, Printer implementation MUST support the indicated operation,
object, attribute, attribute value, status code, or out-of-band object, attribute, attribute value, status code, or out-of-band
value in requests and responses. See [ipp-mod] .Appendix A - value in requests and responses. See [ipp-mod] "Appendix A -
Terminology for a definition of .support.. Since support of this Terminology for a definition of "support". Since support of this
entire Notification specification is OPTIONAL for conformance to entire Notification specification is OPTIONAL for conformance to
IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document
means .REQUIRED if this OPTIONAL Notification specification is means "REQUIRED if this OPTIONAL Notification specification is
implemented.. implemented".
RECOMMENDED - an adjective used to indicate that a conforming IPP RECOMMENDED - an adjective used to indicate that a conforming IPP
Printer implementation is recommended to support the indicated Printer implementation is recommended to support the indicated
operation, object, attribute, attribute value, status code, or out- operation, object, attribute, attribute value, status code, or out-
of-band value in requests and responses. Since support of this of-band value in requests and responses. Since support of this
entire Notification specification is OPTIONAL for conformance to entire Notification specification is OPTIONAL for conformance to
IPP/1.0 or IPP/1.1, the use of the term RECOMMENDED in this IPP/1.0 or IPP/1.1, the use of the term RECOMMENDED in this
document means .RECOMMENDED if this OPTIONAL Notification document means "RECOMMENDED if this OPTIONAL Notification
specification is implemented.. specification is implemented".
OPTIONAL - an adjective used to indicate that a conforming IPP OPTIONAL - an adjective used to indicate that a conforming IPP
Printer implementation MAY, but is NOT REQUIRED to, support the Printer implementation MAY, but is NOT REQUIRED to, support the
indicated operation, object, attribute, attribute value, status indicated operation, object, attribute, attribute value, status
code, or out-of-band value in requests and responses. code, or out-of-band value in requests and responses.
E. Appendix - Object Model for Notification E. Appendix - Object Model for Notification
This section describes the Notification object model that adds a This section describes the Notification object model that adds a
Subscription Object which together with the Job and Printer object Subscription Object which together with the Job and Printer object
skipping to change at page 71, line 48 skipping to change at page 90, line 35
| 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.
E.1 Appendix - Object relationships E.1 Appendix - Object relationships
This sub-section defines the object relationships between the Printer, 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
skipping to change at page 72, line 45 skipping to change at page 91, line 37
Per-Job and Per-Printer Subscription Objects are quite similar. Either Per-Job and Per-Printer Subscription Objects are quite similar. Either
type of Subscription Object can subscribe to Job Events, Printer Events, type of Subscription Object can subscribe to Job Events, Printer Events,
or both. Both types of Subscription Objects can be queried using the or both. Both types of Subscription Objects can be queried using the
Get-Subscriptions and Get-Subscription-Attributes operations and Get-Subscriptions and Get-Subscription-Attributes operations and
canceled using the Cancel-Subscription operation. Both types of canceled using the Cancel-Subscription operation. Both types of
Subscription Objects create Subscription Objects which have the same Subscription Objects create Subscription Objects which have the same
Subscription Object attributes defined. However, there are some Subscription Object attributes defined. However, there are some
semantic differences between Per-Job Subscription Objects and Per- semantic differences between Per-Job Subscription Objects and Per-
Printer Subscription Objects. A Per-Job Subscription Object is Printer Subscription Objects. A Per-Job Subscription Object is
established by the client when submitting a job and after creating the established by the client when submitting a job and after creating the
job using the Create-Job-Subscriptions operation by specifying the .job- job using the Create-Job-Subscriptions operation by specifying the "job-
id. of the Job with the .notify-job-id. attribute. A Per-Printer id" of the Job with the "notify-job-id" attribute. A Per-Printer
Subscription Object is established between a client and a Printer using Subscription Object is established between a client and a Printer using
the Create-Printer-Subscriptions operation. Some specific differences the Create-Printer-Subscriptions operation. Some specific differences
are: are:
1.A client usually creates one or more Per-Job Subscription Objects as 1.A client usually creates one or more Per-Job Subscription Objects as
part of the Job Creation operations (Create-Job, Print-Job, and part of the Job Creation operations (Create-Job, Print-Job, and
Print-URI), rather than using the OPTIONAL Create-Job-Subscriptions Print-URI), rather than using the OPTIONAL Create-Job-Subscriptions
operation, especially since Printer implementations NEED NOT support operation, especially since Printer implementations NEED NOT support
the Create-Job-Subscriptions operation, since it is OPTIONAL. the Create-Job-Subscriptions operation, since it is OPTIONAL.
2.For Per-Job Subscription Objects, the Subscription Object is only 2.For Per-Job Subscription Objects, the Subscription Object is only
valid while the job is .not-complete. (see sections 5.4.3) while for valid while the job is "not-complete" (see sections 5.4.3) while for
the Per-Printer Subscription Objects, the Subscription Object is the Per-Printer Subscription Objects, the Subscription Object is
valid until the time (in seconds) that the Printer returned in the valid until the time (in seconds) that the Printer returned in the
.notify-lease-expiration-time. operation attribute. "notify-lease-expiration-time" operation attribute.
3.Job Events in a Per-Job Subscription Object apply only to .one job. 3.Job Events in a Per-Job Subscription Object apply only to "one job"
(the Job created by the Job Creation operation or references by the (the Job created by the Job Creation operation or references by the
Create-Job-Subscriptions operation) while Job Events in a Per-Printer Create-Job-Subscriptions operation) while Job Events in a Per-Printer
Subscription Object apply to ALL jobs contained in the IPP Printer. Subscription Object apply to ALL jobs contained in the IPP Printer.
G. Appendix: Full Copyright Statement G. Appendix: Full Copyright Statement
Copyright (C) The Internet Society (1998,1999,2000). All Rights Reserved Copyright (C) The Internet Society (1998,1999,2000). 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 or others, and derivative works that comment on or otherwise explain it or
skipping to change at page 73, line 33 skipping to change at page 93, line 25
may not be modified in any way, such as by removing the copyright notice may not be modified in any way, such as by removing the copyright notice
or references to the Internet Society or other Internet organizations, or references to the Internet Society or other Internet organizations,
except as needed for the purpose of developing Internet standards in except as needed for the purpose of developing Internet standards in
which case the procedures for copyrights defined in the Internet which case the procedures for copyrights defined in the Internet
Standards process must be followed, or as required to translate it into Standards process must be followed, or as required to translate it into
languages other than English. languages other than English.
The limited permissions granted above are perpetual and will not be The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns. revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an .AS This document and the information contained herein is provided on an "AS
IS. basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
FITNESS FOR A PARTICULAR PURPOSE. FITNESS FOR A PARTICULAR PURPOSE.
 End of changes. 

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