INTERNET-DRAFT
<draft-ietf-ipp-not-spec-01.txt>
<draft-ietf-ipp-not-spec-02.txt>                             S. Isaacson
                                                            Novell, Inc.
                                                               J. Martin
                                                              Underscore
                                                                R. deBry
                                               Utah Valley State College
                                                             T. Hastings
                                                       Xerox Corporation
                                                             M. Shepherd
                                                       Xerox Corporation
                                                              R. Bergman
                                                      Dataproducts Corp.
                                                        October 14, 1999
                                          Hitachi Koki Imaging Solutions
                                                           March 8, 2000
                   Internet Printing Protocol/1.1: Protocol (IPP):
                  IPP Event Notification Specification

    Copyright (C) The Internet Society (1999). (2000). All Rights Reserved.

Status of this Memo

This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of [RFC2026].  Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups.  Note that other groups may also distribute working
documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time.  It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as "work in progress".

The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt

The list of Internet-Draft Shadow Directories can be accessed as
http://www.ietf.org/shadow.html.

Abstract

This document describes an extension to the IPP/1.0 & IPP/1.1 model IPP/1.0, IPP/1.1, and future
versions that allows a client to subscribe to printing related events.
Subscriptions include "Per-Job subscriptions" and "Per-Printer
subscriptions".  One or more Per-Job Submission subscriptions are
specified by the client when submitting a job.  Additional Per-Job and
Per-Printer subscriptions are created by performing separate explicit
Create-Job-Subscription Create-
Printer-Subscription Create-Printer-Subscription operations,
respectively.  Subscriptions are modeled as Subscription objects.  Four
other operations are defined for
subscription Subscription objects:  get attributes, get subscriptions, renew a
subscription,  Get-Attributes,
Get-Subscriptions, Renew-Subscription, and cancel a subscription. Cancel-Subscription.

A subscription request and the Subscription object includes:  the names
of Job and/or Printer events, the Notification Recipient URL, the text
format

                 Expires September 8, 2000

Notification Content format, if Human Consumable notification is requested, several are supported, possibly some
opaque data, and the charset and natural language.  In addition, the

                   Expires April 14, 2000
subscription request includes:  the requested lease time and persistency
for the subscription.  When the event occurs, a notification is
generated and delivered using the information specified in the
subscription.

   1  ISSUE is included in the text.

                 Expires September 8, 2000

The full set of IPP documents includes:

  Design Goals for an Internet Printing Protocol [IPP-REQ] [RFC2567]
  Rationale for the Structure and Model and Protocol for the Internet
     Printing Protocol [IPP-RAT] [RFC2568]
  Internet Printing Protocol/1.1: Model and Semantics  [IPP-MOD]
  Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO]
  Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
  Mapping between LPD and IPP Protocols [IPP LPD] [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 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.1 IPP/1.0 and some of the
considerations that may assist them in the design of their client and/or

                   Expires April 14, 2000
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.

                 Expires April 14, September 8, 2000
                           Table of Contents

1 Introduction.......................................................7

  1.1Notification Overview..........................................7
  1.1  Notification Overview.........................................8

2 Model for Per-Job and Per-Printer Subscription and Event Notification
  10

  2.1Model
  11
  2.1  Model for Per-Job Subscription and Notification...............10
  2.2Model Notification..............11
  2.2  Model for Per-Printer Subscription and Notification...........11
  2.3Relationship Notification..........13
  2.3  Relationship between the Printer object and the Notification
  Delivery Service..................................................12 Service..................................................13
     2.3.1 Use of a Notification Service transparently to clients...12 clients...13
     2.3.2 Use of Notification Service transparently to the IPP Printer
           13
          14

3 Terminology.......................................................14

  3.1Conformance Terminology.......................................14
  3.2Other terminology.............................................14 Terminology.......................................................15
  3.1  Conformance Terminology......................................15
  3.2  Other terminology............................................16

4 Object Model for Notification.....................................17

  4.1Object relationships..........................................18 Notification.....................................19
  4.1  Object relationships.........................................20
     4.1.1 Printer object and Per-Printer Subscription objects......20
     4.1.2 Job object and Per-Job Subscription objects..............21

5 Subscription Object attributes....................................19

  5.1notify-recipient (uri)........................................21
  5.2notify-events attributes....................................21
  5.1  notify-recipient (uri).......................................23
  5.2  notify-events (1setOf type2 keyword)..........................22
  5.3notify-text-format (mimeMediaType)............................25
  5.4subscriber-user-data (octetString(63))........................25
  5.5notify-charset (charset)......................................26
  5.6notify-natural-language (naturalLanguage).....................26
  5.7request-id....................................................26
  5.8subscription-id keyword).........................25
  5.3  notify-format (mimeMediaType)................................28
  5.4  subscriber-user-data (octetString(63)).......................29
  5.5  notify-charset (charset).....................................30
  5.6  notify-natural-language (naturalLanguage)....................30
  5.7  subscription-request-id......................................30
  5.8  subscription-id (integer (1:MAX)).............................26
  5.9notify-lease-expiration-time (integer(0:MAX)).................27 (1:MAX))............................30
  5.9  notify-lease-expiration-time (integer(0:MAX))................31
  5.10 printer-uri (uri)............................................27 (uri)............................................31
  5.11 subscriber-user-name (name(MAX)).............................27 (name(MAX)).............................31
  5.12 notify-printer-up-time (integer(1:MAX))......................28 notify-server-up-time (integer(1:MAX)).......................32
  5.13 notify-persistence-granted (boolean).........................28 (boolean).........................32

6 Printer Description Attributes related to Notification............28

  6.1notify-schemes-supported Notification............32
  6.1  notify-schemes-supported (1setOf uriScheme)...................29
  6.2notify-events-default uriScheme)..................33
  6.2  notify-events-default (1setOf type2 keyword)..................29
  6.3notify-events-supported keyword).................33
  6.3  notify-events-supported (1setOf type2 keyword)................30
  6.4max-events-supported (integer(5:MAX)).........................30
  6.5notify-text-format-supported keyword)...............33
  6.4  max-events-supported (integer(5:MAX))........................34
  6.5  notify-format-supported (1setOf mimeMediaType)...........30
  6.6max-job-subscriptions-supported (integer(1:MAX))..............31
  6.7max-printer-subscriptions-supported (integer(0:MAX))..........31
  6.8notify-lease-time-supported (rangeOfInteger(0:MAX))...........31
  6.9notify-lease-time-default (integer(0:MAX))....................31 mimeMediaType)...............34
  6.6  max-job-subscriptions-supported (integer(0:MAX)).............34
  6.7  max-printer-subscriptions-supported (integer(0:MAX)).........35
  6.8  notify-lease-time-supported (rangeOfInteger(0:MAX))..........35
  6.9  notify-lease-time-default (integer(0:MAX))...................35
  6.10 persistent-jobs-supported (boolean)..........................32 (boolean)..........................35
  6.11 persistent-subscriptions-supported (boolean).................32 (boolean).................36
  6.12 printer-state-change-time (integer(1:MAX))...................32 (integer(1:MAX))...................36

                 Expires September 8, 2000
  6.13 printer-state-change-date-time (dateTime)....................32 (dateTime)....................36

7 Notification Content..............................................32

                   Expires April 14, 2000
  7.1Notification Content..............................................36
  7.1  Notification content MIME media type formats..................33
  7.2Machine formats.................37
     7.1.1 Human Consumable form.......................................33
  7.3Human form....................................37
     7.1.2 Machine Consumable form.........................................33
  7.4Notification form..................................37
  7.2  Notification content attributes common to Job and Printer events
      34
  7.5Additional
     38
     7.2.1 "trigger-event" (type2 keyword)..........................41
     7.2.2 "trigger-time" (integer(MIN:MAX))........................41
     7.2.3 "trigger-date-time" (dateTime)...........................41
     7.2.4 "human-readable-report" (text(MAX))......................41
  7.3  Additional Notification content attributes for Job events only 36
  7.6Additional only41
  7.4  Additional Notification content attributes for Printer events
  only 37 42

8 Operations for notification.......................................37

  8.1Operations notification.......................................43
  8.1  Operations for Per-Job Subscriptions only.....................37 only....................43
     8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI)
     and Validate-Job................................................37 Validate-Job................................................43
     8.1.2 Create-Job-Subscription operation........................40
  8.2Operations operation........................47
  8.2  Operations for Per-Printer Subscriptions only.................42 only................49
     8.2.1 Create-Printer-Subscription operation....................42
  8.3Common operation....................49
  8.3  Common Operations for Per-Job and Per-Printer Subscriptions...45 Subscriptions..53
     8.3.1 Get-Subscription-Attributes operation....................45 operation....................53
     8.3.2 Get-Subscriptions operation..............................46 operation..............................54
     8.3.3 Renew-Subscription operation.............................47 operation.............................56
     8.3.4 Cancel- Subscription operation...........................48 Cancel-Subscription operation............................57

9 Comparison of Per-Job versus Per-Printer Subscriptions............49

10   Conformance Requirements........................................49

11   IANA Considerations.............................................50

12   Internationalization Considerations.............................50

13   Security Considerations.........................................50

14   Status Codes....................................................51

  14.1 Subscriptions............58

10Out of Band Values................................................59
  10.1 'none'.......................................................59

11Conformance Requirements..........................................59

12IANA Considerations...............................................60

13Internationalization Considerations...............................60

14Security Considerations...........................................60

15Status Codes......................................................61
  15.1 'successful-ok-ignored-subscriptions' (0x0003)...............51
  14.2 (0x0003)...............61
  15.2 client-error-uri-notification-scheme-not-supported (0x04??)..52
  14.3 server-error-too-many-subscriptions (0x04??).................52
  14.4 server-error-too-many-events (0x04??)........................52

15   Additions (0x0414)..62
  15.3 client-error-too-many-subscriptions (0x0415).................62
  15.4 client-error-too-many-events (0x0416)........................62

16Addition attribute tag encodings..................................62

17References........................................................63

18Author's Addresses................................................65

                 Expires September 8, 2000

A.Appendix:  Change History.........................................66
  18.1 Changes to the IPP Encoding and Transport Document............52

16   References......................................................53

17   Author's Addresses..............................................55

18   Appendix C: Full Copyright Statement............................56

                   Expires April March 6, 2000 version to create the March 8, 2000
  version66
  18.2 Changes to the February 2, 2000 version to create the March 6,
  2000 version......................................................66
  18.3 Changes to the October 14, 1999 version to create the February
  2, 2000 version...................................................68

B.Appendix: Full Copyright Statement................................70

                                 Tables
Table 1 - Summary of Per-Job and Per-Printer Subscription operations..9 operations.10
Table 2 - Subscription object attributes.............................20 attributes.............................22
Table 3 - Printer Description attributes associated with Notification29 Notification33
Table 4 - Common Job and Printer Notification content attributes.....34 attributes.....39
Table 5 - Additional Notification content attributes for Job events only
    .................................................................36
    .................................................................41
Table 6 - Additional Notification content attributes for Printer events
   only.............................................................37
   only.............................................................42
Table 7 - Member attributes of the "job-notify" collection operation
   attribute........................................................38
   attribute........................................................44
Table 8 - "job-notify" supported and default attributes..............44
Table 9 - Conformance Requirements for Operations....................50 Operations....................60

                                Figures
Figure 1 - Client-Printer Per-Job Subscription and Notification Model10 Model11
Figure 2 - Client-Server-Printer Per-Job Subscription and Notification
   Model............................................................11
   Model............................................................12
Figure 3 - Client-Printer Per-Printer Subscription and Notification
   Model............................................................12
   Model............................................................13
Figure 4 - Opaque Use of a Notification Service Transparent to the
   Client...........................................................13
   Client...........................................................14
Figure 5 - Use of a Notification Service transparent to the IPP Printer
    .................................................................14
    .................................................................15
Figure 6 - Object Model for Notification.............................18 Notification.............................20

                 Expires April 14, September 8, 2000

1  Introduction

This IPP notification specification is an extension to IPP/1.0 [RFC2568,
RFC2569] and IPP/1.1 [ipp-mod, ipp-pro].  This document in combination
with the following documents is intended to meet the notification
requirements described in [ipp-not-req]:

     Internet Printing Protocol/1.1: Protocol/1.0 & 1.1:  "Collection Attribute
     Syntax" [ipp-coll]
     Internet Printing Protocol/1.1: Protocol/1.0 & 1.1:  "Job Progress Attributes" [ipp-
     prog]
     [ipp-prog]
     Internet Printing Protocol/1.1: Protocol/1.0 & 1.1:  "Notification Change
     History" [ipp-not-hist]

In addition, each notification delivery method, whether REQUIRED or
OPTIONAL, is described in separate documents:

     Internet Printing Protocol/1.1: Protocol/1.0 & 1.1:  "Notification Delivery
     Method xxx [TBD]
     Internet Printing Protocol/1.1: Protocol/1.0 & 1.1:  "Notification Delivery
     Method yyy [TBD]

The rest of this document is laid out as follows:

     - The rest of Section 1.1 is an overview of IPP Notification.

     - Section 2 is the model for network entities that use IPP
     notification, including clients (desktop and servers), IPP Printers
     (servers and devices), and Notification Recipients.

     - Section 3 is the terminology used throughout the document.

     - Section 4 is the object model for notification, including Job,
     Printer, and Subscription objects.

     - Section 5 and 6 defines the notification attributes for each of
     the Subscription object and Printer objects. its attributes.

     - Section 7 6 defines the Printer Description attributes

     - Section 7 defines the Notification content of Human Consumable
     and Machine Consumable Event Notification contents. formats.

     - Sections 8 and 9 define the Per-Job and Per-Printer Subscription
     operations.

     - Section 10 and defines the out-of-band values.

     - Section 11 and 12 define the conformance requirements and IANA
     requirements, respectively.

     - Section 12 13 - 14 15 cover Internationalization, Security, and Status
     codes.

                 Expires September 8, 2000
     - Appendix A is a summary of the Notification Attribute usage

     - Appendix B is a Change History

1.1 Notification Overview

A client can establish an event notification subscription so that when
one of the specified events occurs, an asynchronous Notification is sent
to a specified Notification Recipient.

                   Expires April 14, 2000

One or more Per-Job Submission subscriptions are specified by the client
when submitting a job.  One or more Per-Job or Per-Printer subscriptions
are created by performing separate explicit Create-Job-Subscription or
Create-Printer-Subscriptions operations, respectively.

A Per-Job or Per-Printer subscription request includes:

  1. the names of Job and/or Printer events that are of interest to the
     Notification Recipient

  2. the delivery method and address to use to deliver the notification
     to one Notification Recipient

  3. if Human Consumable notification content is to be sent, which text
     format

  4. some opaque data that the subscriber wants to be sent to the
     Notification Recipient in the Notification, perhaps to identify
     either the subscriber or the ultimate recipient

  5. the charset to use in the Notification, if it is to be different
     than the one used in the request that created the subscription

  6. the natural language to use in the Human Consumable Notification,
     if it is to be different than the one used in the request that
     created the subscription

  7. the requested lease time in seconds for the subscription

  8. whether or not the subscription is requested to be persistent
     across power cycles.

For Per-Job subscriptions, a client requests job and printer event
notification using the "job-notify" operation attribute when creating a
job with any of the Job Creation operation: Print-Job, Print-URI, and
Create-Job.  The "job-notify" operation attributes may be submitted to
the Validate-Job in order to be validated.  .  The "job-notify" operation
attribute contains one or more collection values, each consisting of a
number of member attributes that specify a subscription, so that a Job
can have more than one Per-Job subscription.  The 'collection' is a new
attribute syntax (see [ipp-coll]).  The member attributes of each
collection value are copied to separate Subscription objects to populate
the corresponding Subscription Description attributes.

For Per-Printer subscriptions and Per-Job subscriptions created after
the Job has been created, a client requests job and printer event
notification using new operations independent of any job.  The Printer

                 Expires September 8, 2000

keeps each subscription in a separate Subscription object.  The Create-
Job-Subscription and Create-Printer-Subscription operations create an
instance of the Subscription object supplying these new operation
attributes and returns a subscription-id (analogous to a job-id for a
Job object).  These operation attributes are copied to the Subscription
object as Subscription Description attributes and so may be queried
using the Get-Subscription-Attributes and Get-Subscriptions operations.
The subscriber requests a lease time for each Per-Printer subscription

                   Expires April 14, 2000
which MAY be infinite.  The Printer grants a lease time according to its
configured policy.  A client MUST renew the Subscription before the
granted lease time expires using the Renew-Subscription operation.

Table 1 summarizes the Per-Job and Per-Printer Subscription operations operations,
assigns their operation-id (see [ipp-mod] section 4.4.15) and their
salient input operation attributes.

                 Expires September 8, 2000
  Table 1 - Summary of Per-Job and Per-Printer Subscription operations

Operation:          Oper.   Per- Per-  Brief Description
                    ID      Job  Prin  salient inputs beside printer-uri:
                     Job  Prin printer-
                                  ter   uri:

Print-Job, Print-   see     yes  no    Create one or more Per-Job
URI, Create-Job     [ipp-               Subscriptions as part of the Job
                    mod]                Creation operations
                                        1setOf {recipient, [events,] [text-
URI, Create-Job                 format,]
                                        [format,] [user-data,]
                                        [charset,] [natural-language]}

Validate-Job        see     yes  no    Check that the Job Creation
                    [ipp-               operation would be accepted
                    mod]                including the Subscription
                                        1setOf {recipient, [events,] [text-
                                 format,]
                                        [format,] [user-data,]
                                        [charset,] [natural-language]}

Create-Printer-     0x0016  no   yes   Create a Per-Printer
Subscription                            Subscription
                                        recipient, [events,] [text-format,]
Subscription [format,]
                                        [user-data,] [charset,] [natural-
                                 language,] [lease-time-requested,]
                                 [persistence-requested]
                                        [natural-language,] [lease-time-
                                        requested,] [persistence-
                                        requested]

Create-Job-         0x0017  yes  no    Create a Per-Job Subscription
Subscription                            recipient, job-id, [events,] [text-
Subscription                    format,]
                                        [format,] [user-data,]
                                        [charset,] [natural-language,]

Get-Subscription-   0x0018  yes  yes   Get specified Subscription
Attributes                              attributes of the specified
                                        Subscription object
                                        subscription-id, [requested-
Attributes
                                        attributes]

Get-Subscriptions   0x0019  yes  yes   Get the specified Subscription
                                        attributes from all my or all of
                                        the Subscription objects
                                        [job-id], [my-subscriptions,]
                                        [requested-attributes]

Renew-Subscription  0x001A  yes  yes   Renew the Subscription lease
                                        subscription-id, [lease time-
                                        requested]

Cancel-Subscription

Cancel-             0x001B  yes  yes   Cancel the Subscription
Subscription                            subscription-id

                 Expires September 8, 2000

There are two steps that IPP notification must take regarding each event
.
- an internal event recording, and an external notification:

     1) As an events occurs, the printer internally records in the job
     objects and the printer objects those events which are required to
     be supported by the system and those that are subscribed to by a
     notification recipient.

     2) As an events occurs, the Printer searches the set of
     subscriptions for any interest in that event.  As the Printer finds
     that some notification recipient is interested in that event (the
     notification recipient is subscribed to the event), the "request-
     id" sequence number for that event is incremented Printer
     increments the Subscription object's "subscription-request-id"
     (integer (0:MAX)) attribute and a notification is generated and
     delivered using the methods and target addresses identified in the subscription.
     subscription, passing the incremented "request-id".  The "request-id"
     "subscription-request-id" sequence number permits a Notification
     Recipient to detect

                   Expires April 14, 2000 duplicate notifications due either to duplicate
     subscriptions or retries and to detect dropped notifications.

2  Model for Per-Job and Per-Printer Subscription and Event Notification

2.1 Model for Per-Job Subscription and Notification

Per-Job subscriptions are created by a client (desktop or server acting
as a client) as part of creation of the job in an IPP Printer (printing
device or server).  More than one subscription may be submitted with a
job.  Additional subscriptions may be associated with the job using the
Create-Job-Subscription operation.  The IPP Printer object delivers a
Notifications to the Notification Recipient supplied by the Client in
each subscription.  A Notification Recipient can be the Job submitter or
a third party.

Figure 1 shows the Per-Job subscription notification model for a simple
Client - Printer relationship.

embedded printer:
                                        output device or server
     desktop or server                     +---------------+
        +--------+                         |  ###########  |
        | client |---IPP job submission------># Printer #  |
        +--------+  Per-Job subscription   |  # Object  #  |
     +------------+                        |  #####|#####  |
     |Notification|                        +-------|-------+
     |Recipient   |<-----IPP Notifications---------+
     +------------+    (Job and/or Printer events)

 Figure 1 - Client-Printer Per-Job Subscription and Notification Model

Figure 2 shows a (spooling or non-spooling) Server that implements two
Printer objects (1 and 2) that represent two devices.  The devices A and
B in turn each implement an IPP Printer object (3 and 4, respectively).

                 Expires September 8, 2000

The Server implementation has three choices for how to support Per-Job
subscriptions to the client (and itself):

     1.forward the Per-Job subscriptions to the down stream IPP Printer
       and let it perform the notification directly to the Notification
       Recipients supplied by the Client (Notifications(C)) and use
       Per-Printer Subscriptions for the Server's own purposes.

     2.save the client-supplied Per-Job subscription on the Job object
       in the server and substitute its own Per-Job subscription with
       the Server as the Notification Recipient (Notifications(B)).
       Then the Server relays Notifications to the client-supplied
       Notification Recipients (Notifications(A)).

     3.A combination of 1 and 2 in which the Server adds its own Per-
       Job subscriptions to those supplied by the client.  Thus the IPP
       Job that goes to Printer object 4 has a combination of

                   Expires April 14, 2000
       subscription information from both the Client and the Server.
       This latter approach is sometimes called "piggy-backing" because
       the Server is adding its Per-Job subscription information to
       that supplied by the client.  Piggy-backing is especially
       useful, if device B also accepts (IPP or non-IPP) requests from
       other servers.  Then when all the jobs from Server S have been
       completed by device B, there will be no more Job events sent to
       Server S.  (Server S could still maintain a long term Per-
       Printer subscription with Printer D to that Server S can have
       Printer B's state track (shadow) that of Printer D or Server S
       could poll Printer D when queried about Printer B).

                                                          device A
                           server S                    +------------+
                        +------------+                 | ###########|
+--------+   IPP Job    | ###########|    IPP Job      | # Printer #|
| client |--submission---># Printer #|---submission-----># Object 3#|
+--------+   Per-Job    | # Object 1#|    Per-Job      | ###########|
           subscription | ###########|   subscription  +------------+
                        |            |                    device B
+--------+   IPP Job    | ###########|                 +------------+
| client |--submission---># Printer #|    IPP Job      | ###########|
+--------+   Per-Job    | # Object 2#|---submission-----># Printer #|
           subscription | ###|#######|    Per-Job      | # Object 4#|
                        +----|---^---+   subscription  | ####|#|####|
+--------+                   |   |                     +-----|-|----+
|Notific-|<-Notifications(A)-+   +--- Notifications(B)-------+ |
|ation Re|<----------------Notifications(C)--------------------+
|cipient |
+--------+

 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification
                                 Model

                 Expires September 8, 2000

2.2 Model for Per-Printer Subscription and Notification

Per-Printer subscriptions are created by a client (an end user, an
operator, or a server acting as a client) using a Create-Printer-
Subscription operation that is independent of Job Submission.  The
Printer object (printing device or server) creates a Subscription object
to hold the attributes supplied by the subscriber.  The client creates
separate Per-Printer subscriptions if more than one Notification
Recipient is desired.  The Printer delivers Notifications to the
Notification Recipient specified by each Per-Printer subscription.  A
Notification Recipient may be the subscriber or a third party.  Figure 3
shows the Per-Printer subscription notification model for the Client -
Printer relationship where the client may be an end user, an operator,
or a server acting as a client.

                   Expires April 14, 2000

       desktop or server                    server or printing device
                                                   +---------------+
       +--------+                                  |  ###########  |
       | client |---Create-Printer-Subscription------># Printer #  |
       +--------+    (Per-Printer subscription)    |  # Object  #  |
                                                   |  #####|#####  |
    +------------+                                 +-------|-------+
    |Notification|<----------IPP Notifications-------------+
    |Recipient   |    (Job and/or Printer events)
    +------------+

  Figure 3 - Client-Printer Per-Printer Subscription and Notification
                                 Model

2.3 Relationship between the Printer object and the Notification
    Delivery Service

The IPP Notification model does not mandate that the IPP Printer object
implement the full semantics of subscription, report generation, and
multiple delivery methods itself.  This section describes two methods of
using third party notification services.  The first is transparent to
the client and the second is transparent to the IPP Printer.

2.3.1 Use of a Notification Service transparently to clients

An implementation may be configured to use some other notification
service to either (1) delivery the Notifications to the Notification
Recipient(s) specified in the IPP Subscription or (2) keep the
Subscriptions, accept events, possibly format the notification in the
natural language of the Notification Recipient when a Human Consumable
text format is used, and deliver the Notifications to the Notification
Recipient(s) indicated in the IPP Subscription.  Figure 4 shows this
partitioning.

                 Expires April 14, September 8, 2000
                                        output device or server
     desktop or server                     +---------------+
        +--------+                         |  ###########  |
        | client |---IPP subscription--------># Printer #  |
        +--------+                         |  # Object  #  |
                                           |  #####|#####  |
                                           +-------|-------+
                                                   | Subscriptions
                                            *******| OR Events
     +------------+                        *       |
     |Notification|                       * +------v--------+
     |Recipient   |<--IPP Notifications-----| Notification  |
     +------------+                      *  | Service       |
                                         *  +---------------+
                                         *
                                         *
     *** = Implementation configuration opaque boundary

   Figure 4 - Opaque Use of a Notification Service Transparent to the
                                 Client

