draft-ietf-ipp-not-spec-06.txt   draft-ietf-ipp-not-spec-07.txt 
INTERNET-DRAFT R. Herriot (editor) Internet Printing Protocol WG R. Herriot (editor)
<draft-ietf-ipp-not-spec-06.txt> Xerox Corporation INTERNET-DRAFT T. Hastings
[Target Category: standards track] T. Hastings <draft-ietf-ipp-not-spec-07.txt> M. Shepherd
Xerox Corporation Updates RFC 2910 and 2911 Xerox Corporation
R. deBry [Target Category: standards track] R. deBry
Utah Valley State College Expires: February 20, 2002 Utah Valley State College
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
J. Martin J. Martin
Underscore Underscore
M. Shepherd
Xerox Corporation
R. Bergman R. Bergman
Hitachi Koki Imaging Solutions Hitachi Koki Imaging Solutions
January 24, 2000 August 20, 2001
Internet Printing Protocol (IPP): Internet Printing Protocol (IPP):
IPP Event Notification Specification IPP Event Notifications and Subscriptions
Copyright (C) The Internet Society (2001). All Rights Reserved. Copyright (C) The Internet Society (2001). All Rights Reserved.
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of [RFC2026]. Internet-Drafts are all provisions of Section 10 of [RFC2026]. Internet-Drafts are
working documents of the Internet Engineering Task Force (IETF), its working documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. distribute working documents as Internet-Drafts.
skipping to change at page 1, line 37 skipping to change at page 1, line 36
areas, and its working groups. Note that other groups may also areas, and its working groups. Note that other groups may also
distribute working documents as Internet-Drafts. distribute working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress". material or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.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 This document describes an OPTIONAL extension to the Internet
future versions. This extension allows a client to subscribe to Printing Protocol/1.0 (IPP) [RFC2566, RFC2565] and IPP/1.1 [RFC2911,
printing related Events. Subscriptions are modeled as Subscription RFC2910]. This extension allows a client to subscribe to printing
Objects. The Subscription Object specifies that when one of the related Events. Subscriptions are modeled as Subscription Objects.
specified Event occurs, the Printer sends an asynchronous Event The Subscription Object specifies that when one of the specified
Notification to the specified Notification Recipient via the Events occurs, the Printer sends an asynchronous Event Notification
specified Delivery Method (i.e., protocol). A client associates to the specified Notification Recipient via the specified Delivery
Subscription Objects with a particular Job by performing the Create- Method (i.e., protocol). A client associates Subscription Objects
Job-Subscriptions operation or by submitting a Job with subscription with a particular Job by performing the Create-Job-Subscriptions
information. A client associates Subscription Objects with the operation or by submitting a Job with subscription information. A
Printer by performing a Create-Printer-Subscriptions operation. Four client associates Subscription Objects with the Printer by performing
other operations are defined for Subscription Objects: Get- a Create-Printer-Subscriptions operation. Four other operations are
Subscriptions-Attributes, Get-Subscriptions, Renew-Subscription, and defined for Subscription Objects: Get-Subscriptions-Attributes, Get-
Cancel-Subscription. Subscriptions, Renew-Subscription, and Cancel-Subscription.
The basic set of IPP documents includes:
Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
Mapping between LPD and IPP Protocols [RFC2569]
The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, Operators, and
Administrators. It calls out a subset of end user requirements that
are satisfied in IPP/1.0. Operator and Administrator requirements
are out of scope for version 1.0. A few OPTIONAL Operator operations
have been added to IPP/1.1.
The "Rationale for the Structure and Model and Protocol for the
Internet Printing Protocol" document describes IPP from a high level
view, defines a roadmap for the various documents that form the suite
of IPP specifications, and gives background and rationale for the
IETF working group's major decisions.
The "Internet Printing Protocol/1.1: Model and Semantics", describes
a simplified model with abstract objects, their attributes, and their
operations that are independent of encoding and transport. It
introduces a Printer object and a Job object. The Job object
optionally supports multiple documents per Job. It also addresses
security, internationalization, and directory issues.
The "Internet Printing Protocol/1.1: Encoding and Transport" document
is 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 new Internet MIME media type called "application/ipp". This
document also defines the rules for transporting over HTTP a message
body whose Content-Type is "application/ipp". This document defines
a new scheme named 'ipp' for identifying IPP printers and jobs.
Finally, this document defines interoperability rules for supporting
IPP/1.0 clients.
The "Internet Printing Protocol/1.1: Implementer's Guide" document
gives 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 considerations that may assist them in the design of their client
and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation
for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some
advice to implementers of gateways between IPP and LPD (Line Printer
Daemon) implementations.
Table of Contents Table of Contents
1 Introduction....................................................9 1 Introduction.....................................................7
1.1 Notification Overview........................................9 1.1 Notification Overview..........................................7
2 Models for Notification........................................12 2 Models for Notification.........................................10
2.1 Model for Notification (Simple Case)........................12 2.1 Model for Notification (Simple Case)..........................10
2.2 Model for Notification with Cascading Printers..............12 2.2 Model for Notification with Cascading Printers................10
2.3 Distributed Model for Notification..........................12 2.3 Distributed Model for Notification............................11
2.4 Extended Notification Recipient.............................13 2.4 Extended Notification Recipient...............................11
3 Terminology....................................................13 3 Terminology.....................................................11
3.1 Conformance Terminology.....................................13 3.1 Conformance Terminology.......................................12
3.2 Other Terminology...........................................14 3.2 Other Terminology.............................................12
4 Object Relationships...........................................16 4 Object Relationships............................................15
4.1 Printer and Per-Printer Subscription Objects................16 4.1 Printer and Per-Printer Subscription Objects..................15
4.2 Printer, Job and Per-Job Subscription Objects...............16 4.2 Printer, Job and Per-Job Subscription Objects.................15
5 Subscription Object............................................17 5 Subscription Object.............................................15
5.1 Rules for Support of Subscription Template Attributes.......17 5.1 Rules for Support of Subscription Template Attributes.........16
5.2 Rules for Processing Subscription Template Attributes.......18 5.2 Rules for Processing Subscription Template Attributes.........17
5.3 Subscription Template Attributes............................22 5.3 Subscription Template Attributes..............................21
5.3.1 notify-recipient-uri (uri)..................................23 5.3.1 notify-recipient-uri (uri)..................................22
5.3.2 notify-events (1setOf type2 keyword)........................24 5.3.2 notify-events (1setOf type2 keyword)........................23
5.3.2.1 Standard Values for Subscribed Events ...................24 5.3.2.1 Standard Values for Subscribed Events.....................24
5.3.2.1.1 No Events.............................................25 5.3.2.1.1 No Events...............................................24
5.3.2.1.2 Subscribed Printer Events.............................25 5.3.2.1.2 Subscribed Printer Events...............................24
5.3.2.1.3 Subscribed Job Events.................................26 5.3.2.1.3 Subscribed Job Events...................................26
5.3.2.2 Rules for Matching of Subscribed Events .................28 5.3.2.2 Rules for Matching of Subscribed Events...................27
5.3.2.2.1 Rules for Matching of Printer Events..................28 5.3.2.2.1 Rules for Matching of Printer Events....................27
5.3.2.2.2 Rules for Matching of Job Events......................28 5.3.2.2.2 Rules for Matching of Job Events........................28
5.3.2.2.3 Special Cases for Matching Rules......................29 5.3.2.2.3 Special Cases for Matching Rules........................29
5.3.3 notify-attributes (1setOf type2 keyword)....................30 5.3.3 notify-attributes (1setOf type2 keyword)....................30
5.3.4 notify-user-data (octetString(63))..........................31 5.3.4 notify-user-data (octetString(63))..........................31
5.3.5 notify-charset (charset)....................................31 5.3.5 notify-charset (charset)....................................32
5.3.6 notify-natural-language (naturalLanguage)...................32 5.3.6 notify-natural-language (naturalLanguage)...................32
5.3.7 notify-lease-duration (integer(0:67108863)).................32 5.3.7 notify-lease-duration (integer(0:67108863)).................33
5.3.8 notify-time-interval (integer(0:MAX)).......................33 5.3.8 notify-time-interval (integer(0:MAX)).......................34
5.4 Subscription Description Attributes.........................35 5.4 Subscription Description Attributes...........................35
5.4.1 notify-subscription-id (integer (1:MAX))...................35 5.4.1 notify-subscription-id (integer (1:MAX))...................36
5.4.2 notify-sequence-number (integer (0:MAX))....................36 5.4.2 notify-sequence-number (integer (0:MAX))....................37
5.4.3 notify-lease-expiration-time (integer(0:MAX))...............36 5.4.3 notify-lease-expiration-time (integer(0:MAX))...............37
5.4.4 notify-printer-up-time (integer(1:MAX)).....................37 5.4.4 notify-printer-up-time (integer(1:MAX)).....................38
5.4.5 notify-printer-uri (uri)....................................37 5.4.5 notify-printer-uri (uri)....................................39
5.4.6 notify-job-id (integer(1:MAX))..............................38 5.4.6 notify-job-id (integer(1:MAX))..............................39
5.4.7 notify-subscriber-user-name (name(MAX)).....................38 5.4.7 notify-subscriber-user-name (name(MAX)).....................39
6 Printer Description Attributes Related to Notification..........40
6.1 printer-state-change-time (integer(1:MAX))....................40
6.2 printer-state-change-date-time (dateTime).....................41
6 Printer Description Attributes Related to Notification.........38 7 New Values for Existing Printer Description Attributes..........41
6.1 printer-state-change-time (integer(1:MAX))..................39 7.1 operations-supported (1setOf type2 enum)......................41
6.2 printer-state-change-date-time (dateTime)...................39
7 New Values for Existing Printer Description Attributes.........40 8 Attributes Only in Event Notifications..........................42
7.1 operations-supported (1setOf type2 enum)....................40 8.1 notify-subscribed-event (type2 keyword).......................42
8.2 notify-text (text(MAX)).......................................43
8 Attributes Only in Event Notifications.........................40 9 Event Notification Content......................................43
8.1 notify-subscribed-event (type2 keyword).....................40 9.1 Content of Machine Consumable Event Notifications.............46
8.2 notify-text (text(MAX)).....................................41 9.1.1 Event Notification Content Common to All Events.............46
9.1.2 Additional Event Notification Content for Job Events........48
9.1.3 Additional Event Notification Content for Printer Events....49
9.2 Content of Human Consumable Event Notification................49
9.2.1 Event Notification Content Common to All Events.............50
9.2.2 Additional Event Notification Content for Job Events........52
9.2.3 Additional Event Notification Content for Printer Events....53
9 Event Notification Content.....................................41 10 Delivery Methods...............................................54
9.1 Content of Machine Consumable Event Notifications...........43
9.1.1 Event Notification Content Common to All Events.............44
9.1.2 Additional Event Notification Content for Job Events........45
9.1.3 Additional Event Notification Content for Printer Events....46
9.2 Content of Human Consumable Event Notification..............46
9.2.1 Event Notification Content Common to All Events.............47
9.2.2 Additional Event Notification Content for Job Events........49
9.2.3 Additional Event Notification Content for Printer Events....50
10 Delivery Methods...............................................51 11 Operations for Notification....................................56
11.1 Subscription Creation Operations.............................56
11.1.1 Create-Job-Subscriptions Operation.........................57
11.1.1.1 Create-Job-Subscriptions Request.........................57
11.1.1.2 Create-Job-Subscriptions Response........................58
11.1.2 Create-Printer-Subscriptions operation.....................59
11.1.2.1 Create-Printer-Subscriptions Request.....................60
11.1.2.2 Create-Printer-Subscriptions Response....................60
11.1.3 Job Creation Operations - Extensions for Notification......60
11.1.3.1 Job Creation Request.....................................61
11.1.3.2 Job Creation Response....................................62
11.2 Other Operations.............................................63
11.2.1 Restart-Job Operation - Extensions for Notification........63
11.2.2 Validate-Job Operation - Extensions for Notification.......63
11.2.3 Get-Printer-Attributes - Extensions for Notification.......64
11.2.4 Get-Subscription-Attributes operation......................64
11.2.4.1 Get-Subscription-Attributes Request......................65
11.2.4.2 Get-Subscription-Attributes Response.....................66
11.2.5 Get-Subscriptions operation................................67
11.2.5.1 Get-Subscriptions Request................................67
11.2.5.2 Get-Subscriptions Response...............................69
11.2.6 Renew-Subscription operation...............................70
11.2.6.1 Renew-Subscription Request...............................70
11.2.6.2 Renew-Subscription Response..............................71
11.2.7 Cancel-Subscription operation..............................72
11.2.7.1 Cancel-Subscription Request..............................73
11.2.7.2 Cancel-Subscription Response.............................73
11 Operations for Notification....................................53 12 Conformance Requirements.......................................74
11.1 Subscription Creation Operations............................53
11.1.1 Create-Job-Subscriptions Operation .......................54
11.1.1.1 Create-Job-Subscriptions Request ........................54
11.1.1.2 Create-Job-Subscriptions Response .......................55
11.1.2 Create-Printer-Subscriptions operation ...................56
11.1.2.1 Create-Printer-Subscriptions Request ....................57
11.1.2.2 Create-Printer-Subscriptions Response ...................57
11.1.3 Job Creation Operation - Extensions for Notification .....57
11.1.3.1 Job Creation Request ....................................58
11.1.3.2 Job Creation Response ...................................58
11.2 Other Operations............................................59
11.2.1 Validate-Job Operation - Extensions for Notification .....59
11.2.2 Get-Printer-Attributes - Extensions for Notification .....60
11.2.3 Get-Subscription-Attributes operation ....................60
11.2.3.1 Get-Subscription-Attributes Request .....................61
11.2.3.2 Get-Subscription-Attributes Response ....................62
11.2.4 Get-Subscriptions operation ..............................63
11.2.4.1 Get-Subscriptions Request ...............................63
11.2.4.2 Get-Subscriptions Response ..............................64
11.2.5 Renew-Subscription operation .............................65
11.2.5.1 Renew-Subscription Request ..............................66
11.2.5.2 Renew-Subscription Response .............................66
11.2.6 Cancel-Subscription operation ............................67
11.2.6.1 Cancel-Subscription Request .............................68
11.2.6.2 Cancel-Subscription Response ............................69
12 Conformance Requirements.......................................69 13 IANA Considerations............................................75
13 IANA Considerations............................................70 13.1 Attribute Registrations......................................76
13.1 Attribute Registrations.....................................70 13.2 Additional Enum Attribute Value Registrations for the
13.2 Keyword Attribute Value Registrations.......................71 "operations-supported" Printer Attribute..........................77
13.3 Operation Registrations.....................................71 13.3 Operation Registrations......................................77
13.4 Status code Registrations...................................72 13.4 Status code Registrations....................................78
13.5 Attribute Group tag Registrations...........................72 13.5 Attribute Group tag Registrations............................78
13.6 Format for Event Notification Delivery Method Registration 13.6 Registration of Events.......................................78
proposals.........................................................73 13.7 Registration of Event Notification Delivery Methods..........79
13.7 Format and Requirements for IPP Delivery Method Registration 13.7.1 Requirements for Registration of Event Notification Delivery
Proposals.........................................................73 Methods................................................79
13.7.1.1 Required Characteristics.................................79
13.7.1.2 Naming Requirements......................................80
13.7.1.3 Functionality Requirements...............................80
13.7.1.4 Usage and Implementation Requirements....................80
13.7.1.5 Publication Requirements.................................80
13.7.2 Registration Procedure.....................................81
13.7.2.1 Present the proposal to the Community....................81
13.7.2.2 Delivery Method Reviewer.................................81
13.7.2.3 IANA Registration........................................81
13.7.3 Delivery Method Document Registrations.....................82
13.7.4 Registration Template......................................82
14 Internationalization Considerations............................73 14 Internationalization Considerations............................82
15 Security Considerations........................................74 15 Security Considerations........................................83
16 Status Codes...................................................74 16 Status Codes...................................................84
16.1 successful-ok-ignored-subscriptions (0x0003)................75 16.1 successful-ok-ignored-subscriptions (0x0003).................84
16.2 client-error-ignored-all-subscriptions (0x0414).............75 16.2 client-error-ignored-all-subscriptions (0x0414)..............84
17 Status Codes in Subscription Attributes Groups.................75 17 Status Codes in Subscription Attributes Groups.................84
17.1 client-error-uri-scheme-not-supported (0x040C)..............75 17.1 client-error-uri-scheme-not-supported (0x040C)...............85
17.2 client-error-too-many-subscriptions (0x0415)................76 17.2 client-error-too-many-subscriptions (0x0415).................85
17.3 successful-ok-too-many-events (0x0005)......................76 17.3 successful-ok-too-many-events (0x0005).......................85
17.4 successful-ok-ignored-or-substituted-attributes (0x0001)....76 17.4 successful-ok-ignored-or-substituted-attributes (0x0001).....85
18 Encodings of Additional Attribute Tags.........................76 18 Encodings of Additional Attribute Tags.........................85
19 References.....................................................76 19 References.....................................................86
20 Author's Addresses.............................................78 20 Author's Addresses.............................................87
A. Appendix - Model for Notification with Cascading Printers......89
A. Appendix - Model for Notification with Cascading Printers......79 B. Appendix - Distributed Model for Notification..................90
B. Appendix - Distributed Model for Notification..................80 C. Appendix - Extended Notification Recipient.....................91
C. Appendix - Extended Notification Recipient.....................81 D. Appendix - Details about Conformance Terminology...............93
D. Appendix - Details about Conformance Terminology...............82 E. Appendix - Object Model for Notification.......................93
E.1 Appendix - Object relationships..............................94
E.2 Printer Object and Per-Printer Subscription Objects..........95
E.3 Job Object and Per-Job Subscription Objects..................95
E. Appendix - Object Model for Notification.......................83 F. Appendix - Per-Job versus Per-Printer Subscription Objects.....95
E.1 Appendix - Object relationships.............................84
E.2 Printer Object and Per-Printer Subscription Objects.........85
E.3 Job Object and Per-Job Subscription Objects.................85
F. Appendix - Per-Job versus Per-Printer Subscription Objects.....85 G. Appendix - Description of the base IPP documents...............96
G. Appendix: Full Copyright Statement.............................86 H. Appendix - Full Copyright Statement............................97
Tables Tables
Table 1 - Subscription Template Attributes........................23 Table 1 - Subscription Template Attributes........................22
Table 2 - Subscription Description Attributes.....................35 Table 2 - Subscription Description Attributes.....................36
Table 3 - Printer Description Attributes Associated with Notification Table 3 - Printer Description Attributes Associated with Notification
..............................................................39 ..............................................................40
Table 4 - Operation-id assignments................................40 Table 4 - Operation-id assignments................................42
Table 5 - Attributes in Event Notification Content................44 Table 5 - Attributes in Event Notification Content................47
Table 6 - Additional Event Notification Content for Job Events....45 Table 6 - Additional Event Notification Content for Job Events....48
Table 7 - Combinations of Events and Subscribed Events for "job- Table 7 - Combinations of Events and Subscribed Events for "job-
impressions-completed" ........................................46 impressions-completed" ........................................49
Table 8 - Additional Event Notification Content for Printer Events46 Table 8 - Additional Event Notification Content for Printer Events49
Table 9 - Printer Name in Event Notification Content..............48 Table 9 - Printer Name in Event Notification Content..............51
Table 10 - Event Name in Event Notification Content...............48 Table 10 - Event Name in Event Notification Content...............51
Table 11 - Event Time in Event Notification Content...............49 Table 11 - Event Time in Event Notification Content...............52
Table 12 - Job Name in Event Notification Content.................49 Table 12 - Job Name in Event Notification Content.................52
Table 13 - Job State in Event Notification Content................50 Table 13 - Job State in Event Notification Content................53
Table 14 - Printer State in Event Notification Content............51 Table 14 - Printer State in Event Notification Content............54
Table 15 - Information about the Delivery Method..................52 Table 15 - Information about the Delivery Method..................55
Table 16 - Conformance Requirements for Operations................70 Table 16 - Printer Conformance Requirements for Operations........75
Figures Figures
Figure 1 - Model for Notification.................................12 Figure 1 - Model for Notification.................................10
Figure 2 - Model for Notification with Cascading Printers.........80 Figure 2 - Model for Notification with Cascading Printers.........90
Figure 3 - Opaque Use of a Notification Service Transparent to the Figure 3 - Opaque Use of a Notification Service Transparent to the
Client ........................................................81 Client ........................................................91
Figure 4 - Use of an Extended Notification Recipient transparent to Figure 4 - Use of an Extended Notification Recipient transparent to
the Printer ...................................................82 the Printer ...................................................92
Figure 5 - Object Model for Notification..........................84 Figure 5 - Object Model for Notification..........................94
1 Introduction 1 Introduction
This IPP notification specification is an extension to IPP/1.0 This IPP notification specification is an OPTIONAL extension to
[RFC2568, RFC2569] and IPP/1.1 [RFC2911, RFC2910]. This document in Internet Printing Protocol/1.0 (IPP) [RFC2566, RFC2565] and IPP/1.1
combination with the following documents is intended to meet the [RFC2911, RFC2910]. See Appendix G for a description of the base IPP
notification requirements described in [ipp-not-req]: documents. This document in combination with the following documents
is intended to meet the notification requirements described in [ipp-
not-req]:
Internet Printing Protocol (IPP): "Job Progress Attributes" Internet Printing Protocol (IPP): "Job Progress Attributes"
[ipp-prog] [ipp-prog]
One or more Delivery Method Documents registered with IANA (see One or more Delivery Method Documents registered with IANA (see
section 13). section 10).
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.
Delivery Method Documents are in preparation (see section 10) and
will be registered with IANA (see section 13.7.3).
Refer to the Table of Contents for the layout of this document. Refer to the Table of Contents for the layout of this document.
1.1 Notification Overview 1.1 Notification Overview
This document defines operations that a client can perform in order This document defines operations that a client can perform in order
to create Subscription Objects in a Printer and carry out other to create Subscription Objects in a Printer and carry out other
operations on them. A Subscription Object represents a Subscription operations on them. A Subscription Object represents a Subscription
abstraction. The Subscription Object specifies that when one of the abstraction. The Subscription Object specifies that when one of the
specified Events occurs, the Printer sends an asynchronous Event specified Events occurs, the Printer sends an asynchronous Event
skipping to change at page 10, line 9 skipping to change at page 8, line 17
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 An operation that creates a Subscription Object is called a
Subscription Creation Operation. These operations include the Subscription Creation Operation. These operations include the
following operations (see section 11.1 for further details): following operations (see section 11.1 for further details):
. Job Creation operation: When a client performs such an operation - Job Creation operation: When a client performs such an
(Print-Job, Print-URI, and Create-Job), a client can include operation (Print-Job, Print-URI, and Create-Job), a client can
zero or more Subscription Template Attributes Groups in the include zero or more Subscription Template Attributes Groups in
request. The Printer creates one Subscription Object for each the request. The Printer creates one Subscription Object for
Subscription Template Attributes Group in the request, and the each Subscription Template Attributes Group in the request, and
Printer associates each such Subscription Object with the newly the Printer associates each such Subscription Object with the
created Job. This document extends these operations' definitions newly created Job. This document extends these operations'
in [RFC2911] by adding Subscription Template Attributes Groups definitions in [RFC2911] by adding Subscription Template
in the request and Subscription Attributes Groups in the Attributes Groups in the request and Subscription Attributes
response. Groups in the response.
. Create-Job-Subscriptions operation: A client can include one or - Create-Job-Subscriptions operation: A client can include one or
more Subscription Template Attributes Groups in the request. more Subscription Template Attributes Groups in the request.
The Printer creates one Subscription Object for each The Printer creates one Subscription Object for each
Subscription Template Attributes Group and associates each with Subscription Template Attributes Group and associates each with
the job that is the target of this operation. the job that is the target of this operation.
. Create-Printer-Subscriptions operation: A client can include one - Create-Printer-Subscriptions operation: A client can include
or more Subscription Template Attributes Groups in the request. one or more Subscription Template Attributes Groups in the
The Printer creates one Subscription Object for each request. The Printer creates one Subscription Object for each
Subscription Template Attributes Group and associates each with Subscription Template Attributes Group and associates each with
the Printer that is the target of this operation. the Printer that 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 - the Printer associates a Subscription Object with the Printer
a specific Job. When a Subscription Object is associated with a or a specific Job. When a Subscription Object is associated
Job Object, it is called a Per-Job Subscription Object. When a with a Job Object, it is called a Per-Job Subscription Object.
Subscription Object is associated with a Printer Object, it is When a Subscription Object is associated with a Printer Object,
called a Per-Printer Subscription Object. it is called a Per-Printer Subscription Object.
. the response contains one Subscription Attributes Group for each - the response contains one Subscription Attributes Group for
Subscription Template Attributes Group in the request and in the each Subscription Template Attributes Group in the request and
same order. When the Printer successfully creates a Subscription in the same order. When the Printer successfully creates a
Object, its corresponding Subscription Attributes Group contains Subscription Object, its corresponding Subscription Attributes
the "notify-subscription-id" attribute. This attribute uniquely Group contains the "notify-subscription-id" attribute. This
identifies the Subscription Object and is analogous to a "job- attribute uniquely identifies the Subscription Object and is
id" for a Job object. Some operations described below use the analogous to a "job-id" for a Job object. Some operations
"notify-subscription-id" to identify the target Subscription described below use the "notify-subscription-id" to identify
Object. the target Subscription Object.
This document defines the following additional operations (see This document defines the following additional operations (see
section 11.2 for further details): section 11.2 for further details):
. Validate-Job operation: When a client performs this operation, a - Restart-Job operation: When a client performs the Restart-Job
client can include zero or more Subscription Template Attributes operation [RFC2911], the Printer re-uses the same Job and its
Groups in the request. The Printer determines if it could Subscription Objects.
create one Subscription Object for each Subscription Template
Attributes Group in the request. This document extends this - Validate-Job operation: When a client performs this operation,
operation's definition in [RFC2911] by adding Subscription 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 [RFC2911] by adding Subscription
Template Attributes Groups in the request and Subscription Template Attributes Groups in the request and Subscription
Attributes Groups in the response. Attributes Groups in the response.
. Get-Subscription-Attributes operation: This operation allows a - Get-Subscription-Attributes operation: This operation allows a
client to obtain the specified attributes of a target client to obtain the specified attributes of a target
Subscription Object. Subscription Object.
. Get-Subscriptions operation: This operation allows a client to - Get-Subscriptions operation: This operation allows a client to
obtain the specified attributes of all Subscription Objects obtain the specified attributes of all Subscription Objects
associated with the Printer or a specified Job. associated with the Printer or a specified Job.
. Renew-Subscription operation: This operation renews the lease on - Renew-Subscription operation: This operation renews the lease
the target Per-Printer Subscription Object before it expires. A on the target Per-Printer Subscription Object before it
newly created Per-Printer Subscription Object receives an expires. A newly created Per-Printer Subscription Object
initial lease. It is the duty of the client to use this receives an initial lease. It is the duty of the client to use
operation frequently enough to preserve a Per-Printer this operation frequently enough to preserve a Per-Printer
Subscription Object. The Printer deletes a Per-Printer Subscription Object. The Printer deletes a Per-Printer
Subscription Object when its lease expires. A Per-Job Subscription Object when its lease expires. A Per-Job
Subscription Object last exactly as long as its associated Job Subscription Object last exactly as long as its associated Job
Object and thus doesn't have a lease. Object and thus doesn't have a lease.
. Cancel-Subscription operation: This operation cancels the lease - Cancel-Subscription operation: This operation (1) cancels the
on the specified Per-Printer Subscription Object and thereby lease on the specified Per-Printer Subscription Object and
deletes the Subscription Object. thereby deletes the Per-Printer Subscription Object or (2)
deletes the Per-Job Subscription Object.
When an Event occurs, the Printer finds all Subscription Objects When an Event occurs, the Printer finds all Subscription Objects
listening for the Event (see section 9 for details on finding such listening for the Event (see section 9 for details on finding such
Subscription Objects). For each such Subscription Object, the Subscription Objects). For each such Subscription Object, the
Printer: Printer:
a)generates an Event Notification with information specified in a)generates an Event Notification with information specified in
section 9, AND section 9, AND
b)either: b)either:
i) delivers the Event Notification using the Delivery Method i) delivers the Event Notification using the Delivery Method
and target address identified in the Subscription Object's and target address identified in the Subscription Object's
"notify-recipient-uri" attribute if the Delivery Method is a "notify-recipient-uri" attribute if the Delivery Method is a
"push", OR "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., As part of a Subscription Creation Operation, an IPP Printer (i.e.,
skipping to change at page 12, line 38 skipping to change at page 11, line 4
+------------+ (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 With this model, there is an intervening Print server between the
human user and the Printer in the output device. If the Printer in human user and the Printer in the output device. If the Printer in
the output device generates an Event, the system can be configured to the output device generates an Event, the system can be configured to
send Event Notification either send Event Notification either
- directly to the Notification Recipient specified by the
. directly to the Notification Recipient specified by the
Subscribing Client or Subscribing Client or
. via the Print Server to the Notification Recipient specified by - via the Print Server to the Notification Recipient specified by
the Subscribing Client. the Subscribing Client.
See Appendix A for more details. See Appendix A for more details.
2.3 Distributed Model for Notification 2.3 Distributed Model for Notification
The preceding sections (2.1 and 2.2) assume that the Notification The preceding sections (2.1 and 2.2) assume that the Notification
software resides in the same device or Server box as the rest of the software resides in the same device or Server box as the rest of the
Printer software. In many implementations, the assumption is correct. Printer software. In many implementations, the assumption is correct.
However, the Notification model also permits a distributed However, the Notification model also permits a distributed
skipping to change at page 13, line 38 skipping to change at page 12, line 9
3 Terminology 3 Terminology
This section defines terminology used throughout this document. Other This section defines terminology used throughout this document. Other
terminology is defined in [RFC2911]. terminology is defined in [RFC2911].
3.1 Conformance Terminology 3.1 Conformance Terminology
Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD
NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to
conformance to this specification. These terms are defined in conformance as defined in RFC 2119 [RFC2119] and [RFC2911] section
[RFC2911 section 13.1 on conformance terminology, most of which is 12.1. If an implementation supports the extension defined in this
taken from RFC 2119 [RFC2119]. See Appendix D for complete details. document, then these terms apply; otherwise, they do not. These
terms define conformance to this document only; they do not affect
conformance to other documents, unless explicitly stated otherwise.
See Appendix D for complete details.
Note: a feature that is OPTIONAL in this document becomes REQUIRED if Note: a feature that is OPTIONAL in this document becomes REQUIRED if
the Printer implements a Delivery Method that REQUIRES the feature the Printer implements a Delivery Method that REQUIRES the feature.
READ-ONLY - an adjective used in an attribute definition to indicate READ-ONLY - an adjective used in an attribute definition to indicate
that an IPP Printer MUST NOT allow the attribute's value to be that an IPP Printer MUST NOT allow the attribute's value to be
modified with the Set-Job-Attributes or Set-Printer-Attributes modified 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
This document uses the same terminology as [RFC2911], such as
"client", "Printer", "attribute", "attribute value", "keyword",
"operation", "request", "response", and "support". In addition, the
following terms are defined for use in this document and the Delivery
Method Documents:
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.
Operator - A human user who carries out the policy established by the Operator - A human user who carries out the policy established by the
Administrator and controls the day to day running of the print Administrator and controls the day to day running of the print
system. system.
IPP Client (or client) - The software component (PDA, desktop, or IPP Client (or client) - The software component (PDA, desktop, or
server) that performs an IPP operation directed at an IPP Printer server) that performs an IPP operation directed at an IPP Printer
(located in a server or output device). (located in a server or output device).
Job Creation operation - One of the operations that creates a Job Job Creation operation - One of the operations that creates a Job
object: Print-Job, Print-URI and Create-Job. The Validate-Job object: Print-Job, Print-URI and Create-Job. The Restart-Job
operation is not a Job Creation operation because no Job object is operation [RFC2911] is not considered a Job Creation operation,
created. Therefore, when a statement also applies to the since the Printer re-uses the existing Job object. The Validate-
Validate-Job operation, it is mentioned explicitly. Job operation is not a Job Creation operation because no Job
object is created. Therefore, when a statement also applies to
the Validate-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.
Event Notification - the information about an Event that the Printer
sends when an Event occurs.
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.
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
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 an Event Notification
Delivery Method protocol defined for delivering IPP Event
Notifications.
Delivery Method Document - a document, separate from this document, Delivery Method Document - a document, separate from this document,
that defines a Delivery Method. that defines a Delivery Method.
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, and the information to send in an Event
Notification. 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
associated with the Printer as a whole. The Create-Printer- associated with the Printer as a whole. The Create-Printer-
Subscriptions operation creates such an object. Subscriptions operation creates such an object.
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, Create-Printer-Subscriptions operation.
operation. In the context of a Job Creation operation, a In the context of a Job Creation operation, a Subscription
Subscription Creation Operation is the part of the Job Creation Creation Operation is the part of the Job Creation operation that
operation that creates a Subscription object. creates a Subscription object. The Restart-Job operation
[RFC2911] is not considered a Subscription Creation Operation,
since the Printer re-uses the Job's existing Subscription Objects,
rather than creating any new Subscription Objects.
Subscription Creation Request - The request portion of a Subscription Creation Request - The request portion of a Subscription
Subscription Creation Operation. 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
skipping to change at page 18, line 46 skipping to change at page 17, line 41
values from which to choose, the client SHOULD query the Printer for values from which to choose, the client SHOULD query the Printer for
its supported value attributes. The client SHOULD also query the its supported value attributes. The client SHOULD also query the
default value attributes. If the client then limits selectable default value attributes. If the client then limits selectable
values to only those values that are supported, the client can values to only those values that are supported, the client can
guarantee that the values supplied by the client in the create guarantee that the values supplied by the client in the create
request all fall within the set of supported values at the Printer. request all fall within the set of supported values at the Printer.
When querying the Printer, the client MAY enumerate each attribute by When querying the Printer, the client MAY enumerate each attribute by
name in the Get-Printer-Attributes Request, or the client MAY just name in the Get-Printer-Attributes Request, or the client MAY just
supply the 'subscription-template' group name in order to get the supply the 'subscription-template' group name in order to get the
complete set of supported attributes (both supported and default complete set of supported attributes (both supported and default
attributes). attributes - see section 11.2.3).
5.2 Rules for Processing Subscription Template Attributes 5.2 Rules for Processing Subscription Template Attributes
This section defines a detailed set of rules that a Printer follows This section defines a detailed set of rules that a Printer follows
when it processes Subscription Template Attributes in a Subscription when it processes Subscription Template Attributes in a Subscription
Creation Request. These rules for are similar to the rules for Creation Request. These rules are similar to the rules for processing
processing Operation attributes in [RFC2911]. That is, the Printer Operation attributes in [RFC2911]. That is, the Printer may or may
may or may not support an attribute and a client may or may not not support an attribute and a client may or may not supply the
supply the attribute. Some combinations of these cases are OK. Others attribute. Some combinations of these cases are OK. Others return
return warnings or errors, and perhaps a list of unsupported warnings or errors, and perhaps a list of unsupported attributes.
attributes.
A Printer MUST implement the following behavior for processing A Printer MUST implement the following behavior for processing
Subscription Template Attributes in a Subscription Creation Request: Subscription Template Attributes in a Subscription Creation Request:
1.If a client supplies a "notify-xxx" attribute from column 1 of 1.If a client supplies a "notify-xxx" attribute from column 1 of
Table 1 and the Printer supports it and its value, the Printer Table 1 and the Printer supports it and its value, the Printer
MUST populate the attribute on the created Subscription Object. MUST populate the attribute on the created Subscription Object.
2.If a client supplies a "notify-xxx" attribute from column 1 of 2.If a client supplies a "notify-xxx" attribute from column 1 of
Table 1 and the Printer doesn't support it or its value, the Table 1 and the Printer doesn't support it or its value, the
skipping to change at page 20, line 44 skipping to change at page 19, line 44
7.A response MUST contain one Subscription Attributes Group for each 7.A response MUST contain one Subscription Attributes Group for each
Subscription Template Attributes Group in the request (and in the Subscription Template Attributes Group in the request (and in the
same order) whether the Printer creates a Subscription Object from same order) whether the Printer creates a Subscription Object from
the Subscription Template Attributes Group or not. However, the the Subscription Template Attributes Group or not. However, the
attributes in each Subscription Attributes Group can be in any attributes in each Subscription Attributes Group can be in any
order. order.
8.The Printer MUST populate each Subscription Attributes Group of 8.The Printer MUST populate each Subscription Attributes Group of
the response such that each contains: the response such that each contains:
a) the "notify-subscription-id" attribute (see section 0), if and a) the "notify-subscription-id" attribute (see section 5.4.1), if
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.
skipping to change at page 21, line 34 skipping to change at page 20, line 35
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 Printer has no space for Object was not created because the Printer has no space for
additional Subscription Objects. The client SHOULD try additional Subscription Objects. The client SHOULD try
again later. See section 17.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 'successful-ok-too-many-events': the Subscription Object was
was created without the "notify-events" values included in created without the "notify-events" values included in this
this Subscription Attributes Group because the "notify- Subscription Attributes Group because the "notify-events"
events" attribute contains too many values. See section attribute contains too many values. See section 17.3 for
17.3 for more details about this status code. See step #2 more details about this status code. See step #2 in this
in this section and section 5.3.2 for the cases that cause section and section 5.3.2 for the cases that cause this
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
skipping to change at page 22, line 18 skipping to change at page 21, line 23
Subscription Attribute Groups. Subscription Attribute Groups.
5.3 Subscription Template Attributes 5.3 Subscription Template Attributes
This section contains the Subscription Template Attributes defined This section contains the Subscription Template Attributes defined
for the Subscription and Printer objects. for the Subscription and Printer objects.
Table 1 below shows the Subscription Template Attributes and has two Table 1 below shows the Subscription Template Attributes and has two
columns: columns:
. Attribute in Subscription Object: the name and attribute syntax - Attribute in Subscription Object: the name and attribute syntax
of each Subscription Object Attribute that is a Subscription of each Subscription Object Attribute that is a Subscription
Template Attribute Template Attribute
. Default and Supported Printer Attributes: the default attribute - Default and Supported Printer Attributes: the default attribute
and supported Printer attributes that are associated with the and supported Printer attributes that are associated with the
attribute in column 1. attribute in column 1.
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 "notify-attributes" (and "notify-attributes-supported"). A client
MUST supply "notify-recipient-uri" and MAY omit any of the rest of MUST supply "notify-recipient-uri" and MAY omit any of the rest of
the attributes in column 1 of Table 1 in a Subscription Creation the attributes in column 1 of Table 1 in a Subscription Creation
Request. Request.
Note: The Default and Supported Printer attributes listed in column
2 of Table 1 do not have separate sections in this specification
defining their semantics. Instead, the section for the corresponding
Subscription Object attribute (column 1 of Table 1) contains the
semantics of these Printer attributes. This approach follows the
precedence of the Job Template attributes in section 4.2 of [RFC2911]
where the corresponding "xxx-default" and "xxx-supported" Printer
attributes are defined in the same section as the "xxx" Job
attribute.
Table 1 - Subscription Template Attributes Table 1 - Subscription Template Attributes
Attribute in Subscription Default and Supported Printer Attribute in Subscription Default and Supported Printer
Object Attributes Object Attributes
notify-recipient-uri (uri) notify-schemes-supported (1setOf notify-recipient-uri (uri) notify-schemes-supported (1setOf
uriScheme) uriScheme)
notify-events (1setOf type2 notify-events-default (1setOf type2 notify-events (1setOf type2 -events-default (1setOf type2
keyword) keyword) keyword) keyword)
notify-events-supported (1setOf type2 notify-events-supported (1setOf type2
keyword) keyword)
notify-max-events-supported notify-max-events-supported
(integer(2:MAX)) (integer(2:MAX))
notify-attributes (1setOf notify-attributes-supported (1setOf notify-attributes (1setOf notify-attributes-supported (1setOf
type2 keyword) type2 keyword) type2 keyword) type2 keyword)
notify-user-data notify-user-data
(octetString(63)) (octetString(63))
notify-charset (charset) charset-supported (1setOf charset) notify-charset (charset) charset-supported (1setOf charset)
notify-natural-languages generated-natural-language-supported notify-natural-language generated-natural-language-supported
(naturalLanguage) (1setOf naturalLanguage) (naturalLanguage) (1setOf naturalLanguage)
notify-lease-duration notify-lease-duration-default notify-lease-duration notify-lease-duration-default
(integer(0:MAX)) (integer(0:67108863)) (integer(0:MAX)) (integer(0:67108863))
notify-lease-duration-supported notify-lease-duration-supported
(1setOf (integer(0: 67108863) | (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) rangeOfInteger(0:67108863)))
notify-time-interval notify-time-interval
(integer(0:MAX)) (integer(0:MAX))
5.3.1 notify-recipient-uri (uri) 5.3.1 notify-recipient-uri (uri)
This attribute's value is a URL, which is a special case of a URI. This attribute's value is a URL, which is a special case of a URI.
Its value consists of a scheme and an address. The address specifies Its value consists of a scheme and an address. The address specifies
the Notification Recipient and the scheme specifies the Delivery the Notification Recipient and the scheme specifies the Delivery
Method for each Event Notification associated with this Subscription Method for each Event Notification associated with this Subscription
Object. Object.
A Printer MUST support this attribute. A Printer MUST support this attribute and return the value as
supplied by the client (no case conversion or other canonicalization)
in any operation response that includes this attribute.
A client MUST supply this attribute in Subscription Creation A client MUST supply this attribute in Subscription Creation
Operation. Thus there is no need for a default attribute. Operation. Thus there is no need for a default Printer attribute.
The "notify-schemes-supported (1setOf uriScheme)" attribute MUST The URI scheme of the value of this attribute on a Subscription
specify the schemes supported for this attribute. Note: According to object MUST be a value of the "notify-schemes-supported (1setOf
[RFC1738] the ":" terminates the scheme and so is not part of the uriScheme)" Printer attribute. Note: According to [RFC2396] the ":"
scheme. Therefore, values of this attribute do not include the ":". terminates the scheme and so is not part of the scheme. Therefore,
values of the "notify-schemes-supported" Printer attribute do not
include the ":" character.
If the client supplies an unsupported scheme in the value of this If the client supplies an unsupported scheme in the value of this
attribute, then the Printer MUST not create the Subscription Object attribute, then the Printer MUST NOT create the Subscription Object
and MUST return the "notify-status-code" attribute with the 'client- and MUST return the "notify-status-code" attribute with the 'client-
error-uri-scheme-not-supported' value in the Subscription Attributes error-uri-scheme-not-supported' value in the Subscription Attributes
Group in the response. Group in the response.
The Printer MUST treat the address part of this attribute as opaque. 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 occurs and it "matches" a value of this attribute, the Printer sends
skipping to change at page 24, line 36 skipping to change at page 23, line 42
The details of "matching" are described subsection 5.3.2.2. The 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 A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation, the Printer MUST populate this Subscription Creation Operation, the Printer MUST populate this
attribute on the Subscription Object with its "notify-events-default" attribute on the Subscription Object with its "notify-events-default"
attribute value. attribute value.
Each value of this attribute on a Subscription Object MUST be one of Each keyword value of this attribute on a Subscription Object MUST be
the values of the "notify-events-supported (1setOf type2 keyword)" a value of the "notify-events-supported (1setOf type2 keyword)"
attribute. Printer attribute.
The number of values of this attribute MUST NOT exceed the value of The number of values of this attribute MUST NOT exceed the value of
the "notify-max-events-supported" attribute. A Printer MUST support the "notify-max-events-supported" attribute. A Printer MUST support
at least 2 values per Subscription Object. If the number of values at least 2 values per Subscription Object. If the number of values
supplied by a client in a Subscription Creation Operation exceeds the supplied by a client in a Subscription Creation Operation exceeds the
value of this attribute, the Printer MUST treat extra values as value of this attribute, the Printer MUST treat extra values as
unsupported values and MUST use the value of 'successful-ok-too-many- unsupported values and MUST use the value of 'successful-ok-too-many-
events' for the "notify-status-code" attribute in the Subscription events' for the "notify-status-code" attribute in the Subscription
Attributes Group of the response. Attributes Group of the response.
skipping to change at page 27, line 9 skipping to change at page 26, line 23
that). that).
5.3.2.1.3 Subscribed Job Events 5.3.2.1.3 Subscribed Job Events
The standard keyword values for Subscribed Job Events are: The standard keyword values for Subscribed Job Events are:
'job-state-changed': REQUIRED - the job has changed from any state 'job-state-changed': REQUIRED - the job has changed from any state
to any other state. Specifically, the Printer sends this Event to any other state. Specifically, the Printer sends this Event
whenever the value of the "job-state" attribute or "job-state- whenever the value of the "job-state" attribute or "job-state-
reasons" attribute changes. When a Job is removed from the Job reasons" attribute changes. When a Job is removed from the Job
History (see [RFC2911] 4.3.7.1), no Event is generated. Retention or Job History phases (see [RFC2911] section 4.3.7.1),
no Event is generated.
This Event value has the following sub-values: 'job-created', This Event value has the following sub-values: 'job-created',
'job-completed' and 'job-stopped'. A client can listen for any of 'job-completed' and 'job-stopped'. A client can listen for any of
these sub-values if it doesn't want to listen to all 'job-state these sub-values if it doesn't want to listen to all 'job-state
changes'. changes'.
'job-created': REQUIRED - the Printer has accepted a Job 'job-created': REQUIRED - the Printer has accepted a Job
Creation operation and the job's "time-at-creation" Creation operation, a Restart-Job operation [RFC2911], or
attribute value is set (see [RFC2911] section 4.3.14.1). any job operation that creates a Job object from an
existing Job object. The Printer sets the job's "time-at-
creation" attribute value (see [RFC2911] section 4.3.14.1).
The Printer puts the job in the 'pending', 'pending-held' The Printer puts the job in the 'pending', 'pending-held'
or 'processing' states.. or 'processing' states.
'job-completed': REQUIRED - the job has reached one of the 'job-completed': REQUIRED - the job has reached one of the
completed states, i.e., the value of the job's "job-state" completed states, i.e., the value of the job's "job-state"
attribute has changed to: 'completed', 'aborted', or attribute has changed to: 'completed', 'aborted', or
'canceled'. The Job's "time-at-completed" and "date-time- 'canceled'. The Job's "time-at-completed" and "date-time-
at-completed" (if supported) attributes are set (see at-completed" (if supported) attributes are set (see
[RFC2911] section 4.3.14).. The Printer also sends this [RFC2911] section 4.3.14). When a Job completes, a
Event when a Job is removed with the Purge-Job operation. Notification Recipient MAY query the Job using the Get-Job-
In this case, the Event Notification MUST report the 'job- Attributes operation. To allow such a query, the Printer
state' as 'canceled'. retains the Job in the Job Retention and/or the Job History
phases (see [RFC2911] section 4.3.7.1) for a suitable
amount of time that depends on implementation and the
Delivery Methods supported. The Printer also sends this
Event when a Job is removed with the Purge-Job operation
(see [RFC2911] section 3.2.9). In this case, the Event
Notification MUST report the 'job-state' as 'canceled' and
the Job object is no longer present for query.
'job-stopped: OPTIONAL - when the job stops printing, i.e. 'job-stopped: OPTIONAL - when the job stops printing, i.e.
the value of the "job-state" Job attribute becomes the value of the "job-state" Job attribute becomes
'processing-stopped'. 'processing-stopped'.
'job-config-changed': OPTIONAL - when the configuration of a job has 'job-config-changed': OPTIONAL - when the configuration of a job has
changed, i.e., the value of the "job-message-from-operator" or any changed, i.e., the value of the "job-message-from-operator" or any
of the "configuration" Job attributes have changed. A of the "configuration" Job attributes have changed. A
"configuration" Job attribute is an attribute that can change "configuration" Job attribute is an attribute that can change
value because of some human interaction either direct or indirect. value because of some human interaction either direct or indirect.
skipping to change at page 28, line 31 skipping to change at page 28, line 14
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, even if Job 1 is retained in the Job Retention and/or the Job
History phases (see [RFC2911] section 4.3.7.1).
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.
1.For each Per-Printer Subscription S in the Printer, if E equals 1.For each Per-Printer Subscription S in the Printer, if E equals
a value of this attribute in S or E is a sub-value of a value of a value of this attribute in S or E is a sub-value of a value of
this attribute in S, the Printer MUST generate an Event this attribute in S, the Printer MUST generate an Event
Notification. Notification.
skipping to change at page 30, line 14 skipping to change at page 30, line 9
'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.
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 This attribute contains a set of attribute names. When a Printer
sends a Machine Consumable Event Notification, it includes a fixed sends a Machine Consumable Event Notification, it includes a fixed
set of attributes (see section 9.1). If this attribute is present and set of attributes (see section 9.1). If this attribute is present
the Event Notification is Machine Consumable, the Printer also and the Event Notification is Machine Consumable, the Printer also
includes the attributes specified by this attribute. includes the attributes specified by this attribute.
A Printer MAY support this attribute. A Printer MAY support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation or the Printer does not support this Subscription Creation Operation or the Printer does not support this
attribute, the Subscription Object MUST NOT contain the "notify- attribute, the Subscription Object either (1) MAY contain the
attributes" attribute. There is no "notify-attributes-default" "notify-attributes" attribute with a 'none' value or (2) NEED NOT
attribute. contain the attribute at all. There is no "notify-attributes-
default" Printer attribute.
Each keyword value of this attribute on a Subscription Object MUST be Each keyword value of this attribute on a Subscription Object MUST be
a value of the "notify-attributes-supported (1setOf type2 keyword)" a value of the "notify-attributes-supported (1setOf type2 keyword)"
attribute. The "notify-attributes-supported" MAY contain any Printer Printer attribute. The "notify-attributes-supported" MAY contain any
attribute, Job attribute or Subscription Object attribute that the Printer attribute, Job attribute or Subscription Object attribute
Printer supports in an Event Notification. It MUST NOT contain any that the Printer supports in an Event Notification. It MUST NOT
of the attributes in Section 9.1 that a Printer automatically puts in contain any of the attributes in Section 9.1 that a Printer
an Event Notification; it would be redundant. If a client supplies an automatically puts in an Event Notification; it would be redundant.
attribute in Section 9.1, the Printer MUST treat it as an unsupported If a client supplies an attribute in Section 9.1, the Printer MUST
attribute value of the "notify-attributes" attribute. treat it as an unsupported 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 b)a Job attribute and the Printer is generating an Event
Notification from a Per-Job Subscription Object S, the Printer Notification from a Per-Job Subscription Object S, the Printer
MUST use the attribute N in the Job object associated with S. MUST use the attribute N in the Job object associated with S.
c)a Job attribute and the Printer is generating an Event c)a Job attribute and the Printer is generating an Event
Notification from a Per-Printer Subscription Object and the Event Notification from a Per-Printer Subscription Object and the Event
is: is:
. a Job Event, the Printer MUST use the attribute N in the Job ? a Job Event, the Printer MUST use the attribute N in the Job
object that caused the Event. object that caused the Event.
. a Printer Event, the Printer MUST use the attribute N in the ? a Printer Event, the Printer MUST use the attribute N in the
active Job. active Job.
If a Printer supports this attribute and a Subscription Object If a Printer supports this attribute and a Subscription Object
contains this attribute and the Delivery Method generates a Machine contains this attribute and the Delivery Method generates a Machine
Consumable Event Notification, the Printer MUST include in each Event Consumable Event Notification, the Printer MUST include in each Event
Notification: Notification:
a)the attributes specified in section 9.1 and a)the attributes specified in section 9.1 and
b)each attribute named by this attribute. b)each attribute named by this attribute.
The Printer MUST NOT use this attribute to generate a Human The Printer MUST NOT use this attribute to generate a Human
Consumable Event Notification. Consumable Event Notification.
5.3.4 notify-user-data (octetString(63)) 5.3.4 notify-user-data (octetString(63))
This attribute contains opaque data that some Delivery Methods This attribute contains opaque data that some Delivery Methods
include in each Machine Consumable Event Notification. The opaque include in each Machine Consumable Event Notification. The opaque
data might contain, for example: data might contain, for example:
. the identity of the Subscriber - the identity of the Subscriber
. a path or index to some Subscriber information - a path or index to some Subscriber information
. a key that identifies to the Notification Recipient the ultimate - a key that identifies to the Notification Recipient the
recipient of the Event Notification ultimate recipient of the Event Notification
. the id for a Notification Recipient that had previously - the id for a Notification Recipient that had previously
registered with an Instant Messaging Service registered with an Instant Messaging Service
A Printer MUST support this attribute. A Printer MUST support this attribute.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in the
Subscription Creation Operation, the Subscription Object MUST NOT Subscription Creation Operation, the Subscription Object either (1)
contain the "notify-user-data" attribute. There is no "notify-user- MAY contain the "notify-user-data" attribute with a zero length value
data-default" attribute. or (2) NEED NOT contain the attribute at all. There is no "notify-
user-data-default" Printer attribute.
There is no "user-data-supported" attribute. Rather, any octetString There is no "notify-user-data-supported" Printer attribute. Rather,
whose length does not exceed 63 octets is a supported value. If the any octetString whose length does not exceed 63 octets is a supported
length exceeds 63 octets, the Printer MUST treat it as an unsupported value. If the length exceeds 63 octets, the Printer MUST treat it as
value. an unsupported 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 A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation or supplies an unsupported value, the Subscription Creation Operation or supplies an unsupported value, the
Printer MUST populate this attribute in the Subscription Object with Printer MUST populate this attribute in the Subscription Object with
the value of the "attributes-charset" operation attribute, which is a the value of the "attributes-charset" operation attribute, which is a
REQUIRED attribute in all IPP requests (see [RFC2911]). If the value REQUIRED attribute in all IPP requests (see [RFC2911]). If the value
of the "attributes-charset" attribute is unsupported, the Printer of the "attributes-charset" attribute is unsupported, the Printer
MUST populate this attribute in the Subscription Object with the MUST populate this attribute in the Subscription Object with the
value of the Printer's "charset-configured" attribute. There is no value of the Printer's "charset-configured" attribute. There is no
"notify-charset-default" attribute. "notify-charset-default" Printer attribute.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "charset-supported (1setOf charset)" attribute. of the "charset-supported (1setOf charset)" Printer 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 A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute in Operation. If the client does not supply this attribute in
Subscription Creation Operation or supplies an unsupported value, the Subscription Creation Operation or supplies an unsupported value, the
Printer MUST populate this attribute in the Subscription Object with Printer MUST populate this attribute in the Subscription Object with
the value of the "attributes-natural-language" operation attribute, the value of the "attributes-natural-language" operation attribute,
which is a REQUIRED attribute in all IPP requests (see [RFC2911]). If which is a REQUIRED attribute in all IPP requests (see [RFC2911]). If
the value of the "attributes-natural-language" attribute is the value of the "attributes-natural-language" attribute is
unsupported, the Printer MUST populate this attribute in the unsupported, the Printer MUST populate this attribute in the
Subscription Object with the value of the Printer's "natural- Subscription Object with the value of the Printer's "natural-
language-configured" attribute. There is no "notify-natural-language- language-configured" attribute. There is no "notify-natural-language-
default" attribute. default" Printer attribute.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "generated-natural-language-supported (1setOf type2 of the "generated-natural-language-supported (1setOf type2
naturalLanguage)" attribute. naturalLanguage)" Printer 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 (in seconds) This attribute specifies the duration of the lease (in seconds)
associated with the Per-Printer Subscription Object at the time the associated with the Per-Printer Subscription Object at the time the
Subscription Object was created or the lease was renewed. The Subscription Object was created or the lease was renewed. The
duration of the lease is infinite if the value is 0, i.e., the lease duration of the lease is infinite if the value is 0, i.e., the lease
never expires. never expires. See section 5.4.3 on "notify-lease-expiration-time
(integer(0:MAX))" for more details.
This attribute is not present on a Per-Job Subscription Object This attribute is not present on a Per-Job Subscription Object
because the Subscription Object lasts exactly as long as the because the Subscription Object lasts exactly as long as the
associated Job object. See section 5.4.3 on "notify-lease-expiration- associated Job object. See discussion of the 'job-completed' event
time (integer(0:MAX))" for more details. in section 5.3.2.1.3 about retention of the Job object after
completion.
A Printer MUST support this attribute. A Printer MUST support this attribute.
For a Subscription Object Creation operation of a Per-Job For a Subscription Object Creation operation of a Per-Job
Subscription Object, the client MUST NOT supply this attribute. If Subscription Object, the client MUST NOT supply this attribute. If
the client does supply this attribute, the Printer MUST treat it as the client does supply this attribute, the Printer MUST treat it as
an unsupported attribute. an unsupported attribute.
For a Subscription Creation Operation of a Per-Printer Subscription For a Subscription Creation Operation of a Per-Printer Subscription
Object or a Renew-Subscription operation, a client MAY supply this Object or a Renew-Subscription operation, a client MAY supply this
skipping to change at page 33, line 36 skipping to change at page 33, line 46
requests it. requests it.
After the Printer has populated this attribute with a supported After the Printer has populated this attribute with a supported
value, the value represents the "granted duration" of the lease in value, the value represents the "granted duration" of the lease in
seconds and the Printer sets the value of the Subscription Object's seconds and the Printer sets the value of the Subscription Object's
"notify-lease-expiration-time" attribute as specified in section "notify-lease-expiration-time" attribute as specified in section
5.4.3. 5.4.3.
The value of this attribute on a Subscription Object MUST be a value The value of this attribute on a Subscription Object MUST be a value
of the "notify-lease-duration-supported" (1setOf (integer(0:67108863) of the "notify-lease-duration-supported" (1setOf (integer(0:67108863)
| rangeOfInteger(0:67108863))) attribute. | rangeOfInteger(0:67108863))) Printer attribute.
A Printer MAY require authentication in order to return the value of A Printer MAY require authentication in order to return the value of
0 (the lease never expires) as one of the values of "notify-lease- 0 (the lease never expires) as one of the values of "notify-lease-
duration-supported", and to allow 0 as a value of the "notify-lease- duration-supported", and to allow 0 as a value of the "notify-lease-
duration" attribute. duration" attribute.
Note: The maximum value 67,108,863 is 2 raised to the 26 power minus Note: The maximum value 67,108,863 is 2 raised to the 26 power minus
1 and is about 2 years in seconds. The value is considerably less 1 and is about 2 years in seconds. The value is considerably less
than MAX so that there is virtually no chance of an overflow when it than MAX so that there is virtually no chance of an overflow when it
is added to "printer-up-time" to produce "notify-lease-expiration- is added to "printer-up-time" to produce "notify-lease-expiration-
skipping to change at page 34, line 12 skipping to change at page 34, line 25
Notification every time this Event occurs. This attribute allows a Notification every time this Event occurs. This attribute allows a
Subscribing Client to request how often it wants to receive Event Subscribing Client to request how often it wants to receive Event
Notifications for 'job-progress' Events. The value of this attribute Notifications for 'job-progress' Events. The value of this attribute
MAY be any nonnegative integer (0,MAX) indicating the minimum number MAY be any nonnegative integer (0,MAX) indicating the minimum number
of seconds between 'job-progress' Event Notifications. of seconds between 'job-progress' Event Notifications.
The Printer MUST support this attribute if and only if the Printer The Printer MUST support this attribute if and only if the Printer
supports the 'job-progress' Event. supports the 'job-progress' Event.
A client MAY supply this attribute in a Subscription Creation A client MAY supply this attribute in a Subscription Creation
Operation. If the client does not supply this attribute, the Printer Operation. If the client does not supply this attribute in the
MUST not populate this attribute on the Subscription Object. There is Subscription Creation Operation, the Subscription Object either (1)
no "notify-time-interval-default" attribute. MAY contain the "notify-time-interval" attribute with a '0' value or
(2) NEED NOT contain this attribute at all. There is no "notify-
time-interval-default" Printer attribute.
There is no "notify-time-interval-supported" attribute. There is no "notify-time-interval-supported" Printer attribute.
If the 'job-progress' Event occurs and a Subscription Object contains If the 'job-progress' Event occurs and a Subscription Object contains
the 'job-progress' Event as a value of the 'notify-events' attribute, the 'job-progress' Event as a value of the 'notify-events' attribute,
there are two cases to consider: there are two cases to consider:
1.This attribute is not present on the Subscription Object or has 1.This attribute is not present on the Subscription Object or has
the value of 0. The Printer MUST generate and send an Event the value of 0. The Printer MUST generate and send an Event
Notification (as is the case with other Events). Notification (as is the case with other Events).
2.This attribute is present with a nonzero value of N: 2.This attribute is present with a nonzero value of N:
a)If the Printer has not sent an Event Notification for the 'job- a)If the Printer has not sent an Event Notification for the 'job-
progress' Event for the associated Subscription Object within progress' Event for the associated Subscription Object within
the past N seconds, the Printer MUST send an Event Notification the past N seconds, the Printer MUST send an Event Notification
for the Event that just occurred. Note when the Printer for the Event that just occurred. Note when the Printer
completes the first page of a Job, this rule implies that the completes the first page of a Job, this rule implies that the
Printer sends an Event Notification for a Per-Job Subscription Printer sends an Event Notification for a Per-Job Subscription
Objects. Object.
b)Otherwise, the Printer MUST NOT generate or send an Event b)Otherwise, the Printer MUST NOT generate or send an Event
Notification for the associated Subscription Object. The Printer Notification for the associated Subscription Object. The Printer
MUST NOT increase the value of the "notify-sequence-number" MUST NOT increase the value of the "notify-sequence-number"
Subscription Object attribute (i.e., the sequence of values of Subscription Object attribute (i.e., the sequence of values of
the "notify-sequence-number" attribute counts the Event the "notify-sequence-number" attribute counts the Event
Notifications that the Printer sent and not the Events that do Notifications that the Printer sent and not the Events that do
not cause an Event Notification to be sent). not cause an Event Notification to be sent).
It is RECOMMENDED that a Subscribing Client use this attribute when It is RECOMMENDED that a Subscribing Client use this attribute when
skipping to change at page 35, line 44 skipping to change at page 36, line 31
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 This attribute identifies a Subscription Object instance with a
number that is unique within the context of the Printer. The Printer number that is unique within the context of the Printer. The Printer
generates this value at the time it creates the Subscription Object. generates this value at the time it creates the Subscription Object.
A Printer MUST support this attribute. A Printer MUST support this attribute.
The Printer SHOULD NOT assign the value of this attribute The Printer MAY assign the value of this attribute sequentially as it
sequentially as it creates Subscription Objects. Sequential creates Subscription Objects. However, if there is no security on
assignment makes it easy for rogue clients to guess the value of this Subscription objects, sequential assignment exposes the system to a
attribute on other Subscription Objects. passive traffic monitoring threat.
The Printer SHOULD avoid re-using recent values of this attribute The Printer SHOULD avoid re-using recent values of this attribute
during continuous operation of the Printer as well as across power during continuous operation of the Printer as well as across power
cycles. Then a Subscribing Client is unlikely to find that a stale cycles. Then a Subscribing Client is unlikely to find that a stale
reference accesses a new Subscription Object. reference accesses a new Subscription Object.
The 0 value is not permitted in order to allow for compatibility with The 0 value is not permitted in order to allow for compatibility with
"job-id" and with SNMP index values, which also cannot be 0. "job-id" and with 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. Printer has generated and attempted to send an Event Notification for
When an Event Notification contains this attribute, the Notification this Subscription object. When an Event Notification contains this
Recipient can determine whether it missed some Event Notifications attribute, the Notification Recipient can determine whether it missed
(i.e., numbers skipped) or received duplicates (i.e., same number some Event Notifications (i.e., numbers skipped) or received
twice). duplicates (i.e., same number twice).
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Subscription Object, it MUST set the value When the Printer creates a Subscription Object, it MUST set the value
of this attribute to 0. This value indicates that the Printer has not of this attribute to 0. This value indicates that the Printer has not
sent any Event Notifications for this Subscription Object. sent any Event Notifications for this Subscription Object.
Each time the Printer sends a newly generated Event Notification, it Each time the Printer sends a newly generated Event Notification, it
MUST increase the value of this attribute by 1. For some Delivery MUST increase the value of this attribute by 1. For some Delivery
Methods, the Printer MUST include this attribute in each Event Methods, the Printer MUST include this attribute in each Event
skipping to change at page 36, line 54 skipping to change at page 37, line 46
This attribute specifies the time in the future when the lease on the This attribute specifies the time in the future when the lease on the
Per-Printer Subscription Object will expire, i.e. the "printer-up- Per-Printer Subscription Object will expire, i.e. the "printer-up-
time" value at which the lease will expire. If the value is 0, the time" value at which the lease will expire. If the value is 0, the
lease never expires. lease never expires.
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this When the Printer creates a Per-Job Subscription Object, this
attribute MUST NOT be present - the Subscription Object lasts exactly attribute MUST NOT be present - the Subscription Object lasts exactly
as long as the associated Job object. as long as the associated Job object. See also the discussion of the
'job-completed' event in section 5.3.2.1.3 about retention of the Job
object after completion so that a Notification Recipient can query
the Job object after receiving the 'job-completed' Event
Notification.
When the Printer creates a Per-Printer Subscription Object, it When the Printer creates a Per-Printer Subscription Object, it
populates this attribute with a value that is the sum of the values populates this attribute with a value that is the sum of the values
of the Printer's "printer-up-time" attribute and the Subscription of the Printer's "printer-up-time" attribute and the Subscription
Object's "notify-lease-duration" attribute with the following Object's "notify-lease-duration" attribute with the following
exception. If the value of the Subscription Object's "notify-lease- exception. If the value of the Subscription Object's "notify-lease-
duration" attribute is 0 (i.e., no expiration time), then the value duration" attribute is 0 (i.e., no expiration time), then the value
of this attribute MUST be set to 0 (i.e., no expiration time). of this attribute MUST be set to 0 (i.e., no expiration time).
When the Printer powers up, it MUST set the value of this attribute When the Printer powers up, it MUST set the value of this attribute
in each persistent Subscription Object using the algorithm in the in each persistent Subscription Object using the algorithm in the
previous paragraph. previous paragraph.
When the "printer-up-time" equals the value of this attribute, the When the "printer-up-time" equals the value of this attribute, the
Printer MUST delete the Subscription Object. A client can extend a Printer MUST delete the Subscription Object. A client can extend a
lease of a Per-Printer Subscription Object with the Renew- lease of a Per-Printer Subscription Object with the Renew-
Subscription operation (see section 11.2.5). Subscription operation (see section 11.2.6).
Note: In order to compute the number of seconds remaining in a lease Note: In order to compute the number of seconds remaining in a lease
for a Per-Printer Subscription Object, a client can subtract the for a Per-Printer Subscription Object, a client can subtract the
Subscription's "notify-printer-up-time" attribute (see section 5.4.4) Subscription's "notify-printer-up-time" attribute (see section 5.4.4)
from the Subscription's "notify-lease-expiration-time" attribute. from the Subscription's "notify-lease-expiration-time" attribute.
5.4.4 notify-printer-up-time (integer(1:MAX)) 5.4.4 notify-printer-up-time (integer(1:MAX))
This attribute is an alias for the Printer's "printer-up-time" This attribute is an alias for the Printer's "printer-up-time"
attribute " (see [RFC2911] section 4.4.29). attribute " (see [RFC2911] section 4.4.29). In other words, when
this attribute is queried with the Get-Subscriptions or Get-
Subscription-Attributes operations (see sections 11.2.4 and 11.2.5),
the value returned is the current value of the Printer's "printer-up-
time" attribute, rather than the time at which the Subscription
Object was created.
A Printer MUST support this attribute. A Printer MUST support this attribute.
When the Printer creates a Per-Job Subscription Object, this When the Printer creates a Per-Job Subscription Object, this
attribute MUST NOT be present. When the Printer creates a Per-Printer attribute MUST NOT be present. When the Printer creates a Per-Printer
Subscription Object, this attribute MUST be present. Subscription Object, this attribute MUST be present.
Note: this attribute exists in a Per-Printer Subscription Object so Note: this attribute exists in a Per-Printer Subscription Object so
that a client using the Get-Subscription-Attributes or Get- that a client using the Get-Subscription-Attributes or Get-
Subscription operations can convert the Per-Printer Subscription's Subscription operations can convert the Per-Printer Subscription's
skipping to change at page 38, line 29 skipping to change at page 39, line 36
Per-Printer Subscription. If this attribute is present, the Per-Printer Subscription. If this attribute is present, the
Subscription Object MUST be a Per-Job Subscription Object and this Subscription Object MUST be a Per-Job Subscription Object and this
attribute MUST identify the Job with which the Subscription Object is attribute MUST identify the Job with which the Subscription Object is
associated. associated.
Note: This attribute could be useful to a Notification Recipient that Note: This attribute could be useful to a Notification Recipient that
receives an Event Notification generated from a Per-Job Subscription receives an Event Notification generated from a Per-Job Subscription
Object and caused by a Printer Event. The Event Notification gives Object and caused by a Printer Event. The Event Notification gives
access to the Printer and the Subscription Object. The Event access to the Printer and the Subscription Object. The Event
Notification gives access to the associated Job only via this Notification gives access to the associated Job only via this
attribute. attribute. See discussion of the 'job-completed' event in section
5.3.2.1.3 about retention of the Job object after completion so that
a Notification Recipient can query the Job object after receiving the
'job-completed' Event Notification.
5.4.7 notify-subscriber-user-name (name(MAX)) 5.4.7 notify-subscriber-user-name (name(MAX))
This attribute contains the name of the user who performed the This attribute contains the name of the user who performed the
Subscription Creation Operation. Subscription Creation Operation.
A Printer MUST support this attribute. A Printer MUST support this attribute.
The Printer sets this attribute to the most authenticated printable The Printer sets this attribute to the most authenticated printable
name that it can obtain from the authentication service over which name that it can obtain from the authentication service over which
skipping to change at page 39, line 17 skipping to change at page 40, line 30
Table 3 - Printer Description Attributes Associated with Notification Table 3 - Printer Description Attributes Associated with Notification
Printer object attributes: REQUIRED READ-ONLY Printer object attributes: REQUIRED READ-ONLY
printer-state-change-time (integer(1:MAX)) No Yes printer-state-change-time (integer(1:MAX)) No Yes
printer-state-change-date-time (dateTime) No Yes printer-state-change-date-time (dateTime) No Yes
6.1 printer-state-change-time (integer(1:MAX)) 6.1 printer-state-change-time (integer(1:MAX))
This attribute records the most recent time at which the 'printer- This OPTIONAL attribute records the most recent time at which the
state-changed' Printer Event occurred whether or not any Subscription 'printer-state-changed' Printer Event occurred whether or not any
objects were listening for this event. This attribute helps a client Subscription objects were listening for this event. This attribute
or operator to determine how long the Printer has been in its current helps a client or operator to determine how long the Printer has been
state. in its current state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be On power-up, the Printer MUST set the value of this attribute to be
the value of its "printer-up-time" attribute, so that it always has a the value of its "printer-up-time" attribute, so that it always has a
value. Whenever the 'printer-state-changed' Printer Event occurs, the value. Whenever the 'printer-state-changed' Printer Event occurs, the
Printer MUST set this attribute to the value of the Printer's Printer MUST set this attribute to the value of the Printer's
"printer-up-time" attribute. "printer-up-time" attribute.
6.2 printer-state-change-date-time (dateTime) 6.2 printer-state-change-date-time (dateTime)
This attribute records the most recent time at which the 'printer- This OPTIONAL attribute records the most recent time at which the
state-changed' Printer Event occurred whether or not there were any 'printer-state-changed' Printer Event occurred whether or not there
Subscription Objects listening for this event. This attribute helps were any Subscription Objects listening for this event. This
a client or operator to determine how long the Printer has been in attribute helps a client or operator to determine how long the
its current state. Printer has been in its current state.
A Printer MAY support this attribute and if so, the attribute MUST be A Printer MAY support this attribute and if so, the attribute MUST be
READ-ONLY. READ-ONLY.
On power-up, the Printer MUST set the value of this attribute to be On power-up, the Printer MUST set the value of this attribute to be
the value of its "printer-current-time" attribute, so that it always the value of its "printer-current-time" attribute, so that it always
has a value (see [RFC2911] section 4.4.30 on "printer-current-time"). has a value (see [RFC2911] section 4.4.30 on "printer-current-time").
Whenever the 'printer-state-changed' Printer Event occurs, the Whenever the 'printer-state-changed' Printer Event occurs, the
Printer MUST set this attribute to the value of the Printer's Printer MUST set this attribute to the value of the Printer's
"printer-current-time" attribute. "printer-current-time" attribute.
skipping to change at page 41, line 19 skipping to change at page 43, line 8
and to send the 'job-completed' or 'job-state-changed' value for this and to send the 'job-completed' or 'job-state-changed' value for this
attribute, respectively,. See section 5.3.2.2 for the "matching" attribute, respectively,. See section 5.3.2.2 for the "matching"
rules of Subscribed Events and for additional examples. rules of Subscribed Events and for additional examples.
The Delivery Method Document specifies whether the Printer includes The Delivery Method Document specifies whether the Printer includes
the value of this attribute in an Event Notification. the value of this attribute in an Event Notification.
8.2 notify-text (text(MAX)) 8.2 notify-text (text(MAX))
This attribute contains a Human Consumable text message (see section This attribute contains a Human Consumable text message (see section
0). This message describes the Event and is encoded as plain text, 9.2). This message describes the Event and is encoded as plain text,
i.e., 'text/plain' with the charset specified by Subscription i.e., 'text/plain' with the charset specified by Subscription
Object's "notify-charset" attribute. Object's "notify-charset" attribute.
The Delivery Method Document specifies whether the Printer includes The Delivery Method Document specifies whether the Printer includes
this attribute in an Event Notification. this attribute in an Event Notification.
9 Event Notification Content 9 Event Notification Content
This section defines the Event Notification content that the Printer This section defines the Event Notification content that the Printer
sends when an Event occurs. sends when an Event occurs.
skipping to change at page 41, line 45 skipping to change at page 43, line 34
content and format that the Delivery Method Document specifies. The content and format that the Delivery Method Document specifies. The
content contains the value of attributes specified by the Delivery content contains the value of attributes specified by the Delivery
Method Document. The Printer obtains the values immediately after the Method Document. The Printer obtains the values immediately after the
Event occurs. For example, if the "printer-state" attribute changes Event occurs. For example, if the "printer-state" attribute changes
from 'idle' to 'processing', the Event 'printer-state-changed' occurs from 'idle' to 'processing', the Event 'printer-state-changed' occurs
and the Printer puts various attributes into the Event Notification, and the Printer puts various attributes into the Event Notification,
including "printer-up-time" and "printer-state" with the values that including "printer-up-time" and "printer-state" with the values that
they have immediately after the Event occurs, i.e., the value of they have immediately after the Event occurs, i.e., the value of
"printer-state" is 'processing'. "printer-state" is 'processing'.
Event Notification Ordering:
When a Printer sends Event Notifications, the Event Notifications
from any given Subscription Object MUST be in time stamp order, i.e.,
in order of increasing "printer-up-time" attribute value in the Event
Notification (see Table 5). These Event Notifications MAY be
interleaved with those from other Subscription Objects, as long as
those others are also in time stamp order. The Printer MUST observe
these ordering requirements whether sending multiple pending Events
as multiple separate Event Notifications or together in a single
Compound Event Notification.
If a Subscribing Client wants the Printer to send certain Event
Notifications in time stamp order, the Subscribing Client uses a
single Subscription Object. Even so, depending on the underlying
transport, the actual order that a Notification Recipient receives
separate Event Notifications may differ from the order sent by the
Printer (e.g., email).
Example: Consider two Per-Printer Subscription Objects: SO1 and SO2.
SO1 requests 'job-state-changed' events and SO2 requests 'printer-
state-changed' events. The number in parens is the time stamp. The
following Event Notification sequences are the only ones that conform
to the ordering requirements for the Printer to send the Event
Notifications:
(a) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO1: 'job-
completed' (1009), SO2: 'printer-stopped' (1005)
(b) SO1: 'job-created' (1000), SO1: 'job-stopped' (1005), SO2:
'printer-stopped' (1005), SO1: 'job-completed' (1009)
(c) SO1: 'job-created' (1000), SO2: 'printer-stopped' (1005), SO1:
'job-stopped' (1005), SO1: 'job-completed' (1009)
(d) SO2: 'printer-stopped (1005), SO1: 'job-created' (1000), SO1:
'job-stopped' (1005), SO1: 'job-completed' (1009)
Examples (b) and (c) are interleaved; examples (a) and (d) are not
interleaved and are not appropriate for some Delivery Methods.
If two different Events occur simultaneously, or nearly so (e.g., If two different Events occur simultaneously, or nearly so (e.g.,
"printer-up-time" has the same value for both), the Printer MUST "printer-up-time" has the same value for both), the Printer MUST
create a separate Event Notification for each Event, even if the create a separate Event Notification for each Event, even if the
associated Subscription Object is the same for both Events. However, associated Subscription Object is the same for both Events. However,
the Printer MAY combine these distinct Event Notifications into a the Printer MAY combine these distinct Event Notifications into a
single Compound Event Notification if the Delivery Method supports single Compound Event Notification if the Delivery Method supports
Compound Event Notifications For example, suppose that two nearly- Compound Event Notifications. For example, suppose that two nearly-
simultaneously Events represent two successive 'printer-state- simultaneously Events represent two successive 'printer-state-
changed' Events, one from 'idle' to 'processing' and another from changed' Events, one from 'idle' to 'processing' and another from
'processing' to 'stopped'. These two Events have the same name but 'processing' to 'stopped'. These two Events have the same name but
are different instances of the Event. Then the Printer MUST create a are different instances of the Event. Then the Printer MUST create a
separate Event Notification for each Event and SHOULD accurately separate Event Notification for each Event and SHOULD accurately
report the "printer-state" of the first Event as 'processing' and the report the "printer-state" of the first Event as 'processing' and the
second Event as 'stopped'. 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 Events occur in quick succession each matching a different several Events occur in quick succession each matching a different
skipping to change at page 42, line 42 skipping to change at page 45, line 25
If an error that meets the following conditions occurs, the Printer If an error that meets the following conditions occurs, the Printer
MUST cancel the Subscription Object. MUST cancel the Subscription Object.
a)the error occurs during the sending of an Event Notification a)the error occurs during the sending of an Event Notification
generated from Subscription Object S AND generated from Subscription Object S AND
b)the error would continue to occur every time the Printer sends an b)the error would continue to occur every time the Printer sends an
Event Notification generated from Subscription Object S in the Event Notification generated from Subscription Object S in the
future. future.
From example, if the address of the "notify-recipient-uri" of For example, if the address of the "notify-recipient-uri" of
Subscription Object A references a non-existent target and the Subscription Object A references a non-existent target and the
Printer determines that this fact, it MUST delete Subscription Object Printer determines this fact, it MUST delete Subscription Object A.
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 content of Machine Consumable and Human Consumable Event
Notifications, respectively. Notifications, respectively.
The tables in the sub-sections of this section contain the following The tables in the sub-sections of this section contain the following
columns: columns:
a)Source Value: the name of the attribute that supplies the value a)Source Value: the name of the attribute that supplies the value
for the Event Notification. Asterisks in this field refer to a for the Event Notification. Asterisks in this field refer to a
skipping to change at page 45, line 6 skipping to change at page 47, line 44
attributes from the "notify-attributes" MAY Job attributes from the "notify-attributes" MAY Job
attribute *** attribute ***
attributes from the "notify-attributes" MAY Subscription attributes from the "notify-attributes" MAY Subscription
attribute *** attribute ***
*A Printer MUST send this value only if and only if it supports the *A Printer MUST send this value only if and only if it supports the
Printer's "printer-current-time" attribute. Printer's "printer-current-time" attribute.
** If the Subscription Object does not contain a "notify-user-data" ** If the Subscription Object does not contain a "notify-user-data"
attribute and the Delivery Method document REQUIRES the Printer to attribute and the Delivery Method Document REQUIRES the Printer to
send the "notify-user-data" source value in the Event Notification, send the "notify-user-data" source value in the Event Notification,
the Printer MUST send an octet-string of length 0. the Printer MUST send an octet-string of length 0.
*** The last three rows represent additional attributes that a client *** The last three rows represent additional attributes that a client
MAY request via the "notify-attributes" attribute. A Printer MAY MAY request via the "notify-attributes" attribute. A Printer MAY
support the "notify-attributes" attribute. The Delivery Method MUST support the "notify-attributes" attribute. The Delivery Method MUST
say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED say that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED
NOT support the "notify-attributes" attribute and specific values of NOT support the "notify-attributes" attribute and specific values of
this attribute. The Delivery Method MAY say that support for the this attribute. The Delivery Method MAY say that support for the
"notify-attributes" is conditioned on support of the attribute by the "notify-attributes" is conditioned on support of the attribute by the
skipping to change at page 51, line 28 skipping to change at page 54, line 28
10 Delivery Methods 10 Delivery Methods
A Delivery Method is the mechanism, i.e., protocol, by which the A Delivery Method is the mechanism, i.e., protocol, by which the
Printer delivers an Event Notification to a Notification Recipient. Printer delivers an Event Notification to a Notification Recipient.
There are several potential Delivery Methods for Event Notifications, There are several potential Delivery Methods for Event Notifications,
standardized, as well as proprietary. This document does not define standardized, as well as proprietary. This document does not define
any of these delivery mechanisms. Each Delivery Method MUST be any of these delivery mechanisms. Each Delivery Method MUST be
defined in a Delivery Method Document that is separate from this defined in a Delivery Method Document that is separate from this
document. New Delivery Methods will be created as needed using an document. New Delivery Methods will be created as needed using an
extension to the registration procedures defined in [RFC2911]. Such extension to the registration procedures defined in [RFC2911]. Such
documents are registered with IANA (see section 13). documents are registered with IANA (see section 13.7.3).
The following sorts of Delivery Methods are expected: The following sorts of Delivery Methods are expected:
- The Notification Recipient polls for Event Notifications at - The Notification Recipient polls for Event Notifications at
intervals directed by the Printer intervals directed by the Printer
- The Printer sends Event Notifications to the Notification - The Printer sends Event Notifications to the Notification
Recipient using http as the transport. Recipient using http as the transport.
- The Printer sends an email message. - The Printer sends an email message.
skipping to change at page 52, line 10 skipping to change at page 55, line 10
questions in column 1 for the Delivery Method. Also, the Delivery questions in column 1 for the Delivery Method. Also, the Delivery
Method document MUST contain a reference to this document and call Method document MUST contain a reference to this document and call
that reference [ipp-ntfy] because the table contains an [ipp-ntfy] that reference [ipp-ntfy] because the table contains an [ipp-ntfy]
reference. reference.
If a Printer supports this Delivery Method, the following are its If a Printer supports this Delivery Method, the following are its
characteristics. characteristics.
Table 15 - Information about the Delivery Method Table 15 - Information about the Delivery Method
Document Method Conformance Delivery Method Realization Document Method Conformance Requirement Delivery Method
Requirement Realization
1.What is the URL scheme name for the 1.What is the URL scheme name for the
Delivery Method? Delivery Method?
2.Is the Delivery Method REQUIRED, 2.Is the Delivery Method REQUIRED,
RECOMMENDED, or OPTIONAL for an IPP RECOMMENDED, or OPTIONAL for an IPP
Printer to support? Printer to support?
3.What transport and delivery 3.What transport and delivery protocols
protocols does the Printer use to does the Printer use to deliver the
deliver the Event Notification Event Notification Content, i.e., what
Content, i.e., what is the entire is the entire network stack?
network stack?
4.Can several Event Notifications be 4.Can several Event Notifications be
combined into a Compound Event combined into a Compound Event
Notification? Notification?
5.Is the Delivery Method initiated by 5.Is the Delivery Method initiated by the
the Notification Recipient (pull), Notification Recipient (pull), or by the
or by the Printer (push)? Printer (push)?
6.Is the Event Notification content 6.Is the Event Notification content
Machine Consumable or Human Machine Consumable or Human Consumable?
Consumable?
7.What section in this document 7.What section in this document answers
answers the following question? For the following question? For a Machine
a Machine Consumable Event Consumable Event Notification, what is
Notification, what is the the representation and encoding of
representation and encoding of values defined in section 9.1 of [ipp-
values defined in section 9.1 of ntfy] and the conformance requirements
[ipp-ntfy] and the conformance thereof? For a Human Consumable Event
requirements thereof? For a Human Notification, what is the representation
Consumable Event Notification, what and encoding of pieces of information
is the representation and encoding defined in section 9.2 of [ipp-ntfy] and
of pieces of information defined in the conformance requirements thereof?
section 0 of [ipp-ntfy] and the
conformance requirements thereof?
8.What are the latency and 8.What are the latency and reliability of
reliability of the transport and the transport and delivery protocol?
delivery protocol? the transport and delivery protocol?
9.What are the security aspects of 9.What are the security aspects of the
the transport and delivery transport and delivery protocol, e.g.,
protocol, e.g., how it is handled how it is handled in firewalls?
in firewalls?
10. What are the content length 10. What are the content length
restrictions? restrictions?
11. What are the additional values 11. What are the additional values or
or pieces of information that a pieces of information that a Printer
Printer sends in an Event sends in an Event Notification content
Notification content and the
conformance requirements thereof?
12. What are the additional
Subscription Template and/or
Subscription Description attributes
and the conformance requirements and the conformance requirements
thereof? thereof?
12. What are the additional Subscription
Template and/or Subscription Description
attributes and the conformance
requirements thereof?
13. What are the additional Printer 13. What are the additional Printer
Description attributes and the Description attributes and the
conformance requirements thereof? conformance requirements thereof?
11 Operations for Notification 11 Operations for Notification
This section defines all of the operations for Notification. Section This section defines all of the operations for Notification. Section
7.1 assigns the "operation-id" for each operation. The following two 7.1 assigns the "operation-id" for each operation. The following two
sub-sections define Subscription Creation Operations, and other sub-sections define Subscription Creation Operations, and other
operations. operations.
skipping to change at page 55, line 42 skipping to change at page 58, line 38
The Printer MUST return to the client the following sets of The Printer MUST return to the client the following sets of
attributes as part of a Create-Job-Subscriptions response: attributes as part of a Create-Job-Subscriptions response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every In addition to the REQUIRED status code returned in every
response, the response OPTIONALLY includes a "status-message" response, the response OPTIONALLY includes a "status-message"
(text(255)) and/or a "detailed-status-message" (text(MAX)) (text(255)) and/or a "detailed-status-message" (text(MAX))
operation attribute as described in [RFC2911] sections 13 and operation attribute as described in [RFC2911] sections 13 and
31.6. 3.1.6.
In this group, the Printer can return any status codes defined In this group, the Printer can return any status codes defined
in [RFC2911] and section 16. The following is a description of in [RFC2911] and section 16. The following is a description of
the important status codes: the important status codes:
successful-ok: the Printer created all Subscription Objects successful-ok: the Printer created all Subscription Objects
requested. requested (see [RFC2911]).
successful-ok-ignored-subscriptions: the Printer created some successful-ok-ignored-subscriptions: the Printer created
Subscription Objects requested but some failed. The some Subscription Objects requested but some failed. The
Subscription Attributes Groups with a "notify-status-code" Subscription Attributes Groups with a "notify-status-
attribute are the ones that failed. code" attribute are the ones that failed (see section
16.1).
client-error-ignored-all-subscriptions: the Printer created no client-error-ignored-all-subscriptions: the Printer created
Subscription Objects requested and all failed. The no Subscription Objects requested and all failed. The
Subscription Attributes Groups with a "notify-status-code" Subscription Attributes Groups with a "notify-status-
attribute are the ones that failed code" attribute are the ones that failed (see section
client-error-not-possible: For this operation and other Per-Job 16.2).
Subscription operations, this error can occur because the client-error-not-possible: For this operation and other
specified Job has already completed. Per-Job Subscription operations, this error can occur
because the specified Job has already completed (see
[RFC2911], whether or not the Job is retained in the Job
Retention and/or Job History phases (see [RFC2911]
section 4.3.7.1).
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. attributes as described in [RFC2911] section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] 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 unsupported Subscription Template Attributes; they are returned
in the Subscription Attributes Group (see below). in the Subscription Attributes Group (see below).
Group 3-N: Subscription Attributes Group 3-N: Subscription Attributes
These groups MUST be returned unless the Printer is unable to These groups MUST be returned unless the Printer is unable to
interpret the entire request, e.g., the "status-code" parameter interpret the entire request, e.g., the "status-code" parameter
returned in Group 1 has the value: 'client-error-bad-request'. returned in Group 1 has the value: 'client-error-bad-request'.
"notify-status-code" (type2 enum): "notify-status-code" (type2 enum):
Indicates the status of this subscription (see section 17 for Indicates the status of this subscription (see section 17
the status code definitions). Section 5.2 defines when this for the status code definitions). Section 5.2 defines when
attribute MUST be present in this group. this attribute MUST be present in this group.
See section 5.2 for details on the contents of each occurrence See section 5.2 for details on the contents of each occurrence
of this group. of this group.
11.1.2 Create-Printer-Subscriptions operation 11.1.2 Create-Printer-Subscriptions operation
The operation is identical to Create-Job-Subscriptions with The operation is identical to Create-Job-Subscriptions with
exceptions noted in this section. exceptions noted in this section.
The operation creates Per-Printer Subscription Objects instead of The operation creates Per-Printer Subscription Objects instead of
skipping to change at page 57, line 23 skipping to change at page 60, line 31
the "notify-job-id" attribute. If the client does supply the the "notify-job-id" attribute. If the client does supply the
"notify-job-id" attribute, then the Printer MUST treat it as any "notify-job-id" attribute, then the Printer MUST treat it as any
other unsupported Operation attribute and MUST return it in the other unsupported Operation attribute and MUST return it in the
Unsupported Attributes group. Unsupported Attributes group.
11.1.2.2 Create-Printer-Subscriptions Response 11.1.2.2 Create-Printer-Subscriptions Response
The groups are identical to the Create-Job-Subscriptions (see section The groups are identical to the Create-Job-Subscriptions (see section
11.1.1.2). 11.1.1.2).
11.1.3 Job Creation Operation - Extensions for Notification 11.1.3 Job Creation Operations - Extensions for Notification
This document extends the Job Creation operations to create This document extends the Job Creation operations (see section 3.2)
Subscription Objects as a part of the operation. to create Subscription Objects as a part of the operation.
The operation is identical to Create-Job-Subscriptions with The Job Creation operations are identical to Create-Job-Subscriptions
exceptions noted in this section. operation with exceptions noted in this section.
Unlike the Create-Job-Subscriptions operation, this operation Unlike the Create-Job-Subscriptions operation, a Job Creation
associates the newly created Subscription Objects with the Job object operation associates the newly created Subscription Objects with the
created by this operation. The operation succeeds if and only if the Job object created by this operation. The operation succeeds if and
Job creation succeeds. If the Printer does not create some or all of only if the Job creation succeeds. If the Printer does not create
the requested Subscription Objects, the Printer MUST return a some or all of the requested Subscription Objects, the Printer MUST
'successful-ok-ignored-subscriptions' status-code instead of a return a 'successful-ok-ignored-subscriptions' status-code instead
'successful-ok' status-code, but the Printer MUST NOT reject the of a 'successful-ok' status-code, but the Printer MUST NOT reject the
operation because of a failure to create Subscription Objects. operation because of a failure to create Subscription Objects.
If the operation includes a Job Template group, the client MUST If the Job Creation operation includes a Job Template group, the
supply it after the Operation Attributes group and before the first client MUST supply it after the Operation Attributes group and before
Subscription Template Attributes Group. the first Subscription Template Attributes Group.
If a Printer does not support this Notification specification, then If a Printer does not support this Notification specification, then
it MUST treat the Subscription Attributes Group like an unknown group it MUST treat the Subscription Attributes Group like an unknown group
and ignore it (see [RFC2911] section 5.2.2). Because the Printer and ignore it (see [RFC2911] section 5.2.2). Because the Printer
ignores the Subscription Attributes Group, it doesn't return them in ignores the Subscription Attributes Group, it doesn't return them in
the response either, thus indicating to the client that the Printer the response either, thus indicating to the client that the Printer
doesn't support Notification. doesn't support Notification.
After completion of a successful Job Creation operation, the Printer
generates a 'job-created' event (see section 5.3.2.1.3).
Access Rights: To create Per-Job Subscription Objects, the Access Rights: To create Per-Job Subscription Objects, the
authenticated user (see [RFC2911] section 8.3) performing this authenticated user (see [RFC2911] section 8.3) performing this
operation MUST either have permission to create Jobs on the Printer. operation MUST either have permission to create Jobs on the Printer
Otherwise the Printer MUST reject the operation and return: the or have Operator or Administrator access rights for this Printer (see
'client-error-forbidden', 'client-error-not-authenticated', or [RFC2911] sections 1 and 8.5). Otherwise the Printer MUST reject the
'client-error-not-authorized' status code as appropriate. operation and return: the 'client-error-forbidden', 'client-error-
not-authenticated', or 'client-error-not-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. Create-Job-Subscriptions operation that they are all presented here.
The following groups of attributes are supplied as part of a Job The following groups of attributes are supplied as part of a Job
Creation Request: Creation Request:
Group 1: Operation Attributes Group 1: Operation Attributes
skipping to change at page 58, line 49 skipping to change at page 62, line 22
Status Message: Status Message:
As defined in [RFC2911] for Print-Job, Print-URI, and Create- As defined in [RFC2911] for Print-Job, Print-URI, and Create-
Job requests. Job requests.
In this group, the Printer can return any status codes defined In this group, the Printer can return any status codes defined
in [RFC2911] and section 16. The following is a description of in [RFC2911] and section 16. The following is a description of
the important status codes: the important status codes:
successful-ok: the Printer created the Job and all Subscription successful-ok: the Printer created the Job and all
Objects requested. Subscription Objects requested (see [RFC2911].
successful-ok-ignored-subscriptions: the Printer created the Job successful-ok-ignored-subscriptions: the Printer created
and not all of the Subscription Objects requested. This the Job and not all of the Subscription Objects requested
status-code hides 'successful-ok-xxx' status-codes that could (see section 16.1). This status-code hides 'successful-
reveal problems in Job creation. The Printer MUST not return ok-xxx' status-codes that could reveal problems in Job
the 'client-error-ignored-all-subscriptions' status code for creation. The Printer MUST NOT return the 'client-error-
Job Creation operations because the Printer returns an error ignored-all-subscriptions' status code for Job Creation
status-code only when it fails to create a Job. operations because the Printer returns an error 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 [RFC2911] section 3.1.4.2. attributes as described in [RFC2911] section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 for details on returning
Unsupported Attributes. This group does not contain any Unsupported Attributes. This group does not contain any
unsupported Subscription Template Attributes; they are returned unsupported Subscription Template Attributes; they are returned
in the Subscription Attributes Group (see below). in the Subscription Attributes Group (see below).
Group 3: Job Object Attributes Group 3: Job Object Attributes
As defined in [RFC2911] for Print-Job, Print-URI, and Create- The "job-id" of the Job Object just created, etc., as defined
Job requests. in [RFC2911] for Print-Job, Print-URI, and Create-Job requests.
Group 4 to N: Subscription Attributes Group 4 to N: Subscription Attributes
These groups MUST be returned if and only if the client These groups MUST be returned if and only if the client
supplied Subscription Template Attributes and the operation was supplied Subscription Template Attributes and the operation was
accepted. accepted.
See section 5.2 for details on the contents of each occurrence See section 5.2 for details on the contents of each occurrence
of this group. of this group.
11.2 Other Operations 11.2 Other Operations
This section defines other operations on Subscription objects. This section defines other operations on Subscription objects.
11.2.1 Validate-Job Operation - Extensions for Notification 11.2.1 Restart-Job Operation - Extensions for Notification
The Restart-Job operation [RFC2911] is neither a Job Creation
operation nor a Subscription Creation operation (see section 3.2).
For the Restart-Job operation, the client MUST NOT supply any Job
Subscription Attributes Groups. The Printer MUST treat any supplied
Job Subscription Attributes as unsupported attributes.
For this operation, the Printer does not return a job-id or any
Subscription Attributes groups because the Printer reuses the
existing Job object with the same job-id and the existing Per-Job
Subscription Objects with the same subscription-ids. However, after
successful completion of this operation, the Printer generates a
'job-created' event (see section 5.3.2.1.3).
11.2.2 Validate-Job Operation - Extensions for Notification
A client can test whether one or more Subscription Objects could be A client can test whether one or more Subscription Objects could be
created using the Validate-Job operation. The client supplies one or created using the Validate-Job operation. The client supplies one or
more Subscription Template Attributes Groups (defined in section more Subscription Template Attributes Groups (defined in section
5.3), just as in a Job Creation request. 5.3), just as in a Job Creation request.
A Printer MUST support this extension to this operation. A Printer MUST support this extension to this operation.
The Printer MUST accept requests that are identical to the Job The Printer MUST accept requests that are identical to the Job
Creation request defined in section 11.1.3.1, except that the request Creation request defined in section 11.1.3.1, except that the request
MUST not contain document data. MUST NOT contain document data.
The Printer MUST return the same groups and attributes as the Print- The Printer MUST return the same groups and attributes as the Print-
Job operation (section 11.1.3.1) with the following exceptions. The Job operation (section 11.1.3.1) with the following exceptions. The
Printer MUST NOT return a Job Object Attributes Group because no Job Printer MUST NOT return a Job Object Attributes Group because no Job
is created. The Printer MUST NOT return the "notify-subscription-id" is created. The Printer MUST NOT return the "notify-subscription-id"
attribute in any Subscription Attribute Group because no Subscription attribute in any Subscription Attribute Group because no Subscription
Object is created. Object is created.
If the Printer would succeed in creating a Subscription Object, the If the Printer would succeed in creating a Subscription Object, the
corresponding Subscription Attributes Group either has no 'status- corresponding Subscription Attributes Group either has no 'status-
code' attribute or a 'status-code' attribute with a value of code' attribute or a 'status-code' attribute with a value of
'successful-ok-too-many-events' or 'successful-ok-ignored-or- 'successful-ok-too-many-events' or 'successful-ok-ignored-or-
substituted-attributes' (see sections 5.2 and 17). The status-codes substituted-attributes' (see sections 5.2 and 17). The status-codes
have the same meaning as in Job Creation except the results state have the same meaning as in Job Creation except the results state
what "would happen". what "would happen".
The Printer MUST validate Subscription Template Attributes Groups in The Printer MUST validate Subscription Template Attributes Groups in
the same manner as the Job Creation operations. the same manner as the Job Creation operations.
11.2.2 Get-Printer-Attributes - Extensions for Notification 11.2.3 Get-Printer-Attributes - Extensions for Notification
This operation is extended so that it returns Printer attributes This operation is extended so that it returns Printer attributes
defined in this document. defined in this document.
A Printer MUST support this extension to this operation. A Printer MUST support this extension to this operation.
In addition to the requirements of [RFC2911] section 3.2.5, a Printer In addition to the requirements of [RFC2911] section 3.2.5, a Printer
MUST support the following additional values for the "requested- MUST support the following additional values for the "requested-
attributes" Operation attribute in this operation and return such attributes" Operation attribute in this operation and return such
attributes in the Printer Object Attributes group of its response. attributes in the Printer Object Attributes group of its response.
skipping to change at page 60, line 49 skipping to change at page 64, line 45
names all supported Subscription Template Attribute in column 2 names all supported Subscription Template Attribute in column 2
of Table 1. This group name is also used in the Get- of Table 1. This group name is also used in the Get-
Subscription-Attributes and Get-Subscriptions operation with an Subscription-Attributes and Get-Subscriptions operation with an
analogous meaning. analogous meaning.
4.Extended Group Name: The 'all' group name, which names all 4.Extended Group Name: The 'all' group name, which names all
Printer attributes according to [RFC2911] section 3.2.5. In Printer attributes according to [RFC2911] section 3.2.5. In
this extension 'all' names all attributes specified in [RFC2911] this extension 'all' names all attributes specified in [RFC2911]
plus those named in items 1 and 2 of this list. plus those named in items 1 and 2 of this list.
11.2.3 Get-Subscription-Attributes operation 11.2.4 Get-Subscription-Attributes operation
This operation allows a client to request the values of the This operation allows a client to request the values of the
attributes of a Subscription Object. attributes of a Subscription Object.
A Printer MUST support this operation. A Printer MUST support this operation.
This operation is almost identical to the Get-Job-Attributes This operation is almost identical to the Get-Job-Attributes
operation (see [RFC2911] section 3.3.4). The only differences are operation (see [RFC2911] section 3.3.4). The only differences are
that the operation is directed at a Subscription Object rather than a that the operation is directed at a Subscription Object rather than a
Job object, and the returned attribute group contains Subscription Job object, and the returned attribute group contains Subscription
Object attributes rather than Job object attributes. Object attributes rather than Job object attributes.
11.2.3.1 Get-Subscription-Attributes Request 11.2.4.1 Get-Subscription-Attributes Request
The following groups of attributes are part of the Get-Subscription- The following groups of attributes are part of the Get-Subscription-
Attributes request: Attributes request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section [RFC2911] 3.1.4.1. attributes as described in section [RFC2911] 3.1.4.1.
skipping to change at page 61, line 49 skipping to change at page 65, line 47
"requested-attributes" (1setOf keyword): "requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. This attribute specifies the MUST support this attribute. This attribute specifies the
attributes of the specified Subscription Object that the attributes of the specified Subscription Object that the
Printer MUST return in the response. Each value of this Printer MUST return in the response. Each value of this
attribute is either an attribute name (defined in sections 5.3 attribute is either an attribute name (defined in sections 5.3
and 5.4) or an attribute group name. The attribute group names and 5.4) or an attribute group name. The attribute group names
are: are:
- 'subscription-template': all attributes that are both defined - 'subscription-template': all attributes that are both
in section 5.3 and present on the specified Subscription defined in section 5.3 and present on the specified
Object (column 1 of Table 1). Subscription 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 the client omits this attribute, the Printer MUST respond as
if this attribute had been supplied with a value of 'all'. if this attribute had been supplied with a value of 'all'.
11.2.3.2 Get-Subscription-Attributes Response 11.2.4.2 Get-Subscription-Attributes Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Get-Subscription-Attributes Response: Get-Subscription-Attributes Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.2. The attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of "attributes-natural-language" MAY be the natural language of
the Subscription Object, rather than the one requested. the Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 and section 3.2.5.2 for details on
Unsupported Attributes. returning Unsupported Attributes.
The response NEED NOT contain the "requested-attributes" The response NEED NOT contain the "requested-attributes"
operation attribute with any supplied values (attribute operation attribute with any supplied keyword values that were
keywords) that were requested by the client but are not requested by the client but are not supported by the IPP
supported by the Printer. If the Printer does return object. If the Printer object does return unsupported
unsupported attributes referenced in the "requested-attributes" attributes referenced in the "requested-attributes" operation
operation attribute and that attribute included group names, attribute, the values of the "requested-attributes" attribute
such as 'all', the unsupported attributes MUST NOT include returned MUST include only the unsupported keywords that were
attributes described in the standard but not supported by the requested by the client. If the client had requested a group
implementation. name, such as 'all', the resulting unsupported attributes
returned MUST NOT include attribute keyword names described in
the standard but not supported by the implementation.
Group 3: Subscription Attributes Group 3: Subscription Attributes
This group contains a set of attributes with their current This group contains a set of attributes with their current
values. Each attribute in this group: values. Each attribute in this group:
a)MUST be specified by the "requested-attributes" attribute a)MUST be specified by the "requested-attributes" attribute
in the request, AND in the request, AND
b)MUST be present on the specified Subscription Object AND b)MUST be present on the specified Subscription Object AND
c)MUST NOT be restricted by the security policy in force. c)MUST NOT be restricted by the security policy in force.
For example, a Printer MAY prohibit a client who is not the For example, a Printer MAY prohibit a client who is not the
skipping to change at page 63, line 11 skipping to change at page 67, line 21
c)MUST NOT be restricted by the security policy in force. c)MUST NOT be restricted by the security policy in force.
For example, a Printer MAY prohibit a client who is not the For example, a Printer MAY prohibit a client who is not the
creator of a Subscription Object from seeing some or all of creator of a Subscription Object from seeing some or all of
its attributes. See [RFC2911] section 8. its attributes. See [RFC2911] section 8.
The Printer can return the attributes of the Subscription The Printer can return the attributes of the Subscription
Object in any order. The client MUST accept the attributes in Object in any order. The client MUST accept the attributes in
any order. any order.
11.2.4 Get-Subscriptions operation 11.2.5 Get-Subscriptions operation
This operation allows a client to retrieve the values of attributes This operation allows a client to retrieve the values of attributes
of all Subscription Objects belonging to a Job or Printer. of all Subscription Objects belonging to a Job or Printer.
A Printer MUST supported this operation. A Printer MUST supported this operation.
This operation is similar to the Get-Subscription-Attributes This operation is similar to the Get-Subscription-Attributes
operation, except that this Get-Subscriptions operation returns operation, except that this Get-Subscriptions operation returns
attributes from possibly more than one object. attributes from possibly more than one object.
This operation is similar to the Get-Jobs operation (see [RFC2911] This operation is similar to the Get-Jobs operation (see [RFC2911]
section 3.2.6), except that the operation returns Subscription section 3.2.6), except that the operation returns Subscription
Objects rather than Job objects. Objects rather than Job objects.
11.2.4.1 Get-Subscriptions Request 11.2.5.1 Get-Subscriptions Request
The following groups of attributes are part of the Get-Subscriptions The following groups of attributes are part of the Get-Subscriptions
request: request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
skipping to change at page 63, line 52 skipping to change at page 68, line 16
The "requesting-user-name" attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3. client as described in [RFC2911] section 8.3.
"notify-job-id" (integer(1:MAX)): "notify-job-id" (integer(1:MAX)):
If the client specifies this attribute, the Printer returns the If the client specifies this attribute, the Printer returns the
specified attributes of all Per-Job Subscription Objects specified attributes of all Per-Job Subscription Objects
associated with the Job whose "job-id" attribute value equals associated with the Job whose "job-id" attribute value equals
the value of this attribute. If the client does not specify the value of this attribute. If the client does not specify
this attribute, the Printer returns the specified attributes of this attribute, the Printer returns the specified attributes of
all Per-Printer Subscription Objects. Note: there is no way to all Per-Printer Subscription Objects. Note: there is no way to
get all Per-Job Subscriptions. get all Per-Job Subscriptions known to the Printer in a single
operation. A Get-Jobs operation followed by a Get-
Subscriptions operation for each Job will return all Per-Job
Subscriptions.
"limit" (integer(1:MAX)): "limit" (integer(1:MAX)):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. It is an integer value that MUST support this attribute. It is an integer value that
determines the maximum number of Subscription Objects that a determines the maximum number of Subscription Objects that a
client will receive from the Printer even if the "my- client will receive from the Printer even if the "my-
subscriptions" attribute constrains which Subscription Objects subscriptions" attribute constrains which Subscription Objects
are returned. The limit is a "stateless limit" in that if the are returned. The limit is a "stateless limit" in that if the
value supplied by the client is 'N', then only the first 'N' value supplied by the client is 'N', then only the first 'N'
Subscription Objects are returned in the Get-Subscriptions Subscription Objects are returned in the Get-Subscriptions
skipping to change at page 64, line 26 skipping to change at page 68, line 42
If the client does not supply this attribute, the Printer If the client does not supply this attribute, the Printer
responds with all applicable Subscription Objects. responds with all applicable Subscription Objects.
"requested-attributes" (1setOf type2 keyword): "requested-attributes" (1setOf type2 keyword):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. This attribute specifies the MUST support this attribute. This attribute specifies the
attributes of the specified Subscription Objects that the attributes of the specified Subscription Objects that the
Printer MUST return in the response. Each value of this Printer MUST return in the response. Each value of this
attribute is either an attribute name (defined in sections 5.3 attribute is either an attribute name (defined in sections 5.3
and 5.4) or an attribute group name (defined in section and 5.4) or an attribute group name (defined in section
11.2.3.1). If the client omits this attribute, the Printer MUST 11.2.4.1). If the client omits this attribute, the Printer MUST
respond as if the client had supplied this attribute with the respond as if the client had supplied this attribute with the
one value: 'notify-subscription-id'. one value: 'notify-subscription-id'.
"my-subscriptions" (boolean): "my-subscriptions" (boolean):
The client OPTIONALLY supplies this attribute. The Printer The client OPTIONALLY supplies this attribute. The Printer
MUST support this attribute. If the value is 'false', the MUST support this attribute. If the value is 'false', the
Printer MUST consider the Subscription Objects from all users Printer MUST consider the Subscription Objects from all users
as candidates. If the value is 'true', the Printer MUST return as candidates. If the value is 'true', the Printer MUST return
the Subscription Objects created by the requesting user of this the Subscription Objects created by the requesting user of this
request. If the client does not supply this attribute, the request. If the client does not supply this attribute, the
Printer MUST respond as if the client had supplied the Printer MUST respond as if the client had supplied the
attribute with a value of 'false'. The means for attribute with a value of 'false'. The means for
authenticating the requesting user and matching the authenticating the requesting user and matching the
Subscription Objects is similar to that for Jobs which is Subscription Objects is similar to that for Jobs which is
described in [RFC2911] section 8. described in [RFC2911] section 8.
11.2.4.2 Get-Subscriptions Response 11.2.5.2 Get-Subscriptions Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Get-Subscriptions Response: Get-Subscriptions Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
Natural Language and Character Set: Natural Language and Character Set:
skipping to change at page 65, line 34 skipping to change at page 70, line 6
attribute. attribute.
It there are no Subscription Objects associated with the It there are no Subscription Objects associated with the
specified Job or Printer, the Printer MUST return zero specified Job or Printer, the Printer MUST return zero
Subscription Attributes Groups and it MUST NOT treat this case Subscription Attributes Groups and it MUST NOT treat this case
as an error, i.e., the status-code MUST be 'successful-ok' as an error, i.e., the status-code MUST be 'successful-ok'
unless something else causes the status code to have some other unless something else causes the status code to have some other
value. 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 Get-Subscription-Attributes operation (section 11.2.4.2) for
the attributes that a Printer returns in this group. the attributes that a Printer returns in this group.
11.2.5 Renew-Subscription operation 11.2.6 Renew-Subscription operation
This operation allows a client to request the Printer to extend the This operation allows a client to request the Printer to extend the
lease on a Per-Printer Subscription Object. lease on a Per-Printer Subscription Object.
The Printer MUST support this operation. The Printer MUST support this operation.
The Printer MUST accept this request for a Per-Printer Subscription The Printer MUST accept this request for a Per-Printer Subscription
Object in any of the target Printer's states, i.e., 'idle', Object in any of the target Printer's states, i.e., 'idle',
'processing', or 'stopped', but MUST NOT change the Printer's 'processing', or 'stopped', but MUST NOT change the Printer's
"printer-state" attribute. "printer-state" attribute.
skipping to change at page 66, line 10 skipping to change at page 70, line 33
returned MUST be 'client-error-not-possible'. returned MUST be 'client-error-not-possible'.
Access Rights: The authenticated user (see [RFC2911] section 8.3) Access Rights: The authenticated user (see [RFC2911] section 8.3)
performing this operation MUST either be the owner of the Per-Printer performing this operation MUST either be the owner of the Per-Printer
Subscription Object or have Operator or Administrator access rights Subscription Object or have Operator or Administrator access rights
for the Printer (see [RFC2911] sections 1 and 8.5). Otherwise, the for the Printer (see [RFC2911] sections 1 and 8.5). Otherwise, the
Printer MUST reject the operation and return: the 'client-error- 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.2.5.1 Renew-Subscription Request 11.2.6.1 Renew-Subscription Request
The following groups of attributes are part of the Renew-Subscription The following groups of attributes are part of the Renew-Subscription
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
skipping to change at page 66, line 47 skipping to change at page 71, line 23
"notify-lease-duration" (integer(0:MAX)): "notify-lease-duration" (integer(0:MAX)):
The client MAY supply this attribute. It indicates the number The client MAY supply this attribute. It indicates the number
of seconds to renew the lease for the specified Subscription of seconds to renew the lease for the specified Subscription
Object. A value of 0 requests an infinite lease (which MAY Object. A value of 0 requests an infinite lease (which MAY
require Operator access rights). If the client omits this require Operator access rights). If the client omits this
attribute, the Printer MUST use the value of the Printer's attribute, the Printer MUST use the value of the Printer's
"notify-lease-duration-default" attribute. See section 5.3.7 "notify-lease-duration-default" attribute. See section 5.3.7
for more details. for more details.
11.2.5.2 Renew-Subscription Response 11.2.6.2 Renew-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Renew-Subscription Response: Renew-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
The following are some of the status codes returned: The following are some of the status codes returned (see
[RFC2911]:
successful-ok: The operation successfully renewed the lease on the successful-ok: The operation successfully renewed the lease
Subscription Object for the requested duration.. on the Subscription Object for the requested duration.
successful-ok-ignored-or-substituted-attributes: The operation successful-ok-ignored-or-substituted-attributes: The
successfully renewed the lease on the Subscription Object for operation successfully renewed the lease on the
some duration other than the amount requested. Subscription Object for 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
Job Subscription Object. Per-Job Subscription Object.
client-error-not-found: The operation failed because the "notify- client-error-not-found: The operation failed because the
subscription-id" Operation attribute identified a non-existent "notify-subscription-id" Operation attribute identified a
Subscription Object. non-existent 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 [RFC2911] section 3.1.4.2. The attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of "attributes-natural-language" MAY be the natural language of
the Subscription Object, rather than the one requested. the Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 for details on returning
skipping to change at page 67, line 43 skipping to change at page 72, line 27
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 value of this attribute MUST be the number of seconds that
the Printer has granted for the lease of the Subscription the Printer has granted for the lease of the Subscription
Object (see section 5.3.7 for details, such as the value of Object (see section 5.3.7 for details, such as the value of
this attribute when the Printer doesn't support the requested this attribute when the Printer doesn't support the requested
value). value).
11.2.6 Cancel-Subscription operation 11.2.7 Cancel-Subscription operation
This operation allows a client to delete a Subscription Object and This operation allows a client to delete a Subscription Object and
stop the Printer from sending more Event Notifications. Once stop the Printer from sending more Event Notifications. Once
performed, there is no way to reference the Subscription Object. performed, there is no way to reference the Subscription Object.
A Printer MUST supported this operation. A Printer MUST supported this operation.
The Printer MUST accept this request in any of the target Printer's The Printer MUST accept this request in any of the target Printer's
states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change states, i.e., 'idle', 'processing', or 'stopped', but MUST NOT change
the Printer's "printer-state" attribute. the Printer's "printer-state" attribute.
skipping to change at page 68, line 32 skipping to change at page 73, line 17
Note: There is no way to change any attributes on a Subscription Note: There is no way to change any attributes on a Subscription
Object, except the "notify-lease-duration" attribute (using the Object, except the "notify-lease-duration" attribute (using the
Renew-Subscription operation). In order to change other attributes, Renew-Subscription operation). In order to change other attributes,
a client performs a Subscription Creation Operation and Cancel- a client performs a Subscription Creation Operation and Cancel-
Subscription operation on the old Subscription Object. If the client Subscription operation on the old Subscription Object. If the client
wants to avoid missing Event Notifications, it performs the wants to avoid missing Event Notifications, it performs the
Subscription Creation Operation first. If this order would create too Subscription Creation Operation first. If this order would create too
many Subscription Objects on the Printer, the client reverses the many Subscription Objects on the Printer, the client reverses the
order. order.
11.2.6.1 Cancel-Subscription Request 11.2.7.1 Cancel-Subscription Request
The following groups of attributes are part of the Cancel- The following groups of attributes are part of the Cancel-
Subscription Request: Subscription Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in [RFC2911] section 3.1.4.1. attributes as described in [RFC2911] section 3.1.4.1.
skipping to change at page 69, line 9 skipping to change at page 73, line 43
The client MUST supply this attribute. The Printer MUST The client MUST supply this attribute. The Printer MUST
support this attribute. This attribute specifies the support this attribute. This attribute specifies the
Subscription Object that the Printer MUST cancel. If the client Subscription Object that the Printer MUST cancel. If the client
omits this attribute, the Printer MUST reject this request with omits this attribute, the Printer MUST reject this request with
the 'client-error-bad-request' status code. the 'client-error-bad-request' status code.
Requesting User Name: Requesting User Name:
The "requesting-user-name" attribute SHOULD be supplied by the The "requesting-user-name" attribute SHOULD be supplied by the
client as described in [RFC2911] section 8.3. client as described in [RFC2911] section 8.3.
11.2.6.2 Cancel-Subscription Response 11.2.7.2 Cancel-Subscription Response
The Printer returns the following sets of attributes as part of the The Printer returns the following sets of attributes as part of the
Cancel-Subscription Response: Cancel-Subscription Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
Same as [RFC2911]. Same as [RFC2911].
The following are some of the status codes returned: The following are some of the status codes returned (see
[RFC2911]:
successful-ok: The operation successfully canceled (deleted) the successful-ok: The operation successfully canceled
Subscription Object.. (deleted) the Subscription Object.
client-error-not-found: The operation failed because the "notify- client-error-not-found: The operation failed because the
subscription-id" Operation attribute identified a non-existent "notify-subscription-id" Operation attribute identified a
Subscription Object. non-existent 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 [RFC2911] section 3.1.4.2. The attributes as described in [RFC2911] section 3.1.4.2. The
"attributes-natural-language" MAY be the natural language of "attributes-natural-language" MAY be the natural language of
the Subscription Object, rather than the one requested. the Subscription Object, rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See [RFC2911] section 3.1.7 for details on returning See [RFC2911] section 3.1.7 for details on returning
Unsupported Attributes. Unsupported Attributes.
12 Conformance Requirements 12 Conformance Requirements
It is OPTIONAL to implement this Event Notification specification. It is OPTIONAL for IPP clients and Printers to implement this Event
Notification specification.
If this Event Notification specification is implemented, Printers If this Event Notification specification is implemented, Printers
MUST: MUST:
1.meet the Conformance Requirements detailed in section 5 of - meet the Conformance Requirements detailed in section 5 of
[RFC2911]. [RFC2911].
2.support the Subscription Template Attributes Group in requests - support the Subscription Template Attributes Group in requests
and the Subscription Attributes Group in responses. and the Subscription Attributes Group in responses.
3.support all of the following attributes: - support all of the following attributes:
a. REQUIRED Subscription Object attributes in section 5. a. REQUIRED Subscription Object attributes in section 5.
b. REQUIRED Printer Description object attributes in section 6. b. REQUIRED Printer Description object attributes in section 6.
c. REQUIRED attributes in Event Notification content in section c. REQUIRED attributes in Event Notification content in section
8. 8.
4.send Event Notifications that conform to the requirements of the - send Event Notifications that conform to the requirements of
Delivery Method Document for each supported Delivery Method (the section 9 and the requirements of the Delivery Method Document
conformance requirements for Delivery Method Documents is for each supported Delivery Method (the conformance
specified in section 10). requirements for Delivery Method Documents is specified in
section 10).
5.support all operations as described in Table 16: - for all of the Job Creation Operations that the Printer
supports, MUST support the REQUIRED extensions for notification
defined in section 11.1.3.
Table 16 - Conformance Requirements for Operations - meet the conformance requirements for operations as described
in Table 16 and meet the requirements for Printers as specified
in the indicated sub-sections of section 11:
Operation Conformance Table 16 - Printer Conformance Requirements for Operations
requirements
Operation Printer
Conformance
Requirements
Create-Printer-Subscriptions (section 11.1.2) REQUIRED Create-Printer-Subscriptions (section 11.1.2) REQUIRED
Create-Job-Subscriptions (section 11.1.1) OPTIONAL Create-Job-Subscriptions (section 11.1.1) OPTIONAL
Get-Subscription-Attributes (section 11.2.2) REQUIRED Get-Subscription-Attributes (section 11.2.3) REQUIRED
Get-Subscriptions (section 11.2.4) REQUIRED Get-Subscriptions (section 11.2.5) REQUIRED
Renew-Subscription (section 11.2.5) REQUIRED Renew-Subscription (section 11.2.6) REQUIRED
Cancel-Subscription (section 11.2.6) REQUIRED Cancel-Subscription (section 11.2.7) REQUIRED
13 IANA Considerations 13 IANA Considerations
This section contains the exact information for IANA to add to the This section contains the registration information for IANA to add to
IPP Registries according to the procedures defined in RFC 2911 the various IPP Registries according to the procedures defined in RFC
[RFC2911] section 6. 2911 [RFC2911] section 6 to cover the definitions in this document.
In addition, this section defines how Events and Delivery Methods
will be registered when they are defined in other documents.
Note to RFC Editors: Replace RFC NNNN below with the RFC number Note to RFC Editors: Replace RFC NNNN below with the RFC number
for this document, so that it accurately reflects the content of for this document, so that it accurately reflects the content of
the information for the IANA Registry. the information for the IANA Registry.
13.1 Attribute Registrations 13.1 Attribute Registrations
The attributes defined in this document will be published by IANA The following table lists all the attributes defined in this
according to the procedures in RFC 2911 [RFC2911] section 6.2 with document. These are to be registered according to the procedures in
the following path: RFC 2911 [RFC2911] section 6.2.
ftp.isi.edu/iana/assignments/ipp/attributes/
The registry entry will contain the following information:
Subscription Template attributes: Ref. Section: Subscription Template attributes: Ref. Section:
notify-recipient-uri (uri) RFC NNNN 5.3.1 notify-recipient-uri (uri) RFC NNNN 5.3.1
notify-schemes-supported (1setOf uriScheme) RFC NNNN 5.3.1
notify-events (1setOf type2 keyword) RFC NNNN 5.3.2 notify-events (1setOf type2 keyword) RFC NNNN 5.3.2
notify-events-default (1setOf type2 keyword) RFC NNNN 5.3.2
notify-events-supported (1setOf type2 keyword) RFC NNNN 5.3.2
notify-max-events-supported (integer(2:MAX)) RFC NNNN 5.3.2
notify-attributes (1setOf type2 keyword) RFC NNNN 5.3.3 notify-attributes (1setOf type2 keyword) RFC NNNN 5.3.3
notify-attributes-supported (1setOf type2 keyword)
RFC NNNN 5.3.3
notify-user-data (octetString(63)) RFC NNNN 5.3.4 notify-user-data (octetString(63)) RFC NNNN 5.3.4
notify-charset (charset) RFC NNNN 5.3.5 notify-charset (charset) RFC NNNN 5.3.5
notify-natural-language (naturalLanguage) RFC NNNN 5.3.6 notify-natural-language (naturalLanguage) RFC NNNN 5.3.6
notify-lease-duration (integer(0:67108863)) RFC NNNN 5.3.7 notify-lease-duration (integer(0:67108863)) RFC NNNN 5.3.7
notify-lease-duration-default (integer(0:67108863))
RFC NNNN 5.3.7
notify-lease-duration-supported (1setOf (integer(0: 67108863) |
rangeOfInteger(0:67108863))) RFC NNNN 5.3.7
notify-time-interval (integer(0:MAX)) RFC NNNN 5.3.8 notify-time-interval (integer(0:MAX)) RFC NNNN 5.3.8
Subscription Description Attributes: Subscription Description Attributes:
notify-subscription-id (integer (1:MAX))) RFC NNNN 5.4.1 notify-subscription-id (integer (1:MAX))) RFC NNNN 5.4.1
notify-sequence-number (integer (0:MAX))) RFC NNNN 5.4.2 notify-sequence-number (integer (0:MAX))) RFC NNNN 5.4.2
notify-lease-expiration-time (integer(0:MAX))) RFC NNNN 5.4.3 notify-lease-expiration-time (integer(0:MAX))) RFC NNNN 5.4.3
notify-printer-up-time (integer(1:MAX))) RFC NNNN 5.4.4 notify-printer-up-time (integer(1:MAX))) RFC NNNN 5.4.4
notify-printer-uri (uri)) RFC NNNN 5.4.5 notify-printer-uri (uri)) RFC NNNN 5.4.5
notify-job-id (integer(1:MAX))) RFC NNNN 5.4.6 notify-job-id (integer(1:MAX))) RFC NNNN 5.4.6
notify-subscriber-user-name (name(MAX))) RFC NNNN 5.4.7 notify-subscriber-user-name (name(MAX))) RFC NNNN 5.4.7
Printer Description Attributes: Printer Description Attributes:
printer-state-change-time (integer(1:MAX))) RFC NNNN 6.1 printer-state-change-time (integer(1:MAX))) RFC NNNN 6.1
printer-state-change-date-time (dateTime)) RFC NNNN 6.2 printer-state-change-date-time (dateTime)) RFC NNNN 6.2
Attributes Only in Event Notifications Attributes Only in Event Notifications
notify-subscribed-event (type2 keyword) RFC NNNN 8.1 notify-subscribed-event (type2 keyword) RFC NNNN 8.1
notify-text (text(MAX)) RFC NNNN 8.2 notify-text (text(MAX)) RFC NNNN 8.2
13.2 Keyword Attribute Value Registrations The resulting attribute registrations will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attributes/
area.
The keyword attribute values defined in this document will be 13.2 Additional Enum Attribute Value Registrations for the "operations-
published by IANA according to the procedures in RFC 2911 [RFC2911] supported" Printer Attribute
section 6.1 with the following path:
ftp.isi.edu/iana/assignments/ipp/attribute-values/ The following table lists all the new enum attribute values defined
in this document as additional type2 enum values for use with the
"operations-supported" Printer Description attribute. These are to
be registered according to the procedures in RFC 2911 [RFC2911]
section 6.1.
The registry entry will contain the following information: type2 enum Attribute Values: Value Ref. Section:
Create-Printer-Subscriptions 0x0016 RFC NNNN 7.1
Create-Job-Subscriptions 0x0017 RFC NNNN 7.1
Get-Subscription-Attributes 0x0018 RFC NNNN 7.1
Get-Subscriptions 0x0019 RFC NNNN 7.1
Renew-Subscription 0x001A RFC NNNN 7.1
Cancel-Subscription 0x001B RFC NNNN 7.1
Keyword Attribute Values: Ref. Section: The resulting enum attribute value registrations will be published in
New Values for Existing Printer Description Attributes the
operations-supported (1setOf type2 enum) RFC NNNN 7.1 ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
values/operations-supported/
area.
13.3 Operation Registrations 13.3 Operation Registrations
The operations defined in this document will be published by IANA The following table lists all of the operations defined in this
according to the procedures in RFC 2911 [RFC2911] section 6.4 with document. These are to be registered according to the procedures in
the following path: RFC 2911 [RFC2911] section 6.4.
ftp.isi.edu/iana/assignments/ipp/operations/
The registry entry will contain the following information:
Operations: Ref. Section: Operations: Ref. Section:
Create-Job-Subscriptions Operation RFC NNNN 11.1.1 Create-Job-Subscriptions Operation RFC NNNN 11.1.1
Create-Printer-Subscriptions operation RFC NNNN 11.1.2 Create-Printer-Subscriptions Operation RFC NNNN 11.1.2
Job Creation Operations - Extensions RFC NNNN 11.1.3 Job Creation Operations - Extensions RFC NNNN 11.1.3
Validate-Job Operation - Extensions RFC NNNN 11.2.1 Validate-Job Operation - Extensions RFC NNNN 0
Get-Printer-Attributes - Extensions RFC NNNN 11.2.2 Get-Printer-Attributes - Extensions RFC NNNN 11.2.3
Get-Subscription-Attributes operation RFC NNNN 11.2.3 Get-Subscription-Attributes Operation RFC NNNN 11.2.4
Get-Subscriptions operation RFC NNNN 11.2.4 Get-Subscriptions Operation RFC NNNN 11.2.5
Renew-Subscription operation RFC NNNN 11.2.5 Renew-Subscription Operation RFC NNNN 11.2.6
Cancel-Subscription operation RFC NNNN 11.2.6 Cancel-Subscription Operation RFC NNNN 11.2.7
13.4 Status code Registrations
The status codes defined in this document will be published by IANA The resulting operation registrations will be published in the
according to the procedures in RFC 2911 [RFC2911] section 6.6 with ftp://ftp.iana.org/in-notes/iana/assignments/ipp/operations/
the following path: area.
ftp.isi.edu/iana/assignments/ipp/status-codes/ 13.4 Status code Registrations
The registry entry will contain the following information: The following table lists all the status codes defined in this
document. These are to be registered according to the procedures in
RFC 2911 [RFC2911] section 6.6.
Status codes: Ref. Section: Status codes: Ref. Section:
successful-ok-ignored-subscriptions (0x0003) RFC NNNN 16.1 successful-ok-ignored-subscriptions (0x0003) RFC NNNN 16.1
client-error-ignored-all-subscriptions (0x0414) RFC NNNN 16.2 client-error-ignored-all-subscriptions (0x0414) RFC NNNN 16.2
Status Codes in Subscription Attributes Groups: Status Codes in Subscription Attributes Groups:
client-error-uri-scheme-not-supported (0x040C) RFC NNNN 17.1 client-error-uri-scheme-not-supported (0x040C) RFC NNNN 17.1
client-error-too-many-subscriptions (0x0415) RFC NNNN 17.2 client-error-too-many-subscriptions (0x0415) RFC NNNN 17.2
successful-ok-too-many-events (0x0005) RFC NNNN 17.3 successful-ok-too-many-events (0x0005) RFC NNNN 17.3
successful-ok-ignored-or-substituted-attributes (0x0001) successful-ok-ignored-or-substituted-attributes (0x0001)
RFC NNNN 17.4 RFC NNNN 17.4
The resulting status code registrations will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/status-codes/
area.
13.5 Attribute Group tag Registrations 13.5 Attribute Group tag Registrations
The attribute group tags defined in this document will be published The following table lists all the attribute group tags defined in
by IANA according to the procedures in RFC 2911 [RFC2911] section 6.5 this document. These are to be registered according to the
with the following path: procedures in RFC 2911 [RFC2911] section 6.5.
ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/ Attribute Group Tags: Tag Value: Ref. Section:
subscription-attributes-tag 0x06 RFC NNNN 18
event-notification-attributes-tag 0x07 RFC NNNN 18
The registry entry will contain the following information: The resulting attribute group tag registrations will be published in
the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-group-
tags/
area.
Attribute Group Tags: Ref. Section: 13.6 Registration of Events
subscription-attributes-tag RFC NNNN 18
event-notification-attributes-tag RFC NNNN 18
13.6 Format for Event Notification Delivery Method Registration When other document define additional type2 keywords to be used with
proposals the "notify-events" Subscription Template attribute (see section
5.3.2)), these event keywords will be registered according to the
procedures of [RFC2911] section 7.1 as additional attribute values
for use with the "notify-events" Subscription Template attribute,
i.e., the "notify-events", "notify-events-default", and "notify-
events-supported" attributes.
This section describes the procedures for registering Event Therefore, the IPP Registry entry for an Event will be of the form:
Notification Delivery Method proposals with IANA to be used with this
document. Such Delivery Method proposals that require a new URL
scheme MUST be IETF standards track documents according to RFC 2717
[RFC2717].
13.7 Format and Requirements for IPP Delivery Method Registration type2 enum Attribute Values: Ref. Section:
Proposals <scheme name> RFC xxxx m.n
This section defines the format and requirements for an IPP Event The resulting type2 keyword attribute values will be published in the
Notification Delivery Method Registration Proposal. A Delivery ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
Method Registration Proposal: values/notify-events/
area.
1.MUST contain the following information: 13.7 Registration of Event Notification Delivery Methods
This section describes the requirements and procedures for
registration and publication of Event Notification Delivery Methods
and for the submission of such proposals.
13.7.1 Requirements for Registration of Event Notification Delivery
Methods
Registered IPP Event Notification Delivery Methods are expected to
follow a number of requirements described below.
13.7.1.1 Required Characteristics
A Delivery Method Document MUST either (1) contain all of the
semantics of the Delivery Method or (2) contain the IPP Delivery
Method registration requirements and a profile of some other protocol
that in combination is the Delivery Method (e.g., mailto). In either
case, the Delivery Method Document (and any documents it requires)
MUST define a URL and be a standards track, informational, or
experimental RFC that the meets the requirements of [RFC2717].
IPP Event Notification Delivery Method Documents MUST meet the
requirements of this document (see sections 9 and 10).
In addition, a Delivery Method Document MUST contain the following
information:
Type of registration: IPP Event Notification Delivery Method Type of registration: IPP Event Notification Delivery Method
Name of this delivery method: Name of this delivery method:
Proposed URL scheme name of this delivery method: Proposed URL scheme name of this delivery method:
Name of proposer: Name of proposer:
Address of proposer: Address of proposer:
Email address of proposer: Email address of proposer:
Is this delivery method REQUIRED or OPTIONAL for conformance to
the IPP Event Notification Specification document: Is this delivery method REQUIRED or OPTIONAL for conformance to the
IPP Event Notification and Subscriptions document:
Is this delivery method defining Machine Consumable and/or Human Is this delivery method defining Machine Consumable and/or Human
Consumable content: Consumable content:
2.MUST meet the conformance requirements for Delivery Method 13.7.1.2 Naming Requirements
Documents specified in section 10.
Exactly one name MUST be assigned to each Delivery Method.
Each assigned name MUST uniquely identify a single Delivery Method.
All Delivery Method names MUST conform to the rules for URL scheme
names, according to [RFC2396] and [RFC2717] for schemes in the IETF
tree.
13.7.1.3 Functionality Requirements
Delivery Methods MUST function as a protocol that is capable of
delivering (push or pull) IPP Event Notifications to Notification
Recipients.
13.7.1.4 Usage and Implementation Requirements
Use of a large number of Delivery Methods may hamper
interoperability. However, the use of a large number of undocumented
and/or unlabelled Delivery Methods hampers interoperability even
more.
A Delivery Method should therefore be registered ONLY if it adds
significant functionality that is valuable to a large community, OR
if it documents existing practice in a large community. Note that
Delivery Methods registered for the second reason should be
explicitly marked as being of limited or specialized use and should
only be used with prior bilateral agreement.
13.7.1.5 Publication Requirements
Delivery Method Documents MUST be published in a standards track,
informational, or experimental RFCs.
13.7.2 Registration Procedure
The IPP WG is developing a small number of Delivery Methods which are
intended to be published as standards track RFCs. However, some
parties may wish to register additional Delivery Methods in the
future. This section describes the procedures for these additional
Delivery Methods.
13.7.2.1 Present the proposal to the Community
First the Delivery Method Document MUST be an Internet-Draft with a
target category of standards track, informational, or experimental.
The same MUST be true for any documents that it references.
Send the proposed Delivery Method Document proposal to the
"ipp@pwg.org" mailing list. This mailing list has been established
by [RFC2911] for reviewing proposed registrations and discussing
other IPP matters. Proposed Delivery Method Documents are not
formally registered and MUST NOT be used until approved.
The intent of the public posting is to solicit comments and feedback
on the definition and suitability of the Delivery Method and the name
chosen for it over a four week period.
13.7.2.2 Delivery Method Reviewer
The Delivery Method Reviewer is the same person who has been
appointed by the IETF Application Area Director(s) as the IPP
Designated Expert according to [RFC2911] and [IANA-CON]. When the
four week period is over and the IPP Designated Expert is convinced
that consensus has been achieved, the IPP Designated Expert either
approves the request for registration or rejects it. Rejection may
occur because of significant objections raised on the list or
objections raised externally.
Decisions made by the Reviewer must be posted to the ipp@pwg.org
mailing list within 14 days. Decisions made by the Reviewer may be
appealed to the IESG.
13.7.2.3 IANA Registration
Provided that the Delivery Method registration proposal has either
passed review or has been successfully appealed to the IESG, the IANA
will register the Delivery Method and make it available to the
community.
13.7.3 Delivery Method Document Registrations
Each Delivery Method Document defines a URI scheme which is
registered as an additional value of the "notify-schemes-supported"
Printer attribute. These uriScheme values will be registered
according to the procedures of [RFC2911] section 7.1 for additional
attribute values. Therefore, the IPP Registry entry for a Delivery
Method will be of the form:
uriScheme Attribute Values: Ref. Section:
<scheme name> RFC xxxx m.n
The resulting Delivery Method URI schemes will be published in the
ftp://ftp.iana.org/in-notes/iana/assignments/ipp/attribute-
values/notify-schemes-supported/
area.
13.7.4 Registration Template
To: ipp@pwg.org
Subject: Registration of a new Delivery Method
Delivery Method name:
(All names must be suitable for use as the value of a URL scheme in
the IETF tree)
Published specification(s):
(A specification for the Delivery Method must be openly available
that accurately describes what is being registered.)
Person & email address to contact for further information:
14 Internationalization Considerations 14 Internationalization Considerations
This IPP Notification specification continues support for the This IPP Notification specification continues support for the
internationalization of [RFC2911] of attributes containing text internationalization of [RFC2911] of attributes containing text
strings and names. Allowing a Subscribing Client to specify a strings and names. Allowing a Subscribing Client to specify a
different natural language and charset for each Subscription Object different natural language and charset for each Subscription Object
increases the internationalization support. increases the internationalization support.
The Printer MUST be able to localize the content of Human Consumable The Printer MUST be able to localize the content of Human Consumable
skipping to change at page 74, line 20 skipping to change at page 83, line 22
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 However, requirement #9 in [ipp-req] ("There is no requirement for
IPP Printer receiving the print request to validate the identity of IPP Printer receiving the print request to validate the identity of
an Event recipient") argues against this. Certain systems may decide an Event recipient") argues against this. Certain systems may decide
to disallow third party Event Notifications (a traditional fax to disallow third party Event Notifications (a traditional fax
model). model).
Clients submitting Notification requests to the IPP Printer has the Clients submitting Notification requests to the IPP Printer have 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 same mechanisms used by IPP/1.1 can therefore be used by the client
Notification submission. Operations that require authentication can Notification submission. Operations that require authentication can
use the HTTP authentication. Operations that require privacy can use use the HTTP authentication. Operations that require privacy can use
the HTTP/TLS privacy. the HTTP/TLS privacy. As with IPP/1.1 Print Jobs, if there is no
security on Subscription Objects, sequential assignment of
subscription-ids exposes the system to a passive traffic monitoring
threat.
The Notification access control model should be similar to the IPP The Notification access control model should be similar to the IPP
access control model for Jobs. Creating a Per-Printer Subscription access control model for Jobs. Creating a Per-Printer Subscription
Object is associated with a user. Only the creator or an Operator Object is associated with a user. Only the creator or an Operator
can cancel the Subscription Object. The system may limit the listing can cancel the Subscription Object. The system may limit the listing
of items to only those items owned by the user. Some Subscription of items to only those items owned by the user. Some Subscription
Objects (e.g., those that have a lifetime longer than a job) can be Objects (e.g., those that have a lifetime longer than a job) can be
done only by privileged users (users having Operator and/or done only by privileged users (users having Operator and/or
Administrator access rights), if that is the authorization policy. Administrator access rights), if that is the authorization policy.
skipping to change at page 75, line 53 skipping to change at page 85, line 16
of the status-codes. of 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 [RFC2911]. This document extends its This status code is defined in [RFC2911]. This document extends its
meaning and allows it to be in a Subscription Attributes Group of a meaning and allows it to be in a Subscription Attributes Group of a
response. response.
The scheme of the client-supplied URI in a "notify-recipient-uri" The scheme of the client-supplied URI in a "notify-recipient-uri"
Subscription Template Attribute in a Subscription Creation Operation Subscription Template Attribute in a Subscription Creation Operation
is not supported. See section 0. is 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
skipping to change at page 76, line 47 skipping to change at page 86, line 17
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, BCP 26, RFC 2434, October 1998.
considerations-04.txt, May 21, 1998.
[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-05.txt>, work in progress, January 23, 2001. not-06.txt>, work in progress, July 17, 2001.
[ipp-prog] [ipp-prog]
Hastings, T., Bergman, R., Lewis, H., "IPP: Job Progress Hastings, T., Bergman, R., Lewis, H., "IPP: Job Progress
Attributes", <draft-ietf-ipp-job-prog-03.txt> work in Attributes", <draft-ietf-ipp-job-prog-03.txt> work in
progress, January 23, 2001. progress, July 17, 2001.
[ipp-set] [ipp-set]
Kugler, C., Hastings, T., Herriot, R., Lewis, H, "Internet Printing Kugler, C., Hastings, T., Herriot, R., Lewis, H, "Internet Printing
Protocol (IPP): Job and Printer Set Operations", <draft-ietf-ipp- Protocol (IPP): Job and Printer Set Operations", <draft-ietf-ipp-
job-printer-set-ops-03.txt>, work in progress, January 22, 2001. job-printer-set-ops-04.txt>, work in progress, July 17, 2001.
[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
[RFC2396]
Berners-Lee, T., Fielding, R., Masinter, L., "Uniform Resource
Identifiers (URI): Generic Syntax", RFC 2396, August 1998.
[RFC2565]
Herriot, R., Butler, S., Moore, P., and R. Turner, "Internet
Printing Protocol/1.0: Encoding and Transport", RFC 2565, April
1999.
[RFC2566] [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]
skipping to change at page 79, line 14 skipping to change at page 89, line 4
e-mail: jkm@underscore.com e-mail: jkm@underscore.com
Michael Shepherd Michael Shepherd
Xerox Corporation Xerox Corporation
800 Phillips Road MS 128-51E 800 Phillips Road MS 128-51E
Webster, NY 14450 Webster, NY 14450
Phone: 716-422-2338 Phone: 716-422-2338
Fax: 716-265-8871 Fax: 716-265-8871
e-mail: mshepherd@crt.xerox.com e-mail: mshepherd@crt.xerox.com
Ron Bergman Ron Bergman
Hitachi Koki Imaging Solutions Hitachi Koki Imaging Solutions
1757 Tapo Canyon Road 1757 Tapo Canyon Road
Simi Valley, CA 93063-3394 Simi Valley, CA 93063-3394
Phone: 805-578-4421 Phone: 805-578-4421
Fax: 805-578-4001 Fax: 805-578-4001
Email: rbergma@hitachi-hkis.com Email: rbergma@hitachi-hkis.com
IPP Web Page: http://www.pwg.org/ipp/
IPP Mailing List: ipp@pwg.org
To subscribe to the ipp mailing list, send the following email:
1) send it to majordomo@pwg.org
2) leave the subject line blank
3) put the following two lines in the message body:
subscribe ipp
end
Implementers of this specification document are encouraged to join
the IPP Mailing List in order to participate in any discussions of
clarification issues and review of registration proposals for
additional attributes and values. In order to reduce spam the
mailing list rejects mail from non-subscribers, so you must subscribe
to the mailing list in order to send a question or comment to the
mailing list.
A. Appendix - Model for Notification with Cascading Printers A. Appendix - Model for Notification with Cascading Printers
With this model (see Figure 2), there is an intervening Print server With this model (see Figure 2), there is an intervening Print server
between the human user and the output-device. So the system between the human user and the output-device. So the system
effectively has two Printers. There are two cases to consider. effectively has two Printers. There are two cases to consider.
1.When the Printer 1 (in the server) generates Events, the system 1.When the Printer 1 (in the server) generates Events, the system
behaves like the client and Printer in Figure 1. In this case, behaves like the client and Printer in Figure 1. In this case,
Printer 1 sends Event Notifications that are shown as Event Printer 1 sends Event Notifications that are shown as Event
Notifications (A) of Figure 2,. Notifications (A) of Figure 2,.
skipping to change at page 80, line 12 skipping to change at page 90, line 22
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 Note: when Printer 1 is forwarding Subscription Creation Operations
to Printer 2, it may request Printer 2 to create additional to Printer 2, it may request Printer 2 to create additional
Subscription Objects (called "piggy-backing"). Piggy-backing is Subscription Objects (called "piggy-backing"). Piggy-backing is
useful when: useful when:
. Device A is configured to accept (IPP or non-IPP) requests from - Device A is configured to accept (IPP or non-IPP) requests from
other servers. other servers.
. Server S wants to receive Job Events that the client didn't - Server S wants to receive Job Events that the client didn't
request and Server S wants these Events for jobs it submits and request and Server S wants these Events for jobs it submits and
not for other jobs. not for other jobs.
server S device A server S device A
+------------+ +------------+ +------------+ +------------+
| | | | | | | |
+--------+ Subscription | ###########| | ###########| +--------+ Subscription | ###########| | ###########|
| client |--Creation ----># Printer #| Subscription | # Printer #| | client |--Creation ----># Printer #| Subscription | # Printer #|
+--------+ Operation | # Object 1#|---Creation------|># Object 2#| +--------+ Operation | # Object 1#|---Creation------|># Object 2#|
| ###|#######| Operation | ####|#|####| | ###|#######| Operation | ####|#|####|
skipping to change at page 82, line 37 skipping to change at page 93, line 7
|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 Figure 4 - Use of an Extended Notification Recipient transparent to
the Printer the Printer
D. Appendix - Details about Conformance Terminology D. Appendix - Details about Conformance Terminology
The following paragraph provide more details about conformance The following paragraphs provide more details about conformance
terminology. terminology.
REQUIRED - an adjective used to indicate that a conforming IPP REQUIRED - an adjective used to indicate that a conforming IPP
Printer implementation MUST support the indicated operation, Printer implementation MUST support the indicated operation,
object, attribute, attribute value, status code, or out-of-band object, attribute, attribute value, status code, or out-of-band
value in requests and responses. See [RFC2911] "Appendix A - value in requests and responses. See [RFC2911] "Appendix A -
Terminology for a definition of "support". Since support of this Terminology for a definition of "support". Since support of this
entire Notification specification is OPTIONAL for conformance to entire Notification specification is OPTIONAL for conformance to
IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document IPP/1.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
skipping to change at page 86, line 15 skipping to change at page 96, line 21
Object is valid until the time (in seconds) that the Printer Object is valid until the time (in seconds) that the Printer
returned in the "notify-lease-expiration-time" operation returned in the "notify-lease-expiration-time" operation
attribute. attribute.
3.Job Events in a Per-Job Subscription Object apply only to "one 3.Job Events in a Per-Job Subscription Object apply only to "one
job" (the Job created by the Job Creation operation or job" (the Job created by the Job Creation operation or
references by the Create-Job-Subscriptions operation) while Job references by the Create-Job-Subscriptions operation) while Job
Events in a Per-Printer Subscription Object apply to ALL jobs Events in a Per-Printer Subscription Object apply to ALL jobs
contained in the IPP Printer. contained in the IPP Printer.
G. Appendix: Full Copyright Statement G. Appendix - Description of the base IPP documents
The base set of IPP documents includes:
Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics [RFC2911]
Internet Printing Protocol/1.1: Encoding and Transport [RFC2910]
Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
Mapping between LPD and IPP Protocols [RFC2569]
The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, operators, and
administrators. It calls out a subset of end user requirements that
are satisfied in IPP/1.0 [RFC2566, RFC2565]. A few OPTIONAL operator
operations have been added to IPP/1.1 [RFC2911, RFC2910].
The "Rationale for the Structure and Model and Protocol for the
Internet Printing Protocol" document describes IPP from a high level
view, defines a roadmap for the various documents that form the suite
of IPP specification documents, and gives background and rationale
for the IETF IPP working group's major decisions.
The "Internet Printing Protocol/1.1: Model and Semantics" document
describes a simplified model with abstract objects, their attributes,
and their operations. The model introduces a Printer and a Job. The
Job supports multiple documents per Job. The model document also
addresses how security, internationalization, and directory issues
are addressed.
The "Internet Printing Protocol/1.1: Encoding and Transport" document
is a formal mapping of the abstract operations and attributes defined
in the model document onto HTTP/1.1 [RFC2616]. It also defines the
encoding rules for a new Internet MIME media type called
"application/ipp". This document also defines the rules for
transporting over HTTP a message body whose Content-Type is
"application/ipp". This document defines the 'ipp' scheme for
identifying IPP printers and jobs.
The "Internet Printing Protocol/1.1: Implementer's Guide" document
gives insight and advice to implementers of IPP clients and IPP
objects. It is intended to help them understand IPP/1.1 and some of
the considerations that may assist them in the design of their client
and/or IPP object implementations. For example, a typical order of
processing requests is given, including error checking. Motivation
for some of the specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some
advice to implementers of gateways between IPP and LPD (Line Printer
Daemon) implementations.
H. Appendix - Full Copyright Statement
Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights Copyright (C) The Internet Society (1998,1999,2000,2001). All Rights
Reserved Reserved
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this included on all such copies and derivative works. However, this
skipping to change at line 3931 skipping to change at page 98, line 11
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 This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
 End of changes. 

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