In any case, the interface between the IPP Printer and the other
notification service is outside the scope of this document and is
intended to be transparent to the client and this specification.

2.3.2 Use of Notification Service transparently to the IPP Printer

Another way that a Notification Service can be used is if the
Notification Recipient indicated in the IPP Subscription is a
notification service (transparent to the IPP Printer), which in turn
forwards the Notification to the Ultimate Notification Recipient using
additional parameters in the IPP Subscription (URI parameters or
subscriber user data).  In such cases, the Ultimate Notification
Recipient has also subscribed directly with the other notification
service (by means outside this document).  As far as the IPP Printer is
concerned, the IPP Subscription indicated that the IPP Printer is to
delivery Notifications to the Notification Recipient (Notification
Service) using the specified notification delivery method.  The method
that the Notification Recipient uses for delivering the notification to
the Ultimate Notification Recipient is beyond the scope of this document
and is transparent to the IPP Printer.  However, the client does have to
know how to pass additional information to the Notification Recipient in
the IPP Subscription using either extra parameters in the URI or
subscriber user data.  Examples of this latter approach are paging,
immediate messaging services, and NOS vendors infrastructure.  Figure 5
shows this approach.

                 Expires April 14, September 8, 2000
       desktop or server                    server or printing device
                                                   +---------------+
       +--------+                                  |  ###########  |
       | client |----------IPP Subscriptions---------># Printer #  |
       +--------+                                  |  # Object  #  |
                                                   |  #####|#####  |
+------------+     +------------+                  +-------|-------+
|Ultimate    |     |Notification|<---IPP Notifications-----+
|Notification|<----|Recipient   |
|Recipient   |     +------------+
+------------+     (Notification Service)

Figure 5 - Use of a Notification Service transparent to the IPP Printer

3  Terminology

This section defines terminology used throughout this document.

3.1 Conformance Terminology

  Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD
     NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to
     conformance to this specification.  These terms are defined in
     [ipp-mod section 13.1 on conformance terminology, most of which is
     taken from RFC 2119 [RFC2119].

  REQUIRED - an adjective used to indicate that a conforming IPP
     Printer implementation MUST support the indicated operation,
     object, attribute, attribute value, status code, or out-of-band
     value in requests and responses.  See [ipp-mod] "Appendix A -
     Terminology for a definition of "support".  Since support of this
     entire notification specification is OPTIONAL for conformance to
     IPP/1.0 or IPP/1.1, the use of the term REQUIRED (R) in this document
     means "REQUIRED if this OPTIONAL notification specification is
     implemented".  Likewise, the
          term

  RECOMMENDED means "RECOMMENDED if this notification
          specification is implemented" and OPTIONAL (O) means OPTIONAL
          if this notification specification is implemented.
  READ-ONLY - indicates an attribute adjective used to indicate that a conforming IPP
     Printer implementation is recommended to support the indicated
     operation, object, attribute, attribute value, status code, or out-
     of-band value in requests and responses.  Since support of this
     entire notification specification is OPTIONAL for conformance to
     IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document
     means "RECOMMENDED if this OPTIONAL notification specification is
     implemented".

  OPTIONAL - an adjective used to indicate that a conforming IPP
     Printer implementation MAY, but is NOT REQUIRED to, support the
     indicated operation, object, attribute, attribute value, status
     code, or out-of-band value in requests and responses.

  settable - an adjective used to indicate that a Printer
     implementation supports setting the value(s) of an attribute using

                 Expires September 8, 2000
     the Set-Job-Attributes or Set-Printer-Attributes operations (see
     [ipp-set]).

  READ-ONLY - an adjective used in an attribute definition to indicate
     that an IPP Printer MUST NOT be support the attribute as being
     settable using the Set-Job-Attributes or Set-Printer-Attributes
     operations (see
     [ipp-set2]). [ipp-set]).

3.2 Other terminology

  Job Submitting End User  - A human end user who submits a print job
     to an IPP Printer.  This person may or may not be within the same
     security domain as the Printer. This person may or may not be
     geographically near the printer.

  Administrator - A human user who established policy for and
     configures the print system.

  Operator - A human user who carries out the policy established by the
     Administrator and controls the day to day running of the print
     system.

  Job Submitting Application - An application (for example, a batch
     application), acting on behalf of a Job Submitting End User, which
     submits a print job to an IPP Printer. The application may or may

                   Expires April 14, 2000
     not be within the same security domain as the Printer. This
     application may or may not be geographically near the printer.

  Security Domain - The set of network components which can communicate
     without going through a proxy or firewall. A security domain may be
     geographically very large, for example - anyplace within IBM.COM.

  IPP Client (or client) - The software component (desktop or server)
     that sends an IPP operation request to an IPP Printer object
     (server or printing device) and accepts the resulting operation
     response from the IPP Printer object.

  Job Recipient - A human who is the ultimate consumer of the print
     job. In many cases this will be the same person as the Job
     Submitting End User, but need not be.
     Example:  If I use IPP to print a document on a printer in a
     business partner's office, I am the Job Submitting End User, while
     the person I intend the document for in my business partner's
     office is the Job Recipient.  Since one of the goals of IPP is to
     be able to print near the Job Recipient of the printed output, we
     would normally expect that person to be in the same security domain
     as, and geographically near, the Printer. However, this may not
     always be the case. For example, I submit a print job across the
     Internet to a Kinko's print shop. I am both the Submitting End User
     and the Job Recipient, but I am neither near nor in the same
     security domain as the Printer.

                 Expires September 8, 2000
  Job Recipient Proxy  - A human acting on behalf of the Job Recipient.
     In particular, the Job Recipient Proxy physically picks up the
     printed document from the Printer, if the Job Recipient cannot
     perform that function. The Proxy is by definition geographically
     near and in the same security domain as the printer.
     Example:  I submit a print job from home to be printed on a printer
     at work. I'd like my secretary to pick up the print job and put it
     on my desk. In this case,  I am acting as both Job Submitting End
     User and Job Recipient. My secretary is acting as a Job Recipient
     Proxy

  Notification Subscriber (or Subscriber) - A client that requests the
     IPP Printer to send Event Notifications to one or more Notification
     Recipients.  A Notification Subscriber may be:

     1.a Job Submitting End User or Job Submitting Application (desktop
       or server) that is submitting a job or

     2.an End User, an Operator, or an Administrator that is not
       submitting a job.

  Subscription  - A request by a Notification Subscriber to the IPP
     Printer to send Event Notifications to a specified Notification
     Recipient when the event occur.  A Subscription is represented as a
     set of attributes that indicate the "what, where, who, and how" for
     notification.  Notifications are generated for certain events
     (what) and delivered using various delivery methods (how) to
     certain addresses (where and who).

  Per-Job Subscription - A Subscription that a client specifies as part
     of a create job operation (Print-Job, Print-URI, Create-Job), a
     Validate-Job operation, or an explicit Create-Job-Subscription
     operation with a Job object as the target.

                   Expires April 14, 2000

  Per-Printer Subscription - A Subscription that a client specifies
     using an explicit Create-Printer-Subscription operation with a
     Printer object as the target.

  Notification Source - The entity that sends Event Notifications.  It
     MAY be the IPP Printer itself or the IPP Printer MAY be configured
     to use a Notification Service to delivery Notifications
     transparently to the subscribing clients  (see Figure 4).

  Notification Recipient  - The entity identified as a recipient within
     a subscription that receives IPP Notifications about Job and/or
     Printer events  (see Figure 4 and Figure 5).   A Notification
     Recipient may be a: Job Submitting End User, Job Submitting
     Application (desktop or server), Job Recipient, Job Recipient
     Proxy, a Notification Service, an Operator, or Administrator, etc.,
     and their representative or log file or usage statistics gathering
     application or other active or passive entities.  A Java Listener
     is an example of a Notification Recipient.

                 Expires September 8, 2000
  Ultimate Notification Recipient - The entity to which the
     Notification Recipient (stores and) forwards an IPP Notification
     when the Notification Recipient is a Notification Service (see
     Figure 5).

  Event  - An event is some occurrence (either expected or unexpected)
     within the printing system of a change of state, condition, or
     configuration of a Job or Printer object.  A property of an event
     is that it only occurs at one instant in time and does not span the
     time the physical event takes place.  For instance, jam-occurred
     and jam-cleared are two distinct events.  The jam-occurred event is
     reported only when the jam initially occurs and only if there is
     one or more event subscriptions outstanding for that event.

     Events can be classified along two dimensions:

       - Either as Job Events or Printer Events, and
       - Either as Errors, Warnings, or Reports

     A Job event is some interesting state change in the Job object, and
     a Printer event is some interesting change in the Printer object.

     A report event is purely informational, such as 'job-completed' or
     'accepting-jobs'.  A warning is not serious and processing
     continues.  An error is serious and either the job is aborted or
     the printer stops.  These are typical uses of the terms report,
     warning, and error, although the actual usage is implementation
     dependent.

     An event occurs for a job or printer whether any entity has
     subscribed to be notified for that event or not.  A notification is
     only generated depending on the set of subscriptions outstanding.

  Notification  - When an event occurs, a Notification is generated
     that fully describes the event (what the event was, where it
     occurred, when it occurred, etc.).  Notifications are delivered to
     each Notification Recipient that has a subscription that includes
     the event, if any.  The Notification is delivered to the address of

                   Expires April 14, 2000
     the Notification Recipient using the notification delivery method
     defined in the subscription.  However, a Notification is sent ONLY
     if there is a corresponding subscription.

  Notification Delivery Method (or Delivery Method for short) -
     Notifications are delivered using a method, such as email, TCP/IP,
     etc.

  Immediate Notification - Notifications that are delivered using a
     delivery method which is not store-and-forward (e.g. TCP
     connection, UDP datagram). This can be on the order of several
     minutes subject to network latency.

  Store and Forward Notification  - A Notification which are not
     necessarily delivered to Notification Recipients immediately, but
     is queued for delivery by some intermediate network application,

                 Expires September 8, 2000
     for later retrieval.  Email and Instant Messaging services are
     examples of a store and forward notification delivery method.

  Human Consumable Notification - Notifications that are intended to be
     consumed by human End Users only.  They are simple text that has
     been localized for the Notification Recipient as specified in the
     subscription.  Programs are not intended to parse Human Consumable
     Notification, since it is localized and the content depends on
     implementation.  There is no standardized format.

  Machine Consumable Notification - Notifications that are intended for
     consumption by a program only.  They use the encoding of an IPP
     response.  The Notification Recipient must localize the contents,
     if displaying it to a human.

  Subscription Creation operation - One of the operations that creates
     a Subscription object:  Job Creation operations (Create-Job, Print-
     Job, and Print-URI), Create-Job-Subscription, and Create-Printer-
     Subscription.

4  Object Model for Notification

This section describes the notification object model that adds a
REQUIRED Subscription object which together with the Job and Printer
object provide the complete notification semantics.

                 Expires April 14, September 8, 2000

The object relationships can be seen pictorially as:

   Subscription objects (Per-Printer Subscriptions)     Printer object
   +----+                                                +------------+
   | s1 |<---------------------------------------------->|            |
   +----++                                               |            |
    | s2 |<--------------------------------------------->|     p1     |
    +----++                                              |            |
     | s3 |<-------------------------------------------->|            |
     +----+                                              +------------+
                    Job objects
                     +---------+
                     |         |
     +----+          |   j1    |
     | s4 |<-------->|         |
     +----+          |         |
                     |         |    s4 is a Per-Job subscription object
                     ++--------++
                      |         |
       +----+         |   j2    |
       | s5 |<------->|         |
       +----++        |         |
        | s6 |<------>|         |    s5 and s6 are Per-Job subscription
        +----+        ++--------++                  objects
                       |         |
                       |   j3    |
                       |         |
                       |         |         <----> indicates association
                       +---------+

                Figure 6 - Object Model for Notification

     s1, s2, and s3 are Per-Printer Subscription objects and can
     identify Printer and/or Job events.
     s4, s5, and s6 are Per-Job subscription objects and can identify
     Printer and/or Job events.

4.1 Object relationships

The

This sub-section defines the object relationships can be stated as follows:

  1. The Printer object contains zero or more Per-Printer Subscription
     objects (p1 contains s1-s3 Per-Printer between the Printer,
Job, and Subscription objects).

  2. Each objects.  Whether Per-Printer Subscription object (s1, s2, and s3) is objects
are actually contained in one a Printer object (p1) and each represents one Per-Printer
     subscription.

  3. Each "Per-Printer" Subscription object identifies one or more Job
     and/or Printer events.  Such Job are just bi-directionally
associated with them in some way is IMPLEMENTATION DEPENDENT and is
transparent to the client.  Similarly, whether Per-Job Subscription
objects are actually contained in a Job object or are just bi-
directionally associated with them in some way is IMPLEMENTATION
DEPENDENT and is transparent to the client.  The object relationships
are defined as follows:

4.1.1 Printer object and Per-Printer Subscription objects

  1. The Printer object contains (is associated with) zero or more Per-
     Printer Subscription objects (p1 contains s1-s3 Per-Printer
     Subscription objects).

                 Expires September 8, 2000
  2. A Per-Printer Subscription object (s1-s3) cannot be contained in
     (or associated with) more than one Printer object (p1).

  3. Each Per-Printer Subscription object (s1, s2, and s3) is contained
     in (or is associated with) one Printer object (p1) and each
     represents one Per-Printer subscription.

  4. Each Per-Printer Subscription object identifies one or more Job
     and/or Printer events.  Such Job events are for all jobs on the
     Printer.  Such Printer events are for any Printer event, no matter
     which job is processing and when no jobs are processing.

                   Expires April 14, 2000
  4.

4.1.2 Job object and Per-Job Subscription objects

  1. A Job object is (j1, j2, j3) contains (is associated with with) zero or
     more Per-Job subscription
     objects. objects (s4-s6).  Job j1 is associated
     with Per-Job subscription object s4, Job j2 is associated with Per-Job Per-
     Job subscription objects s5 and s6, and Job j3 is not associated
     with any Per-Job subscription object.
     Note:  the IPP notification interface semantics are defined so that
     an implementation MAY associate

  2. A Per-Job Subscription objects with
     Job objects by having the Job objects actually contain its object cannot be contained in (or associated
     with) more than one Job object.

  3. Each Per-Job Subscription objects or MAY just use some
     internal bi-directional linking mechanism between the object is contained in (or associated
     with) one Job object and
     Subscription objects.  Either implementation technique is
     transparent to the client.

  5. each represents one Per-Job Subscription.

  4. Each "Per-Job" subscription Per-Job Subscription object identifies one or more Job and/or
     Printer events.  Such Job events are only for this job (different
     than "per-Printer" Subscriptions).  Such Printer events are for any
     Printer event, no matter which job and when no jobs are processing
     (same as for "per-Printer" Subscriptions).

  6. A Per-Printer

5  Subscription Object attributes

Table 2 lists the Subscription object cannot be contained in or
     associated with more than one Printer object.

  7. A Per-Job Subscription object cannot be contained in or associated
     with more than one Job object.

5  Subscription Object attributes

The following notification attributes are defined for in this section
and the Subscription
object. related Printer Description attributes defined in section 6, if
any.  The definitions of the object attributes are specified here in this
section so that they can be referred to from the subsequence subsequent definitions
of the operations that set them.  All of the Subscription object
attributes are READ-ONLY.  They can be set only by specific operations
that create or perform operations on Subscription objects (see section
8).

                 Expires April 14, September 8, 2000
                Table 2 - Subscription object attributes

Subscription object         Printer   Related Printer Description
attributes:    Print READ-ONLY, set by:
                                       er
                                       suppo
                                       rt

   notify-recipient (uri)             REQUI                 support   attribute(s)

Set by client - Job Creation,
                                       RED   Create-Job-Subscription,
                                              and Create-Printer- input to a
Subscription Creation
operation

notify-recipient (uri)      REQUIRED  notify-schemes-supported
                                            (1setOf uriScheme)

notify-events (1setOf type2        REQUI client - Job Creation, REQUIRED  notify-events-default (1setOf
     keyword)                           RED   Create-Job-Subscription,
                                              and Create-Printer-
                                              Subscription

   notify-text-format                              type2 keyword)

                                       notify-events-supported (1setOf
                                            type2 keyword)

                                       max-events-supported
                                            (integer(5:MAX))

notify-format               REQUIRED  notify-format-supported (1setOf
     (mimeMediaType) REQUI client - Job Creation,
                                       RED   Create-Job-Subscription,
                                              and Create-Printer-
                                              Subscription                       mimeMediaType)

subscriber-user-data               REQUI client - Job Creation,        REQUIRED  n/a
     (octetString(63))                  RED   Create-Job-Subscription,
                                              and Create-Printer-
                                              Subscription

notify-charset (charset)           OOPTI client - Job Creation,
                                       ONAL  Create-Job-Subscription,
                                              and Create-Printer-
                                              Subscription    OPTIONAL  charset-supported (1setOf
                                            charset)

notify-natural-languages    OPTIONAL  generated-natural-language-
     (1setOf                               supported (1setOf   OOPTI client - Job Creation,
     naturalLanguage)                   ONAL  Create-Job-Subscription,
                                              and Create-Printer-                      naturalLanguage)

Subscription

   request-id (integer(0:MAX))        REQUI initialized object         Printer   Related Printer Description
attributes:                 support   attribute(s)

Printer initializes to 0,
                                       RED   incremented by Printer -
increments at beginning of
each event

   subscription-id (integer(1:MAX))   REQUI Printer - Job Creation,
                                       RED   Create-Job-Subscription,
                                              and Create-Printer-

subscription-request-id     REQUIRED  n/a
     (integer(0:MAX))

                 Expires September 8, 2000

Subscription

   notify-lease-expiration-time       REQUI object         Printer - Job   Related Printer Description
attributes:                 support   attribute(s)

Printer sets as part of
Subscription Creation
operation

subscription-id             REQUIRED  max-job-subscriptions-supported
     (integer(1:MAX))                      (integer(0:MAX))                   RED   (set to 0) and Create-
                                              Printer-Subscription,
                                              Renew-Subscription

                                       max-printer-subscriptions-
                                            supported (integer(0:MAX))

notify-lease-expiration-    REQUIRED  notify-lease-time-default
     time (integer(0:MAX))                 (integer(0:MAX))

                                       notify-lease-time-supported
                                            (rangeOfInteger(0:MAX))

printer-uri (uri)                  REQUI Printer - Job Creation,
                                       RED   Create-Job-Subscription,
                                              and Create-Printer-
                                              Subscription

                   Expires April 14, 2000           REQUIRED  printer-uri-supported

subscriber-user-name        REQUIRED  n/a
     (name(MAX))   OPTIO Printer - Job Creation,
                                       NAL   Create-Job-Subscription,
                                              and Create-Printer-

Subscription

   notify-printer-up-time             REQUI object         Printer - returned by
   (integer(1:MAX))                   RED   Create-Printer-
                                              Subscription, Get-
                                              Subscription-Attributes,
                                              and Get-Subscriptions

   notify-persistence-granted         REQUI   Related Printer - returned Description
attributes:                 support   attribute(s)
Returned by
   (boolean)                          RED   Create-Job-Subscription
                                              and Create-Printer- Printer on
Subscription Creation
operation

notify-server-up-time       REQUIRED  printer-up-time
     (integer(1:MAX))                      (integer(1:MAX))

notify-persistence-granted  REQUIRED  persistent-subscriptions-
     (boolean)                             supported (boolean)

Note:  The Subscription object does not contain the "job-id"
Subscription Description attribute.  The Get-Subscriptions operation has
the "job-id" as an input operation attribute, so the "job-id" isn't
returned in the response.  If an implementation needs such a link
between Subscription objects and Job objects, then it keeps such a link
as in internal attribute.  The intent is that whether Per-Job
Subscription objects are actually contained in a Job object or are just
associated with them in some way is IMPLEMENTATION DEPENDENT and is
transparent to the client.

5.1 notify-recipient (uri)

This REQUIRED READ-ONLY Subscription object attribute describes both
where (the address of the Notification Recipient) and how (the delivery

                 Expires September 8, 2000

method) notifications are to be delivered to the Notification Recipient
when any of the events specified in the "notify-events" attribute occur.

There are potentially many different notification delivery methods for
IPP notifications, standardized as well as proprietary.  This document
does not define any of these delivery mechanisms;  they will each be
described in separate complementary supplementary documents.

Each of the notification delivery method documents must provide at least
the following information:

  1) The URI scheme used.

  2) The supported and default delivery format, and if not one of the
     specified types in Section 5.3, description of the notification
     content.

  3)Any content length restrictions imposed by the delivery protocol.

  4) The latency of the delivery protocol used.

  5)The reliability of the transport and delivery protocol used.

  6) The security aspects of the transport and delivery protocol used,
     e.g. how it is handled in firewalls.

                   Expires April 14, 2000

  7) How the delivery protocol is initiated, e.g. does it have to be
     initiated by the receiving user (pull), or is it initiated by the
     notification service (push).

The following notification delivery schemes are defined in other
documents for use as part of the URI value of this attribute:

  'ipp:' - The Notification Recipient uses server directed polling to
     pull Notifications [ipp-method-poll]

  'indp:' - The Notification Source sends Send-Notifications operations
     to the Notification Recipient [ipp-method-indp]

  'mailto:' - The Notification Source sends a email message using SMTP
     with possible attachments containing Machine Consumable
     Notification Content [ipp-method-mailto]

  'snmpnotify:' - The Notification Source sends SNMP traps and/or
     informs to the Notification Recipient [ipp-method-snmp]

This list of notification delivery schemes will be added to as needed
using the registration procedures defined in [ipp-mod].

ISSUE 1 01 -  Once a number of delivery solutions have been developed and
evaluated, we may want to make one or several of them REQUIRED for
implementation to ensure a minimum set of interoperability.  Which one
or ones should be REQUIRED?

                 Expires September 8, 2000

5.2 notify-events (1setOf type2 keyword)

This REQUIRED READ-ONLY Subscription object attribute identifies the job
and/or printer events that are to be delivered to the Notification
Recipient as Notifications as defined in section 7.  If the client did
not supply this attribute when supplying the subscription, the Printer
object populates this attribute with its "notify-events-default"
attribute value (see section 6.2).

There are both job events and printer events.  Each job and printer
event is assigned a keyword to use in this attribute and in the
Notification.

The  Job and printer events are defined to be disjoint.

A Printer MUST support have the events indicated as "REQUIRED". following semantics
depending on whether the subscription is a Per-Job or a Per-Printer
subscription:

     Job events:  The standard semantics for job event keyword values are:

  'none':  REQUIRED - no notifications of any events (an IPP object can
     use this value to indicate that it depends on whether the
          subscription is configured not to support
     event notification; a client would not subscribe to this event).
  'job-created':  REQUIRED - Per-Job Subscription or a Per-Printer
          Subscription.  For Per-Job Subscriptions, the Printer object has accepted  a MUST
          generate Notifications only for the job
     creation operation (Print-Job, Print-URI, or Create-Job) and events of the
     job's "time-at-creation" attribute value job with
          which the Subscription is set (see [ipp-mod]
     section 4.3.14.1).  The associated.  For Per-Printer
          Subscriptions, the Printer puts MUST generate Notifications for the
          job in events for any job submitted to the Printer.

          For example, consider the 'pending',
     'pending-held' or 'processing' states.
     Note:  This event is separate from when there are 10 'pending'
          jobs, one 'processing' job, and 30 'completed' jobs and the 'job-state-changed' event so
     that it can be subscribed to without having to get every
          'processing' job state
     change event for completes.  The Printer MUST generate a Notification Recipient that is only interested
     in when the 'job-
          completed' job is first created.
  'job-completed':  REQUIRED - event Notification if the job has reached one of the completed
     states, i.e., the value of the job's "job-state" attribute has
     changed to: 'completed', 'aborted', or 'canceled'.  The Job's
     "time-at-completed" and "date-time-at-completed" (if supported)
     attributes are set (see [ipp-mod] section 4.3.14).
     Note:  This event is separate from 'job-state-changed' so a Per-Job
          Subscription that it
     can be subscribed to without having to get every job state change contained the 'job-completed' event in this
          attribute.  The Printer MUST NOT generate Notifications for a Notification Recipient that is only interested
          any other jobs whose Per-Job Subscriptions contain the 'job-
          completed' event in when this attribute.

     Printer events:  The semantics for printer events does not depend
          on whether the job subscription is completed.
  'job-state-changed':  REQUIRED - the job has changed from any state
     to any other state and/or a value has been added Per-Job or removed from
     the job's "job-state-reasons" attribute, except when a Per-Printer
          Subscription.  For both Per-Job Subscriptions and Per-Printer
          Subscriptions, the Printer MUST generate Notifications for
          printer events, no matter what job is
     created or processing, including
          when no jobs are processing.

          For example, consider the job moves to any of the "completed" job states
     ('completed', 'aborted', or 'canceled').

                   Expires April 14, 2000
     This event also indicates that when there are 10 'pending'
          jobs, one or more values have been added
     to or removed from 'processing' job, and 30 'completed' jobs and the Job's "job-state-reasons" attribute, such as
     'job-queued' or 'job-printing', whether or not
          Printer enters the job's state has
     changed.  If job state reasons are added when 'stopped' state.  The Printer MUST generate
          a 'printer-state-changed' printer event Notification for each
          of the job is created,
     only 11 'pending' and 'processing' jobs whose Per-Job
          Subscriptions contain the 'job-created' 'printer-state-changed' event is generated, in order to keep
          this attribute.  The Printer MUST NOT generate Notifications
          for any of the 'completed' jobs' whose Per-Job Subscriptions
          contain the 'printer-state-changed' event in this attribute.

The events disjoint.  If job state reasons are added or removed when defined to be disjoint.  For example, the job is completed, only 'job-state-
changed' event does not include the 'job-created' and 'job-completed' event is generated,
     in
events.  In order to keep get all three events, the events disjoint.

     A client that wants to subscribe to supplies all job state changes,
     including creation and completion, includes three
keywords in this attribute.

                 Expires September 8, 2000

A Printer MUST support the 'job-created',
     'job-state-changed', events indicated as "REQUIRED" and 'job-completed' in MAY
support of the notification
     subscription.  When a events indicated as "OPTIONAL".

The standard job is finally removed from the Job History
     (see [ipp-mod] 4.3.7.1) no event keyword values are:

  'none':  REQUIRED - no notifications of any events (an IPP object can
     use this value to indicate that it is generated, i.e., neither a
     'job-state-changed' configured not to support
     event nor notification; a 'job-purged' event is generated.
  'job-config-changed':  OPTIONAL . when client would not subscribe to this event).

  'job-created':  REQUIRED - the configuration of a job Printer object has
     changed, i.e., accepted  a Job
     Creation operation (Print-Job, Print-URI, or Create-Job) and the
     job's "time-at-creation" attribute value of is set (see [ipp-mod]
     section 4.3.14.1).  The Printer puts the "job-message-from-operator" or any
     of job in the non-READ-ONLY Job attributes have changed, such as any of
     the job template attributes or the "job-name" attribute.
     Typically, such a change is the result of the user or the operator
     performing a Set-Job-Attributes operation (see [ipp-set2]) on the
     Job object.  The client performs a Get-Job-Attributes to find out
     the new values of the changed attributes.  This event is useful for
     GUI clients and drivers to update the job information to the user.
  'job-purged':  OPTIONAL - when a 'not-completed' job (i.e., not
     'completed', 'canceled', or 'aborted') was purged from the printer
     using the Purge-Jobs operation.  No event, including this event, is
     generated when a job is aged out of the Job History or moved out
     explicitly with the Purge-Jobs operation.
  'job-progress' - a sheet or copy has completed.  See separate [ipp-
     prog] spec.

The standard Printer event keywords values are:

  'none':  REQUIRED - no notification of any events (an IPP object can
     use this value to indicate that it is configured not to support
     event notification; a client would not subscribe to this event).
  'printer-restarted':  OPTIONAL - when the printer is powered up 'pending',
     'pending-held' or
     the Restart-Printer operation is performed (see [ipp-set2]). 'processing' states.
     Note:  This event is separate from the 'printer-state-changed' 'job-state-changed' event so
     that it can be subscribed to without having to get every
     printer job state
     change event, event for a Notification Recipient that is only interested
     in when the Printer job is first comes up.
  'printer-shutdown':  OPTIONAL created.

  'job-completed':  REQUIRED - when the device is being powered down
     or job has reached one of the Shutdown-Printer operation completed
     states, i.e., the value of the job's "job-state" attribute has been performed with either
     power-off
     changed to: 'completed', 'aborted', or standby options 'canceled'.  The Job's
     "time-at-completed" and "date-time-at-completed" (if supported)
     attributes are set (see [ipp-set2]). [ipp-mod] section 4.3.14).
     Note:  This event is separate from 'printer-state-changed' 'job-state-changed' so that it
     can be subscribed to without having to get every Printer job state change event,
     event for a Notification Recipient that is only interested in when
     the Printer job is powered down or shutdown.

                   Expires April 14, 2000
  'printer-state-changed': completed.

  'job-state-changed':  REQUIRED - the Printer job has changed state, i.e.,
     the from any state
     to any other state and/or a value of the Printer's "printer-state", "printer-state-reasons"
     (whether "printer-state" changed has been added or not), and/or "printer-is-
     accepting-jobs" attributes changed, removed from
     the job's "job-state-reasons" attribute, except when the Printer starts
     up or job is shutdown.
     created or when the job moves to any of the "completed" job states
     ('completed', 'aborted', or 'canceled').

     This event also indicates that one or more values have been added
     to or removed from the Job's "job-state-reasons" attribute, such as
     'job-queued' or 'job-printing', whether or not the job's state has
     changed.  If printer job state reasons are added when the
     Printer job is started up, created,
     only the 'printer-restarted' 'job-created' event is generated, in order to keep the
     events disjoint.  If printer job state reasons are added or removed when
     the printer job is powered-down or
     shutdown, completed, only the 'printer-shutdown' 'job-completed' event is generated,
     in order to keep the events disjoint.

     A client that wants to subscribe to all printer job state changes,
     including restart creation and power-down/shutdown, completion, includes the 'printer-
     restarted', 'printer-state-changed', 'job-created',
     'job-state-changed', and 'printer-shutdown' 'job-completed' in the notification
     subscription.
  'printer-media-changed':  OPTIONAL . when the media loaded on  When a
     printer has been changed, i.e., the "media-ready" attribute has
     changed.  This event includes both an actual media change and
     filling an empty input tray with the same or different media.  The
     client must check job is finally removed from the "media-ready" Printer attribute Job History
     (see [ipp-
     mod] section 4.2.11) separately to find out what new media was
     loaded or filled.
  'printer-config-changed': [ipp-mod] 4.3.7.1) no event is generated, i.e., neither a
     'job-state-changed' event nor a 'job-purged' event is generated.

  'job-config-changed':  OPTIONAL . - when the configuration of a
     Printer job has
     changed, i.e., the value of the "printer-message-from-
     operator" "job-message-from-operator" or any
     of the non-READ-ONLY Printer attribute has Job attributes have changed,
     except for "media-ready" (which has its own event), whether through
     the Set-Printer-Attributes operation or by other means and whether
     initiated by such as any of

                 Expires September 8, 2000
     the job template attributes or the "job-name" attribute.  Often,
     such a human change is the result of the user or not.  For example, any "xxx-supported",
     "xxx-default", "printer-message-from-operator", etc. values have
     changed. the operator performing
     a Set-Job-Attributes operation (see [ipp-set]) on the Job object.
     The client has to perform performs a Get-Printer-Attributes Get-Job-Attributes to find out the new values
     of these the changed attributes.  This event is useful for GUI clients
     and drivers to update the available printer
     capabilities job information to the user.
  'printer-queue-changed':

  'job-purged':  OPTIONAL - when a 'not-completed' job (i.e., not
     'completed', 'canceled', or 'aborted') was purged from the order of jobs in printer
     using the
     Printer's queue has changed, so that an application that Purge-Jobs operation.  No event, including this event, is
     monitoring the queue can perform a Get-Jobs operation to determine
     the new order.  This event does not include
     generated when a job enters is aged out of the
     queue (the 'job-created' Job History or moved out
     explicitly with the Purge-Jobs operation.

  'job-progress' - a sheet or copy has completed.  See separate [ipp-
     prog] spec.

The standard Printer event covers that) and does keywords values are:

  'none':  REQUIRED - no notification of any events (an IPP object can
     use this value to indicate that it is configured not include
     when a job leaves the queue (the 'job-completed' to support
     event covers
     that).
  'printer-no-longer-full': notification; a client would not subscribe to this event).

  'printer-restarted':  OPTIONAL . - when the Printer can now accept
     a Print-Job, Print-URI, Create-Job, Send-Document, printer is powered up or Send-URI
     request.
     the Restart-Printer operation is performed (see [ipp-mod]).
     Note:  This event is used when there is more than one client
     feeding a printer/server (fan-in), and separate from the Printer may still 'printer-state-changed'
     event so that it can be
     printing but has acquired more buffer space subscribed to accept jobs.  This
     event without having to get every
     printer state change event, for a Notification Recipient that is
     only occurs interested in when the Printer did not have room to accept jobs
     previously and rejected a Print-Job, Print-URI, Create-Job, Send-
     Document, or Send-URI operation.
  'printer-almost-idle': first comes up.

  'printer-shutdown':  OPTIONAL . - when the Printer needs another Job
     in order to stay busy.  This event is used when a spooler device is
     feeding more than one printer/server (fan-out), and being powered down
     or the spooler

                   Expires April 14, 2000
     holds jobs until a Printer requests them, rather than committing
     jobs to IPP Printers before it is necessary. Shutdown-Printer operation has been performed (see [ipp-
     set2]).
     Note:  This event MAY is separate from 'printer-state-changed' so that
     it can be
     used by a Printer implementation subscribed to request without having to get every Printer state
     change event, for a new job from any
     subscribers sufficiently ahead of time so Notification Recipient that is only interested
     in when the device does not
     run out of work between jobs.

5.3 notify-text-format (mimeMediaType)

This Printer is powered down or shutdown.

  'printer-state-changed':  REQUIRED READ-ONLY Subscription object attribute indicates - the type
of Human Consumable format content that is to be sent in Printer changed state, i.e.,
     the
notifications, instead value of the Machine Consumable format defined for Printer's "printer-state", "printer-state-reasons"
     (whether "printer-state" changed or not), and/or "printer-is-
     accepting-jobs" attributes changed, except when the
notification scheme, if any.  Most delivery methods Printer starts
     up or is shutdown.  If printer state reasons are defined added when the
     Printer is started up, only the 'printer-restarted' event is
     generated, in order to have
a particular Machine Consumable forms of notification content type and
to permit Human Consumable forms as well.  An implementation MAY support
one or more Human Consumable formats, i.e., 'text' MIME media types, for
those delivery methods that permit keep the Human Consumable form. events disjoint.  If printer state
     reasons are added or removed when the 'text' MIME media type registration permits a charset parameter,
than such a specification MUST be used (instead of printer is powered-down or
     shutdown, only the "notify-charset"
attribute) 'printer-shutdown' event is generated, in order
     to indicate keep the charset events disjoint.

     A client that wants to be used subscribe to all printer state changes,
     including restart and power-down/shutdown, includes the 'printer-
     restarted', 'printer-state-changed', and 'printer-shutdown' in the
     notification content.

If the Subscriber did not supply this attribute subscription.

                 Expires September 8, 2000
  'printer-media-changed':  OPTIONAL - when requesting the
subscription, media loaded on a
     printer has been changed, i.e., the Printer object populates this Subscription object "media-ready" attribute has
     changed.  This event includes both an actual media change and
     filling an empty input tray with either the 'none' value same or one of the values of different media.  The
     client must check the
Printer's "notify-text-format-supported" "media-ready" Printer attribute (see [ipp-
     mod] section 6.5),
depending on whether 4.2.11) separately to find out what new media was
     loaded or not the delivery method specified in filled.

  'printer-config-changed':  OPTIONAL - when the
"notify-recipient" attribute is defined to have configuration of a Machine Consumable
format (usual), respectively.  In the latter case,
     Printer has changed, i.e., the value selected
depends on the implementation.

Standard mimeMediaType values are:

     'none':  Indicates that the notification content is not to be any of the text types, i.e., that the Machine Consumable, not the Human
     Consumable, form is to be sent.  If the client omits supplying this
     attribute, the meaning is the same as if the client supplied the
     'none' value.

     'text/plain; charset=utf-8':  A plain text document in ISO 10646
          represented as UTF-8 [RFC2279] as defined in section 7.

     'text/html':  An HTML document [rfc????].

5.4 subscriber-user-data (octetString(63))

This REQUIRED READ-ONLY Subscription object "printer-message-from-
     operator" or any non-READ-ONLY Printer attribute holds opaque
information being sent from the Subscriber to the Notification
Recipient, such as the identify of has changed,
     except for "media-ready" (which has its own event), whether through
     the Subscriber Set-Printer-Attributes operation or by other means and whether
     initiated by a path human or index not.  For example, any "xxx-supported",
     "xxx-default", "printer-message-from-operator", etc. values have
     changed.  The client has to
some Subscriber information.  Or it MAY contain perform a key that the
Notification Recipient needs in order Get-Printer-Attributes to process the Notification, such

                   Expires April 14, 2000

as the ultimate recipient, if
     find out the Notification Recipient new values of these changed attributes.  This event is a general
application that in turn forwards notifications
     useful for GUI clients and drivers to update the ultimate
recipient isn't included in available printer
     capabilities to the value user.

  'printer-queue-changed': OPTIONAL - the order of jobs in the "notify-recipient"
attribute.  An Instant Messaging Service is
     Printer's queue has changed, so that an example of such a general application where the "subscriber-user-data" might be the user's id for that messaging service and the "notification-recipient" is
     monitoring the URL of queue can perform a Get-Jobs operation to determine
     the messaging service.

5.5 notify-charset (charset) new order.  This OPTIONAL READ-ONLY Subscription object attribute specifies the
charset to be used in event does not include when a job enters the Notification content sent to
     queue (the 'job-created' event covers that) and does not include
     when a job leaves the Notification
Recipient, whether queue (the 'job-completed' event covers
     that).

  'printer-no-longer-full':  OPTIONAL - when the notification content is Machine Consumable Printer can now accept
     a Print-Job, Print-URI, Create-Job, Send-Document, or
Human Consumable. Send-URI
     request.  This attribute MUST NOT be event is used when there is more than one client
     feeding a printer/server (fan-in), and the "notify-
text-format" attribute value specifies the charset parameter in its MIME
media type value, e.g., 'text/plain; charset=utf-8'.

5.6 notify-natural-language (naturalLanguage) Printer may still be
     printing but has acquired more buffer space to accept jobs.  This OPTIONAL READ-ONLY Subscription object attribute specifies the
natural language for
     event only occurs when the IPP object Printer did not have room to use accept jobs
     previously and rejected a Print-Job, Print-URI, Create-Job, Send-
     Document, or Send-URI operation.

  'printer-almost-idle':  OPTIONAL - when the Printer needs another Job
     in order to stay busy.  This event is used when a spooler is
     feeding more than one printer/server (fan-out), and the Notification content
that spooler
     holds jobs until a Printer requests them, rather than committing
     jobs to IPP Printers before it is sent necessary.  This event MAY be
     used by a Printer implementation to request a new job from any
     subscribers sufficiently ahead of time so that the Notification Recipient, whether the notification
content is Machine Consumable or Human Consumable.

5.7 request-id device does not
     run out of work between jobs.

5.3 notify-format (mimeMediaType)

This REQUIRED READ-ONLY Subscription object attribute holds indicates the most
recent request-id sequence number delivered in a Notification MIME
Media type of Human Consumable and/or Machine Consumable format content
that is to
the Notification Recipient.  A value of 0 indicates that no
Notifications have been sent for this subscription.  The first request-
id be sent in the Notifications for a subscription MUST be 1.  Each the Notification Recipient has
its own monotonically increasing series Content
that is under control of request-ids, i.e., no gaps,
in order to be able to detect a missing notification.

5.8 subscription-id (integer (1:MAX))

This REQUIRED READ-ONLY Subscription object attribute uniquely
identifies this Subscription object instance the Subscriber.  Depending on the delivery
method definition document, this Printer object attribute MAY specify the MIME Media

                 Expires September 8, 2000

type for the entire Notification Content, or
this Job object.  The Printer object, on acceptance of just a Create-Job-
Subscription or Create-Printer-Subscription request, generates an ID portion that is
controllable by the subscriber, if there is a fixed part as well.  For
example, if the entire Notification Content is always a fixed Machine
Consumable MIME Media type, such as the 'ipp:' delivery method which identifies
uses the new Subscription object on that Printer or Job.
The Printer returns 'application/ipp' MIME Media type (see [indp-method]), then
this attribute controls the value format of the "subscription-id" "human-readable-report"
(text(MAX)) Notification Content attribute as part
of (see section 7.2) in the response to a Create-Job-Subscription or Create-Printer-
Subscription request.  The 0 value
Machine Consumable form.  As another example, if the Notification
Content is not included to allow for
compatibility always a Human Consumable format content with "job-id" and a MIME Media
attachment, such as with SNMP index values which also cannot
be 0.

It is RECOMMENDED that Per-Printer Subscription objects be persistent.
Then the Subscription objects including 'mailto:' delivery method [ipp-method-
mailto], this attribute controls the subscription-id remains
unique across power-cycles.  Even if an implementation does not make
Per-Printer subscription objects persist, the implementation SHOULD make
every attempt not to re-use subscription ids that subscribers might

                   Expires April 14, 2000

still think are valid.  In other words, format of the Printer SHOULD at least keep attachment.

If the next subscription-id to 'text' MIME media type registration permits a charset parameter,
than such a specification MUST be assigned in non-volatile memory.  Note:
it is assumed that Per-Job subscriptions are persistent if Jobs are
persistent, used (instead of the "notify-charset"
attribute - see section 5.5) in order to be consistent with indicate the persistency of Job
objects.  The [ipp-mod] RECOMMENDS that Job objects charset to be persistent.

5.9 notify-lease-expiration-time (integer(0:MAX))

This REQUIRED READ-ONLY Subscription object attribute specifies the time used
in the future when the subscription lease will expire, i.e., notification content.

If the
"printer-up-time" value at which Subscriber did not supply this attribute when requesting the lease will expire.  When
subscription, the Printer object creates a Per-Printer Subscription object, it populates this Subscription object
attribute with either the appropriate value.  When the indicated time
arrives, the Printer MUST delete the Per-Printer Subscription object.
Per-Job Subscription objects always return a 'none' out-of-band value of 0 since Per-Job
Subscriptions don't have a lease, but exist for the life-time (see section 10.1) or
one of the Job
instead.

A client is able to extend a lease values of a Per-Printer subscription using the Renew-Subscription operation Printer's "notify-format-supported" attribute
(see section 8.3.3).  A value of 0
indicates an infinite time, if such a policy 6.5), depending on the delivery method and implementation,
since there is supported as indicated no "notify-format-default" defined in the "notify-lease-time-supported" (integer(0:MAX)) Printer
Description attribute this document.

Standard mimeMediaType values are:

  'none':  This out-of-band value (see section 6.8) and 10.1) indicates that the subscriber
     Subscriber-controllable part of the Notification content is authorized not to request an infinite lease.  A Per-Job subscription cannot
     be renewed.

Note: In order to compute the number of seconds remaining sent.
  'text/plain; charset=utf-8':  Human Consumable plain text containing
     characters from ISO 10646 represented as UTF-8 [RFC2279] as defined
     in a Per-
Printer Subscription lease, a client can subtract the "notify-printer-
up-time" Subscription object attribute (see section 5.12) from the
"notify-lease-expiration-time" Subscription object attribute.

5.10printer-uri (uri) 7.1.1.
  'text/html':  Human Consumable HTML data [RFC1866] as defined in
     section 7.1.1.
  'text/xml':  Machine Consumable XML data [RFC2376] as defined in
     section 7.1.2.
  'application/ipp':  Machine Consumable IPP request as defined in
     section 7.1.2 data encoded as in [ipp-pro].
  'application/postscript':  Human Consumable PostScript [RFC2046]
  'image/tiff': Human Consumable image data [RFC2302]

5.4 subscriber-user-data (octetString(63))

This REQUIRED READ-ONLY Subscription object attribute identifies holds opaque
information being sent from the
Printer object that created this Subscription object.  When a Printer
object creates Subscriber to the Notification
Recipient, such as the identify of the Subscriber or a Subscription object, path or index to
some Subscriber information.  Or it populates this attribute with MAY contain a key that the Printer object URI
Notification Recipient needs in order to process the Notification, such
as the ultimate recipient, if the Notification Recipient is a general
application that was used in turn forwards notifications and the create request.  This
attribute permits ultimate
recipient isn't included in the value of the "notify-recipient"
attribute.  An Instant Messaging Service is an example of such a client to identify general
application where the Printer object URI "subscriber-user-data" might be the user's id for

                 Expires September 8, 2000

that was
used to create this Subscription object, i.e., what security scheme was
used.

5.11subscriber-user-name (name(MAX)) messaging service and the "notification-recipient" is the URL of
the messaging service.

5.5 notify-charset (charset)

This OPTIONAL READ-ONLY Subscription object attribute contains specifies the name
of the user that created the Subscription object.  The Printer object
sets this attribute
charset to be used in the most authenticated printable name that it can
obtain from Notification content sent to the authentication service over which Notification
Recipient, whether the IPP operation was
received. notification content is Machine Consumable or
Human Consumable.  This attribute is intended to help a human user determine for
which Per-Printer Subscriptions they are the Subscriber.  Only if such
is not available, does the Printer object use MUST NOT be used when the "notify-
format" attribute value supplied by specifies the
client charset parameter in the "requesting-user-name" operation its MIME
media type value, e.g., 'text/plain; charset=utf-8'.

5.6 notify-natural-language (naturalLanguage)

This OPTIONAL READ-ONLY Subscription object attribute of the create
operation (see [IPP-MOD] Sections 4.4.2, 4.4.3, and 8).  For Per-Job
subscriptions created as part of specifies the Job creation operation,
natural language for the value

                   Expires April 14, 2000

of IPP object to use in the "subscriber-user-name" Notification content
that is sent to the same as Notification Recipient, whether the "job-originating-user-
name" Job notification
content is Machine Consumable or Human Consumable.

5.7 subscription-request-id

This REQUIRED READ-ONLY Subscription object attribute (see [ipp-mod] section 4.3.6).

The value of holds the "subscriber-user-name" is implementation dependent when
a server accepts most
recent request-id sequence number delivered in a request and forwards it Notification content to a downstream IPP Printer
(see Figure 2 and
the [ipp-iig]).

Note: Notification Recipient.  A value of 0 indicates that no
Notifications have been sent for this subscription.  The Printer object needs to keep an internal originating user first request-
id
of some form, typically as a credential of sent for a principal, with the
Subscription object.  Since such an internal attribute is
implementation-dependent and not subscription MUST be 1.  Each Notification Recipient
receives its own monotonically increasing series of interest request-ids
operation parameters (see [ipp-mod] section 3.1.2), i.e., no gaps, in
order to clients, it is not
specified as be able to detect a Subscription Description attribute.  This originating
user id is used for authorization checks (if any) on all subsequent
operations.

5.12notify-printer-up-time (integer(1:MAX)) missing notification.

5.8 subscription-id (integer (1:MAX))

This REQUIRED READ-ONLY Subscription object attribute indicates the
amount of time (in seconds) that the uniquely
identifies this Subscription object instance on this Printer implementation has been up
and running.  This attribute is an alias for the Printer's "printer-up-
time" attribute" (see [ipp-mod] section 4.4.29), in an analogous way
that the Job's "job-printer-up-time" is an alias for "printer-up-time"
(see [ipp-mod] section 4.3.13.4).

Note:  A client can request object or
this attribute in Job object.  The Printer object, on acceptance of a Get-Subscription-
Attributes Create-Job-
Subscription or Get-Subscriptions request and use the value returned in
combination with the "notify-lease-expiration-time" (see section 5.9) in
order to display wall clock time equivalent to Create-Printer-Subscription request, generates an ID
which identifies the user. new Subscription object on that Printer or Job.
The difference
between this attribute and Printer returns the 'integer' value of the "notify-lease-
expiration-time" "subscription-id" attribute is the number as part
of seconds in the future that
the subscription will expire.  A client can compute the wall-clock time
at which the subscription will expire by adding this difference response to the
client.s wall-clock time.

5.13notify-persistence-granted (boolean)

This REQUIRED Subscription object attribute whether or not the Per-Job a Create-Job-Subscription or Per-Printer Create-Printer-
Subscription request.  The 0 value is persistent, i.e., saved across power
cycles in an implementation-define manner.

6  Printer Description Attributes related not included to Notification

This section defines allow for
compatibility with "job-id" and with SNMP index values which also cannot
be 0.

It is RECOMMENDED that Per-Printer Subscription objects be persistent.
Then the Printer Description attributes Subscription objects including the subscription-id remains
unique across power-cycles.  Even if an implementation does not make
Per-Printer subscription objects persist, the implementation SHOULD make
every attempt not to re-use subscription ids that subscribers might
still think are related
to Notification.  Table 3 lists valid.  In other words, the Printer Description attributes and
indicates SHOULD at least keep
the Printer support required for conformance:  "R" indicates
REQUIRED, "O" indicates OPTIONAL, and "CR" indicates CONDITIONALLY
REQUIRED, i.e., required next subscription-id to be assigned in non-volatile memory.  Note:
it is assumed that Per-Job subscriptions are persistent if Human Consumable notification formats Jobs are
supported.

                 Expires April 14, September 8, 2000
 Table 3 - Printer Description attributes associated

persistent, in order to be consistent with Notification

     Printer object attributes:            Print READ-ONLY, set by:
                                            er
                                            suppo
                                            rt

     notify-schemes-supported (1setOf      R     Administrator/implem
     uriScheme)                                   entation

     notify-events-default (1setOf type2   R     Administrator/implem
     keyword)                                     entation

     notify-events-supported (1setOf type2 R     Administrator/implem
     keyword)                                     entation

     max-events-supported (integer(5:MAX)) R     Administrator/implem
                                                   entation

     notify-text-format-supported (1setOf  CR    Administrator/implem
     mimeMediaType)                               entation

     max-job-subscriptions-supported       R     Administrator/implem
     (integer(1:MAX))                             entation

     max-printer-subscriptions-supported   R     Administrator/implem
     (integer(0:MAX))                             entation

     notify-lease-time-supported           R     Administrator/implem
     (rangeOfInteger(0:MAX))                      entation

     notify-lease-time-default             R     Administrator/implem the persistency of Job
objects.  The [ipp-mod] RECOMMENDS that Job objects be persistent.

5.9 notify-lease-expiration-time (integer(0:MAX))                             entation

     persistent-jobs-supported (boolean)   O     Administrator/implem
                                                   entation

     persistent-subscriptions-supported    O     Administrator/implem
     (boolean)                                    entation

     printer-state-change-time             O     Administrator/implem
     (integer(1:MAX))                             entation

     printer-state-change-date-time        O     Administrator/implem
     (dateTime)                                   entation

6.1 notify-schemes-supported (1setOf uriScheme)

This REQUIRED Printer READ-ONLY Subscription object attribute describes specifies the notification delivery
methods supported by this Printer object. Standard values are defined time
in
Section 5.1).

6.2 notify-events-default (1setOf type2 keyword)

This REQUIRED Printer attribute identifies the event values if the
client does not supply future when the "notify-events" operation attribute in either
a Job creation request, Create-Job-Subscription, or subscription lease will expire, i.e., the Create-Printer-

                   Expires April 14, 2000

Subscription request.  Any
"printer-up-time" value in this attribute MUST also appear in at which the notify-events-supported attribute, i.e., be a supported event.

6.3 notify-events-supported (1setOf type2 keyword)

This REQUIRED Printer attribute identifies lease will expire.  When the events supported by this
Printer object for both Per-Job and creates a Per-Printer subscriptions which MUST
be Subscription object, it populates
this attribute with the appropriate value.  When the indicated time
arrives, the same.  Standard values are defined in Section 5.2.

6.4 max-events-supported (integer(5:MAX))

This REQUIRED Printer attribute specifies MUST delete the maximum number of events
that are supported in Per-Printer Subscription object.
Per-Job Subscription objects always return a single value of 0 since Per-Job or Per-Printer subscription which
must be
Subscriptions don't have a lease, but exist for the same. life-time of the Job
instead.

A Printer MUST support at least 5 events per
subscription, so that clients can depend on at least 5 events in client is able to extend a
single subscription.  If lease of a Per-Printer subscription using
the number Renew-Subscription operation (see section 8.3.3).  A value of events supplied by 0
indicates an infinite time, if such a client policy is supported as indicated
in a
subscription exceed this number, the "notify-lease-time-supported" (integer(0:MAX)) Printer rejects the request and
returns the 'server-error-too-many-events
Description attribute (see section 14.4).  If
notification 6.8) and the subscriber is not supported, this attribute MUST NOT authorized
to request an infinite lease.  A Per-Job subscription cannot be supported.

6.5 notify-text-format-supported (1setOf mimeMediaType)

This CONDITIONALLY REQUIRED Printer attributes identifies renewed.

Note: In order to compute the MIME media
types supported for Human Consumable notification content for those
notification delivery methods that support Human Consumable format (most
do).  If an implementation supports any Human Consumable formats, it
MUST support this attribute and MUST support those Human Consumable
formats for all notification delivery methods that permit number of seconds remaining in a Human
Consumable format.  If Per-
Printer Subscription lease, a client can subtract the implementation does not support any Human
Consumable MIME media types, then "notify-server-up-
time" Subscription object attribute (see section 5.12) from the 'none' MUST be "notify-
lease-expiration-time" Subscription object attribute.

5.10printer-uri (uri)

This REQUIRED READ-ONLY Subscription object attribute identifies the only value of
Printer object that created this attribute or Subscription object.  When a Printer
object creates a Subscription object, it populates this attribute MUST NOT be supported at all.

A with
the Printer object URI that was used in the create request.  This
attribute permits a client can determine to identify the Printer object URI that was
used to create this Subscription object, i.e., what formats are supported for a notify-scheme as
follows.  The implementation security scheme was
used.

5.11subscriber-user-name (name(MAX))

This REQUIRED READ-ONLY Subscription object attribute contains a hard coding the name
of the Machine
Consumable format (obtained from user that created the specification).  If Subscription object.  The Printer object
sets this attribute to the hard coding
(obtained most authenticated printable name that it can
obtain from the specification) prohibits authentication service over which the IPP operation was
received.  This attribute is intended to help a Human Consumable format human user determine for
which Per-Printer Subscriptions they are the notify-scheme, or Subscriber.  Only if such
is not available, does the printer doesn't support Printer object use the "notify-text-
format-supported" attribute, there are no Human Consumable  formats for
any notify-scheme.  Otherwise, value supplied by the
client in the "requesting-user-name" operation attribute "notify-text-formats-
supported" specifies of the supported mime types for those delivery schemes
that are supported create
operation (see [IPP-MOD] Sections 4.4.2, 4.4.3, and permit a Human Consumable format.

Note:  The rationale for 8).  For Per-Job
subscriptions created as part of the "notify-text-format-supported" attribute Job creation operation, the value
of the "subscriber-user-name" is
that the Machine Consumable format seems easy to pick for each notify-
scheme and thus easy to document.  It same as the "job-originating-user-
name" Job attribute (see [ipp-mod] section 4.3.6).

                 Expires September 8, 2000

The value of the "subscriber-user-name" is easy for implementation dependent when
a printer server accepts a request and forwards it to support
most Machine Consumable formats.  It is much harder a downstream IPP Printer
(see Figure 2 and the [ipp-iig]).

Note:  The Printer object needs to support keep an internal originating user id
of some form, typically as a Human
Consumable format because credential of localization issues.  Once a principal, with the code
Subscription object.  Since such an internal attribute is
written
implementation-dependent and not of interest to support a particular Human Consumable format, clients, it is easy to
transmit it on any of the supported notify-schemes.  Thus, if a vendor
decides to support not
specified as a notify-scheme, it has already committed to
implement the Machine Consumable format. Subscription Description attribute.  This may be simple if existing

                   Expires April 14, 2000

code can be reused, e.g. application/ipp and or more difficult if new
code must be written, e.g. it originating
user id is SNMP.

6.6 max-job-subscriptions-supported used for authorization checks (if any) on all subsequent
operations.

5.12notify-server-up-time (integer(1:MAX))

This REQUIRED Printer READ-ONLY Subscription object attribute specifies indicates the maximum number
amount of Per-Job
subscriptions time (in seconds) that are supported for a job, i.e., the maximum number of
collection values Printer or Notification Delivery
Service implementation has been up and running.  This attribute is an
alias for the "job-notify" operation attribute, and/or Printer's "printer-up-time" attribute" (see [ipp-mod]
section 4.4.29) if the
maximum number of subsequent Create-Job-Subscription operation requests
in combination for a job.  A value of 0 indicates no effective maximum.
A Printer MUST support at least 1 Per-Job subscription.  If the number
of Per-Job subscriptions supplied by a client in a Job Creation request
exceeds is keeping the value of this attribute Subscription objects or would exceed some implementation-
defined total number of Per-Job Subscriptions is
the up time for the Printer, Notification Delivery Service if the Printer MUST accept has
delegated the Job Creation and ignore responsibility for keeping Subscription objects to a
notification delivery service, in an analogous way that the excess
subscriptions.  If Job's "job-
printer-up-time" is an alias for "printer-up-time" Printer attribute
(see [ipp-mod] section 4.3.13.4).

Note:  The purpose of this attribute is so that a subsequent Create-Job-Subscription client can request would
exceed
this number, the Printer rejects the attribute in a Get-Subscription-Attributes or Get-Subscriptions
request and returns use the
'server-error-too-many-subscriptions' value returned in combination with the "notify-
lease-expiration-time" (see section 14.3).

6.7 max-printer-subscriptions-supported (integer(0:MAX))

This REQUIRED Printer 5.9) in order to display the wall
clock time equivalent to the user.  The difference between this
attribute specifies and the maximum number 'integer' value of Per-
Printer subscriptions that are supported by multiple Create-Printer-
Subscription requests, i.e., the maximum "notify-lease-expiration-time"
attribute is the number of un-expired Per-
Printer Subscription objects seconds in the future that the Printer supports at a time.  A
value of 0 indicates no effective maximum. subscription
will expire.  A Printer MUST support at
least 1 Per-Printer subscription.  If client can compute the number of Per-Printer
subscriptions exceeds wall-clock time at which the value of
subscription will expire by adding this difference to the client.s wall-
clock time.

5.13notify-persistence-granted (boolean)

This REQUIRED READ-ONLY Subscription object attribute indicates whether
or not the Per-Job or would exceed some
implementation-defined total number of Per-Printer Subscriptions for Subscription is persistent, i.e.,
saved across power cycles in an implementation-define manner.

6  Printer Description Attributes related to Notification

This section defines the Printer (if any), Description attributes that are related
to Notification.  Table 3 lists the Printer rejects Description attributes and
indicates the Create-Printer-Subscription
request Printer support required for conformance and returns whether or
not the 'server-error-too-many-subscriptions' (see
section 14.3).

6.8 attribute is READ-ONLY:  .

                 Expires September 8, 2000
 Table 3 - Printer Description attributes associated with Notification

Printer object attributes:                           Printer    READ-
                                                      support    ONLY?

notify-schemes-supported (1setOf uriScheme)          REQUIRED   no

notify-events-default (1setOf type2 keyword)         REQUIRED   no

notify-events-supported (1setOf type2 keyword)       REQUIRED   no

max-events-supported (integer(5:MAX))                REQUIRED   no

notify-format-supported (1setOf mimeMediaType)       REQUIRED   no

max-job-subscriptions-supported (integer(0:MAX))     REQUIRED   no

max-printer-subscriptions-supported (integer(0:MAX)) REQUIRED   no

notify-lease-time-supported (rangeOfInteger(0:MAX))  REQUIRED   no

notify-lease-time-default (integer(0:MAX))           REQUIRED   no

persistent-jobs-supported (boolean)                  OPTIONAL   no

persistent-subscriptions-supported (boolean)         OPTIONAL   no

printer-state-change-time (integer(1:MAX))           PTIONAL    yes

printer-state-change-date-time (dateTime)            OPTIONAL   yes

6.1 notify-schemes-supported (1setOf uriScheme)

This REQUIRED Printer attribute specifies describes the range of notification delivery
methods supported by this Printer object. Standard values in seconds
that are supported for defined in
Section 5.1.

6.2 notify-events-default (1setOf type2 keyword)

This REQUIRED Printer attribute identifies the "notify-lease-time-requested" event values if the
client does not supply the "notify-events" operation attribute in a Create-Printer-Subscription or Renew-Subscription request
for a Per-Printer subscription.  When the lease time expires for a Per-
Printer
Subscription without renewing, the Printer Creation operation.  Any value in this attribute MUST delete the
Subscription object.  If the client requests a value outside this range,
the Printer MUST grant a value that is also
appear in this range (see section 5.9).
A value of 0 indicates an infinite lease, the "notify-events-supported" attribute, i.e., one that does not
expire.

6.9 notify-lease-time-default (integer(0:MAX)) be a supported
event.

6.3 notify-events-supported (1setOf type2 keyword)

This REQUIRED Printer attribute specifies the value of the lease time
that identifies the events supported by this
Printer object has been configured to assume if for both Per-Job and Per-Printer subscriptions which MUST
be the client does
not supply a "notify-lease-time-requested" operation attribute same.  Standard values are defined in the
Create-Printer-Subscription or Renew-Subscription requests. Section 5.2.

                 Expires April 14, September 8, 2000

6.10persistent-jobs-supported (boolean)

6.4 max-events-supported (integer(5:MAX))

This OPTIONAL REQUIRED Printer attribute indicates whether or not specifies the Printer
supports persistent Jobs, i.e., Jobs object that are preserved across
power cycles.  If Jobs are persistent, then Per-Job Subscriptions MUST
also be persistent, since they are part maximum number of the Job object.  It is
RECOMMENDED events
that Jobs (and are supported in a single Per-Job Subscriptions) be persistent.

6.11persistent-subscriptions-supported (boolean)

This OPTIONAL Printer attribute indicates whether or not the Printer
supports persistent Per-Printer Subscriptions, i.e., Subscription
objects that are preserved across power cycles.  When this value is
'true' subscription which
must be the implementation MAY same.  A Printer MUST support some that are persistent and some at least 5 events per
subscription, so that are not. clients can depend on at least 5 events in a
single subscription.  If the value is 'false' or number of events supplied by a client in a
subscription exceed this number, the attribute Printer rejects the request and
returns the 'client-error-too-many-events (see section 15.4).  If
notification is not supported, Per-Printer Subscriptions this attribute MUST NOT be persistent.  It is
RECOMMENDED that Per-Printer subscriptions be persistent.

6.12printer-state-change-time (integer(1:MAX)) supported.

6.5 notify-format-supported (1setOf mimeMediaType)

This OPTIONAL REQUIRED Printer attribute records the time, i.e., copy of attributes identifies the
Printer's "printer-up-time" attribute, MIME media types
supported for Human Consumable and/or Machine Consumable notification
content that the Printer's "printer-
state" attribute was last changed.  On power-up, subscriber can control, if any.  If the Printer populates Notification
content is fixed by the "printer-state-change-time" from its "printer-up-time" attribute, so implementation, then the value of this attribute
is that it always MIME media type, if is has a value.

6.13printer-state-change-date-time (dateTime)

This OPTIONAL Printer attribute records been registered, or the date and time, i.e., copy of 'none' out-
of-band value (see section 10.1) otherwise.  See the Printer's "printer-current-time" attribute, that definition of the Printer's
"printer-state"
"notify-format" attribute was last changed.  On power-up, in section 5.3 for details and some example
values.

Not all formats listed in the Printer
populates "notify-format-supported" attribute need
be available with all delivery methods specified in the "printer-state-change-date-time" from its "printer-
current-time" attribute, so that it always has "notify-schemes-
supported".  However, all Human Consumable formats, if any, SHOULD be
available with all delivery methods.  It is much harder to support a value.

7  Notification Content

This section defines
Human Consumable format because of localization issues.  Once the Notification content that code
is sent written to support a
Notification Recipient when an event occurs.  The Notification MAY be
sent by particular Human Consumable format, it is easy
to transmit it on any of the IPP Printer or supported notify-schemes.  Thus, if a third party Notification Service (see
section 2.3).

There are two notification content types:
vendor decides to support a notify-scheme, it has already committed to
implement the Machine Consumable and Human
Consumable, i.e., 'text' MIME media type.  For most notification
delivery methods both content types are defined.  Each Notification
Content type will either define one specific Machine Consumable form
(usual) format.  This may be simple if existing
code can be reused, e.g. application/ipp and or indicate that no Machine Consumable form more difficult if new
code must be written, e.g., it is defined.  In
addition, each Notification Content type will indicates whether (usual)
or not Human Consumable forms are permitted.  But the definition will
not define SNMP.

6.6 max-job-subscriptions-supported (integer(0:MAX))

This REQUIRED Printer attribute specifies the Human Consumable forms.  For those Human Consumable forms maximum number of Per-Job
subscriptions that are supported for a Printer implementation supports as indicated in job, i.e., the Printer's
"notify-text-format-supported" attribute, it MUST support maximum number of
collection values for all

                   Expires April 14, 2000

Notification Content formats supported that permit Human Consumable
form.

7.1 Notification content MIME media type formats

This section defines the Notification content that the Notification
Source sends asynchronously to each Notification Recipient based on the
subscription information stored with "job-notify" operation attribute, and/or the subscription.  The Notification
is either
maximum number of subsequent Create-Job-Subscription operation requests
in combination for a Machine Consumable or Human Consumable form.

7.2 Machine Consumable form job.  A value of 0 indicates no effective maximum.
A Printer MUST support at least 1 Per-Job subscription.  If the notification delivery method is defined to have number
of Per-Job subscriptions supplied by a Machine
Consumable form and that form is defined to be the 'application/ipp'
MIME media type [ipp-mod], then client in a Job Creation request
exceeds the following rules apply:

The notification content MUST use value of this attribute or would exceed some implementation-
defined total number of Per-Job Subscriptions for the 'application/ipp' MIME media type
[ipp-mod] using Printer, the
Printer MUST accept the Get-Job-Attributes response encoding for job events
and Get-Printer-Attributes response for printer events.  The attributes
listed in sections 7.4 and 7.5 are sent in an notification for Job
events.  The attributes listed in sections 7.4 Creation and 7.6 are sent in an
notification for ignore the excess
subscriptions.  If a subsequent Create-Job-Subscription request would
exceed this number, the Printer events.  For any 'text' or 'name' attribute
value in any notification, rejects the charset request and natural language rules that
apply returns the
'client-error-too-many-subscriptions' (see section 15.3).

If a Printer does not support Per-Job Subscriptions, it MUST NOT support
this attribute.  The usual way for a client to all determine whether an IPP operations apply
Printer supports a feature is to these attributes as well, since
they are represented as operation responses.  The Unsupported Attributes
Group in query the response Printer's "operations-

                 Expires September 8, 2000

supported" attribute.  However, there is not sent.  If the values of any of no new REQUIRED operation for
Per-Job Subscriptions.  Therefore, the
attributes sent in an notification content are RECOMMENDED way for a client to
determine whether or not known, the value sent
in the report content a Printer supports Per-Job Subscriptions is to
query this attribute to see if it is supported (since the out-of-band 'unknown' value, rather than
omitting the Create-Job-
Subscriptions is an OPTIONAL operation).

6.7 max-printer-subscriptions-supported (integer(0:MAX))

This REQUIRED Printer attribute (see specifies the beginning maximum number of [ipp-mod] section 4.1).

Issue 2 -  Should we change the Notification Model to allow notification
delivery methods Per-
Printer subscriptions that are request and response (in addition to supported by multiple Create-Printer-
Subscription requests, i.e., the
current model which has only one-directional notification delivery using maximum number of un-expired Per-
Printer Subscription objects that the 'application/ipp' operation response format?

Issue 3 - Printer supports at a time.  A
value of 0 indicates no effective maximum.  A Printer MUST support at
least 1 Per-Printer subscription.  If the answer to Issue 2 is yes, should we change number of Per-Printer
subscriptions exceeds the format value of this attribute or would exceed some
implementation-defined total number of Per-Printer Subscriptions for the notification content using 'application/ipp' to always be a (new)
Send-Notification operation request, whether
Printer (if any), the scheme returns a
response or not?

An implementation MAY extend Printer rejects the contents of Create-Printer-Subscription
request and returns the Machine Consumable
notification by adding additional attributes.

7.3 Human Consumable form 'client-error-too-many-subscriptions' (see
section 15.3).

If the notification delivery method is defined to permit Human
Consumable forms a Printer does not support Per-Printer Subscriptions, then it MUST
NOT support this attribute.  None the following RECOMMENDATIONS apply:

The text message SHOULD include information about less, the attributes in
sections 7.4 and 7.5 RECOMMENDED way for job events a
client to determine whether or in sections 7.4 and 7.6 for
printer events.  This information not a Printer supports Per-Printer
Subscriptions is localized according to query the
information about natural language and charset in the subscription.

                   Expires April 14, 2000

An implementation MAY extend the contents of a Human Consumable
notification by adding additional information.

7.4 Notification content attributes common "operations-supported" to Job and Printer events see if the
Create-Printer-Subscriptions operation is supported, rather than
querying this attribute.

6.8 notify-lease-time-supported (rangeOfInteger(0:MAX))

This section lists REQUIRED Printer attribute specifies the parameters and attributes range of values in seconds
that are included in
both Job and Printer event Notifications.  Some events do not include
all of these attributes as shown supported for the "notify-lease-time-requested" operation
attribute in Table 4.  Each notification content
contains a single Job Create-Printer-Subscription or Printer event, whether that event was
subscribed using Renew-Subscription request
for a Per-Printer subscription.  When the Job Submission lease time expires for a Per-
Printer Subscription mechanism or without renewing, the Per- Printer subscription mechanism. MUST delete the
Subscription object.  If either kind of subscription
subscribed to both Job and the client requests a value outside this range,
the Printer events, then they will be sent as
separate Job notification content and MUST grant a value that is in this range (see section 5.9).
A value of 0 indicates an infinite lease, i.e., one that does not
expire.

6.9 notify-lease-time-default (integer(0:MAX))

This REQUIRED Printer notification contents to attribute specifies the same Notification Recipient.  References value of the form "mod m.n.o"
refer lease time
that the Printer object has been configured to [ipp-mod] sections.

Table 4 lists assume if the attributes that are defined for use client does
not supply a "notify-lease-time-requested" operation attribute in Notifications
and indicates the
Create-Printer-Subscription or Renew-Subscription requests.

6.10persistent-jobs-supported (boolean)

This OPTIONAL Printer support required for conformance:  "R"
indicates REQUIRED and "O" attribute indicates OPTIONAL.

    Table 4 - Common Job and whether or not the Printer Notification content attributes

                                     Reference     Events

Attributes                                       'job-      all
                                                 progress'  others

                                                 R          R
1. version-number (integer         mod 3.1.1
  (0:32767))

                                                 R          R
2. status-code (integer            mod 3.1.1
  (0:32767))

3. request-id (integer (0:MAX))    5.7 & mod     R          R
                                   3.1.1

4. attributes-charset (charset)    5.5 & mod     R          R
                                   3.1.4

5. attributes-natural-language     5.6 & mod     R          R
  (naturalLanguage)               3.1.4

                                                 R          R
6. printer-uri (uri)               5.10

                                                             R
7. printer-name (name(127))        mod 4.4.4

                                                 R          R**
8. job-id (integer(1:MAX))         mod 4.3.2

                                                             R**
9. job-name (name(MAX))            mod 4.3.5
supports persistent Jobs, i.e., Jobs object that are preserved across
power cycles.  If Jobs are persistent, then Per-Job Subscriptions MUST

                 Expires April 14, September 8, 2000
                                     Reference     Events

Attributes                                       'job-      all
                                                 progress'  others

10.trigger-event (type2 keyword)   5.2           R          R

11.trigger-time                                  R          R
  (integer(MIN:MAX))

12.trigger-date-time (dateTime)                              O

13.subscription-id                 5.8           R          R
  (integer(1:MAX))

                                                 O          O
14.subscriber-user-name            5.11
  (name(MAX))

15.subscriber-user-data            5.4           R          R
  (octetString(63))

Attribute Notes:

"status-code" - a value

also be persistent, since they are part of 600 for a the Job event and 601 for a Printer
     event.

"request-id" - object.  It is
RECOMMENDED that Jobs (and Per-Job Subscriptions) be persistent.

As with any settable attribute, if the sequence number for Printer supports setting this subscription, starting at 1
     for each subscription.

"attributes-charset" -
attribute to more than one value, then the value comes from the "notify-charset"
     attribute in being set MUST control
whether or not the Subscription object.

"attributes-natural-language" - Printer keeps Jobs persistently as per the value comes from rules in
[ipp-set]).  As with any settable attribute, if the "notify-
     natural-language" Printer only
supports one value, it MAY support this attribute in either (1) as settable
to that one value, or as not-settable, depending on implementation (see
[ipp-set]).

6.11persistent-subscriptions-supported (boolean)

This OPTIONAL Printer attribute indicates whether or not the Printer
supports persistent Per-Printer Subscriptions, i.e., Subscription object.

"printer-uri" -
objects that are preserved across power cycles.  When this value is
'true' the implementation MAY support some that are persistent and some
that are not.  If the value comes from is 'false' or the "job-printer-uri" Job attribute
     for Per-Job subscriptions.

**"job-id" and "job-name" - included in Printer event Notifications only
     for Per-Job subscriptions.

"trigger-event" - the event is not
supported, Per-Printer Subscriptions MUST NOT be persistent.  It is
RECOMMENDED that caused Per-Printer subscriptions be persistent.

As with any settable attribute, if the Printer supports setting this Notification
attribute to be
     delivered.

"trigger-time" - more than one value, then the "printer-up-time" value when the event occurred.

"trigger-date-time" - being set MUST control
whether or not the "printer-current-time" value when Printer keeps Jobs persistently as per the event
     occurred - OPTIONAL to support.

"job-name" - SNMP delivery method can truncate to less than 255 octets,
     since rules in
[ipp-set]).  As with any settable attribute, if the Notification needs Printer only
supports one value, it MAY support this attribute either (1) as settable
to fit into 484 octets that one value, or so as not-settable, depending on some
     transports that SNMP is defined for.

"subscription-id" - the unique identifier for implementation (see
[ipp-set]).

6.12printer-state-change-time (integer(1:MAX))

This OPTIONAL READ-ONLY Printer attribute records the Subscription object on
     this Printer.

                   Expires April 14, 2000

"subscriber-user-name" - time, i.e., copy
of the subscriber user name Printer's "printer-up-time" attribute, that created the
     Subscription object.  SNMP delivery method can truncate to less
     than 255 octets, since Printer's
"printer-state" attribute was last changed.  On power-up, the Notification needs to fit into 484
     octets or Printer
populates the "printer-state-change-time" from its "printer-up-time"
attribute, so on some transports that SNMP is defined for.

"subscriber-user-data" - opaque user data that may identify either it always has a value.

6.13printer-state-change-date-time (dateTime)

This OPTIONAL READ-ONLY Printer attribute records the
     Subscriber and/or date and time,
i.e., copy of the ultimate Notification Recipient.

7.5 Additional Notification content attributes for Job events only

Table 5 lists the additional attributes Printer's "printer-current-time" (dateTime) attribute
(see [ipp-mod] section 4.4.30), that are included only in Job
event Notifications and indicates the Printer's "printer-state"
attribute was last changed.  On power-up, the Printer support required for
conformance:  "R" indicates REQUIRED, "O" indicates OPTIONAL, and "CR"
indicates CONDITIONALLY REQUIRED, i.e., REQUIRED in populates the
"printer-state-change-date-time" from its "printer-current-time"
attribute, so that it always has a value.

7  Notification if Content

This section defines the corresponding Job attributes are supported.  Some events do not
include all of these attributes as shown in Table 5.

Table 5 - Additional Notification content attributes for Job events only

                                                   Events

Attributes                              Reference 'job-  'job-   all
                                                   progre complet othe
                                                   ss'    ed'     rs

16.job-state (type1 enum)               mod 4.3.7 R      R       R

17.job-state-reasons (1setOf type2      mod 4.3.8 R      R       R
  keyword)

18.job-k-octets-processed               mod       O      O
  (integer(0:MAX))                      4.3.18.1

19.job-impressions-completed            mod       CR     CR
  (integer(0:MAX))                      4.3.18.2

20.job-media-sheets-completed           mod       CR     CR
  (integer(0:MAX))                      4.3.18.3

21.job-collation-type (type2 enum)      [ipp-     R
                                        prog]

22.sheet-completed-copy-number          [ipp-     R
  (integer(-2:MAX))                     prog]

23.sheet-completed-document-            [ipp-     R
  number(integer(-2:MAX))               prog]

24.impressions-interpreted (integer(-   [ipp-     R
  2:MAX))                               prog]

25.impressions-completed-current-copy   [ipp-     R
  (integer(-2:MAX))                     prog]

                   Expires April 14, 2000

7.6 Additional Notification content attributes for Printer events only

Table 6 lists the additional attributes that are included only in
Printer is sent to a
Notification Recipient when an event Notifications and indicates occurs.  The Notification MAY be

                 Expires September 8, 2000

sent by the IPP Printer support required
for conformance:  "R" indicates REQUIRED and "O" indicates OPTIONAL.

Table 6 - Additional or a third party Notification content attributes for Printer events
                                  only

                                                      Events

Attributes                              Reference all printer
                                                   events

26.printer-state (type1 enum)           mod       R
                                        4.4.11

27.printer-state-reasons (1setOf type2  mod       R
  keyword)                              4.4.12

28.printer-is-accepting-jobs (boolean)  mod       R
                                        4.4.23

8  Operations for notification

This Service (see
section defines all of 2.3).

There are two notification content types: Machine Consumable and Human
Consumable, i.e., 'text' MIME media type.  For most notification
delivery methods both content types are defined.  Each Notification
Content type will either define one specific Machine Consumable form
(usual) or indicate that no Machine Consumable form is defined.  In
addition, each Notification Content type will indicates whether (usual)
or not Human Consumable forms are permitted.  But the operations for notification.

8.1 Operations definition will
not define the Human Consumable forms.  For those Human Consumable forms
that a Printer implementation supports as indicated in the Printer's
"notify-format-supported" attribute, it MUST support for Per-Job Subscriptions only all
Notification Content formats supported that permit Human Consumable
form.

7.1 Notification content MIME media type formats

This section defines the operation requests and responses Notification content that are
related the Notification
Source sends asynchronously to Per-Job subscriptions and its Subscription object.   Section
8.3 defines each Notification Recipient based on the REQUIRED operation requests and responses associated
subscription information stored with the REQUIRED Per-Printer subscription and its Subscription object.

8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) and
     Validate-Job subscription.  The usual method for a client to associate one subscription with Notification
is either in a Job Human Consumable or Machine Consumable form.

7.1.1 Human Consumable form

If the notification delivery method is defined to specify the subscription when permit Human
Consumable forms such as the job is created.  For entire Notification Content or a Per-Job
Subscription, portion of
the client supplies Notification Content, such as either an attachment or the "job-notify (1setOf collection)"
operation "human-
readable-report" attribute with (see section 7.2) then the following
RECOMMENDATIONS apply:

The text message SHOULD include information about the member attributes listed in Table 7 with
any of the job creation operations (Create-Job, Print-Job, Print-URI),
plus Validate-Job (which doesn't create a
sections 7.2 and 7.3 for job events or subscription).  If the
client does not supply the "job-notify" attribute in the create
operation, there sections 7.2 and 7.4 for
printer events.  This information is no subscription made (either implicitly or
explicitly).

If a Printer does not support this notification specification, then it
MUST ignore localized according to the "job-notify" operation attribute
information about natural language and return it charset in the
response indicated as an attribute that is not supported.  See [ipp-mod]
section 3.1.7 for details on returning Unsupported Attributes.

                   Expires April 14, 2000
  Table 7 - Member attributes of subscription.

An implementation MAY extend the "job-notify" collection operation
                               attribute

Member attribute contents of "job-notify"      Referen  REQUIRED  Printer
collection                            ce       in        support
                                               request

notify-recipient (uri)                5.1      yes       REQUIRED

notify-events (1setOf type2 keyword)  5.2      no        REQUIRED

notify-text-format (mimeMediaType)    5.3      no        REQUIRED

subscriber-user-data                  5.4      no        REQUIRED
(octetString(63))

notify-charset (charset)              5.5      no        OPTIONAL

notify-natural-language               5.6      no        OPTIONAL
(naturalLanguage)

See a Human Consumable
notification by adding additional information.

7.1.2 Machine Consumable form

If the referenced sections for notification delivery method is defined to have a definition of these operation
attributes, since they are copied Machine
Consumable form and that form is defined to be the Subscription object as 'application/ipp'
MIME media type [ipp-mod], then the
Subscription Description attributes described in section 5.

The following rules apply to Per-Job subscriptions created as part of apply:

     1.The notification content MUST use the Job Creation operations:

1.Any subscription can contain 'application/ipp' MIME
       media type [ipp-mod] using one of: (1) the Get-Job-Attributes
       response encoding for job events, (2) Get-Printer-Attributes
       response for printer events, or both.

2.The Job Submission Subscription is only valid while the job is "not-
  completed".  The (3) a new Sent-Notifications
       operation for both job is "not-completed" while it is and printer events.

     2.The attributes listed in the 'pending',
  'pending-held', 'processing', sections 7.2 and 'processing-stopped' states.  The
  job changes from being "not-completed" to "retained" when it is done
  processing 7.3 are sent in a
       Notification for Job events.

                 Expires September 8, 2000
     3.The attributes listed in sections 7.2 and enters 7.4 are sent in a
       Notification for Printer events.

     4.For any of the 'completed', 'canceled', 'text' or
  'aborted' states.  The job becomes "not-completed" again when it is
  restarted using 'name' attribute value in any notification,
       the Restart-Job charset and natural language rules that apply to all IPP
       operations apply to these attributes as well, since they are
       represented as operation (see [ipp-mod]).

3.Since no job is created for the Validate-Job operation, responses.

     5.The "human-readable-report" attribute can be defined to be
       REQUIRED, OPTIONAL, or MUST NOT be sent.

     6.If the only
  purpose values of any of supplying the subscription operation attributes sent in an notification
       content are not known, the value sent in the
  Validate-Job operation report content is to validate that
       the values are supported; out-of-band 'unknown' value, rather than omitting the Printer object does not establish a notification subscription as
  a result
       attribute (see the beginning of [ipp-mod] section 4.1).

An implementation MAY extend the Validate-Job operation.

4.Since a Job Submission Subscription is included within contents of the Machine Consumable
notification by adding additional attributes.  Notification Recipients
MUST be able to accept Notifications containing attributes they do not
recognize.  What a job
  submission operation, any interest in job events Notification Recipient does with an unrecognized
attribute is limited implementation-dependent.  Notification Recipients MAY
attempt to "this
  job" only (the Job object created because of this job creation
  operation).  There is no mechanism to subscribe to events for all
  jobs display unrecognized attributes anyway or specifically some job other than this job in a create
  operation.  But see the Create-Printer-Subscription operation
  (section 8.2.1) for an explicit operation to subscribe for job and/or
  printer events independently of any particular job submission, i.e.,
  Per-Printer subscriptions.

5.Event reporting only occurs when a notification recipient has
  specified a subscription to any event(s).

                   Expires April 14, 2000

6.The notification implementation MAY allow an administrator ignore them.

7.2 Notification content attributes common to
  configure a policy on what Job and Printer events may be dropped.

7.If

This section lists the OPTIONAL "notify-charset" attribute is not supported or parameters and attributes that are included in
both Job and Printer event Notifications.

The notification delivery method either models the
  supplied value is not supported, Notification as a (1)
request if the IPP Printer MUST return sends the
  attribute in Notification to the Unsupported Attributes Group but still accept Notification
Recipient when the
  operation, event occurs or as with all Job create operations.  In this case, a (2) response if the IPP Printer MUST use the natural language supplied in the "attributes-
  charset" Job creation operation attribute, if that natural language
  value
is supported queried for the Notification by a Notification Recipient:

     Request:  If the Printer, else delivery method defines that the IPP Printer object MUST use
  the Printer's "charset-configured" value.  See sends
     the Print-Job
  operation in [ipp-mod].

8.If Notification, then the OPTIONAL "notify-natural-language" attribute is not supported delivery method also defines whether or the supplied value is
     not supported, the Notification Recipient returns a response.  If the IPP
     Printer MUST return
  the attribute in the Unsupported Attributes Group but still accept
  the operation, as with all Job create operations.  In this case, the
  Printer MUST use sends a Notification request, it uses the natural language supplied "operation-id
     alternative for item #0 in Table 4:

     Response:  If the "attributes-
  natural-language" Job creation operation attribute, if delivery method defines that natural
  language value is supported by the Printer, else the IPP Printer object
  MUST use
     supports an operation that returns a Notification as a response to
     the Printer's "natural-language-configured" value.  See Notification Recipient, it uses the
  Print-Job operation "status-code" alternative
     for item #0 in [ipp-mod].

9.If a collection contains other unrecognized, unsupported member Table 4.

Some events do not include all of these attributes and/or conflicting values, the attribute returned as shown in the
  Unsupported Group is Table 4.
Each notification content contains a collection containing the unrecognized,
  unsupported member attributes, and/or conflicting values. The single Job or Printer
  MUST return event,
whether that event was subscribed using the unrecognized member attributes with Job Submission Subscription
mechanism or the out-of-band
  value Per-Printer subscription mechanism.  If either kind of 'unsupported'.  The
Subscription subscribed to both Job and Printer MUST return events, then the unsupported
  member attributes Printer
will send or return them as separate Job Notification content and conflicting values with their unsupported
  values.  See [ipp-coll].

10.  If the number of events supplied in the "notify-events" attribute
  exceeds the Printer's "max-events-supported" attribute, the
Printer
  MUST accept the request with Notification contents to the status code 'successful-ok-ignored-
  or-substituted-attributes' and return same Notification Recipient.

                 Expires September 8, 2000

Table 4 lists the "job-notify" collection attributes that are defined for use in Notifications
and indicates the Unsupported Attributes Group with only Printer support required for conformance:  References
of the "job-events" member
  attribute containing form "mod m.n.o" refer to [ipp-mod] sections.

    Table 4 - Common Job and Printer Notification content attributes

           Attributes              Reference          Events

                                               'job-     all others
                                               progress'

The following attributes MUST occur in this order:

version-number (integer            mod 3.1.1   REQUIRED  REQUIRED
(0:32767))

operation-id (integer (0:32767))   mod 3.1.1   REQUIRED  REQUIRED
or
status-code (integer (0:32767))

request-id (integer (0:MAX))       5.7 & mod   REQUIRED  REQUIRED
                                   3.1.1

attributes-charset (charset)       5.5 & mod   REQUIRED  REQUIRED
                                   3.1.4

attributes-natural-language        5.6 & mod   REQUIRED  REQUIRED
(naturalLanguage)                  3.1.4

printer-uri (uri)                  5.10        REQUIRED  REQUIRED

The following attribute MAY occur in any order:

printer-name (name(127))           mod 4.4.4   n/a       REQUIRED

job-id (integer(1:MAX))            mod 4.3.2   REQUIRED  REQUIRED**

job-name (name(MAX))               mod 4.3.5   n/a       REQUIRED**

trigger-event (type2 keyword)      7.2.1       REQUIRED  REQUIRED

trigger-time (integer(MIN:MAX))    7.2.2       REQUIRED  REQUIRED

trigger-date-time (dateTime)       7.2.3       n/a       OPTIONAL

subscription-id (integer(1:MAX))   5.8         REQUIRED  REQUIRED

subscriber-user-name (name(MAX))   5.11        REQUIRED  REQUIRED

subscriber-user-data               5.4         REQUIRED  REQUIRED
(octetString(63))

notify-format (mimeMediaType)      5.3         OPTIONAL  OPTIONAL

                 Expires September 8, 2000
           Attributes              Reference          Events

                                               'job-     all others
                                               progress'

human-readable-report (text(MAX))  7.2.4       OPTIONAL  OPTIONAL

Attribute Notes:

"version-number" - the events that exceed major and minor version number.

"operation-id" - the maximum.

11.  If operation id if the Per-Job subscriptions would exceed delivery method document models
     the limit of Per-Job
  subscriptions supported per job Notification as specified by the Printer's "max-
  job-subscriptions-supported" attribute or would exceed some
  implementation-defined limit on Printer sending the total number Notification to the
     Notification Recipient (whether the Notification Recipient returns
     a response or not).

"status-code" - a value of Per-Job
  subscriptions 0x600 (hexadecimal 600) for the a Job event and
     0x601 (hexadecimal 601) for a Printer (if any), event if the Printer MUST accept delivery method
     document models the
  request with Notification as the status code 'successful-ok-ignored-subscriptions',
  MUST return Printer returning the "job-notify" attribute in
     Notification to the Unsupported Attributes
  Group with only Notification Recipient as a response to a
     request.

"request-id" - the collection value(s) that represent sequence number for this subscription, starting at 1,
     for each subscription, i.e., the excess
  subscriptions that are being ignored, and MUST perform Printer copies the Job
  Creation operation (see section 8.1.1), since current value
     of the job can still be
  printed.

  If "subscription-request-id' Subscription object attribute to
     the job is accepted and one or more subscriptions are ignored, Notification request content.

"attributes-charset" - the
  status code returned is 'successful-ok-ignored-subscriptions.  This
  status code is returned even if other job attributes are unsupported

                   Expires April 14, 2000
  or value comes from the "notify-charset"
     attribute in conflict.  That is, if an IPP Printer finds a warning that
  would allow it to return 'successful-ok-ignored-subscriptions' and
  either 'successful-ok-ignored-or-substituted-attributes' and/or
  'successful-ok-conflicting-attributes', it must return 'successful-
  ok-ignored-subscriptions'.  In other words, the precedence for
  returning success codes is: 'successful-ok-ignored-subscriptions',
  'successful-ok-conflicting-attributes', and 'successful-ok-ignored-
  or-substituted-attributes'.

8.1.2Create-Job-Subscription operation

The OPTIONNAL Create-Job-Subscription operation creates a Per-Job Subscription object .  The client can specify one or more job and/or
printer events to be delivered as notifications to one Notification
Recipient.  For object.

"attributes-natural-language" - the Per-Job subscription objects, value comes from the "notify-
     natural-language" attribute in the Subscription object.

"printer-uri" - the value comes from the "job-printer-uri" Job events are attribute
     for
this job only.  The printer events are any events generated by that Per-Job subscriptions.

**"job-id" and "job-name" - included in Printer event Notifications only
     for any job Per-Job subscriptions.

"job-name" - SNMP delivery method can truncate to less than 255 octets,
     since the Notification needs to fit into 484 octets or when no job so on some
     transports that SNMP is involved at all (same as for Per-
Job Subscriptions).

The Printer returns a subscription id and the length of time for which
it has granted a lease defined for.  See [ipp-method-snmp]

"subscription-id" - the unique identifier for the subscription.

A client can unsubscribe using Subscription object on
     this Printer.

"subscriber-user-name" - the Cancel-Subscription operation
(section 8.3.4) and subscriber user name that created the subscription id.

Two Create-Job-Subscription operations with
     Subscription object.  SNMP delivery method can truncate to less
     than 255 octets, since the same events and same Notification Recipient MUST be kept as distinct subscriptions and be
assigned distinct subscription ids.  A Printer MUST allow such duplicate
subscriptions such needs to fit into 484
     octets or so on some transports that Cancel-Subscription doesn't unsubscribe both
subscriptions and MUST send SNMP is defined for.  See
     [ipp-method-snmp]

                 Expires September 8, 2000

"subscriber-user-data" - opaque user data that may identify either the Notifications twice to
     Subscriber and/or the ultimate Notification
Recipient, since the "request-id" is supposed to count monotonically for
each subscription.

If Recipient.  The client
     MUST supply this attribute, if the Printer has a bounded set definition of concurrent Per-Job subscriptions and
the request would exceed that bound, the Printer rejects delivery
     method specified in the operation
and returns "notify-recipient" attribute REQUIRES the 'server-error-too-many-subscriptions' status code.  The
     client SHOULD try again later.

Access Rights:  To create Per-Job subscription objects, to supply it.

"notify-format (mimeMediaType) - indicates the
authenticated user text MIME media type (see [IPP-MOD]
     section 8.3) performing this operation 5.3) for the "human-readable-report" attribute.  This
     attribute MUST either be present if the job owner or have operator or administrator access
rights for the Printer object (see [IPP-MOD] sections 1 and 8.5).
Otherwise "human-readable-report"
     (text(MAX)) attribute is present in order to unambiguously identify
     the IPP object MUST reject format of its text value to the operation and return: client-
error-forbidden, client-error-not-authenticated, and client-error-not-
authorized as appropriate.

                   Expires April 14, 2000

Request:
   Group 1: Operation Attributes                   Printer
                                                    support
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        "printer-uri" (uri)                        REQUIRED
        "job-id" (integer(1:MAX))                  REQUIRED
        ["requesting-user-name" (name(MAX))]       RECOMMENDED
        "notify-recipient" (uri)                   REQUIRED
        ["notify-events" (1setOf type2 keyword)]   REQUIRED
        ["notify-text-format" (mimeMediaType)]     REQUIRED
        ["subscriber-user-data" (octetString(63))] REQUIRED
        ["notify-charset" (charset)]               OPTIONAL
        ["notify-natural-language"                 OPTIONAL
        (naturalLanguage)]
        ["notify-persistence-requested" (boolean)] OPTIONAL
Response:
   Group 1: Operation Attributes                   Printer
                                                    Support
         "status-code" Notification Recipient.

7.2.1 "trigger-event" (type2 enum)                REQUIRED
         "attributes-charset" (charset)            REQUIRED
         "attributes-natural-language"             REQUIRED
        (naturalLanguage)
        ["status-message" (text(255))]             OPTIONAL
        ["detailed-status-message" (text(MAX))]    OPTIONAL
         "subscription-id"  (integer(1:MAX))       REQUIRED
         "notify-persistence-granted" (boolean)    REQUIRED
   Group 2: Unsupported Attributes keyword)

This REQUIRED

Attribute Notes:

"job-id" (integer(1:MAX)) - Notification Content attribute indicates the client MUST supply event that
caused this attribute in
     order Notification to create a Per-Job subscription for be delivered.

7.2.2 "trigger-time" (integer(MIN:MAX))

This REQUIRED Notification Content attribute indicates the Job identified by time at which
the "job-id" value.

     Note:  Unlike all other operations on event occurred, i.e., the Job object, "printer-up-time" value (see [ipp-mod]
section 4.4.29) when the "job-uri"
     operation event occurred.

7.2.3 "trigger-date-time" (dateTime)

This OPTIONAL Notification Content attribute indicates the date and time
at which the event occurred, i.e., the "printer-current-time" value (see
[ipp-mod] section 4.4.30) when the event occurred.

7.2.4 "human-readable-report" (text(MAX))

This OPTIONAL Notification Content attribute contains the human
consumable text message (see section 7.1.1) that describes the event and
is represented in the text format specified by the "notify-format"
attribute.  Whether or not this attribute is defined depends on the
delivery method definition document and MUST be defined only for use with in
the Machine Consumable format.  If this operation.

     ISSUE 4 - Ok that "job-uri" isn't attribute is defined for use with the Create-
     Job-Subscription operation?

"notify-recipient" (uri) - in
the client MUST supply Machine Consumable Notification, then whether this attribute in
     order to have a subscription.

"notify-event" (1setOf type2 keyword) - if the client does not supply
     this attribute, the Printer populates the "notify-events"
     Subscription Description attribute from its "notify-events-default"
     Printer Description attribute.

"notify-text-format" (mimeMediaType) - if the client supplies this
     attribute, the value indicates which Human Consumable text format

                   Expires April 14, 2000
     is requested for use in the Notification using the delivery method
     that the client supplies in the "notify-recipient" attribute.  If
     the client does not supply this attribute, the Machine-Consumable
     form of is
REQUIRED or OPTIONAL also depends on the delivery method that the client supplies in the
     "notify-recipient" attribute is used.

"notify-persistence-requested" (boolean) - whether or not the Per-Job
     Subscription is to be persistent, i.e., saved across power cycles.
     Note: Persistent trap registrations is a client option in SNMPv3
     [RFC2573].

"notify-persistence-granted" (boolean) - whether or not this
     Subscription object instance is persistent.  This attribute MUST be
     returned whether "notify-persistence-requested" is supported or
     not, so that the client knows which.

8.2 Operations definition
document.

7.3 Additional Notification content attributes for Per-Printer Subscriptions Job events only

This section defines

Table 5 lists the operation requests additional attributes that are included only in Job
event Notifications and responses associated
with indicates the Per-Printer subscription Printer support required for
conformance:  "R" indicates REQUIRED, "O" indicates OPTIONAL, and its Subscription object.

8.2.1 Create-Printer-Subscription operation

The "CR"
indicates CONDITIONALLY REQUIRED, i.e., REQUIRED Create-Printer-Subscription operation creates in a Per-Printer
Subscription object .  The client can specify one or more job and/or
printer events to be delivered as notifications to one Notification
Recipient.  For the Per-Printer subscription objects, the job events are
for any job submitted to if
the Printer.  The printer events corresponding Job attributes are any supported.  Some events
generated by that Printer for any job or when no job is involved at all.

The Printer returns a subscription id and the time at which the
subscription lease expires (which may be earlier or later than the
client requested).

The client must renew the Per-Printer subscription using the Renew-
Subscription operation (see section 8.3.3) before the lease runs out do not
include all of these attributes as shown in
order to maintain the subscription.  A client can unsubscribe using the
Cancel-Subscription operation (section 8.3.4) and the subscription id.

Two Create-Printer-Subscription operations with the same Table 5.

Table 5 - Additional Notification content attributes for Job events and same only

Attributes                              Reference Events

                 Expires September 8, 2000
                                                   'job-  'job-   all
                                                   progre complet othe
                                                   ss'    ed'     rs

job-state (type1 enum)                  mod 4.3.7 R      R       R

job-state-reasons (1setOf type2         mod 4.3.8 R      R       R
keyword)

job-k-octets (integer(0:MAX))           mod       O      O
                                        4.3.17.1

job-k-octets-processed (integer(0:MAX)) mod       O      O
                                        4.3.18.1

job-impressions (integer(0:MAX))        mod       O      O
                                        4.2.17.2

job-impressions-completed               mod       CR     CR
(integer(0:MAX))                        4.3.18.2

impressions-completed-current-copy      [ipp-     R
(integer(0:MAX))                        prog]

job-media-sheets (integer(0:MAX))       mod       O      O
                                        4.3.17.3

job-media-sheets-completed              mod       CR     CR
(integer(0:MAX))                        4.3.18.3

job-collation-type (type2 enum)         [ipp-     R
                                        prog]

sheet-completed-copy-number             [ipp-     R
(integer(0:MAX))                        prog]

sheet-completed-document-               [ipp-     R
number(integer(0:MAX))                  prog]

7.4 Additional Notification Recipient MUST be kept as distinct subscriptions and be
assigned distinct subscription ids.  A content attributes for Printer MUST allow such duplicate
subscriptions such that Cancel-Subscription doesn't unsubscribe both
subscriptions and MUST send events only

Table 6 lists the additional attributes that are included only in
Printer event Notifications twice to and indicates the Printer support required
for conformance:

Table 6 - Additional Notification
Recipient, since the "request-id" is supposed to count monotonically content attributes for
each subscription.

If the Printer has a bounded set of concurrent Per-Printer subscriptions
and the request would exceed that bound, the Printer rejects the
operation and returns the 'server-error-too-many-subscriptions' status
code.  The client SHOULD try again later. events
                                  only

Attributes                                    Reference   Events

                                                          all printer
                                                          events

                 Expires April 14, September 8, 2000

Access Rights:  To create Per-Printer subscription objects, the
authenticated user performing this operation MUST have Per-Printer
subscription rights for this Printer.  Otherwise the IPP object MUST
reject the operation and return: client-error-forbidden, client-error-
not-authenticated, and client-error-not-authorized as appropriate.

Request:
   Group 1: Operation

Attributes                   Printer
                                                    support
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        "printer-uri" (uri)                        REQUIRED

        ["requesting-user-name" (name(MAX))]       RECOMMENDED
        "notify-recipient" (uri)                                    Reference   Events

                                                          all printer
                                                          events

printer-state (type1 enum)                    mod 4.4.11  REQUIRED
        ["notify-events"

printer-state-reasons (1setOf type2 keyword)]   REQUIRED
        ["notify-text-format" (mimeMediaType)]     REQUIRED
        ["subscriber-user-data" (octetString(63))] REQUIRED
        ["notify-charset" (charset)]               OPTIONAL
        ["notify-natural-language"                 OPTIONAL
        (naturalLanguage)]
        ["notify-lease-time-requested"             REQUIRED
        (integer(0:MAX))]
        ["notify-persistence-requested" (boolean)] OPTIONAL
Response:
   Group 1: Operation Attributes                   Printer
                                                    Support
         "status-code" (type2 enum)                REQUIRED
         "attributes-charset" (charset)            REQUIRED
         "attributes-natural-language"             REQUIRED
        (naturalLanguage)
        ["status-message" (text(255))]             OPTIONAL
        ["detailed-status-message" (text(MAX))]    OPTIONAL
         "subscription-id"  (integer(1:MAX))       REQUIRED
         "notify-lease-expiration-time"            REQUIRED
        (integer(0:MAX))
         "notify-printer-up-time" (integer(1:MAX)) keyword)  mod 4.4.12  REQUIRED
         "notify-persistence-granted"

printer-is-accepting-jobs (boolean)           mod 4.4.23  REQUIRED
   Group 2: Unsupported Attributes                 REQUIRED

ISSUE 5 - Ok that we aren't passing

8  Operations for notification

This section defines all of the operation attributes that operations for notification which are
     copied to the Subscription object
summarized in the new Subscription object
     attributes group?  Some of the "notify-xxx" attributes aren't
     Subscription object attributes.

Attribute Notes:

"notify-recipient" (uri) - the client MUST supply this attribute Table 1 in
     order to have a subscription.

                   Expires April 14, 2000

"notify-lease-time-requested" (integer(0:MAX) - section 1.1, including the number assignment of seconds
     requested the
operation-id.

8.1 Operations for Per-Job Subscriptions only

This section defines the subscription lease.  A value of 0 indicates a
     request operation requests and responses that are
related to Per-Job subscriptions and its Subscription object.   Section
8.3 defines the REQUIRED operation requests and responses associated
with the REQUIRED Per-Printer subscription and its Subscription lease never expire.
     Supplying object.

8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) and
     Validate-Job

The usual method for a 0 value MAY require authentication in order client to be used,
     if 0 associate one subscription with a Job
is supported at all.
     If the client does not supply this attribute, the Printer uses its
     "notify-lease-time-default" Printer Description attribute value
     (see section 6.9).

"notify-event" (1setOf type2 keyword) - if the client does not supply
     this attribute, to specify the Printer populates subscription when the "notify-events"
     Subscription Description attribute from its "notify-events-default"
     Printer Description attribute.

"notify-text-format" (mimeMediaType) - if job is created.  For a Per-Job
Subscription, the client supplies this
     attribute, the value indicates which Human Consumable text format
     is requested for use in the Notification using the delivery method
     that "job-notify (1setOf collection)"
operation attribute with the client supplies member attributes listed in Table 7 with
any of the "notify-recipient" attribute. Job Creation operations (Create-Job, Print-Job, Print-URI),
plus Validate-Job (which doesn't create a job or subscription).  If the
client does not supply this attribute, the Machine-Consumable
     form of the delivery method that the client supplies "job-notify" attribute in the
     "notify-recipient" attribute create
operation, there is used.

"notify-persistence-requested" (boolean) - whether no subscription made (either implicitly or not the Per-
     Printer Subscription is to be persistent, i.e., saved across power
     cycles.  Note: Persistent trap registrations is
explicitly).

If a client option in
     SNMPv3 [RFC2573].

"notify-lease-expiration-time" (integer(0:MAX)) - The Printer object
     MUST return does not support this attribute which is notification specification, then it
MUST ignore the time "job-notify" operation attribute and return it in the future at which
     the subscription lease will expire, i.e., the "printer-up-time"
     value (in time ticks - see [ipp-mod] section 4.4.29) at which the
     Printer will delete the Subscription.  A value of 0 indicates that
     the lease subscription will never expire.

"notify-printer-up-time" (integer(1:MAX)) - The Printer object MUST
     return this attribute which is an alias for the Printer's "printer-
     up-time" Printer Description attribute.  The client subtracts this
     value from the "notify-lease-expiration-time" value returned in
     order to determine the number of second in the future that the
     subscription will expire.  This computed value may be less than the
     requester requested in the "notify-lease-time-requested" if it was
     greater than the MAX supported or more than the requester requested
     if it was less than the MIN supported, as
response indicated in the
     Printer's "notify-lease-time-supported" (rangeOfInteger(0:MAX))
     attribute (see section 6.8).

"notify-persistence-granted" - whether or not this Subscription object
     instance is persistent.  This as an attribute MUST be returned whether
     "notify-persistence-requested" is supported or not, so that the
     client knows which. is not supported.  See [ipp-mod]
section 3.1.7 for details on returning Unsupported Attributes.

                 Expires April 14, September 8, 2000

8.3 Common Operations for Per-Job and Per-Printer Subscriptions

This section defines the operations that are common to both Per-Job and
     Per-Printer subscriptions.

8.3.1 Get-Subscription-Attributes operation

The REQUIRED Get-Subscription-Attributes returns the requested
  Table 7 - Member attributes of the identified Subscription object.  See section 5.

Request:
   Group 1: Operation Attributes "job-notify" collection operation
                               attribute

Member attribute of "job-notify"          Referen client     Printer
collection                                ce      MUST       support
         "attributes-charset" (charset)            REQUIRED
         "attributes-natural-language"             REQUIRED
        (naturalLanguage)
         "printer-uri"
                                                  supply

notify-recipient (uri)                    5.1     yes        REQUIRED
        ["requesting-user-name" (name(MAX))]       RECOMMENDED
         "subscription-id"  (integer(1:MAX))       REQUIRED
        ["requested-attributes"

notify-events (1setOf type2 keyword)      5.2     no         REQUIRED
        keyword)]
Response:
   Group 1: Operation Attributes                   Printer
                                                    support
        "status-code" (type2 enum)                 REQUIRED
        "attributes-charset" (charset)

notify-format (mimeMediaType)             5.3     no         REQUIRED
        "attributes-natural-language"

subscriber-user-data (octetString(63))    5.4     depends on REQUIRED
        (naturalLanguage)
        ["status-message" (text(255))]             OPTIONAL
        ["detailed-status-message (text(MAX))]
                                                  delivery
                                                  method **

notify-charset (charset)                  5.5     no         OPTIONAL
   Group 2: Unsupported Attributes                 REQUIRED
   Group 3: <the requested Subscription object     REQUIRED
   attributes>

This operation is similar to the Get-Printer-Attributes operation.  If
the client omits the "requested-attributes" operation attribute,

notify-natural-language                   5.6     no         OPTIONAL
(naturalLanguage)

Table 8 shows the "job-notify" (collection) member attributes with their
corresponding "xxx-default" and "xxx-supported" attributes.  The Printer MUST respond as
uses the "xxx-default" values if the client had supplied the 'all' value,
i.e., return all of omits the attributes supported for member attribute
in the Subscription
object.

                   Expires April 14, 2000

8.3.2 Get-Subscriptions operation request.  The REQUIRED Get-Subscriptions operation returns  the requested "xxx-supported" attributes of are used by the Subscription objects (see section 5).

Request:
   Group 1: Operation Attributes Printer
                                                    support
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        "printer-uri"
to validate the request.  The client can query to determine supported
values.

        Table 8 - "job-notify" supported and default attributes

"job-notify" member   "xxx-default", if    "xxx-supported"
attribute             any

notify-recipient      none                 notify-schemes-supported
(uri)                        REQUIRED
        ["job-id" (integer(1:MAX))]                REQUIRED
        ["requesting-user-name" (name(MAX))]       RECOMMENDED
        ["limit" (integer(1:MAX))]                 REQUIRED
        ["requested-attributes"                                      (1setOf uriScheme)

notify-events (1setOf                      notify-events-supported
                      notify-events-
type2      REQUIRED
        keyword)]
        ["my-subscriptions" (boolean)]             REQUIRED
Response:
   Group 1: Operation Attributes                   Printer
                                                    support
        "status-code" (type2 enum)                 REQUIRED
        "attributes-charset" keyword)                             (1setOf type2 keyword)
                      default (1setOf
                                           max-events-supported
                      type2 keyword)
                                           (integer(5:MAX))

notify-format         none                 notify-format-supported
(mimeMediaType)                            (1setOf mimeMediaType)

subscriber-user-data  none                 none
(octetString(63))

notify-charset        charset-configured   charset-supported (1setOf
(charset)             REQUIRED
        "attributes-natural-language"              REQUIRED             (charset)            charset)

notify-natural-       natural-language-    generated-natural-language-

                 Expires September 8, 2000

"job-notify" member   "xxx-default", if    "xxx-supported"
attribute             any

language              configured           supported (1setOf
(naturalLanguage)
        ["status-message" (text)]                  OPTIONAL
        ["detailed-status-message" (text(MAX))]    OPTIONAL
   Group 2: Unsupported Attributes                 REQUIRED
   Group 3 to N:<the requested Subscription        REQUIRED
   Attributes     (naturalLanguage)    naturalLanguage)

See the referenced sections for each Subscription object in a
   separate group>

Attribute Notes:

This definition of these operation is similar
attributes, since they are copied to the Get-Jobs operation (see [ipp-mod]).  If Subscription object as the client wants any
Subscription Description attributes returned, including the "subscription-
id", it must include the attribute keyword name described in the "requested-
attributes" operation attribute.  If the "requested-attributes.
operation attribute is omitted, the Printer MUST respond section 5.

The following rules apply to Per-Job subscriptions created as if the
client supplied the value: 'subscription-id'.

"job-id" (integer(1:MAX)) - If the client supplies this attribute, all part of
the Per-Job Job Creation operations:

1.  Any subscription can contain job events, printer events, or both.

2.  The Job Submission Subscription objects for is only valid while the identified job are
     candidates for return.  It this attribute is omitted, all of the
     Per-Printer Subscription objects are candidates for return.

"my-subscriptions" (boolean) - If the client supplies the "my-
     subscriptions" with a 'false' value or omits it, the Printer
     returns all subscriptions, subject to the security policy in force.

Groups 3 to N: Subscription Object Attributes: "not-
    completed".  The Printer object
     responds with one set of Subscription Object Attributes for each

                   Expires April 14, 2000
     returned Subscription object. job is "not-completed" while it is in the
    'pending', 'pending-held', 'processing', and 'processing-stopped'
    states.  The Printer object ignores (does not
     respond with) job changes from being "not-completed" to "retained"
    when it is done processing and enters any requested attribute of the 'completed',
    'canceled', or value which 'aborted' states.  The job becomes "not-completed"
    again when it is not
     supported or which restarted using the Restart-Job operation (see
    [ipp-mod]).

3.  Since no job is restricted by created for the security policy Validate-Job operation, the only
    purpose of supplying the subscription operation attributes in force,
     including whether the requesting user
    Validate-Job operation is the user to validate that created the
     Subscription values are supported;
    the Printer object (subscribing user) or does not (see [ipp-mod]
     section 8).

8.3.3 Renew-Subscription operation

The REQUIRED Renew-Subscription operation permits establish a client to request
the IPP Printer to extend notification subscription as
    a result of the lease on Validate-Job operation.

4.  Since a Job Submission Subscription is included within a job
    submission operation, any interest in job events is limited to "this
    job" only (the Job object instance. created because of this job creation
    operation).  There is no way mechanism to renew subscribe to events for all
    jobs or specifically some job other than this job in a Per-Job subscription, since they are
automatically canceled after create
    operation.  But see the Create-Printer-Subscription operation
    (section 8.2.1) for an explicit operation to subscribe for job completes and no longer has
    and/or printer events independently of any
documents, i.e., the particular job is no longer retained (see [ipp-mod] section
4.3.7.2).  If the requested subscription object is
    submission, i.e., Per-Printer subscriptions.

5.  Event reporting only occurs when a Per-Job
subscription, the Printer MUST grant notification recipient has
    specified a subscription to any event(s).

6.  The notification implementation MAY allow an infinite lease by returning administrator to
    configure a 0
value for the "notify-lease-expiration-time".

Access Rights: policy on what events may be dropped.

7.  ** The authenticated user (see [IPP-MOD] section 8.3)
performing this operation client MUST either be supply the owner "subscriber-user-data"
    (octetString(63)) attribute, if the definition of the Subscription
object or have operator delivery
    method specified in the "notify-recipient" attribute REQUIRES the
    client to supply it.

8.  If the OPTIONAL "notify-charset" attribute is not supported or administrator access rights for the Printer
object (see [IPP-MOD] sections 1 and 8.5).  Otherwise
    supplied value is not supported, the IPP object Printer MUST reject return the
    attribute in the operation and return: client-error-forbidden, client-
error-not-authenticated, and client-error-not-authorized as appropriate.

Request:
   Group 1: Operation Attributes                   Printer
                                                    support
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        "printer-uri" (uri)                        REQUIRED
        ["requesting-user-name" (name(MAX))]       RECOMMENDED
        "subscription-id"  (integer(1:MAX))        REQUIRED
        ["notify-lease-time-requested"             REQUIRED
        (integer(0:MAX))]
Response:
   Group 1: Operation Attributes                   Printer
                                                    support
        "status-code" (type2 enum)                 REQUIRED
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        ["status-message" (text(255))]             OPTIONAL
        ["detailed-status-message" (text(MAX))]    OPTIONAL
         "notify-lease-expiration-time"            REQUIRED
        (integer(0:MAX))
         "notify-printer-up-time" (integer(1:MAX)) REQUIRED
   Group 2: Unsupported Attributes                 REQUIRED

Attribute Notes: Group but still accept the
    operation, as with all Job create operations.  In this case, the

                 Expires April 14, September 8, 2000

"notify-lease-time-requested" (integer(0:MAX) -
    Printer MUST use the number of seconds
     requested for natural language supplied in the Per-Printer subscription lease.  Same as Create-
     Printer-Subscriptions (see section 8.2.1).

"notify-lease-expiration-time" - "attributes-
    charset" Job creation operation attribute, if that natural language
    value is supported by the time in Printer, else the future when Printer object MUST use
    the
     subscription will expire.  Same as for Printer's "charset-configured" value.  See the Create-Printer-
     Subscription Print-Job
    operation  (see section 8.2.1).

"notify-printer-up-time" - in [ipp-mod].

9.  If the OPTIONAL "notify-natural-language" attribute is not supported
    or the supplied value is not supported, the IPP Printer object MUST return this
    the attribute
     which is an alias for in the Printer's "printer-up-time" Printer
     Description attribute.  The client subtracts Unsupported Attributes Group but still accept
    the operation, as with all Job create operations.  In this value from case, the
     "notify-lease-expiration-time" value returned in order to determine
    Printer MUST use the number of second natural language supplied in the future "attributes-
    natural-language" Job creation operation attribute, if that the subscription will
     expire (see further explanation in section 8.2.1).

Note:  There natural
    language value is no way to change any of supported by the Subscription object
attributes, except Printer, else the "notify-lease-expiration-time" attribute (using Printer object
    MUST use the Renew-Subscription operation).  In order to change other attributes,
a client can create a new Subscription object and then use Printer's "natural-language-configured" value.  See the Cancel-
Subscription
    Print-Job operation to cancel the old one (or do this in the [ipp-mod].

10. If a collection contains other
order, unrecognized, unsupported member
    attributes and/or conflicting values, the attribute returned in case there is a limit on the number of Subscription object
instances, as long as a short window with no Notifications is ok).

Note:  There
    Unsupported Group is no need to renew a Per-Job Subscription, since it is
effectively the time that collection containing the Job is active (see section 8.1).

8.3.4 Cancel- Subscription operation unrecognized,
    unsupported member attributes, and/or conflicting values. The REQUIRED Cancel- Subscription operation allows a client to remove a
Subscription object.  No more Notifications are delivered for that
Subscription.  Once performed, there is no way to use that Subscription
in
    Printer MUST return the future.  Subscription-ids should not be reused immediately, so
that a stale reference situation is not created.  Same as for Cancel-Job
and job-ids.

Access Rights: unrecognized member attributes with the out-
    of-band value of 'unsupported'.  The authenticated user (see [IPP-MOD] section 8.3)
performing this operation Printer MUST either be return the owner
    unsupported member attributes and conflicting values with their
    unsupported values.  See [ipp-coll].

11. If the number of events supplied in the Subscription
object or have operator or administrator access rights for "notify-events" attribute
    exceeds the Printer
object (see [IPP-MOD] sections 1 and 8.5).  Otherwise Printer's "max-events-supported" attribute, the IPP object Printer
    MUST reject accept the operation and return: client-error-forbidden, client-
error-not-authenticated, request with the status code 'successful-ok-ignored-
    or-substituted-attributes' and client-error-not-authorized as appropriate.

Request:
   Group 1: Operation Attributes                   Printer
                                                    support
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        "printer-uri" (uri)                        REQUIRED
        ["requesting-user-name" (name(MAX))]       RECOMMENDED
        "subscription-id" (integer(1:MAX))         REQUIRED
Response:

                   Expires April 14, 2000
   Group 1: Operation Attributes                   Printer
                                                    support
        "status-code" (type2 enum)                 REQUIRED
        "attributes-charset" (charset)             REQUIRED
        "attributes-natural-language"              REQUIRED
        (naturalLanguage)
        ["status-message" (text(255))]             OPTIONAL
        ["detailed-status-message" (text(MAX))]    OPTIONAL
   Group 2: return the "job-notify" collection in
    the Unsupported Attributes                 REQUIRED

9  Comparison of Per-Job versus Per-Printer Subscriptions

Per-Job and Per-Printer subscriptions are quite similar.  Either type of
subscription can subscribe to Job events, Printer events, or both.  Both
types of subscriptions can be queried using Group with only the Get-Subscriptions and
Get-Subscription-Attributes operations and canceled using "job-events" member
    attribute containing the Cancel-
Subscription operation.  Both types of subscriptions create Subscription
objects which have events that exceed the maximum.

12. If the same attributes defined.  However, there are some
semantic differences between Per-Job subscriptions and Per-Printer
subscriptions.  A Per-Job Submission Subscription is established by the
client when submitting a job and after creating would exceed the limit of Per-Job
    subscriptions supported per job using the
Create-Job-Subscription operation as specified by specifying the "job-id" Printer's "max-
    job-subscriptions-supported" attribute or would exceed some
    implementation-defined limit on the total number of Per-Job
    subscriptions for the job.
A Per-Printer  Subscription is established between a client and a Printer using (if any), the Create-Printer-Subscription operation.  Some specific
differences are:

1.A client usually creates a Per-Job subscription as part of Printer MUST accept the Job
  Creation operations (Create-Job, Print-Job, and Print-URI), rather
  than using
    request with the OPTIONAL Create-Job-Subscription operation, especially
  since some Printer implementations MAY not support status code 'successful-ok-ignored-subscriptions',
    MUST return the Create-Job-
  Subscription operation, since it is OPTIONAL.

2.For Per-Job subscriptions, "job-notify" attribute in the subscription is Unsupported Attributes
    Group with only valid while the
  job is "not-complete" (see sections 7.4 collection value(s) that represent the excess
    subscriptions that are being ignored, and 7.5) while for MUST perform the Per-
  Printer subscriptions, Job
    Creation operation (see section 8.1.1), since the subscription is valid until job can still be
    printed.

13. If the time (in
  seconds) that job is accepted and one or more subscriptions are ignored,
    the Printer status code returned is 'successful-ok-ignored-subscriptions.
    This status code is returned even if other job attributes are
    unsupported or in conflict.  That is, if an IPP Printer finds a
    warning that would allow it to return 'successful-ok-ignored-
    subscriptions' and either 'successful-ok-ignored-or-substituted-
    attributes' and/or 'successful-ok-conflicting-attributes', it must
    return 'successful-ok-ignored-subscriptions'.  In other words, the "notify-lease-expiration-
  time"
    precedence for returning success codes is: 'successful-ok-ignored-
    subscriptions', 'successful-ok-conflicting-attributes', and
    'successful-ok-ignored-or-substituted-attributes'.

                 Expires September 8, 2000

8.1.2Create-Job-Subscription operation attribute expires.

3.Job Events in

The OPTIONNAL Create-Job-Subscription operation creates a Per-Job subscription apply only
Subscription object .  The client can specify one or more job and/or
printer events to "one job" (the be delivered as notifications to one Notification
Recipient.  For the Per-Job subscription objects, the Job
  created events are for
this job only.  The printer events are any events generated by the that
Printer for any job creation  operation or references by the Create-
  Job-Subscription operation) while when no job is involved at all (same as for Per-
Job Events in Subscriptions).

The Printer returns a Per-Printer subscription apply to ALL jobs contained in id and the IPP Printer object.

10 Conformance Requirements

This section further enhances length of time for which
it has granted a lease for the Conformance Requirements detailed in
[IPP-MOD] section 5.  Extensions made to subscription.

A client can unsubscribe using the events herein must be made
such that new events or event attributes are backward compatible to

                   Expires April 14, 2000

clients who implemented early versions of this notification
specification.

It is OPTIONAL to implement this Event Notification specification.  If
implemented, IPP objects MUST support all of the REQUIRED object
attributes as defined in this document in the indicated sections.

If IPP Notification is implemented, the operations described in this
document must be supported as described in Table 8:

           Table 8 - Conformance Requirements for Operations

    Attribute                                     Conformance
                                                   requirements
    "job-notify" in Job Creation operations       REQUIRED
    (section 8.1.1)
    Create-Printer-Subscription (section 8.2.1)   REQUIRED
    Create-Job-Subscription (section 8.1.2)       OPTIONAL
    Get-Subscription-Attributes (section 8.3.1)   REQUIRED
    Get-Subscriptions (section 8.3.2)             REQUIRED
    Renew-Subscription (section 8.3.3)            REQUIRED Cancel-Subscription operation
(section 8.3.4)           REQUIRED

11 IANA Considerations

IANA will be called on to register URL schemes for notification delivery
for use in and the "notification-recipient" attribute, using subscription id.

Two Create-Job-Subscription operations with the same
procedures outlined in [ipp-mod].

12 Internationalization Considerations

This IPP notification specification continues the internationalization
of [ipp-mod] for attributes containing text strings events and names. same
Notification Recipient MUST be kept as distinct subscriptions and be
assigned distinct subscription ids.  A
subscribing client can specify a different natural language Printer MUST allow such duplicate
subscriptions such that Cancel-Subscription doesn't unsubscribe both
subscriptions and charset
for each Notification content delivered MUST send the Notifications twice to a Notification Recipient.

The Human Consumable Notification content is a 'text/plain; charset=utf-
8' by default where the Notification Sender has localized the text
message as requested by
Recipient, since the subscriber "request-id" is supposed to count monotonically for
each Subscription object.

If the intended Notification
Recipient.

13 Security Considerations

By far the biggest security concern is the abuse Printer has a bounded set of notification:
sending unwanted notifications to third parties (i.e., spam).  The
problem is made worse by notification addresses that may be
redistributed to multiple parties (e.g. mailing lists).  There exist
scenarios where third party notification is required (see Scenario #2 concurrent Per-Job subscriptions and #3 in [ipp-not-req]).  The fully secure solution would require
active agreement of all recipients before sending out anything.
However, requirement #9 in [ipp-req] (.There is no requirement for IPP

                   Expires April 14, 2000

Printer receiving
the print request to validate the identity of an event
recipient.) argues against this.  Certain systems may decide to disallow
third party notifications (a traditional fax model).

Clients submitting notification requests to would exceed that bound, the IPP Printer has rejects 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 operation
and returns the 'client-error-too-many-subscriptions' status code.  The
client
notification submission.  Operations that require authentication can use
the HTTP authentication.  Operations that require privacy can use SHOULD try again later.

Access Rights:  To create Per-Job subscription objects, the
HTTP/TLS privacy.

The notification access control model should
authenticated user (see [IPP-MOD] section 8.3) performing this operation
MUST either be similar to the IPP job owner or have operator or administrator access control model
rights for Jobs.  Creating a Per-Printer Notification
Subscription the Printer object is associated with a user.  Only (see [IPP-MOD] sections 1 and 8.5).
Otherwise the creator or an
operator can cancel IPP object MUST reject the subscription.  The system may limit operation and return: the listing
of items to only those items owned by
'client-error-forbidden', 'client-error-not-authenticated', or 'client-
error-not-authorized' status code as appropriate.

Request:

   Group 1: Operation Attributes      Referencclient MUST  Printer
                                       e [ipp- supply       support
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes          REQUIRED
     "attributes-natural-language"    3.1.4.1 yes          REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes          REQUIRED
     "job-id" (integer(1:MAX))        3.1.5   yes          REQUIRED
     "job-uri" (uri)                  3.1.5   if not       REQUIRED
                                                "printer-
                                                uri" and
                                                "job-id"
     "requesting-user-name"           8.3     RECOMMENDED  REQUIRED
     (name(MAX))

                 Expires September 8, 2000
   Group 2: Subscription Attributes   Referen client MUST  Printer
                                       ce      supply       support
     "notify-recipient" (uri)         5.1     yes          REQUIRED
     "notify-events" (1setOf type2    5.2     no           REQUIRED
     keyword)
     "notify-format" (mimeMediaType)  5.3     no           REQUIRED
     "subscriber-user-data"           5.4     depends on   REQUIRED
     (octetString(63))                         delivery
                                                method
     "notify-charset" (charset)       5.5     no           OPTIONAL
     "notify-natural-language"        5.6     no           OPTIONAL
     (naturalLanguage)
     "notify-persistence-requested"   see     no           OPTIONAL
     (boolean)                        below

Response:

   Group 1: Operation Attributes               Reference    REQUIRED
                                                [ipp-mod]    in
                                                             response
     "status-code" (type2 enum)                3.1.6.1      REQUIRED
     "attributes-charset" (charset)            3.1.4.2      REQUIRED
     "attributes-natural-language"             3.1.4.2      REQUIRED
     (naturalLanguage)
     "status-message" (text(255))              3.1.6.2      OPTIONAL
     "detailed-status-message" (text(MAX))     3.1.6.3      OPTIONAL

   Group 2: Unsupported Attributes (see [ipp-mod]       REQUIRED if
   section 3.1.7)                                       unsupported
                                                         attributes

   Group 3: Subscriptions Attributes           Reference    REQUIRED
                                                             in
                                                             response
     "subscription-id"  (integer(1:MAX))       5.8          REQUIRED
     "notify-persistence-granted" (boolean)    5.13         REQUIRED

Attribute Notes:

"job-id" (integer(1:MAX)) - the user.  Some subscriptions
(e.g. those that have a lifetime longer than client MUST either (1) supply this
     attribute, in combination with the "printer-uri" attribute, in
     order to create a job) can be done only Per-Job subscription for the Job identified by
privileged users (users having operator and/or administrator access
rights),
     the "job-id" value or supply the "job-uri" instead, as with any Job
     operation:

"job-uri" (uri) - the client MUST supply this attribute, if that is the authorization policy.

The standard security concerns (delivery
     "printer-uri" and "job-id" are not supplied, in order to identify
     the right user, privacy of
content, tamper proof content) apply Job to which the notification delivery.  IPP
should use Per-Job Subscription is being created.

"notify-recipient" (uri) - the security mechanism of client MUST supply this attribute in
     order to have a subscription.

                 Expires September 8, 2000

"notify-event" (1setOf type2 keyword) - if the delivery method used.  Some
delivery mechanisms are more secure than others.  Therefore, sensitive
notifications should client does not supply
     this attribute, the Printer populates the "notify-events"
     Subscription Description attribute from its "notify-events-default"
     Printer Description attribute.

"notify-format" (mimeMediaType) - if the client supplies this attribute,
     the value indicates which Human Consumable text format is requested
     for use in the Notification using the delivery method that has the strongest
security.

14 Status Codes

The following status codes are defined as extensions for notification:

14.1'successful-ok-ignored-subscriptions' (0x0003)

The number of subscriptions supplied
     client supplies in a Job Creation operation
(Create-Job, Print-Job, Print-URI) exceeds either the limit of Per-Job
subscriptions supported per job as specified by "notify-recipient" attribute.  If the Printer's "max-job-
subscriptions-supported" attribute or some implementation-defined limit
on client
     does not supply this attribute, the total number Machine-Consumable form of Per-Job subscriptions for the Printer (if any).
The Printer MUST accept
     delivery method that the request with this status code, MUST return client supplies in the "job-notify" "notify-recipient"
     attribute in is used.

"subscriber-user-data" (octetString(63)) - the Unsupported Attributes Group with only client MUST supply this
     attribute, if the collection value(s) that represent definition of the excess subscriptions that are
being ignored, and MUST perform delivery method specified in
     the Job Creation operation (see section
8.1.1), since "notify-recipient" attribute REQUIRES the job can still be printed.

This status code is returned even if other job attributes are
unsupported client to supply it.

"notify-persistence-requested" (boolean) - whether or in conflict.  That is, if an IPP Printer finds a warning
that would allow it to return  'successful-ok-ignored-subscriptions' and
either 'successful-ok-ignored-or-substituted-attributes' and/or
'successful-ok-conflicting-attributes', it must return 'successful-ok-
ignored-subscriptions'.  In other words, the precedence for returning
success codes is: 'successful-ok-ignored-subscriptions', 'successful-ok-

                   Expires April 14, 2000

conflicting-attributes', and 'successful-ok-ignored-or-substituted-
attributes'.

14.2client-error-uri-notification-scheme-not-supported (0x04??)

The scheme of not the client-supplied URI in Per-Job
     Subscription is to be persistent, i.e., saved across power cycles.
     Note: Persistent trap registrations is a "notify-recipient" operation
attribute client option in a Create-Printer-Subscription SNMPv3
     [RFC2573].

"notify-persistence-granted" (boolean) - whether or Create-Printer- not this
     Subscription operation object instance is not supported.  See [ipp-mod] section 3.1.7.

There persistent.  This attribute MUST be
     returned whether "notify-persistence-requested" is no corresponding Per-Job subscription error for a Job Creation
operation, since supported or
     not, so that the Printer object MUST ignore any errors in client knows which.

8.2 Operations for Per-Printer Subscriptions only

This section defines the "job-
notify" operation attribute, MUST return the "notify-recipient"
attribute in the Unsupported Attributes Group, requests and perform the Job
Creation operation (see section 8.1.1), since responses associated
with the job can still be
printed.

14.3server-error-too-many-subscriptions (0x04??)

The bounded set of concurrent Per-Printer subscriptions supported by the
Printer object would be exceeded if this request were accepted.

Note:  There is no corresponding Per-Job subscription error, since the
Printer object MUST ignore any errors in the "job-notify" operation
attribute and perform the Job Creation its Subscription object.

8.2.1 Create-Printer-Subscription operation (see section 8.1.1),
since the job can still be printed.

14.4server-error-too-many-events (0x04??)

The REQUIRED Create-Printer-Subscription operation creates a Per-Printer
Subscription object .  The client supplied can specify one or more job and/or
printer events in to be delivered as notifications to one Notification
Recipient.  For the "notify-events" operation
attribute in a Create-Job-Subscription or Create-Printer-Subscription
operation than the Printer supports, as indicated in its "max-events-
supported" attribute (see section 6.4).

There is no corresponding Per-Job Per-Printer subscription error objects, the job events are
for a Job Creation
operation, since any job submitted to the Printer.  The printer events are any events
generated by that Printer object MUST ignore for any errors in job or when no job is involved at all.

The Printer returns a subscription id and the "job-
notify" operation attribute, MUST return time at which the "notify-events" attribute
in
subscription lease expires (which may be earlier or later than the Unsupported Attributes Group with only
client requested).

The client MUST renew the excess events that are
being ignored, and perform Per-Printer subscription using the Job Creation Renew-
Subscription operation (see section
8.1.1), since 8.3.3) before the job can still be printed.

15 Additions lease runs out in
order to maintain the IPP Encoding subscription.  A client can unsubscribe using the
Cancel-Subscription operation (section 8.3.4) and Transport Document

The Subscription object tag needs to be assigned in section 3.7.1
Delimiter Tags:

3.7.1 Delimiter Tags

The following table specifies the values for subscription id.

Two Create-Printer-Subscription operations with the delimiter tags:

   Tag Value (Hex)   Delimiter

   0x00              reserved same events and same
Notification Recipient MUST be kept as distinct subscriptions and be
assigned distinct subscription ids.  A Printer MUST allow such duplicate

                 Expires April 14, September 8, 2000
   Tag Value (Hex)   Delimiter

   0x01              operation-attributes-tag
   0x02              job-attributes-tag
   0x03              end-of-attributes-tag
   0x04              printer-attributes-tag
   0x05              unsupported-attributes-tag
   0x06              subscription-attributes-tag
   0x07-0x0e         reserved for future delimiters
   0x0F              reserved for future chunking-end-of-attributes-
                      tag

When an xxx-attributes-tag occurs in the protocol, it MUST mean

subscriptions such that
zero or more following attributes up to Cancel-Subscription doesn't unsubscribe both
subscriptions and MUST send the next delimiter tag are
attributes belonging Notifications twice to group xxx as defined in the model document,
where xxx Notification
Recipient, since the "request-id" is operation, job, printer, unsupported, subscription.

Doing substitution supposed to count monotonically for xxx in the above paragraph, this means
each subscription.

If the
following. When an operation-attributes-tag occurs in Printer has a bounded set of concurrent Per-Printer subscriptions
and the protocol, it
MUST mean request would exceed that bound, the zero or more following attributes up to Printer rejects the next
delimiter tag are
operation attributes as defined in and returns the model document.
When an job-attributes-tag occurs in 'client-error-too-many-subscriptions' status
code.  The client SHOULD try again later.

Access Rights:  To create Per-Printer subscription objects, the protocol, it
authenticated user performing this operation MUST mean that the
zero or more following attributes up to the next delimiter tag are job
attributes or job template attributes as defined in the model document.
When a printer-attributes-tag occurs in have Per-Printer
subscription rights for this Printer.  Otherwise the protocol, it IPP object MUST mean that
the zero or more following attributes up to the next delimiter tag are
printer attributes as defined in the model document. When an
unsupported-attributes-tag occurs in
reject the protocol, it MUST mean that operation and return: the
zero 'client-error-forbidden', 'client-
error-not-authenticated', or more following attributes up to the next delimiter tag are
unsupported attributes 'client-error-not-authorized' status code
as defined in the model document.  When a
subscription-attributes-tag occurs in the protocol, it appropriate.

Request:

   Group 1: Operation Attributes      Referen client    Printer
                                       ce      MUST mean that
the zero or more following attributes up to the next delimiter tag are
subscription attributes as defined in the [ipp-not] document.

Add a reference to [ipp-not].

16 References

[ipp-coll]
     deBry, R., , Hastings, T., Herriot, R., "Internet Printing
     Protocol/1.1: collection attribute syntax", <draft-ietf-ipp-
     collection-00.doc>, work in progress, September 9, 1999.

[ipp-iig]
     Hastings, T., Manros, C., "Internet      support
                                       [ipp-   supply
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes       REQUIRED
     "attributes-natural-language"    3.1.4.1 yes       REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes       REQUIRED
     "requesting-user-name"           8.3     RECOMMEND REQUIRED
     (name(MAX))                               ED

                 Expires September 8, 2000
   Group 2: Subscription Attributes   Referen client    Printer
                                       ce      MUST      support
                                                supply
     "notify-recipient" (uri)         5.1     yes       REQUIRED
     "notify-events" (1setOf type2    5.2     no        REQUIRED
     keyword)
     "notify-format" (mimeMediaType)  5.3     no        REQUIRED
     "subscriber-user-data"           5.4     depends   REQUIRED
     (octetString(63))                         on the
                                                delivery
                                                method
     "notify-charset" (charset)       5.5     no        OPTIONAL
     "notify-natural-language"        5.6     no        OPTIONAL
     (naturalLanguage)
     "notify-lease-time-requested"    see     no        REQUIRED
     (integer(0:MAX))                 below
     "notify-persistence-requested"   see     no        OPTIONAL
     (boolean)                        below

Response:

   Group 1: Operation Attributes               Reference REQUIRED
                                                          in
                                                          response
     "status-code" (type2 enum)                3.1.6.1   REQUIRED
     "attributes-charset" (charset)            3.1.4.2   REQUIRED
     "attributes-natural-language"             3.1.4.2   REQUIRED
     (naturalLanguage)
     "status-message" (text(255))              3.1.6.2   OPTIONAL
     "detailed-status-message" (text(MAX))     3.1.6.3   OPTIONAL

   Group 2: Unsupported Attributes (see [ipp-mod]    REQUIRED if
   section 3.1.7)                                    unsupported
                                                      attributes

   Group 3: Subscription Attributes            Reference REQUIRED
                                                          in
                                                          response
     "subscription-id" (integer(1:MAX))        5.8       REQUIRED
     "notify-lease-expiration-time"            5.9       REQUIRED
     (integer(0:MAX))
     "notify-server-up-time" (integer(1:MAX))  5.12      REQUIRED
     "notify-persistence-granted" (boolean)    5.13      REQUIRED

Attribute Notes:

"notify-recipient" (uri) - the client MUST supply this attribute in
     order to have a subscription.

"notify-lease-time-requested" (integer(0:MAX) - the number of seconds
     requested for the subscription lease.  A value of 0 indicates a
     request that the Per-Printer Subscription lease never expire.
     Supplying a 0 value MAY require authentication in order to be used,

                 Expires September 8, 2000
     if 0 is supported at all.
     If the client does not supply this attribute, the Printer uses its
     "notify-lease-time-default" Printer Description attribute value
     (see section 6.9).

"notify-event" (1setOf type2 keyword) - if the client does not supply
     this attribute, the Printer populates the "notify-events"
     Subscription Description attribute from its "notify-events-default"
     Printer Description attribute.

"notify-format" (mimeMediaType) - if the client supplies this attribute,
     the value indicates which Human Consumable text format is requested
     for use in the Notification using the delivery method that the
     client supplies in the "notify-recipient" attribute.  If the client
     does not supply this attribute, the Machine-Consumable form of the
     delivery method that the client supplies in the "notify-recipient"
     attribute is used.

"subscriber-user-data" (octetString(63)) - the client MUST supply this
     attribute, if the definition of the delivery method specified in
     the "notify-recipient" attribute REQUIRES the client to supply it.

"notify-persistence-requested" (boolean) - whether or not the Per-
     Printer Subscription is to be persistent, i.e., saved across power
     cycles.  Note: Persistent trap registrations is a client option in
     SNMPv3 [RFC2573].

"notify-lease-expiration-time" (integer(0:MAX)) - The Printer object
     MUST return this attribute which is the time in the future at which
     the subscription lease will expire, i.e., the "printer-up-time"
     value (in time ticks - see [ipp-mod] section 4.4.29) at which the
     Printer will delete the Subscription.  A value of 0 indicates that
     the lease subscription will never expire.

"notify-server-up-time" (integer(1:MAX)) - The Printer object MUST
     return this attribute which is an alias for the Printer's "printer-
     up-time" Printer Description attribute.  The client subtracts this
     value from the "notify-lease-expiration-time" value returned in
     order to determine the number of second in the future that the
     subscription will expire.  This computed value may be less than the
     requester requested in the "notify-lease-time-requested" if it was
     greater than the MAX supported or more than the requester requested
     if it was less than the MIN supported, as indicated in the
     Printer's "notify-lease-time-supported" (rangeOfInteger(0:MAX))
     attribute (see section 6.8).

"notify-persistence-granted" - whether or not this Subscription object
     instance is persistent.  This attribute MUST be returned whether
     "notify-persistence-requested" is supported or not, so that the
     client knows which.

                 Expires September 8, 2000

8.3 Common Operations for Per-Job and Per-Printer Subscriptions

This section defines the operations that are common to both Per-Job and
     Per-Printer subscriptions.

8.3.1 Get-Subscription-Attributes operation

The REQUIRED Get-Subscription-Attributes returns the requested
attributes of the identified Subscription object.  See section 5.

Request:
   Group 1: Operation Attributes      Referen client    Printer
                                       ce      MUST      support
                                       [ipp-   supply
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes       REQUIRED
     "attributes-natural-language"    3.1.4.1 yes       REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes       REQUIRED
     "requesting-user-name"           8.3     RECOMMEND RECOMMEND
     (name(MAX))                               ED        ED

   Group 2: Subscription Attributes   Referen client    Printer
                                       ce      MUST      support
                                                supply

     "subscription-id"                5.8     yes       REQUIRED
     (integer(1:MAX))
     "requested-attributes" (1setOf   see     no        REQUIRED
     type2 keyword)                   below
Response:
   Group 1: Operation Attributes               Reference REQUIRED
                                                [ipp-mod] in
                                                          response
     "status-code" (type2 enum)                3.1.6.1   REQUIRED
     "attributes-charset" (charset)            3.1.4.2   REQUIRED
     "attributes-natural-language"             3.1.4.2   REQUIRED
     (naturalLanguage)
     "status-message" (text(255))              3.1.6.2   OPTIONAL
     "detailed-status-message (text(MAX))      3.1.6.3   OPTIONAL

   Group 2: Unsupported Attributes (see [ipp-mod]    REQUIRED if
   section 3.1.7)                                    unsupported
                                                     attributes

   Group 3: <the requested Subscription object           REQUIRED
   attributes>

This operation is similar to the Get-Printer-Attributes operation.

"requested-attributes" (1setOf keyword):  The client OPTIONALLY supplies
     this attribute.  The Printer object MUST support this attribute.

                 Expires September 8, 2000
     It is a set of Subscription attribute names and/or the 'all'
     attribute group name in whose values the requester is interested.
     This set of attributes is returned for each Job object that is
     returned.  If the client does not supply this attribute, the
     Printer MUST respond as if the client had supplied this attribute
     with the value: 'all'.

8.3.2 Get-Subscriptions operation

The REQUIRED Get-Subscriptions operation returns the requested
attributes of the Subscription objects (see section 5).

Request:
   Group 1: Operation Attributes      Referen client    Printer
                                       ce      MUST      support
                                       [ipp-   supply
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes       REQUIRED
     "attributes-natural-language"    3.1.4.1 yes       REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes       REQUIRED
     "job-id" (integer(1:MAX))        3.1.5   yes, if   REQUIRED
                                                Per-Job
                                                Subscript
                                                ion
     "requesting-user-name"           8.3     RECOMMENT RECOMMEND
     (name(MAX))                               ED        ED
     "limit" (integer(1:MAX))         see     OPTIONAL  REQUIRED
                                       below
     "requested-attributes" (1setOf   see     OPTIONAL  REQUIRED
     type2 keyword)                   below
     "my-subscriptions" (boolean)     see     OPTIONAL  REQUIRED
                                       below
Response:
   Group 1: Operation Attributes               Reference REQUIRED
                                                [ipp-mod] in
                                                          response
     "status-code" (type2 enum)                3.1.6.1   REQUIRED
     "attributes-charset" (charset)            3.1.4.2   REQUIRED
     "attributes-natural-language"             3.1.4.2   REQUIRED
     (naturalLanguage)
     "status-message" (text)                   3.1.6.2   OPTIONAL
     "detailed-status-message" (text(MAX))     3.1.6.3   OPTIONAL

   Group 2: Unsupported Attributes (see [ipp-mod]     REQUIRED if
   section 3.1.7)                                     unsupported
                                                       attributes

   Group 3 to N:<the requested Subscription    see below REQUIRED
   Attributes for each Subscription object in
   a separate group>

                 Expires September 8, 2000

Attribute Notes:

This operation is similar to the Get-Jobs operation (see [ipp-mod]).  If
the client wants any attributes returned, including the "subscription-
id", it must include the attribute keyword name in the "requested-
attributes" operation attribute.  If the "requested-attributes.
operation attribute is omitted, the Printer MUST respond as if the
client supplied the value: 'subscription-id'.

"job-id" (integer(1:MAX)) - If the client supplies this attribute, all
     of the Per-Job Subscription objects for the identified job are
     candidates for return.  It this attribute is omitted, all of the
     Per-Printer Subscription objects are candidates for return.

"limit" (integer(1:MAX)):  The client OPTIONALLY supplies this
     attribute.  The Printer object MUST support this attribute.  It is
     an integer value that determines the maximum number of Subscription
     objects that a client will receive from the Printer even if "my-
     subscriptions" constrain which subscriptions are returned.  The
     limit is a "stateless limit" in that if the value supplied by the
     client is 'N', then only the first 'N' Subscriptions are returned
     in the Get-Subscriptions Response.  There is no mechanism to allow
     for the next 'M' Subscriptions after the first 'N' Subscriptions.
     If the client does not supply this attribute, the Printer object
     responds with all applicable Subscriptions.

"requested-attributes" (1setOf keyword):  The client OPTIONALLY supplies
     this attribute.  The Printer object MUST support this attribute.
     It is a set of Subscription attribute names and/or the 'all'
     attribute group name in whose values the requester is interested.
     This set of attributes is returned for each Job object that is
     returned.  If the client does not supply this attribute, the
     Printer MUST respond as if the client had supplied this attribute
     with the value: 'all'.

"my-subscriptions" (boolean): The client OPTIONALLY supplies this
     attribute.  The Printer object MUST support this attribute.  It
     indicates whether Subscriptions from all users or just the
     Subscriptions submitted by the requesting user of this request MUST
     be returned by the Printer object.  If the client does not supply
     this attribute, the Printer object MUST respond as if the client
     had supplied the attribute with a value of 'false', i.e.,
     Subscriptions from all users.  The means for authenticating the
     requesting user and matching the Subscription objects is the same
     as for jobs as described in [ipp-mod] section 8.

Groups 3 to N: Subscription Object Attributes:  The Printer object
     responds with one set of Subscription Object Attributes for each
     returned Subscription object.  The Printer object ignores (does not
     respond with) any requested attribute or value which is not
     supported or which is restricted by the security policy in force,
     including whether the requesting user is the user that created the
     Subscription object (subscribing user) or not (see [ipp-mod]
     section 8).

                 Expires September 8, 2000

8.3.3 Renew-Subscription operation

The REQUIRED Renew-Subscription operation permits a client to request
the IPP Printer to extend the lease on a Subscription object instance.
There is no way to renew a Per-Job subscription, since they are
automatically canceled after the job completes and no longer has any
documents, i.e., the job is no longer retained (see [ipp-mod] section
4.3.7.2).  If the requested subscription object is a Per-Job
subscription, the Printer MUST grant an infinite lease by returning a 0
value for the "notify-lease-expiration-time".

Access Rights: The authenticated user (see [IPP-MOD] section 8.3)
performing this operation MUST either be the owner of the Subscription
object or have operator or administrator access rights for the Printer
object (see [IPP-MOD] sections 1 and 8.5).  Otherwise the IPP object
MUST reject the operation and return: the 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate.

Request:

   Group 1: Operation Attributes      Referen client    Printer
                                       ce      MUST      support
                                       [ipp-   supply
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes       REQUIRED
     "attributes-natural-language"    3.1.4.1 yes       REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes       REQUIRED
     "requesting-user-name"           8.3     RECOMMEND RECOMMEND
     (name(MAX))                               ED        ED

   Group 2: Subscription Attributes   Referen client    Printer
                                       ce      MUST      support
                                                supply
     "subscription-id"                5.8     yes       REQUIRED
     (integer(1:MAX))
     "notify-lease-time-requested"    see     no        REQUIRED
     (integer(0:MAX))                 below

Response:

   Group 1: Operation Attributes               Reference REQUIRED
                                                [ipp-mod] in
                                                          response
     "status-code" (type2 enum)                3.1.6.1   REQUIRED
     "attributes-charset" (charset)            3.1.4.2   REQUIRED
     "attributes-natural-language"             3.1.4.2   REQUIRED
     (naturalLanguage)
     "status-message" (text(255))              3.1.6.2   OPTIONAL
     "detailed-status-message" (text(MAX))     3.1.6.3   OPTIONAL

                 Expires September 8, 2000
   Group 2: Unsupported Attributes (see [ipp-mod]    REQUIRED if
   section 3.1.7)                                    unsupported
                                                      attributes

   Group 3: Subscriptions Attributes           Reference REQUIRED
                                                          in
                                                          response
     "notify-lease-expiration-time"            5.9       REQUIRED
     (integer(0:MAX))
     "notify-server-up-time" (integer(1:MAX))  5.12      REQUIRED

Attribute Notes:

"notify-lease-time-requested" (integer(0:MAX) - the number of seconds
     requested for the Per-Printer subscription lease.  Same as Create-
     Printer-Subscriptions (see section 8.2.1).

"notify-lease-expiration-time" - the time in the future when the
     subscription will expire.  Same as for the Create-Printer-
     Subscription operation  (see section 8.2.1).

"notify-server-up-time" - the Printer object MUST return this attribute
     which is an alias for the Printer's "printer-up-time" Printer
     Description attribute.  The client subtracts this value from the
     "notify-lease-expiration-time" value returned in order to determine
     the number of second in the future that the subscription will
     expire (see further explanation in section 8.2.1).

Note:  There is no way to change any of the Subscription object
attributes, except the "notify-lease-expiration-time" attribute (using
the Renew-Subscription operation).  In order to change other attributes,
a client can create a new Subscription object and then use the Cancel-
Subscription operation to cancel the old one (or do this in the other
order, in case there is a limit on the number of Subscription object
instances, as long as a short window with no Notifications is ok).

Note:  There is no need to renew a Per-Job Subscription, since it is
effectively the time that the Job is active (see section 8.1).

8.3.4 Cancel-Subscription operation

The REQUIRED Cancel- Subscription operation allows a client to remove a
Subscription object.  No more Notifications are delivered for that
Subscription.  Once performed, there is no way to use that Subscription
in the future.  Subscription-ids should not be reused immediately, so
that a stale reference situation is not created.  Same as for Cancel-Job
and job-ids.

Access Rights: The authenticated user (see [IPP-MOD] section 8.3)
performing this operation MUST either be the owner of the Subscription
object or have operator or administrator access rights for the Printer
object (see [IPP-MOD] sections 1 and 8.5).  Otherwise the IPP object

                 Expires September 8, 2000

MUST reject the operation and return: the 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized'
status code as appropriate.

Request:
   Group 1: Operation Attributes      Referen client    Printer
                                       ce      MUST      support
                                       [ipp-   supply
                                       mod]
     "attributes-charset" (charset)   3.1.4.1 yes       REQUIRED
     "attributes-natural-language"    3.1.4.1 yes       REQUIRED
     (naturalLanguage)
     "printer-uri" (uri)              3.1.5   yes       REQUIRED
     "requesting-user-name"           8.3     RECOMMEND RECOMMEND
     (name(MAX))                               ED        ED

   Group 2: Subscription Attributes   Referen client    Printer
                                       ce      MUST      support
                                                supply
     "subscription-id"                5.8     yes       REQUIRED
     (integer(1:MAX))
Response:
   Group 1: Operation Attributes               Reference REQUIRED
                                                [ipp-mod] in
                                                          response
     "status-code" (type2 enum)                3.1.6.1   REQUIRED
     "attributes-charset" (charset)            3.1.4.2   REQUIRED
     "attributes-natural-language"             3.1.4.2   REQUIRED
     (naturalLanguage)
     "status-message" (text(255))              3.1.6.2   OPTIONAL
     "detailed-status-message" (text(MAX))     3.1.6.3   OPTIONAL

   Group 2: Unsupported Attributes (see [ipp-mod]    REQUIRED if
   section 3.1.7)                                    unsupported
                                                      attributes

9  Comparison of Per-Job versus Per-Printer Subscriptions

Per-Job and Per-Printer subscriptions are quite similar.  Either type of
subscription can subscribe to Job events, Printer events, or both.  Both
types of subscriptions can be queried using the Get-Subscriptions and
Get-Subscription-Attributes operations and canceled using the Cancel-
Subscription operation.  Both types of subscriptions create Subscription
objects which have the same attributes defined.  However, there are some
semantic differences between Per-Job subscriptions and Per-Printer
subscriptions.  A Per-Job Submission Subscription is established by the
client when submitting a job and after creating the job using the
Create-Job-Subscription operation by specifying the "job-id" of the job.
A Per-Printer  Subscription is established between a client and a

                 Expires September 8, 2000

Printer using the Create-Printer-Subscription operation.  Some specific
differences are:

1.A client usually creates a Per-Job subscription as part of the Job
  Creation operations (Create-Job, Print-Job, and Print-URI), rather
  than using the OPTIONAL Create-Job-Subscription operation, especially
  since Printer implementations NEED NOT support the Create-Job-
  Subscription operation, since it is OPTIONAL.

2.For Per-Job subscriptions, the subscription is only valid while the
  job is "not-complete" (see sections 7.2 and 7.3) while for the Per-
  Printer subscriptions, the subscription is valid until the time (in
  seconds) that the Printer returned in the "notify-lease-expiration-
  time" operation attribute expires.

3.Job Events in a Per-Job subscription apply only to "one job" (the Job
  created by the job creation  operation or references by the Create-
  Job-Subscription operation) while Job Events in a Per-Printer
  subscription apply to ALL jobs contained in the IPP Printer object.

10 Out of Band Values

This section defines out-of-band values (see [ipp-mod] section 4.1) for
use with attributes defined in this and other documents.

10.1'none'

This out-of-band value permits a client to indicate in a request that a
specified attribute in the request MUST NOT be applied to the job.
Specifically, this value overrides the Printer's "xxx-default" attribute
value for the attribute, if one exists.  This out-of-band value is
needed since attributes that are of the 'collection', 'uri', and
'mimeMediaType' type need a way for a client to specify that the Printer
MUST NOT apply the value of an "xxx-default" attribute to the job.  See
[ipp-coll] for a complete specification, including encoding.

11 Conformance Requirements

It is OPTIONAL to implement this Event Notification specification.  An
implementation conforming to this specification MUST also meet the
Conformance Requirements detailed in [IPP-MOD] section 5.  If this Event
Notification specification is implemented, IPP objects MUST support all
of the REQUIRED object attributes as defined in this document in the
indicated sections:

     1.REQUIRED Subscription object attributes in section 5.

     2.REQUIRED Printer Description object attributes in section 6.

     3.REQUIRED attributes in Notification content in section 7.

                 Expires September 8, 2000

In addition, the Printer MUST support the 'collection' attribute syntax
(see [ipp-coll]).

Extensions made to the events herein must be made such that new events
or event attributes are backward compatible to clients who implemented
early versions of this notification specification.

If this Event Notification specification is implemented, the operations
described in section 8 MUST be supported as described in Table 9:

           Table 9 - Conformance Requirements for Operations

    Attribute                                    Conformance
                                                  requirements
    "job-notify" (1setOf collection) in Job      REQUIRED
    Creation operations (section 8.1.1)
    Create-Printer-Subscription (section 8.2.1)  REQUIRED
    Create-Job-Subscription (section 8.1.2)      OPTIONAL
    Get-Subscription-Attributes (section 8.3.1)  REQUIRED
    Get-Subscriptions (section 8.3.2)            REQUIRED
    Renew-Subscription (section 8.3.3)           REQUIRED
    Cancel-Subscription (section 8.3.4)          REQUIRED

12 IANA Considerations

IANA will be called on to register URL schemes for notification delivery
methods, such as 'snmpnotify', for use in the "notification-recipient"
attribute, using the same procedures outlined in [ipp-mod].

13 Internationalization Considerations

This IPP notification specification continues the internationalization
of [ipp-mod] for attributes containing text strings and names.  A
subscribing client can specify a different natural language and charset
for each Notification content delivered to a Notification Recipient.

The Human Consumable Notification content is a 'text/plain; charset=utf-
8' by default where the Notification Sender has localized the text
message as requested by the subscriber for the intended Notification
Recipient.

14 Security Considerations

By far the biggest security concern is the abuse of notification:
sending unwanted notifications to third parties (i.e., spam).  The
problem is made worse by notification addresses that may be
redistributed to multiple parties (e.g. mailing lists).  There exist
scenarios where third party notification is required (see Scenario #2
and #3 in [ipp-not-req]).  The fully secure solution would require
active agreement of all recipients before sending out anything.
However, requirement #9 in [ipp-req] (.There is no requirement for IPP

                 Expires September 8, 2000

Printer receiving the print request to validate the identity of an event
recipient.) argues against this.  Certain systems may decide to disallow
third party notifications (a traditional fax model).

Clients submitting notification requests to the IPP Printer has the same
security issues as submitting an IPP/1.1 print job request.  The same
mechanisms used by IPP/1.1 can therefore be used by the client
notification submission.  Operations that require authentication can use
the HTTP authentication.  Operations that require privacy can use the
HTTP/TLS privacy.

The notification access control model should be similar to the IPP
access control model for Jobs.  Creating a Per-Printer Notification
Subscription object is associated with a user.  Only the creator or an
operator can cancel the subscription.  The system may limit the listing
of items to only those items owned by the user.  Some subscriptions
(e.g. those that have a lifetime longer than a job) can be done only by
privileged users (users having operator and/or administrator access
rights), if that is the authorization policy.

The standard security concerns (delivery to the right user, privacy of
content, tamper proof content) apply to the notification delivery.  IPP
should use the security mechanism of the delivery method used.  Some
delivery mechanisms are more secure than others.  Therefore, sensitive
notifications should use the delivery method that has the strongest
security.

15 Status Codes

The following status codes are defined as extensions for notification:

15.1'successful-ok-ignored-subscriptions' (0x0003)

The number of subscriptions supplied in a Job Creation operation
(Create-Job, Print-Job, Print-URI) exceeds either the limit of Per-Job
subscriptions supported per job as specified by the Printer's "max-job-
subscriptions-supported" attribute or some implementation-defined limit
on the total number of Per-Job subscriptions for the Printer (if any).
The Printer MUST accept the request with this status code, MUST return
the "job-notify" attribute in the Unsupported Attributes Group with only
the collection value(s) that represent the excess subscriptions that are
being ignored, and MUST perform the Job Creation operation (see section
8.1.1), since the job can still be printed.

This status code is returned even if other job attributes are
unsupported or in conflict.  That is, if an IPP Printer finds a warning
that would allow it to return  'successful-ok-ignored-subscriptions' and
either 'successful-ok-ignored-or-substituted-attributes' and/or
'successful-ok-conflicting-attributes', it must return 'successful-ok-
ignored-subscriptions'.  In other words, the precedence for returning
success codes is: 'successful-ok-ignored-subscriptions', 'successful-ok-

                 Expires September 8, 2000

conflicting-attributes', and 'successful-ok-ignored-or-substituted-
attributes'.

15.2client-error-uri-notification-scheme-not-supported (0x0414)

The scheme of the client-supplied URI in a "notify-recipient" operation
attribute in a Create-Printer-Subscription or Create-Printer-
Subscription operation is not supported.  See [ipp-mod] section 3.1.7.

There is no corresponding Per-Job subscription error for a Job Creation
operation, since the Printer object MUST ignore any errors in the "job-
notify" operation attribute, MUST return the "notify-recipient"
attribute in the Unsupported Attributes Group, and perform the Job
Creation operation (see section 8.1.1), since the job can still be
printed.

15.3client-error-too-many-subscriptions (0x0415)

The bounded set of concurrent Per-Printer subscriptions supported by the
Printer object would be exceeded if this Create-Printer-Subscription
request were accepted or the bounded set of concurrent Per-Job
subscriptions supported by the Printer object would be exceeded if this
Create-Job-Subscriptions request were accepted.

Note:  There is no corresponding Per-Job subscription error on a Job
Creation operation, since the Printer object MUST ignore any errors in
the "job-notify" operation attribute and perform the Job Creation
operation (see section 8.1.1), since the job can still be printed.

15.4client-error-too-many-events (0x0416)

The client supplied more events in the "notify-events" operation
attribute in a Create-Job-Subscription or Create-Printer-Subscription
operation than the Printer supports, as indicated in its "max-events-
supported" attribute (see section 6.4).

There is no corresponding Per-Job subscription error for a Job Creation
operation, since the Printer object MUST ignore any errors in the "job-
notify" operation attribute, MUST return the "notify-events" attribute
in the Unsupported Attributes Group with only the excess events that are
being ignored, and perform the Job Creation operation (see section
8.1.1), since the job can still be printed.

16 Addition attribute tag encodings

The Subscription attributes tag and the Notification attributes tag are
assigned the following delimiter tag values as extensions to the
encoding defined in [ipp-pro]) for use in requests and responses to
delimit Subscription object attribute Groups and Notification Content
attribute Groups:

                 Expires September 8, 2000
   Tag Value (Hex)   Delimiter

   0x06              subscription-attributes-tag
   0x07              notification-attributes-tag

17 References

[ipp-coll]
     deBry, R., , Hastings, T., Herriot, R., "Internet Printing
     Protocol/1.0 & 1.1: collection attribute syntax", <draft-ietf-ipp-
     collection-01.doc>, work in progress, February 22, 2000.

[ipp-mod]
     deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
     "Internet Printing Protocol/1.1: Model and Semantics", < draft-
     ietf-ipp-model-v11-06.txt>, work in progress, March 1, 2000.

[ipp-not-hist]
     deBry, R., Lewis, H., Hastings, T., "Internet Printing
     Protocol/1.1: Change History for IPP Notifications", <draft-ietf-
     ipp-not-change-history-00.txt>, work in progress, August 22, 1999.

[ipp-method-indp]
     Parra, H., Hastings, T., "Internet Printing Protocol (IPP): The
     INDP Event Notification Delivery Method", <draft-ietf-indp-method-
     00.txt>, work in progress, March 8, 2000.

[ipp-method-ipp]
     Manros, C., Hastings, T., Herriot, R., Lewis, H., "Internet
     Printing Protocol (IPP): The 'ipp' Notification Delivery Polling
     Method", <draft-ietf-ipp-notify-poll-00.txt>, work in progress,
     March 8, 2000.

[ipp-method-mailto]
     Holst, H. and Hastings, T., "Internet Printing Protocol (IPP): The
     'mailto' Notification Delivery Method", <draft-ietf-ipp-notify-
     mailto-00.txt>, work in progress, March 9, 2000.

[ipp-method-snmp]
     McDonald, I., Hastings, T., "Internet Printing Protocol (IPP):
     Notifications over SNMP", <draft-ietf-ipp-not-over-snmp-01.txt>,
     work in progress, December 1, 1999.

[ipp-not-req]
     deBry, R., Lewis, H., Hastings, T., "Internet Printing
     Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
     not-03.txt>, work in progress, August 11, 1999.

[ipp-pro]
     Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing
     Protocol/1.1: Encoding and Transport", <draft-ietf-ipp-protocol-
     v11-05.txt>, work in progress, March 1, 2000.

                 Expires September 8, 2000

[ipp-prog]
     Hastings, T., Bergman, R., Lewis, H., "Proposed Job Progress
          Attributes for IPP", <draft-ietf-ipp-job-prog.txt>  work in
          progress, February 2, 2000.

[ipp-set]
     Kugler, C., , Hastings, T., Herriot, R., Lewis, H, "Internet
     Printing Protocol (IPP): Job and Printer Set Operations", <draft-
     ietf-ipp-job-printer-set-ops-01.txt>, work in progress, March 8,
     2000.

[ipp-set2]
     Kugler, C., , Hastings, T., Lewis, H,  "Internet Printing Protocol
     (IPP): Additional Operations, Set 2", <draft-ietf-ipp-ops-
     set2.txt>, work in progress, February 3, 2000.

[RFC1866]
     Berners-Lee, T., Connolly, D., "Hypertext Markup Language - 2.0",
     RFC 1866, November 1995.

[RFC2046]
     Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.
     N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521,
     RFC1522, RFC1590), RFC 2046.

[RFC2119]
     S. Bradner, "Key words for use in RFCs to Indicate Requirement
     Levels", RFC 2119 , March 1997

[RFC2279]
     F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC
     2279. January 1998.

[RFC2302]
     Parsons, G., et. al., "Tag Image File Format (TIFF) -
     image/tiff", RFC 2302, March 1998.

[RFC2376]
     Whitehead, E., Murata, M., "XML Media Types", RFC 2376, July 1998.

[RFC2566]
     deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
     "Internet Printing Protocol/1.1:  <draft-
     ietf-ipp-implementers-guide-v11-00.txt>, work Protocol/1.0: Model and Semantics", RFC 2566,
     April 1999.

[RFC2567]
     Wright, D., "Design Goals for an Internet Printing Protocol", RFC
     2567, April 1999.

[RFC2568]
     Zilles, S., "Rationale for the Structure and Model and Protocol for
     the Internet Printing Protocol", RFC 2568, April 1999.

                 Expires September 8, 2000

[RFC2569]
     Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between
     LPD and IPP Protocols", RFC 2569, April 1999.

18 Author's Addresses

   Scott A. Isaacson (Editor)
   Novell, Inc.
   122 E 1700 S
   Provo, UT  84606

   Phone: 801-861-7366
   Fax: 801-861-2517
   e-mail: sisaacson@novell.com

   Tom Hastings
   Xerox Corporation
   737 Hawaii St.  ESAE 231
   El Segundo, CA  90245

   Phone: 310-333-6413
   Fax: 310-333-5514
   e-mail: hastings@cp10.es.xerox.com

   Roger deBry
   Utah Valley State College
   Orem, UT 84058

   Phone: (801) 222-8000
   EMail: debryro@uvsc.edu

   Jay Martin
   e-mail: jkm@underscore.com

   Michael Shepherd
   Xerox Corporation
   800 Phillips Road  MS 128-51E
   Webster, NY  14450

   Phone: 716-422-2338
   Fax: 716-265-8871
   e-mail: mshepherd@crt.xerox.com

   Ron Bergman (Editor)
   Hitachi Koki Imaging Solutions
   1757 Tapo Canyon Road
   Simi Valley, CA 93063-3394

   Phone: 805-578-4421
   Fax:  805-578-4001
   Email: rbergma@hitachi-hkis.com

                 Expires September 8, 2000

A.   Appendix:  Change History

This section summarizes the changes to the document.  Each sub-section
is in reverse chronological order.  Adding or removing ISSUES that don't
change the document are not listed here.

18.1Changes to the March 6, 2000 version to create the March 8, 2000
    version

The following changes were made to the March 6, 2000 version to create
the March 8, 2000 version based on the agreements reached on the mailing
list:

1.Changed the name of the SNMP delivery method from 'snmp' to
  'snmpnotify', since the Notification Recipient isn't an SNMP agent.

2.Clarified that an implementation with only a single value for
  persistent-jobs-supported (boolean) or persistent-subscriptions-
  supported (boolean) MAY make it settable to the single value or make
  it not-settable.

18.2Changes to the February 2, 2000 version to create the March 6, 2000
    version

The following changes were made to the February 2, 2000 version to
create the March 6, 2000 version based on the agreements reached on the
mailing list, at the February IPP WG meetings, and reflected in the
minutes:

1.Clarified that this extension is intended as an extension to IPP/1.0,
  IPP/1.1, and future versions.

2.Allocated the operation-id 0x0016 to 0x001B values for the
  Notification operations defined in the document.

3.Pre-pended the word "subscription-" on the front of the "request-id"
  Subscription object attribute to distinguish it from the "request-id"
  parameter that is sent in every request and response.

4.Added the term "settable" for describing attributes that are not
  READ-ONLY.

5.Added the term "Subscription Creation operation" to stand for any
  operation that can create a Subscription object:  Job Creation
  operations (Create-Job, Print-Job, and Print-URI), Create-Job-
  Subscription, and Create-Printer-Subscription.

6.Changed the "subscriber-user-name" (name(MAX)) Subscription object
  attribute from OPTIONAL to REQUIRED.

7.Changed the name and semantics of "notify-printer-up-
  time(integer(1:MAX)) to notify-server-up-time so that it can be

                 Expires September 8, 2000
  either the Printer's uptime or a Notification Delivery Service
  uptime.

8.Added the 'ipp:', 'indp:', 'mailto:, and 'snmp:' notification
  delivery schemes to the definition of the "notify-recipients" to
  indicate possible schemes.

9.Changed the name and semantics of "notify-text-format"
  (mimeMediaType) to "notify-format" so that it can be used to specify
  either Human Consumable or Machine Consumable formats where the
  implementation supports both.  Clarified that this attribute controls
  whatever variable Notification Content that the implementation
  supports, which may be an attachment to the fixed content format or
  the contents of the "human-readable-report" (text(MAX)) attribute.
  Clarified that an implementation NEED NOT support all of its
  supported Notification Content formats with all of its supported
  delivery methods.

10.  Added 'text/xml', 'application/ipp', 'application/postscript', and
  'image/tiff' and additional example MIME media types for "notify-
  format" (mimeMediaType).

11.  Clarified that the recommend way for a client to determine whether
  or not a Printer supports Per-Job Subscriptions is to query the
  Printer's "max-job-subscriptions-supported" attribute, since Create-
  Job-Subscriptions is an OPTIONAL operation.

12.  Clarified that the recommend way for a client to determine whether
  or not a Printer supports Per-Printer Subscriptions is to query the
  Printer's "operations-supported" attribute to see if the Create-
  Printer-Subscriptions operations is supported, since this is the
  usual way to determine a Printer's capabilities.

13.  Clarified that if "persistent-jobs-supported" (boolean) and
  "persistent-subscriptions-supported" (boolean) are settable, then
  setting them must affect whether or not jobs and subscriptions are
  persistent.

14.  Allowed delivery methods to send operations with or without a
  response, depending on the definition of the delivery method.

15.  Indicated that a deliver method definition is free to REQUIRE that
  the client supply the "subscriber-user-data" attribute.

16.  Required that the Printer support the "job-uri" operation attribute
  as a target, in progress,
     September 27, 1999. addition to "printer-uri"&"job-id", i.e., keep
  consistent with all Job operations.

17.  Changed the 'none' out-of-band value to be a reference to the
  collection document [ipp-coll], since the use for it in this document
  is with the 'collection' attribute syntax.

                 Expires April September 8, 2000

18.  Clarified that a conforming implementation MUST support the
  'collection' attribute syntax, since that is required in Job Creation
  operations.

19.  Allocated the values to the new status codes defined in this
  document.

20.  Allocated the [ipp-pro] subscription-attributes-tag and
  notification-attributes-tag delimiter tags to delimit Subscription
  attributes and Notification Content attributes in requests and
  responses.

21.  Changed the 'server-error-too-many-subscriptions' and 'server-
  error-too-many-events' to be client errors, i.e., 'client-error-too-
  many-subscriptions' and 'client-error-too-many-events', since other
  errors of this type are client errors.

18.3Changes to the October 14, 1999 version to create the February 2,
    2000 version

The following changes were made to the October 14, 1999 version to
create the February 2, 2000

[ipp-mod]
     deBry, R., Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
     "Internet Printing Protocol/1.1: Model version based on the agreements reached at
the October and Semantics", < draft-
     ietf-ipp-model-v11-04.txt>, work in progress, June 23, 1999.

[ipp-not-hist]
     deBry, R., Lewis, H., Hastings, T., "Internet Printing
     Protocol/1.1: Requirements for IPP Notifications", <draft-ietf-ipp-
     not-change-history-00.doc>, work in progress, August 22, 1999.

[ipp-not-req]
     deBry, R., Lewis, H., Hastings, T., "Internet Printing
     Protocol/1.1: Requirements for December IPP Notifications", <draft-ietf-ipp-
     not-03.txt>, work in progress, August 11, 1999.

[ipp-pro]
     Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing
     Protocol/1.1: Encoding WG meetings and Transport", <draft-ietf-ipp-protocol-
     v11-03.txt>, work reflected in progress, June, 1999.

[ipp-prog]
     Hastings, T., Bergman, R., Lewis, H., "Proposed Job Progress
          Attributes for IPP", <draft-ietf-ipp-prog.txt>  work the minutes:

1.Added a Java Listener as an example of a Notification Recipient.

2.Clarified the object relationships in
          progress, May 18, 1999.

[ipp-set2]
     Kugler, C., , Hastings, T., "Internet Printing Protocol/1.1:
     Additional Operations, Set 2", <draft-ietf-ipp-set2.txt>, work section 4.1.

3.Clarified how job events differ for Per-Job versus Per-Printer
  Subscriptions.

4.Added the ability for the Machine Consumable form to contain a Human
  Readable "human-readable-report" (text) attribute so that both forms
  could be sent in
     progress, August 22, 1999.

[RFC2046]
     Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.
     N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521,
     RFC1522, RFC1590), RFC 2046.

[RFC2119]
     S. Bradner, "Key words the same Notification.

5.Clarified that the 'none' value for notify-text-format
  (mimeMediaType) has to be out-of-band, not the text string 'none' as
  a mimeMediaType.

6.Clarified that 'none' means send the Machine Consumable form without
  the "human-readable-report" (text) attribute, if it is defined.

7.Clarified that Notification Recipients MUST be able to accept
  unrecognized attributes.

8.Allowed the notification delivery method definition to be modeled as
  (1) a request with an operation code without a response, (2) a
  request with a operation code with a response or (3) a response with
  a status code.

                 Expires September 8, 2000

9.Added "notify-text-format" (mimeMediaType) and "human-readable-
  report" (text(MAX)) to be able to be sent in a Notification content,
  if the notification delivery method document permits it.

10.  Added "job-k-octets" (integer(0:MAX)), "job-impressions"
  (integer(0:MAX)), and "job-media-sheets" (integer(0:MAX)) as OPTIONAL
  for Notification content for use in RFCs job-progress events to Indicate Requirement
     Levels", RFC 2119 , March 1997

[RFC2279]
     F. Yergeau , "UTF-8, show the
  target values so that the Notification Recipient can show a transformation format of ISO 10646", RFC
     2279. January 1998.

[RFC2566]
     deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P.,
     "Internet Printing Protocol/1.0: Model
  thermometer.

11.  Added a Subscription Attributes group (and subscription-attributes
  tag) the Create-Job-Subscription and Semantics", RFC 2566,
     April 1999.

[RFC2639]
     Hastings, T., Manros, C., "Internet Printing Protocol/1.0:
     Implementer's Guide", RFC 2639, July 1999.

                   Expires April 14, 2000

17 Author's Addresses

   Scott A. Isaacson (Editor)
   Novell, Inc.
   122 E 1700 S
   Provo, UT  84606

   Phone: 801-861-7366
   Fax: 801-861-2517
   e-mail: sisaacson@novell.com

   Tom Hastings
   Xerox Corporation
   737 Hawaii St.  ESAE 231
   El Segundo, CA  90245

   Phone: 310-333-6413
   Fax: 310-333-5514
   e-mail: hastings@cp10.es.xerox.com

   Roger deBry
   Utah Valley State College
   Orem, UT 84058

   Phone: (801) 222-8000
   EMail: debryro@uvsc.edu

   Jay Martin
   e-mail: jkm@underscore.com

   Michael Shepherd
   Xerox Corporation
   800 Phillips Road  MS 128-51E
   Webster, NY  14450

   Phone: 716-422-2338
   Fax: 716-265-8871
   e-mail: mshepherd@crt.xerox.com

   Ron Bergman (Editor)
   Dataproducts Corp.
   1757 Tapo Canyon Road
   Simi Valley, CA 93063-3394

   Phone: 805-578-4421
   Fax:  805-578-4001
   Email: rbergman@dpc.com Create-Printer-Subscription
  requests and responses.

12.  Added the 'none' out-of-band value for use with "notify-text-
  format" (mimeMediaType) attribute.

13.  Changed the job progress attributes from using -2 to mean 'unknown'
  as in the PWG Job Monitoring MIB, to use the 'unknown' out-of-band
  value.

                 Expires April 14, September 8, 2000

18 Appendix C:

B.   Appendix: Full Copyright Statement

Copyright (C) The Internet Society (1998,1999). (1998,1999,2000). All Rights Reserved

This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and
distributed, in whole or in part, without restriction of any kind,
provided that the above copyright notice and this paragraph are included
on all such copies and derivative works.  However, this document itself
may not be modified in any way, such as by removing the copyright notice
or references to the Internet Society or other Internet organizations,
except as needed for the purpose of developing Internet standards in
which case the procedures for copyrights defined in the Internet
Standards process must be followed, or as required to translate it into
languages other than English.

The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS
IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
FITNESS FOR A PARTICULAR PURPOSE.

                 Expires April 14, September 8, 2000