idnits 2.17.1 draft-ietf-ipp-not-spec-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about the list of Shadow Directories -- however, there's a paragraph with a matching beginning. Boilerplate error? ** The document is more than 15 pages and seems to lack a Table of Contents. == No 'Intended status' indicated for this document; assuming Proposed Standard == The page length should not exceed 58 lines per page, but there was 47 longer pages, the longest (page 30) being 83 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 47 pages Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** The abstract seems to contain references ([IPP-PRO], [IPP-RAT], [IPP-IIG], [IPP-MOD], [IPP-REQ], [IPPLPD]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 4 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the RFC 3978 Section 5.4 Copyright Line does not match the current year == Line 412 has weird spacing: '...ributes attr...' == Line 448 has weird spacing: '...ated by a cli...' == Line 1039 has weird spacing: '...ccepted a job...' == Line 1729 has weird spacing: '...ference all p...' == Line 2209 has weird spacing: '...reation opera...' == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (August 25, 1999) is 9011 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC2026' is mentioned on line 28, but not defined == Missing Reference: 'IPP-REQ' is mentioned on line 63, but not defined == Missing Reference: 'IPP-RAT' is mentioned on line 65, but not defined == Missing Reference: 'IPP-MOD' is mentioned on line 2222, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 67, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 68, but not defined == Missing Reference: 'IPP LPD' is mentioned on line 69, but not defined == Missing Reference: 'RFC-2044' is mentioned on line 1199, but not defined ** Obsolete undefined reference: RFC 2044 (Obsoleted by RFC 2279) == Missing Reference: 'RFC2573' is mentioned on line 1992, but not defined ** Obsolete undefined reference: RFC 2573 (Obsoleted by RFC 3413) == Unused Reference: 'RFC2566' is defined on line 2394, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) Summary: 10 errors (**), 0 flaws (~~), 21 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 3 S. Isaacson 4 Novell, Inc. 5 J. Martin 6 Underscore 7 R. deBry 8 Utah Valley State College 9 T. Hastings 10 Xerox Corporation 11 M. Shepherd 12 Xerox Corporation 13 R. Bergman 14 Dataproducts Corp. 15 August 25, 1999 17 Internet Printing Protocol/1.1: Event Notification Specification 19 Copyright (C) The Internet Society (1999). All Rights Reserved. 21 Status of this Memo 23 This document is an Internet-Draft and is in full conformance with all 24 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 25 documents of the Internet Engineering Task Force (IETF), its areas, and 26 its working groups. Note that other groups may also distribute working 27 documents as Internet-Drafts. 29 Internet-Drafts are draft documents valid for a maximum of six months 30 and may be updated, replaced, or obsoleted by other documents at any 31 time. It is inappropriate to use Internet-Drafts as reference material 32 or to cite them other than as "work in progress". 34 The list of current Internet-Drafts can be accessed at 35 http://www.ietf.org/ietf/1id-abstracts.txt 37 The list of Internet-Draft Shadow Directories can be accessed as 38 http://www.ietf.org/shadow.html. 40 Abstract 42 This document describes an extension to the IPP/1.0 & IPP/1.1 model that 43 allows a client to subscribe to printing related events. Subscriptions 44 include "Per-Job Submission subscription" and "Per-Printer 45 subscriptions". One or more Per-Job Submission subscriptions are 46 specified by the client when submitting a job. One or more Per-Printer 47 subscriptions are created by performing separate explicit Create- 48 Printer-Subscription operations on the Printer. Four other operations 49 are defined for Per-Printer subscription objects: get attributes, get 50 subscriptions, renew a subscription, and cancel a subscription. 52 A subscription includes: the names of Job and/or Printer events, the 53 Notification Recipient URL, the Notification content MIME type, possibly 54 some opaque data and the charset and natural language. In addition, the 55 Per-Printer subscription includes: the requested lease time and 56 persistency for the subscription. When the event occurs, a notification 57 is generated and delivered using the information specified in the 58 subscription. 60 Expires February 25, 2000 61 The full set of IPP documents includes: 63 Design Goals for an Internet Printing Protocol [IPP-REQ] 64 Rationale for the Structure and Model and Protocol for the Internet 65 Printing Protocol [IPP-RAT] 66 Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] 67 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 68 Internet Printing Protocol/1.0: Implementer's Guide [IPP-IIG] 69 Mapping between LPD and IPP Protocols [IPP LPD] 71 The "Design Goals for an Internet Printing Protocol" document takes a 72 broad look at distributed printing functionality, and it enumerates 73 real-life scenarios that help to clarify the features that need to be 74 included in a printing protocol for the Internet. It identifies 75 requirements for three types of users: end users, operators, and 76 administrators. It calls out a subset of end user requirements that are 77 satisfied in IPP/1.0. Operator and administrator requirements are out 78 of scope for version 1.0. A few OPTIONAL operator operations have been 79 added to IPP/1.1. 81 The "Rationale for the Structure and Model and Protocol for the Internet 82 Printing Protocol" document describes IPP from a high level view, 83 defines a roadmap for the various documents that form the suite of IPP 84 specifications, and gives background and rationale for the IETF working 85 group's major decisions. 87 The "Internet Printing Protocol/1.1: Model and Semantics", describes a 88 simplified model with abstract objects, their attributes, and their 89 operations that are independent of encoding and transport. It introduces 90 a Printer and a Job object. The Job object optionally supports multiple 91 documents per Job. It also addresses security, internationalization, and 92 directory issues. 94 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 95 a formal mapping of the abstract operations and attributes defined in 96 the model document onto HTTP/1.1. It defines the encoding rules for a 97 new Internet MIME media type called "application/ipp". This document 98 also defines the rules for transporting over HTTP a message body whose 99 Content-Type is "application/ipp". This document defines a new scheme 100 named 'ipp' for identifying IPP printers and jobs. Finally, this 101 document defines interoperability rules for supporting IPP/1.0 clients. 103 The "Internet Printing Protocol/1.0: Implementer's Guide" document gives 104 insight and advice to implementers of IPP clients and IPP objects. It 105 is intended to help them understand IPP/1.0 and some of the 106 considerations that may assist them in the design of their client and/or 107 IPP object implementations. For example, a typical order of processing 108 requests is given, including error checking. Motivation for some of the 109 specification decisions is also included. 111 The "Mapping between LPD and IPP Protocols" document gives some advice 112 to implementers of gateways between IPP and LPD (Line Printer Daemon) 113 implementations. 115 Expires January 22, 2000 116 Table of Contents 118 1 Introduction.......................................................6 120 1.1Notification Overview..........................................6 122 2 Model for Per-Job and Per-Printer Subscription and Event Notification 123 9 125 2.1Model for Per-Job Subscription and Notification................9 126 2.2Model for Per-Printer Subscription and Notification...........10 127 2.3Relationship between the Printer object and the Notification 128 Delivery Service..................................................11 130 3 Terminology.......................................................12 132 3.1Conformance Terminology.......................................12 133 3.2Other terminology.............................................12 135 4 Object Model for Notification.....................................15 137 4.1Object relationships..........................................16 139 5 Object attributes defined for Notification........................17 141 5.1"job-notify" (1setOf collection) Job Description attribute....17 142 5.2Subscription object attributes................................18 143 5.3Common Per-Job and Per-Printer Subscription attributes........19 144 5.3.1 notify-recipient (uri)...................................20 145 5.3.2 notify-events (1setOf type2 keyword).....................20 146 5.3.3 notify-content-type (mimeMediaType)......................23 147 5.3.4 subscriber-user-data (octetString(63))...................24 148 5.3.5 notify-attributes-charset (charset)......................24 149 5.3.6 notify-attributes-natural-languages (naturalLanguage)....24 150 5.3.7 request-id...............................................24 151 5.4Additional attributes for the Subscription object only........24 152 5.4.1 subscription-id (integer (1:MAX))........................24 153 5.4.2 notify-lease-expiration-time (integer(0:MAX))............25 154 5.4.3 printer-uri (uri)........................................25 155 5.4.4 subscriber-user-name (name(MAX)).........................25 156 5.4.5 notify-printer-up-time (integer(1:MAX))..................26 157 5.5Printer Description Attributes related to Notification........26 158 5.5.1 notify-schemes-supported (1setOf uriScheme)..............27 159 5.5.2 notify-events-default (1setOf type2 keyword).............27 160 5.5.3 notify-events-supported (1setOf type2 keyword)...........27 161 5.5.4 max-events-supported (integer(5:MAX))....................27 162 5.5.5 max-job-subscriptions-supported (integer(1:MAX)).........27 163 5.5.6 max-printer-subscriptions-supported (integer(0:MAX)).....27 164 5.5.7 notify-lease-time-supported (rangeOfInteger(0:MAX))......28 165 5.5.8 notify-lease-time-default (integer(0:MAX))...............28 166 5.5.9 persistent-jobs-supported (boolean)......................28 167 5.5.10persistent-subscriptions-supported (boolean).............28 168 5.5.11printer-state-change-time (integer(1:MAX))...............28 169 5.5.12printer-state-change-date-time (dateTime)................28 171 6 Notification Content..............................................29 173 6.1Notification content MIME media type formats..................29 175 Expires January 22, 2000 176 6.2Notification content attributes common to Job and Printer events 177 29 178 6.3Additional Notification content attributes for Job events only 31 179 6.4Additional Notification content attributes for Printer events 180 only 32 182 7 Operations for Per-Job Subscriptions..............................32 184 7.1Job Creation Operations (Create-Job, Print-Job, Print-URI) and 185 Validate-Job......................................................33 186 7.2Get-Printer-Attributes operation..............................34 187 7.3Get-Job-Attributes operation..................................34 188 7.4Set-Job-Attributes operation..................................35 190 8 Per-Printer Subscriptions and the Subscription object.............35 192 8.1Create-Printer-Subscription operation.........................35 193 8.2Get-Printer-Subscription-Attributes operation.................38 194 8.3Get-Printer-Subscriptions operation...........................39 195 8.4Renew-Printer-Subscription operation..........................39 196 8.5Cancel-Printer-Subscription operation.........................40 198 9 Comparison of Per-Job Submission Subscriptions versus Per-Printer 199 Subscriptions........................................................41 201 10 Conformance Requirements........................................42 203 11 IANA Considerations.............................................42 205 12 Internationalization Considerations.............................42 207 13 Security Considerations.........................................43 209 14 Status Codes....................................................43 211 14.1 client-error-uri-notification-scheme-not-supported (0x04??)..43 212 14.2 server-error-too-many-subscriptions (0x04??).................44 213 14.3 server-error-too-many-events (0x04??)........................44 215 15 References......................................................44 217 16 Author's Addresses..............................................45 219 17 Appendix C: Full Copyright Statement............................46 221 Expires January 22, 2000 222 Tables 224 Table 1 - Summary of Per-Job Subscription operations..................7 226 Table 2 - Summary of Per-Printer Subscription operations..............8 228 Table 3 - Job object 'job-notify' colletion member attributes........18 230 Table 4 - Subscription object attributes.............................19 232 Table 5 - Printer Description attributes associated with Notification26 234 Table 6 - Common Job and Printer Notification content attributes.....30 236 Table 7 - Additional Notification content attributes for Job events only 237 .................................................................31 239 Table 8 - Additional Notification content attributes for Printer events 240 only.............................................................32 242 Table 9 - Member attributes of the "job-notify" collection operation 243 attribute........................................................33 245 Table 10 - Conformance Requirements for Operations...................42 247 Figures 249 Figure 1 - Client-Printer Per-Job Subscription and Notification Model.9 251 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 252 Model............................................................10 254 Figure 3 - Client-Printer Per-Printer Subscription and Notification 255 Model............................................................11 257 Figure 4 - Opaque Use of a Notification Service......................11 259 Expires January 22, 2000 260 1 Introduction 262 This IPP notification specification is an extension to IPP/1.0 [RFC2568, 263 RFC2569]. This document in combination with the following documents is 264 intended to meet the notification requirements described in [ipp-not- 265 req]: 267 Internet Printing Protocol/1.0 & 1.1: "Collection Attribute 268 Syntax" [ipp-coll] 269 Internet Printing Protocol/1.0 & 1.1: "Job Progress Attributes" 270 [ipp-prog] 271 Internet Printing Protocol/1.0 & 1.1: "Notification Change 272 History" [ipp-not-hist] 274 The rest of this document is laid out as follows: 276 - The rest of Section 1.1 is an overview of IPP Notification. 278 - Section 2 is the model for network entities that use IPP 279 notification, including clients (desktop and servers), IPP Printers 280 (servers and devices), and Notification Recipients. 282 - Section 3 is the terminology used throughout the document. 284 - Section 4 is the object model for notification, including Job, 285 Printer, and Subscription objects. 287 - Section 5 defines the notification attributes for each of the 288 Job, Printer, and Subscription objects. 290 - Section 6 defines the content of Human Consumable and Machine 291 Consumable Event Notifications. 293 - Sections 7, 8, and 9 define the Per-Job and Per-Printer 294 Subscription mechanisms. 296 - Section 10 and 11 define the conformance requirements and IANA 297 requirements, respectively. 299 - Section 12 - 14 cover Internationalization, Security, and Status 300 codes. 302 1.1 Notification Overview 304 A client can establish an event notification subscription so that when 305 one of the specified events occurs, an asynchronous Notification is sent 306 to a specified Notification Recipient. 308 One or more Per-Job Submission subscriptions are specified by the client 309 when submitting a job. One or more Per-Printer subscriptions are 310 created by performing separate explicit Create-Printer-Subscription 311 operations on the Printer. 313 A Per-Job or Per-Printer subscription includes: 315 1. the names of Job and/or Printer events that are of interest to the 316 Notification Recipient 318 Expires January 22, 2000 320 2. the delivery method and address to use to deliver the notification 321 to one Notification Recipient 323 3. whether Human Consumable or Machine Consumable notification content 324 is to be sent 326 4. some opaque data that the subscriber wants to be send to the 327 Notification Recipient in the Notification, perhaps to identify 328 either the subscriber or the ultimate recipient 330 5. the charset to use in the Notification, if it is to be different 331 than the one used in the request that created the subscription 333 6. the natural language to use in the Human Consumable Notification, 334 if it is to be different than the one used in the request that 335 created the subscription 337 In addition, a Per-Printer subscription includes: 339 7. the requested lease time in seconds for the subscription 341 8. whether or not the subscription is requested to be persistent 342 across power cycles. 344 For Per-Job subscriptions, a client requests job and printer event 345 notification using the "job-notify" operation attribute when creating a 346 job with any of the Job Creation operation: Print-Job, Print-URI, and 347 Create-Job. The "job-notify" operation attributes may be submitted to 348 the Validate-Job in order to be validated. The "job-notify" operation 349 attribute is copied to the Job object as a Job Description attribute and 350 so may be queried using the Get-Job-Attributes and Get-Jobs operations 351 (see [ipp-mod]). Also this "job-notify" Job Description attribute may 352 be changed using the Set-Job-Attributes (see [ipp-set2]). The "job- 353 notify" operation attribute contains one or more collection values, each 354 consisting of a number of member attributes the specify a subscription, 355 so that a Job can contain more than one Per-Job subscription. The 356 'collection' is a new attribute syntax (see [ipp-coll]). Table 1 357 summarizes the Per-Job Subscription operations and their salient input 358 operation attributes. All operations are REQUIRED, except the Set-Job- 359 Attributes operation. 361 Table 1 - Summary of Per-Job Subscription operations 363 Operation: salient inputs besides printer-uri: 365 Print-Job, 1setOf {recipient, [events,] [content-type,] 366 Print-URI, [user-data,] [charset,] [natural-language]} 367 Create-Job 369 Validate-Job 1setOf {recipient, [events,] [content-type,] 370 [user-data,] [charset,] [natural-language]} 372 Get-Job- job-id, [requested-attributes] 373 Attributes 375 Set-Job- job-id, 1setOf {[recipient,] [events,] 376 Attributes [content-type,] [user-data,] [charset,] 377 [natural-language]} 379 Expires January 22, 2000 381 For Per-Printer subscriptions, a client requests job and printer event 382 notification using new operations independent of any job. The Printer 383 keeps each subscription in a separate Subscription object which is 384 similar to a Job object in its operations and security. The Get- 385 Printer-Attributes (see [ipp-mod]) returns the supported notification 386 capabilities supported. The Create-Printer-Subscription operation 387 creates an instance of the Subscription object supplying these new 388 operation attributes and returns a subscription-id (analogous to a job- 389 id for a Job object). These operation attributes are copied to the 390 Subscription object as Subscription Description attributes and so may be 391 queried using the Get-Subscription-Attributes and Get-Subscriptions 392 operations. The subscriber requests a lease time for each Per-Printer 393 subscription which MAY be infinite. The Printer grants a lease time 394 according to its configured policy. A client MUST renew the 395 Subscription before the granted lease time expires using the Renew- 396 Printer-Subscription operation. Table 2 summarizes the Per-Printer- 397 Subscription operations and their salient input operation attributes. 399 Table 2 - Summary of Per-Printer Subscription operations 401 Operation: salient inputs beside printer-uri: 403 Get-Printer-Attributes [requested-attributes] 405 Create-Printer- recipient, [events,] [content- 406 Subscription type,][user- 407 data,][charset,][natural- 408 language,][lease-time-requested,] 409 [persistence-requested] 411 Get-Printer- subscription-id, [requested- 412 Subscription-Attributes attributes] 414 Get-Printer- [my-printer-subscriptions,] 415 Subscriptions [requested-attributes] 417 Renew-Printer- subscription-id, [lease time- 418 Subscription requested] 420 Cancel-Printer- subscription-id 421 Subscription 423 There are two steps that IPP notification must take regarding each event 424 . an internal event recording, and an external notification: 426 1) As an events occurs, the printer internally records in the job 427 objects and the printer objects those events which are required to 428 be supported by the system and those that are subscribed to by a 429 notification recipient. 431 2) As an events occurs, the Printer searches the set of 432 subscriptions for any interest in that event. As the Printer finds 433 that some notification recipient is interested in that event (the 434 notification recipient is subscribed to the event), the "request- 435 id" sequence number for that event is incremented and a 436 notification is generated and delivered using the methods and 437 target addresses identified in the subscription. The "request-id" 439 Expires January 22, 2000 440 sequence number permits a Notification Recipient to detect 441 duplicate notifications due either to duplicate subscriptions or 442 retries and to detect dropped notifications. 444 2 Model for Per-Job and Per-Printer Subscription and Event Notification 446 2.1 Model for Per-Job Subscription and Notification 448 Per-Job subscriptions are created by a client (desktop or server acting 449 as a client) as part of creation of the job in an IPP Printer (printing 450 device or server).. More than one subscription may be submitted with a 451 job. The IPP Printer object delivers a Notifications to the 452 Notification Recipient supplied by the Client in each subscription. A 453 Notification Recipient can be the Job submitter or a third party. 455 Figure 1 shows the Per-Job subscription notification model for a simple 456 Client - Printer relationship. 458 embedded printer: 459 output device or server 460 desktop or server +---------------+ 461 +--------+ | ########### | 462 | client |---IPP job submission------># Printer # | 463 +--------+ Per-Job subscription | # Object # | 464 | #####|##### | 465 +---------+ +-------|-------+ 466 |recipient|<-----Notifications-------------+ 467 +---------+ (Job and/or Printer events) 469 Figure 1 - Client-Printer Per-Job Subscription and Notification Model 471 Figure 2 shows a (spooling or non-spooling) Server that implements two 472 Printer objects (1 and 2) that represent two devices. The devices A and 473 B in turn each implement an IPP Printer object (3 and 4, respectively). 474 The Server implementation has three choices for how to support Per-Job 475 subscriptions to the client (and itself): 477 1.forward the Per-Job subscriptions to the down stream IPP Printer 478 and let it perform the notification directly to the Notification 479 Recipients supplied by the Client (Notifications(C)) and use 480 Per-Printer Subscriptions for the Server's own purposes. 482 2.save the client-supplied Per-Job subscription on the Job object 483 in the server and substitute its own Per-Job subscription with 484 the Server as the Notification Recipient (Notifications(B)). 485 Then the Server relays Notifications to the client-supplied 486 Notification Recipients (Notifications(A)). 488 3.A combination of 1 and 2 in which the Server adds its own Per- 489 Job subscriptions to those supplied by the client. Thus the IPP 490 Job that goes to Printer object 4 has a combination of 491 subscription information from both the Client and the Server. 492 This latter approach is sometimes called "piggy-backing" because 494 Expires January 22, 2000 495 the Server is adding its Per-Job subscription information to 496 that supplied by the client. Piggy-backing is especially 497 useful, if device B also accepts (IPP or non-IPP) requests from 498 other servers. Then when all the jobs from Server S have been 499 completed by device B, there will be no more Job events sent to 500 Server S. (Server S could still maintain a long term Per- 501 Printer subscription with Printer D to that Server S can have 502 Printer B's state track (shadow) that of Printer D or Server S 503 could poll Printer D when queried about Printer B). 505 device A 506 server S +------------+ 507 +------------+ | ###########| 508 +--------+ IPP Job | ###########| IPP Job | # Printer #| 509 | client |--submission---># Printer #|---submission-----># Object 3#| 510 +--------+ Per-Job | # Object 1#| Per-Job | ###########| 511 subscription | ###########| subscription +------------+ 512 | | device B 513 +--------+ IPP Job | ###########| +------------+ 514 | client |--submission---># Printer #| IPP Job | ###########| 515 +--------+ Per-Job | # Object 2#|---submission-----># Printer #| 516 subscription | ###|#######| Per-Job | # Object 4#| 517 +----|---^---+ subscription | ####|#|####| 518 +--------+ | | +-----|-|----+ 519 |Notific-|<-Notifications(A)-+ +--- Notifications(B)-------+ | 520 |ation Re|<----------------Notifications(C)--------------------+ 521 |cipient | 522 +--------+ 524 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 525 Model 527 2.2 Model for Per-Printer Subscription and Notification 529 Per-Printer subscriptions are created by a client (an end user, an 530 operator, or a server acting as a client) using a Create-Printer- 531 Subscription operation that is independent of Job Submission. The 532 Printer object (printing device or server) creates a Subscription object 533 to hold the attributes supplied by the subscriber. The client creates 534 separate Per-Printer subscriptions if more than one Notification 535 Recipient is desired. The Printer delivers Notifications to the 536 Notification Recipient specified by each Per-Printer subscription. A 537 Notification Recipient may be the subscriber or a third party. Figure 3 538 shows the Per-Printer subscription notification model for the Client - 539 Printer relationship where the client may be an end user, an operator, 540 or a server acting as a client. 542 Expires January 22, 2000 543 desktop or server server or printing device 544 +---------------+ 545 +--------+ | ########### | 546 | client |---IPP job submission------># Printer # | 547 +--------+ Per-Job subscription | # Object # | 548 | #####|##### | 549 +---------+ +-------|-------+ 550 |recipient|<-----Notifications-------------+ 551 +---------+ (Job and/or Printer events) 553 Figure 3 - Client-Printer Per-Printer Subscription and Notification 554 Model 556 2.3 Relationship between the Printer object and the Notification 557 Delivery Service 559 The IPP Notification model does not mandate that the IPP Printer object 560 implement the full semantics of subscription, report generation, and 561 multiple delivery methods itself. An implementation may be configured 562 to use some other notification service. Figure 4 shows this 563 partitioning. 565 Create Request with ########### 566 ----Subscriptions-------------------># IPP # 567 # Printer # 568 # Object # 569 ########### 570 | 571 *******|********** 572 * Subscriptions * 573 * & Events * 574 * | 575 * +----v---------+ 576 * | notification | 577 <---Job and Printer ------*---------| service | 578 Notifications * +--------------+ 579 * 580 * 582 *** = Implementation configuration opaque boundary 584 Figure 4 - Opaque Use of a Notification Service 586 If an IPP Printer does use some other notification service, it MAY do so 587 in either of two ways: 589 1.The IPP Printer forwards the Subscriptions and the Events to the 590 other notification service which then sends the Notifications to 591 the proper Recipients. 593 2.The IPP Printer keeps the subscriptions and uses them to send 594 Notifications to the other notification service which forwards 596 Expires January 22, 2000 597 them to Recipients that have also subscribed directly with the 598 other notification service. Examples of this latter approach 599 are paging and immediate messaging services. 601 In any case, the interface between the IPP Printer and the other 602 notification service is outside the scope of this document and is 603 intended to be transparent to this specification. 605 3 Terminology 607 This section defines terminology used throughout this document. 609 3.1 Conformance Terminology 611 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 612 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 613 conformance to this specification. These terms are defined in 614 [ipp-mod section 13.1 on conformance terminology, most of which is 615 taken from RFC 2119 [RFC2119]. 616 Since support of this entire notification specification is 617 OPTIONAL for conformance to IPP/1.0 or IPP/1.1, the use of the 618 term REQUIRED in this document means "REQUIRED if this 619 notification specification is implemented". Likewise, the 620 term RECOMMENDED means "RECOMMENDED if this notification 621 specification is implemented". 622 READ-ONLY - indicates an attribute that MUST NOT be settable using 623 the Set-Job-Attributes or Set-Printer-Attributes operations (see 624 [ipp-set2]). 626 3.2 Other terminology 628 Job Submitting End User - A human end user who submits a print job 629 to an IPP Printer. This person may or may not be within the same 630 security domain as the Printer. This person may or may not be 631 geographically near the printer. 632 Administrator - A human user who established policy for and 633 configures the print system. 634 Operator - A human user who carries out the policy established by the 635 Administrator and controls the day to day running of the print 636 system. 637 Job Submitting Application - An application (for example, a batch 638 application), acting on behalf of a Job Submitting End User, which 639 submits a print job to an IPP Printer. The application may or may 640 not be within the same security domain as the Printer. This 641 application may or may not be geographically near the printer. 642 Security Domain - The set of network components which can communicate 643 without going through a proxy or firewall. A security domain may be 644 geographically very large, for example - anyplace within IBM.COM. 645 IPP Client (or client) - The software component (desktop or server) 646 that sends an IPP operation request to an IPP Printer object 647 (server or printing device) and accepts the resulting operation 648 response from the IPP Printer object.. Job Recipient - A human who 649 is the ultimate consumer of the print job. In many cases this will 651 Expires January 22, 2000 652 be the same person as the Job Submitting End User, but need not be. 653 Example: If I use IPP to print a document on a printer in a 654 business partner's office, I am the Job Submitting End User, while 655 the person I intend the document for in my business partner's 656 office is the Job Recipient. Since one of the goals of IPP is to 657 be able to print near the Job Recipient of the printed output, we 658 would normally expect that person to be in the same security domain 659 as, and geographically near, the Printer. However, this may not 660 always be the case. For example, I submit a print job across the 661 Internet to a Kinko's print shop. I am both the Submitting End User 662 and the Job Recipient, but I am neither near nor in the same 663 security domain as the Printer. 664 Job Recipient Proxy - A human acting on behalf of the Job Recipient. 665 In particular, the Job Recipient Proxy physically picks up the 666 printed document from the Printer, if the Job Recipient cannot 667 perform that function. The Proxy is by definition geographically 668 near and in the same security domain as the printer. 669 Example: I submit a print job from home to be printed on a printer 670 at work. I'd like my secretary to pick up the print job and put it 671 on my desk. In this case, I am acting as both Job Submitting End 672 User and Job Recipient. My secretary is acting as a Job Recipient 673 Proxy 674 Notification Subscriber (or Subscriber) - A client that requests the 675 IPP Printer to send Event Notifications to one or more Notification 676 Recipients. A Notification Subscriber may be: 677 1.a Job Submitting End User or Job Submitting Application (desktop 678 or server) that is submitting a job or 679 2.an End User, an Operator, or an Administrator that is not 680 submitting a job. 681 Subscription - A request by a Notification Subscriber to the IPP 682 Printer to send Event Notifications to a specified Notification 683 Recipient when the event occur. A Subscription is represented as a 684 set of attributes that indicate the "what, where, who, and how" for 685 notification. Notifications are generated for certain events 686 (what) and delivered using various delivery methods (how) to 687 certain addresses (where and who). 688 Per-Job Subscription - A Subscription that a client specifies as part 689 of a create job operation (Print-Job, Print-URI, Create-Job), or a 690 Validate-Job operation. 691 Per-Printer Subscription - A Subscription that a client specifies 692 using an explicit Create-Printer-Subscription operation, that is 693 attached to a Printer object. 694 Notification Source - The entity that sends Event Notifications. 695 Notification Recipient - The entity identified as a recipient within 696 a subscription that receives IPP Notifications about Job and/or 697 Printer events. A Notification Recipient may be a: Job Submitting 698 End User, Job Submitting Application (desktop or server), Job 699 Recipient, Job Recipient Proxy, Operator, or Administrator, etc., 700 and their representative or log file or usage statistics gathering 701 application or other active or passive entities. 702 Notification Recipient Agent - A program which receives 703 Notifications on behalf of the Notification Recipient. The agent 705 Expires January 22, 2000 706 may take some action on behalf of the recipient, forward the 707 notification to the recipient via some alternative means (for 708 example, page the recipient), or queue the notification for later 709 retrieval by the recipient. 710 Event - An event is some occurrence (either expected or unexpected) 711 within the printing system of a change of state, condition, or 712 configuration of a Job or Printer object. A property of an event 713 is that it only occurs at one instant in time and does not span the 714 time the physical event takes place. For instance, jam-occurred 715 and jam-cleared are two distinct events. The jam-occurred event is 716 reported only when the jam initially occurs and only if there is 717 one or more event subscriptions outstanding for that event. 719 Events can be classified along two dimensions: 720 - Either as Job Events or Printer Events, and 721 - Either as Errors, Warnings, or Reports 723 A Job event is some interesting state change in the Job object, and 724 a Printer event is some interesting change in the Printer object. 726 A report event is purely informational, such as 'job-completed' or 727 'accepting-jobs'. A warning is not serious and processing 728 continues. An error is serious and either the job is aborted or 729 the printer stops. These are typical uses of the terms report, 730 warning, and error, although the actual usage is implementation 731 dependent. 733 An event occurs for a job or printer whether any entity has 734 subscribed to be notified for that event or not. A notification is 735 only generated depending on the set of subscriptions outstanding. 737 Notification - When an event occurs, a Notification is generated 738 that fully describes the event (what the event was, where it 739 occurred, when it occurred, etc.). Notifications are delivered to 740 each Notification Recipient that has a subscription that includes 741 the event, if any. The Notification is delivered to the address of 742 the Notification Recipient using the notification delivery method 743 defined in the subscription. However, a Notification is sent ONLY 744 if there is a corresponding subscription. 745 Notification Delivery Method (or Delivery Method for short) - 746 Notifications are delivered using a method, such as email, TCP/IP, 747 etc. 748 Immediate Notification - Notifications that are delivered using a 749 delivery method which is not store-and-forward (e.g. TCP 750 connection, UDP datagram). This can be on the order of several 751 minutes subject to network latency. 752 Store and Forward Notification - A Notification which are not 753 necessarily delivered to Notification Recipients immediately, but 754 is queued for delivery by some intermediate network application, 755 for later retrieval. Email is an example of a store and forward 756 notification delivery method. 758 Expires January 22, 2000 760 Human Consumable Notification - Notifications that are intended to be 761 consumed by human End Users only. They are simple text that has 762 been localized for the Notification Recipient as specified in the 763 subscription. Programs are not intended to parse Human Consumable 764 Notification, since it is localized and the content depends on 765 implementation. There is no standardized format. 766 Machine Consumable Notification - Notifications that are intended for 767 consumption by a program only. They use the encoding of an IPP 768 response. The Notification Recipient must localize the contents, 769 if displaying it to a human. 771 4 Object Model for Notification 773 This section describes the notification object model that adds a 774 REQUIRED Subscription object which together with the Job and Printer 775 object provide the complete notification semantics. 777 Per-Job subscriptions do not use the Subscription object. Instead, a 778 Job can have one or more Per-Job subscription which is represented 779 entirely as a single Job attribute. Each Per-Job subscription is 780 represented as a collection value of the "job-notify" Job attribute. 782 Expires January 22, 2000 783 The object relationships can be seen pictorially as: 785 Subscription objects (Per-Printer Subscriptions) Printer object 786 +----+ +------------+ 787 | s1 |<---------------------------------------------->| | 788 +----++ | | 789 | s2 |<--------------------------------------------->| p1 | 790 +----++ | | 791 | s3 |<-------------------------------------------->| | 792 +----+ +------------+ 793 Job objects 794 +---------+ 795 | | 796 | j1 | 797 | | 798 +----+ | 799 | s4 | | s4 is a Per-Job subscription 800 ++---+----++ 801 | | 802 | j2 | 803 | | 804 +----+----| 805 | s5 | s6 | s5 and s6 are Per-Job 806 subscriptions 807 ++---+----++ 808 | | 809 | j3 | 810 | | 811 | | 812 +---------+ 814 Figure 5 - Object Model for Notification 816 s1, s2, and s3 are Per-Printer Subscription objects and can 817 identify Printer and/or Job events. 819 s4, s5, and s6 are Per-Job subscriptions (not objects) and can 820 identify Printer and/or Job events. 822 4.1 Object relationships 824 The object relationships can be stated as follows: 826 1. The Printer object contains zero or more Subscription objects (p1 827 contains s1-s3 Subscription objects). 829 2. Each Subscription object (s1, s2, and s3) is contained in one 830 Printer object (p1) and represents one Per-Printer subscription. 832 3. Each "Per-Printer" Subscription object identifies one or more Job 833 and/or Printer events. Such Job events are for all jobs on the 834 Printer. Such Printer events are for any Printer event, no matter 835 which job is processing and when no jobs are processing. 837 Expires January 22, 2000 839 4. Each "Per-Job" subscription (not an object by itself, but is 840 attributes of the Job object) identifies one or more Job and/or 841 Printer events. Such Job events are only for this job (different 842 than "per-Printer" Subscriptions). Such Printer events are for any 843 Printer event, no matter which job and when no jobs are processing 844 (same as for "per-Printer" Subscriptions). 846 5. A Job object contains zero or more Per-Job subscriptions (not an 847 object). Job j1 contains Per-Job subscription s4, Job j2 contains 848 Per-Job subscription s5 and s6, and Job j3 does not contain a Per- 849 Job subscription. 851 6. A Subscription object cannot be contained in or associated with 852 more than one Printer object. 854 7. A Per-Job subscription cannot be contained in or associated with 855 more than one Job object. 857 5 Object attributes defined for Notification 859 The following notification attributes are defined for each of the 860 Printer, Job, and Subscription objects. The definitions of the object 861 attributes are specified here so that they can be referred to from the 862 subsequence definitions of the operations that set them. 864 5.1 "job-notify" (1setOf collection) Job Description attribute 866 In order to permit more than one Per-Job subscription, each subscription 867 is represented as a collection value of the "job-notify (1setOf 868 collection)" Job Description attribute. An implementation MUST support 869 at least one collection value of the "job-notify" attribute. Table 3 870 lists the member attributes of the "job-notify" attribute. Section 5.3 871 defines each of the "job-notify" member attributes. 873 The "job-notify" Job Description attribute MAY be modified by the Set- 874 Job-Attributes operation (see section 7.4) in which case all of its 875 member attributes are replaced and the READ-ONLY "request-id" member 876 attribute is reset with a value of '0' (see section 5.3.7). 878 Expires January 22, 2000 879 Table 3 - Job object 'job-notify' colletion member attributes 881 Job object attributes: Print set by: 882 er 883 suppo 884 rt 886 notify-recipient (uri) R job creation operation, 887 Set-Job-Attributes 889 notify-events (1setOf type2 R job creation operation, 890 keyword) Set-Job-Attributes 892 notify-content-type R job creation operation, 893 (mimeMediaType) Set-Job-Attributes 895 subscriber-user-data R job creation operation, 896 (octetString(63)) Set-Job-Attributes 898 notify-charset (charset) O job creation operation, 899 Set-Job-Attributes 901 notify-natural-languages O job creation operation, 902 (naturalLanguage) Set-Job-Attributes 904 request-id (integer(0:MAX)) R Printer - event 905 occurring 907 5.2 Subscription object attributes 909 Each Per-Printer subscription is contained in a separate Subscription 910 object. An implementation MUST support at least one Subscription object 911 instance. Table 4 lists the Subscription attributes defined for the 912 Subscription object. Sections 5.3 and 5.4 define each of the 913 Subscription attributes. 915 All of the Subscription object attributes are READ-ONLY. They are set 916 by other operations. 918 Expires January 22, 2000 919 Table 4 - Subscription object attributes 921 Subscription object attributes: Print READ-ONLY, set by: 922 er 923 suppo 924 rt 926 notify-recipient (uri) R client - Create-Printer- 927 Subscription 929 notify-events (1setOf type2 R client - Create-Printer- 930 keyword) Subscription 932 notify-content-type R client - Create-Printer- 933 (mimeMediaType) Subscription 935 subscriber-user-data R client - Create-Printer- 936 (octetString(63)) Subscription 938 notify-charset (charset) O client - Create-Printer- 939 Subscription 941 notify-natural-languages (1setOf O client - Create-Printer- 942 naturalLanguage) Subscription 944 request-id (integer(0:MAX)) R Printer - event occurring 946 Not in a Per-Job subscription: 948 subscription-id (integer(1:MAX)) R Printer - Create-Printer- 949 Subscription 951 notify-lease-expiration-time R Printer - Create-Printer- 952 (integer(0:MAX)) Subscription, 953 Renew-Printer- 954 Subscription 956 printer-uri (uri) R Printer - Create-Printer- 957 Subscription 959 subscriber-user-name (name(MAX)) R Printer - Create-Printer- 960 Subscription 962 notify-printer-up-time R Printer - returned by 963 (integer(1:MAX)) Get-Printer-Subscription- 964 Attributes and Get- 965 Printer-Subscriptions 967 5.3 Common Per-Job and Per-Printer Subscription attributes 969 The following sub-sections define attributes that are in common to both 970 Per-Job and Per-Printer subscriptions, i.e., are member attributes of 971 the "job-notify" collection Job Description attribute and are 972 Subscription object attributes. Section 5.4 defines additional 973 attributes that are only Subscription object attributes. 975 Expires January 22, 2000 976 5.3.1 notify-recipient (uri) 978 This REQUIRED attribute describes both where (the address of the 979 Notification Recipient) and how (the delivery method) notifications are 980 to be delivered to the Notification Recipient when any of the events 981 specified in the "notify-events" attribute occur. 983 There are potentially many different notification delivery methods for 984 IPP notifications, standardized as well as proprietary. This document 985 does not define any of these delivery mechanisms; they will each be 986 described in separate complementary documents. 988 Each of the notification delivery method documents must provide at least 989 the following information: 991 1) The URI scheme used. 993 2) The supported and default delivery format, and if not one of the 994 specified types in Section 5.3.3, description of the notification 995 content. 997 3)Any content length restrictions imposed by the delivery protocol. 999 4) The latency of the delivery protocol used. 1001 5)The reliability of the transport and delivery protocol used. 1003 6) The security aspects of the transport and delivery protocol used, 1004 e.g. how it is handled in firewalls. 1006 7) How the delivery protocol is initiated, e.g. does it have to be 1007 initiated by the receiving user (pull), or is it initiated by the 1008 notification service (push). 1010 ISSUE 1: Once a number of delivery solutions have been developed and 1011 evaluated, we may want to make one or several of them REQUIRED for 1012 implementation to ensure a minimum set of interoperability. Which one 1013 or ones should be REQUIRED? 1015 5.3.2 notify-events (1setOf type2 keyword) 1017 This REQUIRED attribute identifies the job and/or printer events that 1018 are to be delivered to the Notification Recipient as Notifications as 1019 defined in section 6. If the client did not supply this attribute when 1020 supplying the subscription, the Printer object populates this attribute 1021 with its "notify-events-default" attribute value (see section 5.5.2). 1023 There are both job events and printer events. Each job and printer 1024 event is assigned a keyword to use in this attribute and in the 1025 Notification. 1027 The events are defined to be disjoint. 1029 A Printer MUST support the events indicated as "REQUIRED". 1031 The standard job event keyword values are: 1033 'none': REQUIRED - no notifications of any events (an IPP object can 1034 use this value to indicate that it is configured not to support 1035 event notification; a client would not subscribe to this event). 1037 Expires January 22, 2000 1039 'job-created': REQUIRED - the Printer object has accepted a job 1040 creation operation (Print-Job, Print-URI, or Create-Job) and the 1041 job's "time-at-creation" attribute value is set (see [ipp-mod] 1042 section 4.3.14.1). The Printer puts the job in the 'pending', 1043 'pending-held' or 'processing' states. 1044 Note: This event is separate from the 'job-state-changed' event so 1045 that it can be subscribed to without having to get every job state 1046 change event for a Notification Recipient that is only interested 1047 in when the job is first created. 1048 'job-completed': REQUIRED - the job has reached one of the completed 1049 states, i.e., the value of the job's "job-state" attribute has 1050 changed to: 'completed', 'aborted', or 'canceled'. The Job's 1051 "time-at-completed" and "date-time-at-completed" (if supported) 1052 attributes are set (see [ipp-mod] section 4.3.14). 1053 Note: This event is separate from 'job-state-changed' so that it 1054 can be subscribed to without having to get every job state change 1055 event for a Notification Recipient that is only interested in when 1056 the job is completed. 1057 'job-state-changed': REQUIRED - the job has changed from any state 1058 to any other state and/or a value has been added or removed from 1059 the job's "job-state-reasons" attribute, except when the job is 1060 created or when the job moves to any of the "completed" job states 1061 ('completed', 'aborted', or 'canceled'). 1063 This event also indicates that one or more values have been added 1064 to or removed from the Job's "job-state-reasons" attribute, such as 1065 'job-queued' or 'job-printing', whether or not the job's state has 1066 changed. If job state reasons are added when the job is created, 1067 only the 'job-created' event is generated, in order to keep the 1068 events disjoint. If job state reasons are added or removed when 1069 the job is completed, only the 'job-completed' event is generated, 1070 in order to keep the events disjoint. 1072 A client that wants to subscribe to all job state changes, 1073 including creation and completion, includes the 'job-created', 1074 'job-state-changed', and 'job-completed' in the notification 1075 subscription. When a job is finally removed from the Job History 1076 (see [ipp-mod] 4.3.7.1) no event is generated, i.e., neither a 1077 'job-state-changed' event nor a 'job-purged' event is generated. 1078 'job-config-changed': OPTIONAL . when the configuration of a job has 1079 changed, i.e., the value of the "job-message-from-operator" or any 1080 of the non-READ-ONLY Job attributes have changed, such as any of 1081 the job template attributes or the "job-name" attribute. 1082 Typically, such a change is the result of the user or the operator 1083 performing a Set-Job-Attributes operation (see [ipp-set2]) on the 1084 Job object. The client performs a Get-Job-Attributes to find out 1085 the new values of the changed attributes. This event is useful for 1086 GUI clients and drivers to update the job information to the user. 1087 'job-purged': OPTIONAL - when a 'not-completed' job (i.e., not 1088 'completed', 'canceled', or 'aborted') was purged from the printer 1089 using the Purge-Jobs operation. No event, including this event, is 1091 Expires January 22, 2000 1092 generated when a job is aged out of the Job History or moved out 1093 explicitly with the Purge-Jobs operation. 1094 'job-progress' - a sheet or copy has completed. See separate [ipp- 1095 prog] spec. 1097 The standard Printer event keywords values are: 1099 'none': REQUIRED - no notification of any events (an IPP object can 1100 use this value to indicate that it is configured not to support 1101 event notification; a client would not subscribe to this event). 1102 'printer-restarted': OPTIONAL - when the printer is powered up or 1103 the Restart-Printer operation is performed (see [ipp-set2]). 1104 Note: This event is separate from the 'printer-state-changed' 1105 event so that it can be subscribed to without having to get every 1106 printer state change event, for a Notification Recipient that is 1107 only interested in when the Printer first comes up. 1108 'printer-shutdown': OPTIONAL - when the device is being powered down 1109 or the Shutdown-Printer operation has been performed with either 1110 power-off or standby options (see [ipp-set2]). 1111 Note: This event is separate from 'printer-state-changed' so that 1112 it can be subscribed to without having to get every Printer state 1113 change event, for a Notification Recipient that is only interested 1114 in when the Printer is powered down or shutdown. 1115 'printer-state-changed': REQUIRED - the Printer changed state, i.e., 1116 the value of the Printer's "printer-state", "printer-state-reasons" 1117 (whether "printer-state" changed or not), and/or "printer-is- 1118 accepting-jobs" attributes changed, except when the Printer starts 1119 up or is shutdown. If printer state reasons are added when the 1120 Printer is started up, only the 'printer-restarted' event is 1121 generated, in order to keep the events disjoint. If printer state 1122 reasons are added or removed when the printer is powered-down or 1123 shutdown, only the 'printer-shutdown' event is generated, in order 1124 to keep the events disjoint. 1126 A client that wants to subscribe to all printer state changes, 1127 including restart and power-down/shutdown, includes the 'printer- 1128 restarted', 'printer-state-changed', and 'printer-shutdown' in the 1129 notification subscription. 1130 'printer-media-changed': OPTIONAL . when the media loaded on a 1131 printer has been changed, i.e., the "media-ready" attribute has 1132 changed. This event includes both an actual media change and 1133 filling an empty input tray with the same or different media. The 1134 client must check the "media-ready" Printer attribute (see [ipp- 1135 mod] section 4.2.11) separately to find out what new media was 1136 loaded or filled. 1137 'printer-config-changed': OPTIONAL . when the configuration of a 1138 Printer has changed, i.e., the value of the "printer-message-from- 1139 operator" or any non-READ-ONLY Printer attribute has changed, 1140 except for "media-ready" (which has its own event), whether through 1141 the Set-Printer-Attributes operation or by other means and whether 1142 initiated by a human or not. For example, any "xxx-supported", 1143 "xxx-default", "printer-message-from-operator", etc. values have 1144 changed. The client has to perform a Get-Printer-Attributes to 1146 Expires January 22, 2000 1147 find out the new values of these changed attributes. This event is 1148 useful for GUI clients and drivers to update the available printer 1149 capabilities to the user. 1150 'printer-queue-changed': OPTIONAL - the order of jobs in the 1151 Printer's queue has changed, so that an application that is 1152 monitoring the queue can perform a Get-Jobs operation to determine 1153 the new order. This event does not include when a job enters the 1154 queue (the 'job-created' event covers that) and does not include 1155 when a job leaves the queue (the 'job-completed' event covers 1156 that). 1157 'printer-no-longer-full': OPTIONAL . when the Printer can now accept 1158 a Print-Job, Print-URI, Create-Job, Send-Document, or Send-URI 1159 request. This event is used when there is more than one client 1160 feeding a printer/server (fan-in), and the Printer may still be 1161 printing but has acquired more buffer space to accept jobs. This 1162 event only occurs when the Printer did not have room to accept jobs 1163 previously and rejected a Print-Job, Print-URI, Create-Job, Send- 1164 Document, or Send-URI operation. 1165 'printer-almost-idle': OPTIONAL . when the Printer needs another Job 1166 in order to stay busy. This event is used when a spooler is 1167 feeding more than one printer/server (fan-out), and the spooler 1168 holds jobs until a Printer requests them, rather than committing 1169 jobs to IPP Printers before it is necessary. This event MAY be 1170 used by a Printer implementation to request a new job from any 1171 subscribers sufficiently ahead of time so that the device does not 1172 run out of work between jobs. 1174 5.3.3 notify-content-type (mimeMediaType) 1176 This REQUIRED attribute specifies the type of content that is to be sent 1177 in the notifications. Thus the subscriber can control whether the event 1178 notification content is Human Readable or Machine Readable. Most 1179 delivery methods support both forms of content type and MUST define one 1180 of them as the default. If a delivery method only supports one form of 1181 content type, then that form is also the default. 1183 If the MIME media type registration permits a charset parameter, than 1184 such a specification MUST be used (instead of the "notify-charset" 1185 attribute) in order to indicate the charset to be used in the 1186 notification content. 1188 If the Subscriber did not supply this attribute when requesting the 1189 subscription, the Printer object populates this attribute from the 1190 default value defined for the delivery method. 1192 Standard mimeMediaType values are: 1194 'application/ipp' - the Machine Consumable notification content 1195 using the 'application/ipp' MIME media type [ipp-mod] as 1196 defined in section 6. 1198 'text/plain; charset=utf-8': A plain text document in ISO 10646 1199 represented as UTF-8 [RFC-2044] as defined in section 6. 1201 Expires January 22, 2000 1203 5.3.4 subscriber-user-data (octetString(63)) 1205 This REQUIRED attribute holds opaque information being sent from the 1206 Subscriber to the Notification Recipient, such as the identify of the 1207 Subscriber or a path or index to some Subscriber information. Or it MAY 1208 contain a key that the Notification Recipient needs in order to process 1209 the Notification, such as the ultimate recipient, if the Notification 1210 Recipient is a general application that in turn forwards notifications. 1212 5.3.5 notify-attributes-charset (charset) 1214 This OPTIONAL attribute specifies the charset to be used in the 1215 Notification content sent to the notification recipient. This attribute 1216 MUST NOT be used when the "notify-content-type" attribute value 1217 specifies the charset parameter in its MIME media type value. 1219 5.3.6 notify-attributes-natural-languages (naturalLanguage) 1221 This OPTIONAL attribute specifies the natural language for the IPP 1222 object to use in the Notification content that is sent to the 1223 Notification Recipient. 1225 5.3.7 request-id 1227 This REQUIRED READ-ONLY attribute holds the most recent request-id 1228 sequence number delivered in a Notification content to the Notification 1229 Recipient. A value of 0 indicates that no Notifications have been 1230 sent for this subscription. The first request-id sent for a 1231 subscription MUST be 1. Each Notification Recipient has its own 1232 monotonically increasing series of request-ids, i.e., no gaps, in order 1233 to be able to detect a missing notification. 1235 For a Per-Job subscription, "request-id" is a READ-ONLY member attribute 1236 of each collection value. All of the other member attributes (see 1237 section 5.1) are not READ-ONLY and MAY be modified by a Set-Job- 1238 Attributes operation (see 7.4). 1240 5.4 Additional attributes for the Subscription object only 1242 The following sub-sections define additional attributes that are only 1243 for the Subscription object and have no counter part in Per-Job 1244 subscriptions. 1246 5.4.1 subscription-id (integer (1:MAX)) 1248 This REQUIRED READ-ONLY Subscription object attribute uniquely 1249 identifies this Subscription object instance on this Printer. The 1250 Printer object, on acceptance of a Create-Printer-Subscription request, 1251 generates an ID which identifies the new Subscription object on that 1252 Printer. The Printer returns the value of the "subscription-id" 1253 attribute as part of the response to a Create-Printer-Subscription 1254 request. The 0 value is not included to allow for compatibility with 1255 "job-id" and with SNMP index values which also cannot be 0. 1257 It is RECOMMENDED that Per-Printer Subscription objects be persistent. 1258 Then the Subscription objects including the subscription-id remains 1259 unique across power-cycles. Even if an implementation does not make 1260 Per-Printer subscription objects persist, the implementation SHOULD make 1262 Expires January 22, 2000 1263 every attempt not to re-use subscription ids that subscribers might 1264 still think are valid. In other words, the Printer SHOULD at least keep 1265 the next subscription-id to be assigned in non-volatile memory. 1267 5.4.2 notify-lease-expiration-time (integer(0:MAX)) 1269 This REQUIRED READ-ONLY Subscription object attribute specifies the time 1270 in the future when the subscription lease will expire, i.e., the 1271 "printer-up-time" value at which the lease will expire. When the 1272 Printer object creates a Subscription object, it populates this 1273 attribute with the appropriate value. When the indicated time arrives, 1274 the Printer MUST delete the Per-Printer Subscription object. 1276 A client is able to extend a lease using the Renew-Printer-Subscription 1277 operation (see section 8.4). A value of 0 indicates an infinite time, 1278 if such a policy is supported as indicated in the "notify-lease-time- 1279 supported" (integer(0:MAX)) Printer Description attribute (see section 1280 5.5.7) and the subscriber is authorized to request an infinite lease. 1282 Note: In order to compute the number of seconds remaining in a Per- 1283 Printer Subscription lease, a client can subtract the "notify-printer- 1284 up-time" Printer object attribute (see section 5.4.5) from the "notify- 1285 lease-time" Subscription object attribute. 1287 5.4.3 printer-uri (uri) 1289 This REQUIRED READ-ONLY Subscription object attribute identifies the 1290 Printer object that created this Subscription object. When a Printer 1291 object creates a Subscription object, it populates this attribute with 1292 the Printer object URI that was used in the create request. This 1293 attribute permits a client to identify the Printer object URI that was 1294 used to create this Subscription object, i.e., what security scheme was 1295 used. 1297 5.4.4 subscriber-user-name (name(MAX)) 1299 This REQUIRED READ-ONLY Subscription object attribute contains the name 1300 of the user that created the Subscription object. The Printer object 1301 sets this attribute to the most authenticated printable name that it can 1302 obtain from the authentication service over which the IPP operation was 1303 received. This attribute is intended to help a human user determine for 1304 which Per-Printer Subscriptions they are the Subscriber. Only if such 1305 is not available, does the Printer object use the value supplied by the 1306 client in the "requesting-user-name" operation attribute of the create 1307 operation (see [IPP-MOD] Sections 4.4.2, 4.4.3, and 8). 1309 ISSUE 2 - What is the value of the "subscriber-user-name" when the 1310 Subscriber is a server send a job to an IPP Printer? The original Job 1311 Submitting End User use name or some "user name" that identifies the 1312 Server? 1314 Note: The Printer object needs to keep an internal originating user id 1315 of some form, typically as a credential of a principal, with the 1316 Subscription object. Since such an internal attribute is 1317 implementation-dependent and not of interest to clients, it is not 1318 specified as a Subscription Description attribute. This originating 1320 Expires January 22, 2000 1321 user id is used for authorization checks (if any) on all subsequent 1322 operations. 1324 5.4.5 notify-printer-up-time (integer(1:MAX)) 1326 This REQUIRED READ-ONLY Subscription object attribute indicates the 1327 amount of time (in seconds) that the Printer implementation has been up 1328 and running. This attribute is an alias for the Printer's "printer-up- 1329 time" attribute" (see [ipp-mod] section 4.4.29), in an analogous way 1330 that the Job's "job-printer-up-time" is an alias for "printer-up-time" 1331 (see [ipp-mod] section 4.3.13.4). 1333 Note: A client can request this attribute in a Get-Printer- 1334 Subscription-Attributes or Get-Printer-Subscriptions request and use the 1335 value returned in combination with the "notify-subscription-expiration- 1336 time" (see section 5.4.2) in order to display wall clock time equivalent 1337 to the user. The difference between this attribute and the 'integer' 1338 value of the "notify-subscription-expiration-time" attribute is the 1339 number of seconds in the future that the subscription will expire. A 1340 client can compute the wall-clock time at which the subscription will 1341 expire by adding this difference to the client.s wall-clock time. 1343 5.5 Printer Description Attributes related to Notification 1345 This section defines the Printer Description attributes that are related 1346 to Notification. 1348 Table 5 - Printer Description attributes associated with Notification 1350 Printer object attributes: Printer READ-ONLY, set by: 1351 support 1353 notify-schemes-supported (1setOf R Administrator/implem 1354 uriScheme) entation 1356 notify-events-default (1setOf R Administrator/implem 1357 type2 keyword) entation 1359 notify-events-supported (1setOf R Administrator/implem 1360 type2 keyword) entation 1362 max-events-supported R Administrator/implem 1363 (integer(5:MAX)) entation 1365 max-job-subscriptions-supported R Administrator/implem 1366 (integer(1:MAX)) entation 1368 max-printer-subscriptions- R Administrator/implem 1369 supported (integer(0:MAX)) entation 1371 notify-lease-time-supported R Administrator/implem 1372 (rangeOfInteger(0:MAX)) entation 1374 notify-lease-time-default R Administrator/implem 1375 (integer(0:MAX)) entation 1377 persistent-jobs-supported O Administrator/implem 1378 (boolean) entation 1380 persistent-subscriptions-supported O Administrator/implem 1382 Expires January 22, 2000 1383 Printer object attributes: Printer READ-ONLY, set by: 1384 support 1386 (boolean) entation 1388 printer-state-change-time O Administrator/implem 1389 (integer(1:MAX)) entation 1391 printer-state-change-date-time O Administrator/implem 1392 (dateTime) entation 1394 5.5.1 notify-schemes-supported (1setOf uriScheme) 1396 This REQUIRED Printer attribute describes the notification delivery 1397 methods supported by this Printer object. Standard values are defined in 1398 Section 5.3.1). 1400 5.5.2 notify-events-default (1setOf type2 keyword) 1402 This REQUIRED Printer attribute identifies the event values if the 1403 client does not supply the "notify-events" operation attribute in either 1404 a Job creation request or the Create-Printer-Subscription request. Any 1405 value in this attribute MUST also appear in the notify-events-supported 1406 attribute, i.e., be a supported event. 1408 5.5.3 notify-events-supported (1setOf type2 keyword) 1410 This REQUIRED Printer attribute identifies the events supported by this 1411 Printer object for both Per-Job and Per-Printer subscriptions which MUST 1412 be the same. Standard values are defined in Section 5.3.2. 1414 5.5.4 max-events-supported (integer(5:MAX)) 1416 This REQUIRED Printer attribute specifies the maximum number of events 1417 that are supported in a single Per-Job or Per-Printer subscription which 1418 must be the same. A Printer MUST support at least 5 events per 1419 subscription, so that clients can depend on at least 5 events in a 1420 single subscription. If the number of events supplied by a client in a 1421 subscription exceed this number, the Printer rejects the request and 1422 returns the 'server-error-too-many-events (see section 14.3). If 1423 notification is not supported, this attribute MUST NOT be supported. 1425 5.5.5 max-job-subscriptions-supported (integer(1:MAX)) 1427 This REQUIRED Printer attribute specifies the maximum number of Per-Job 1428 subscriptions that are supported in a single Job Creation request, i.e., 1429 the maximum number of collection values for the "job-notify" operation 1430 attribute. A value of 0 indicates no effective maximum. A Printer MUST 1431 support at least 1 Per-Job subscription. If the number of Per-Job 1432 subscriptions supplied by a client in a Job Creation request exceed this 1433 number, the Printer rejects the request and returns the 'server-error- 1434 too-many-subscriptions' (see section 14.2). 1436 5.5.6 max-printer-subscriptions-supported (integer(0:MAX)) 1438 This REQUIRED Printer attribute specifies the maximum number of Per- 1439 Printer subscriptions that are supported by multiple Create-Printer- 1440 Subscription requests, i.e., the maximum number of un-expired 1441 Subscription objects that the Printer supports at a time. A value of 0 1443 Expires January 22, 2000 1444 indicates no effective maximum. A Printer MUST support at least 1 Per- 1445 Printer subscription. If the number of Per-Printer subscriptions would 1446 exceed this number, the Printer rejects the Create-Printer-Subscription 1447 request and returns the 'server-error-too-many-subscriptions' (see 1448 section 14.2). 1450 5.5.7 notify-lease-time-supported (rangeOfInteger(0:MAX)) 1452 This REQUIRED Printer attribute specifies the range of values in seconds 1453 that are supported for the "notify-lease-time-requested" operation 1454 attribute in a Create-Printer-Subscription or Renew-Printer-Subscription 1455 request. When the lease time expires for a Per-Printer Subscription 1456 without renewing, the Printer MUST delete the Subscription object. If 1457 the client requests a value outside this range, the Printer MUST grant a 1458 value that is in this range (see section 5.4.2). A value of 0 indicates 1459 an infinite lease, i.e., one that does not expire. 1461 5.5.8 notify-lease-time-default (integer(0:MAX)) 1463 This REQUIRED Printer attribute specifies the value of the lease time 1464 that the Printer object has been configured to assume if the client does 1465 not supply a "notify-lease-time-requested" operation attribute in the 1466 Create-Printer-Subscription or Renew-Printer-Subscription requests. 1468 5.5.9 persistent-jobs-supported (boolean) 1470 This OPTIONAL Printer attribute indicates whether or not the Printer 1471 supports persistent Jobs, i.e., Jobs object that are preserved across 1472 power cycles. If Jobs are persistent, then Per-Job Subscriptions MUST 1473 also be persistent, since they are part of the Job object. It is 1474 RECOMMENDED that Jobs (and Per-Job Subscriptions) be persistent. 1476 5.5.10persistent-subscriptions-supported (boolean) 1478 This OPTIONAL Printer attribute indicates whether or not the Printer 1479 supports persistent Per-Printer Subscriptions, i.e., Subscription 1480 objects that are preserved across power cycles. When this value is 1481 'true' the implementation MAY support some that are persistent and some 1482 that are not. If the value is 'false' or the attribute is not 1483 supported, Per-Printer Subscriptions MUST NOT be persistent. It is 1484 RECOMMENDED that Per-Printer subscriptions be persistent. 1486 5.5.11printer-state-change-time (integer(1:MAX)) 1488 This OPTIONAL Printer attribute records the time, i.e., copy of the 1489 Printer's "printer-up-time" attribute, that the Printer's "printer- 1490 state" attribute was last changed. On power-up, the Printer populates 1491 the "printer-state-change-time" from its "printer-up-time" attribute, so 1492 that it always has a value. 1494 5.5.12printer-state-change-date-time (dateTime) 1496 This OPTIONAL Printer attribute records the date and time, i.e., copy of 1497 the Printer's "printer-current-time" attribute, that the Printer's 1498 "printer-state" attribute was last changed. On power-up, the Printer 1499 populates the "printer-state-change-date-time" from its "printer- 1500 current-time" attribute, so that it always has a value. 1502 Expires January 22, 2000 1503 6 Notification Content 1505 This section defines the Notification content that is sent to a 1506 Notification Recipient when an event occurs. The Notification MAY be 1507 sent by the IPP Printer or a third party Notification Service (see 1508 section 2.3). There are two notification content types: Machine 1509 Consumable and Human Consumable. For most notification delivery methods 1510 both content types are defined. Some of the notification delivery 1511 methods are defined to support only one content type. A Printer MUST 1512 support all content types defined for a notification delivery method, if 1513 it supports that notification delivery method. 1515 6.1 Notification content MIME media type formats 1517 This section defines the Notification content that the Notification 1518 Source sends asynchronously to each Notification Recipient based on the 1519 subscription information stored with the subscription. 1521 Notifications are generated using the following content formats: 1523 'application/ipp' - Machine Consumable notification content using 1524 the 'application/ipp' MIME media type [ipp-mod] using the Get- 1525 Job-Attributes response encoding for job events and Get-Printer- 1526 Attributes for printer events. The attributes listed in 1527 sections 6.2 and 6.3 are sent in an notification for Job events. 1528 The attributes listed in sections 6.2 and 6.4 are sent in an 1529 notification for Printer events. For any string in any 1530 notification, the charset and natural language rules that apply 1531 to all IPP operations apply to the notification strings as well, 1532 since they are represented as operation responses. The 1533 Unsupported Attributes Group in the response is not sent. If 1534 the values of any of the attributes sent in an notification 1535 content are not known, the value sent in the report content is 1536 the out-of-band 'unknown' value, rather than omitting the 1537 attribute (see the beginning of [ipp-mod] section 4.1). 1539 An implementation MAY extend the contents of the Machine 1540 Consumable notification by adding additional attributes. 1542 'text/plain; charset=utf-8' - Human Consumable notification 1543 content type [RFC2046]. The text message SHOULD include 1544 information about the attributes in sections 6.2 and 6.3 for job 1545 events or in sections 6.2 and 6.4 for printer events. This 1546 information is localized according to the information about 1547 natural language and charset in the subscription. 1549 An implementation MAY extend the contents of a Human Consumable 1550 notification by adding additional information. 1552 6.2 Notification content attributes common to Job and Printer events 1554 This section lists the parameters and attributes that are included in 1555 both Job and Printer event Notifications. Some events do not include 1556 all of these attributes as shown in Table 6. Each notification content 1557 contains a single Job or Printer event, whether that event was 1558 subscribed using the Job Submission Subscription mechanism or the Per- 1560 Expires January 22, 2000 1561 Printer subscription mechanism. If either kind of subscription 1562 subscribed to both Job and Printer events, then they will be sent as 1563 separate Job notification content and Printer notification contents to 1564 the same Notification Recipient. 1566 Table 6 - Common Job and Printer Notification content attributes 1568 Reference Events 1570 Attributes 'job- all 1571 progress' others 1573 R R 1574 1. version-number (integer mod 3.1.1 1575 (0:32767)) 1577 R R 1578 2. status-code (integer mod 3.1.1 1579 (0:32767)) 1581 3. request-id (integer (0:MAX)) 5.3.7 & mod R R 1582 3.1.1 1584 4. attributes-charset (charset) 5.3.5 & mod R R 1585 3.1.4 1587 5. attributes-natural-language 5.3.6 & mod R R 1588 (naturalLanguage) 3.1.4 1590 R R 1591 6. printer-uri (uri) 5.4.3 1593 R 1594 7. printer-name (name(127)) mod 4.4.4 1596 R R** 1597 8. job-id (integer(1:MAX)) mod 4.3.2 1599 R** 1600 9. job-name (name(MAX)) mod 4.3.5 1602 10.trigger-event (type2 keyword) 5.3.2 R R 1604 11.trigger-time R R 1605 (integer(MIN:MAX)) 1607 12.trigger-date-time (dateTime) O 1609 13.subscription-id 5.4.1 R R 1610 (integer(1:MAX)) 1612 R 1613 14.subscriber-user-name 5.4.4 1614 (name(MAX)) 1616 15.subscriber-user-data 5.3.4 R 1617 (octetString(63)) 1619 Attribute Notes: 1621 "status-code" - a value of 600 for a Job event and 601 for a Printer 1622 event. 1624 "request-id" - the sequence number for this subscription, starting at 1 1625 for each subscription. 1627 "attributes-charset" - the value comes from the "notify-attributes- 1628 charset" in the "job-notify" Per-Job Subscription and the "notify- 1629 attributes-charset" in the Per-Printer Subscription object. 1631 Expires January 22, 2000 1633 "attributes-natural-language" - the value comes from the "notify- 1634 attributes-natural-language" in the "job-notify" Per-Job 1635 Subscription and the "notify-attributes-natural-language" in the 1636 Per-Printer Subscription object. 1638 "printer-uri" - the value comes from the "job-printer-uri" Job attribute 1639 for Per-Job subscriptions. 1641 **"job-id" and "job-name" - included in Printer event Notifications only 1642 for Per-Job subscriptions. 1644 "trigger-event" - the event that caused this Notification to be 1645 delivered. 1647 "trigger-time" - the "printer-up-time" value when the event occurred. 1649 "trigger-date-time" - the "printer-current-time" value when the event 1650 occurred - OPTIONAL to support. 1652 "job-name" - SNMP delivery method can truncate to less than 255 octets, 1653 since the Notification needs to fit into 484 octets or so on some 1654 transports that SNMP is defined for. 1656 "subscription-id" - for Per-Job subscriptions, the value is the index of 1657 the "job-notify" collection value, starting with 1 for the first 1658 collection value. 1660 "subscriber-user-name" - comes from "requesting-user-name" Job attribute 1661 for Per-Job subscriptions. SNMP delivery method can truncate to 1662 less than 255 octets, since the Notification needs to fit into 484 1663 octets or so on some transports that SNMP is defined for. 1665 "subscriber-user-data" - opaque user data that may identify either the 1666 Subscriber and/or the ultimate Notification Recipient. 1668 6.3 Additional Notification content attributes for Job events only 1670 This section lists the additional attributes that are included only in 1671 Job event Notifications. Some events do not include all of these 1672 attributes as shown in Table 7. 1674 Table 7 - Additional Notification content attributes for Job events only 1676 Events 1678 Attributes Reference 'job- 'job- all 1679 progre complet othe 1680 ss' ed' rs 1682 16.job-state (type1 enum) mod 4.3.7 R R 1684 17.job-state-reasons (1setOf type2 mod 4.3.8 R R 1685 keyword) 1687 18.job-k-octets-processed mod O O 1689 Expires January 22, 2000 1690 Events 1692 Attributes Reference 'job- 'job- all 1693 progre complet othe 1694 ss' ed' rs 1696 (integer(0:MAX)) 4.3.18.1 1698 19.job-impressions-completed mod O O 1699 (integer(0:MAX)) 4.3.18.2 1701 20.job-media-sheets-completed mod O O 1702 (integer(0:MAX)) 4.3.18.3 1704 21.job-collation-type (type2 enum) [ipp- R 1705 prog] 1707 22.sheet-completed-copy-number [ipp- R 1708 (integer(-2:MAX)) prog] 1710 23.sheet-completed-document- [ipp- R 1711 number(integer(-2:MAX)) prog] 1713 24.impressions-interpreted (integer(- [ipp- R 1714 2:MAX)) prog] 1716 25.impressions-completed-current-copy [ipp- R 1717 (integer(-2:MAX)) prog] 1719 6.4 Additional Notification content attributes for Printer events only 1721 Table 8 lists the additional attributes that are included only in 1722 Printer event Notifications. 1724 Table 8 - Additional Notification content attributes for Printer events 1725 only 1727 Events 1729 Attributes Reference all printer 1730 events 1732 26.printer-state (type1 enum) mod 4.4.11 R 1734 27.printer-state-reasons (1setOf type2 keyword) mod 4.4.12 R 1736 28.printer-is-accepting-jobs (boolean) mod 4.4.23 R 1738 7 Operations for Per-Job Subscriptions 1740 This section defines the REQUIRED operation requests and responses that 1741 are related to Per-Job subscriptions. Section 8 defines the REQUIRED 1742 operation requests and responses associated with the REQUIRED Per- 1743 Printer subscription and its Subscription object. 1745 Expires January 22, 2000 1746 7.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) and 1747 Validate-Job 1749 The usual method for a client to associate one subscription with a Job 1750 is to specify the subscription when the job is created. For a Per-Job 1751 Subscription, the client supplies the "job-notify (1setOf collection)" 1752 operation attribute with the member attributes listed in Table 9 with 1753 any of the job creation operations (Create-Job, Print-Job, Print-URI), 1754 plus Validate-Job (which doesn't create a job or subscription). If the 1755 client does not supply the "job-notify" attribute in the create 1756 operation, there is no subscription made (either implicitly or 1757 explicitly). 1759 If a Printer does not support this notification specification, then it 1760 MUST ignore the "job-notify" operation attribute and return it in the 1761 response indicated as an attribute that is not supported. See [ipp-mod] 1762 section 3.1.7 for details on returning Unsupported Attributes. 1764 Table 9 - Member attributes of the "job-notify" collection operation 1765 attribute 1767 Member attribute of "job-notify" Reference REQUIRED Printer 1768 collection in support 1769 request 1771 notify-recipient (uri) 5.3.1 yes REQUIRED 1773 notify-events (1setOf type2 keyword) 5.3.2 no REQUIRED 1775 notify-content-type (mimeMediaType) 5.3.3 no REQUIRED 1777 subscriber-user-data (octetString(63)) 5.3.4 no REQUIRED 1779 notify-attributes-charset (charset) 5.3.5 no OPTIONAL 1781 notify-attributes-natural-language 5.3.6 no OPTIONAL 1782 (naturalLanguage) 1784 See the referenced sections for a definition of these operation 1785 attributes, since they are copied to the Job object as the Job 1786 Description attributes described in section 5.3. 1788 The following rules apply to Per-Job subscriptions: 1790 1.Any subscription can contain job events, printer events, or both. 1792 2.The Job Submission Subscription is only valid while the job is "not- 1793 completed". The job is "not-completed" while it is in the 'pending', 1794 'pending-held', 'processing', and 'processing-stopped' states. The 1795 job changes from being "not-completed" to "retained" when it is done 1796 processing and enters any of the 'completed', 'canceled', or 1797 'aborted' states. The job becomes "not-completed" again when it is 1798 restarted using the Restart-Job operation (see [ipp-mod]). 1800 3.Since no job is created for the Validate-Job operation, the only 1801 purpose of supplying the subscription operation attributes in the 1802 Validate-Job operation is to validate that the values are supported; 1803 the Printer object does not establish a notification subscription as 1804 a result of the Validate-Job operation. 1806 Expires January 22, 2000 1808 4.Since a Job Submission Subscription is included within a job 1809 submission operation, any interest in job events is limited to "this 1810 job" only (the Job object created because of this job creation 1811 operation). There is no mechanism to subscribe to events for all 1812 jobs or specifically some job other than this job in a create 1813 operation. But see the Create-Printer-Subscription operation 1814 (section 8.1) for an explicit operation to subscribe for job and/or 1815 printer events independently of any particular job submission. 1817 5.Event reporting only occurs when a notification recipient has 1818 specified a subscription to any event(s). 1820 6.The notification implementation MAY allow an administrator to 1821 configure a policy on what events may be dropped. 1823 7.If the OPTIONAL "notify-attributes-charset" attribute is not 1824 supported or the supplied value is not supported, the IPP Printer 1825 MUST return the attribute in the Unsupported Attributes Group but 1826 still accept the operation, as with all Job create operations. In 1827 this case, the Printer MUST use the natural language supplied in the 1828 "attributes-charset" Job creation operation attribute, if that 1829 natural language value is supported by the Printer, else the Printer 1830 object MUST use the Printer's "charset-configured" value. See the 1831 Print-Job operation in [ipp-mod]. 1833 8.If the OPTIONAL "notify-attributes-natural-language" attribute is not 1834 supported or the supplied value is not supported, the IPP Printer 1835 MUST return the attribute in the Unsupported Attributes Group but 1836 still accept the operation, as with all Job create operations. In 1837 this case, the Printer MUST use the natural language supplied in the 1838 "attributes-natural-language" Job creation operation attribute, if 1839 that natural language value is supported by the Printer, else the 1840 Printer object MUST use the Printer's "natural-language-configured" 1841 value. See the Print-Job operation in [ipp-mod]. 1843 7.2 Get-Printer-Attributes operation 1845 The REQUIRED (by [ipp-mod]) Get-Printer-Attributes can be used to 1846 request the additional Printer Description attributes that indicate the 1847 notification supported. See section 5.5. 1849 7.3 Get-Job-Attributes operation 1851 The REQUIRED (by [ipp-mod]) Get-Job-Attributes can be used to request 1852 the additional Job Description attributes that relate to notification. 1853 See section 5.5. 1855 Expires January 22, 2000 1856 7.4 Set-Job-Attributes operation 1858 The OPTIONAL Set-Job-Attributes operation (see [ipp-set2]) allows a 1859 client to change the Job attributes of the Job's Per-Job subscription, 1860 including to add them in the first place if they had not been supplied 1861 in the Job creation operation and to remove them from the Job object. 1862 This operation replaces all the collection values of the supplied "job- 1863 notify (1setOf collection) notification attribute. 1865 In order to cancel all Per-Job subscriptions, the client supplies the 1866 "job-notify" attribute with an out-of-band 'none' value (see [ipp- 1867 coll]). 1869 Request: 1870 Group 1: Operation Attributes Printer 1871 support 1872 "attributes-charset" (charset) R 1873 "attributes-natural-language" R 1874 (naturalLanguage) 1875 "printer-uri" (uri) R 1876 "requesting-user-name" (name(MAX)) RECOMMENDED 1877 "job-notify" (1setOf collection) R 1878 Response: 1879 Group 1: Operation Attributes Printer 1880 support 1881 "status-code" (type2 enum) R 1882 "attributes-charset" (charset) R 1883 "attributes-natural-language" R 1884 (naturalLanguage) 1885 ["status-message" (text(255))] O 1886 ["detailed-status-message" (text(MAX))] O 1887 Group 2: Unsupported Attributes R 1889 The "job-notify" operation attribute is copied to the "job-notify" Job 1890 Description attribute. See section 5.1 for a definition of the "job- 1891 notify" Job Description attribute. 1893 8 Per-Printer Subscriptions and the Subscription object 1895 This section lists the REQUIRED Per-Printer Subscriptions operation 1896 requests and responses and the Subscription object that MUST be 1897 supported. 1899 ISSUE 3 - Are these abbreviated operation definitions ok for 1900 understandability and conformance, or should we use the more verbose 1901 definition style of the [ipp-mod]? 1903 8.1 Create-Printer-Subscription operation 1905 The REQUIRED Create-Printer-Subscription operation creates a Per-Printer 1906 subscription by creating a Per-Printer Subscription object which is 1907 added to the Printer object. The client can specify one or more job 1908 and/or printer events to be delivered as notifications to one 1909 Notification Recipient. The job events are for any job submitted to the 1910 Printer. The printer events are any events generated by that Printer. 1912 Expires January 22, 2000 1913 The Printer returns a subscription id and the length of time for which 1914 it has granted a lease for the subscription. The client must renew the 1915 subscription using the Renew-Printer-Subscription operation (see section 1916 8.4) before the lease runs out in order to maintain the subscription. A 1917 client can unsubscribe using the Cancel-Printer-Subscription operation 1918 (section 8.5) and the subscription id. 1920 Two Create-Printer-Subscription operations with the same events and same 1921 Notification Recipient MUST be kept as distinct subscriptions and be 1922 assigned distinct subscription ids. A Printer MUST allow such duplicate 1923 subscriptions such that Cancel-Printer-Subscription doesn't unsubscribe 1924 both subscriptions and MUST send the Notifications twice to the 1925 Notification Recipient, since the "request-id" is supposed to count 1926 monotonically for each subscription. 1928 If the Printer has a bounded set of concurrent subscriptions (for the 1929 specified events or any events), the printer rejects the operation and 1930 returns the 'server-error-too-many-subscriptions' status code. The 1931 client SHOULD try again later. 1933 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 1934 performing this operation MUST have operator or administrator access 1935 rights for the Printer object (see [IPP-MOD] sections 1 and 8.5). 1936 Otherwise the IPP object MUST reject the operation and return: client- 1937 error-forbidden, client-error-not-authenticated, and client-error-not- 1938 authorized as appropriate. 1940 Expires January 22, 2000 1941 Request: 1942 Group 1: Operation Attributes Printer 1943 support 1944 "attributes-charset" (charset) R 1945 "attributes-natural-language" R 1946 (naturalLanguage) 1947 "printer-uri" (uri) R 1948 ["requesting-user-name" (name(MAX))] RECOMMENDED 1949 ["notify-recipient" (uri)] R 1950 ["notify-events" (1setOf type2 keyword)] R 1951 ["notify-content-type" (mimeMediaType)] R 1952 ["subscriber-user-data" (octetString(63))] R 1953 ["notify-attributes-charset" (charset)] O 1954 ["notify-attributes-natural-language" O 1955 (naturalLanguage)] 1956 ["notify-lease-time-requested" R 1957 (integer(0:MAX))] 1958 ["notify-persistence-requested" (boolean)] O 1959 Response: 1960 Group 1: Operation Attributes Printer 1961 Support 1962 "status-code" (type2 enum) R 1963 "attributes-charset" (charset) R 1964 "attributes-natural-language" R 1965 (naturalLanguage) 1966 ["status-message" (text(255))] O 1967 ["detailed-status-message" (text(MAX))] O 1968 "subscription-id" (integer(1:MAX)) R 1969 "notify-lease-expiration-time" R 1970 (integer(0:MAX)) 1971 "notify-lease-time-granted" R 1972 (integer(0:MAX)) 1973 "notify-persistence-granted" (boolean) R 1974 Group 2: Unsupported Attributes R 1976 Attribute Notes: 1978 "notify-recipient" (uri) - the client MUST supply this attribute in 1979 order to have a subscription. 1981 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 1982 requested for the Per-Printer subscription lease. A value of 0 1983 indicates a request that the Per-Printer Subscription lease never 1984 expire. Supplying a 0 value MAY require authentication in order to 1985 be used, if 0 is supported at all. 1986 If the client does not supply this attribute, the Printer uses its 1987 "notify-lease-time-default" value (see section 5.5.8). 1989 "notify-persistence-requested" (boolean) - whether or not the Per- 1990 Printer Subscription is to be persistent, i.e., saved across power 1991 cycles. Note: Persistent trap registrations is a client option in 1992 SNMPv3 [RFC2573]. 1993 "notify-lease-expiration-time" (integer(0:MAX)) - The Printer 1995 Expires January 22, 2000 1996 object MUST return this attribute which is the time in the future 1997 at which the subscription lease will expire, i.e., the "printer-up- 1998 time" value (in time ticks - see [ipp-mod] section 4.4.29) at which 1999 the Printer will delete the Subscription. A value of 0 indicates 2000 that the lease subscription will never expire. 2002 "notify-lease-time-granted" - The Printer object MUST return this 2003 attribute which is the number of seconds of time actually granted. 2004 The value of "notify-lease-time-granted" may be less than the 2005 requester requested in the "notify-lease-time-requested" if it was 2006 greater than the MAX supported or more than the requester requested 2007 if it was less than the MIN supported, as indicated in the 2008 Printer's "notify-lease-time-supported" (rangeOfInteger(0:MAX)) 2009 attribute. 2011 "notify-persistence-granted" - whether or not this Per-Printer 2012 Subscription object instance is persistent. This attribute MUST be 2013 returned whether "notify-persistence-requested" is supported or 2014 not, so that the client knows which. 2016 8.2 Get-Printer-Subscription-Attributes operation 2018 The REQUIRED Get-Printer-Subscription-Attributes returns the requested 2019 attributes of the identified Per-Printer Subscription object. See 2020 sections 5.3 and 5.4. 2022 Request: 2023 Group 1: Operation Attributes Printer 2024 support 2025 "attributes-charset" (charset) R 2026 "attributes-natural-language" R 2027 (naturalLanguage) 2028 "printer-uri" (uri) R 2029 ["requesting-user-name" (name(MAX))] RECOMMENDED 2030 "subscription-id" (integer(1:MAX)) R 2031 ["requested-attributes" (1setOf type2 keyword)] R 2032 Response: 2033 Group 1: Operation Attributes Printer 2034 support 2035 "status-code" (type2 enum) R 2036 "attributes-charset" (charset) R 2037 "attributes-natural-language" (naturalLanguage) R 2038 ["status-message" (text(255))] O 2039 ["detailed-status-message (text(MAX))] O 2040 Group 2: Unsupported Attributes R 2041 Group 3: 2044 This operation is similar to the Get-Printer-Attributes operation. If 2045 the client omits the "requested-attributes" operation attribute, the 2046 Printer MUST respond as if the client had supplied the 'all' value, 2047 i.e., return all of the attributes supported for the Subscription 2048 object. 2050 Expires January 22, 2000 2051 8.3 Get-Printer-Subscriptions operation 2053 The REQUIRED Get-Printer-Subscriptions operation returns Per-Printer 2054 subscriptions, i.e., Subscription objects. 2056 Request: 2057 Group 1: Operation Attributes Printer 2058 support 2059 "attributes-charset" (charset) R 2060 "attributes-natural-language" (naturalLanguage) R 2061 "printer-uri" (uri) R 2062 ["requesting-user-name" (name(MAX))] RECOMMENDED 2063 ["limit" (integer(1:MAX))] R 2064 ["requested-attributes" (1setOf type2 keyword)] R 2065 ["my-subscriptions" (boolean)] R 2066 Response: 2067 Group 1: Operation Attributes Printer 2068 support 2069 "status-code" (type2 enum) R 2070 "attributes-charset" (charset) R 2071 "attributes-natural-language" (naturalLanguage) R 2072 ["status-message" (text)] O 2073 ["detailed-status-message" (text(MAX))] O 2074 Group 2: Unsupported Attributes R 2075 Group 3 to N: 2078 Notes: This operation is similar to the Get-Jobs operation (see [ipp- 2079 mod]). If the client wants any attributes returned, including the 2080 "subscription-id", it must include the attribute keyword name in the 2081 "requested-attributes" operation attribute. If the "requested- 2082 attributes operation attribute is omitted, the Printer MUST respond as 2083 if the client supplied the value: 'subscription-id'. If the client 2084 supplies the "my-subscriptions" with a 'false' value or omits it, the 2085 Printer returns all subscriptions, subject to the security policy in 2086 force. 2088 8.4 Renew-Printer-Subscription operation 2090 The REQUIRED Renew-Printer-Subscription operation permits a client to 2091 request the IPP Printer to extend the lease on a Per-Printer 2092 Subscription object instance. 2094 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2095 performing this operation MUST either be the owner of the Subscription 2096 object or have operator or administrator access rights for the Printer 2097 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2098 MUST reject the operation and return: client-error-forbidden, client- 2099 error-not-authenticated, and client-error-not-authorized as appropriate. 2101 Expires January 22, 2000 2102 Request: 2103 Group 1: Operation Attributes Printer 2104 support 2105 "attributes-charset" (charset) R 2106 "attributes-natural-language" (naturalLanguage) R 2107 "printer-uri" (uri) R 2108 ["requesting-user-name" (name(MAX))] RECOMMENDED 2109 "subscription-id" (integer(1:MAX)) R 2110 ["notify-lease-time-requested" R 2111 (integer(0:MAX))] 2112 Response: 2113 Group 1: Operation Attributes Printer 2114 support 2115 "status-code" (type2 enum) R 2116 "attributes-charset" (charset) R 2117 "attributes-natural-language" (naturalLanguage) R 2118 ["status-message" (text(255))] O 2119 ["detailed-status-message" (text(MAX))] O 2120 "notify-lease-expiration-time" R 2121 (integer(0:MAX)) 2122 "notify-lease-time-granted" (integer(0:MAX)) R 2123 Group 2: Unsupported Attributes R 2125 Attribute Notes: 2127 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 2128 requested for the Per-Printer subscription lease. Same as Create- 2129 Printer-Subscriptions (see section 8.1). 2131 "notify-lease-expiration-time" - the time in the future when the 2132 subscription will expire. Same as for the Create-Printer- 2133 Subscription operation (see section 7.1). 2135 "notify-lease-time-granted" - the lease time (number of seconds) 2136 actually granted. Same as for the Create-Printer-Subscription 2137 operation (see section 7.1). 2139 Note: There is no way to change any of the Subscription object 2140 attributes, except the "notify-lease-expiration-time" attribute. In 2141 order to change other attributes, a client can create a new Subscription 2142 object and then use the Cancel-Printer-Subscription operation to cancel 2143 the old one (or do this in the other order, in case there is a limit on 2144 the number of Subscription object instances, as long as a short window 2145 with no Notifications is ok). 2147 Note: There is no need to renew a Per-Job Subscription, since it is 2148 effectively the time that the Job is active (see section 7.1). 2150 8.5 Cancel-Printer-Subscription operation 2152 The REQUIRED Cancel-Printer-Subscription operation allows a client to 2153 remove a Per-Printer Subscription object from the Printer. No more 2154 Notifications are delivered for that Subscription. Once performed, 2155 there is no way to use that Subscription in the future. Subscription- 2157 Expires January 22, 2000 2158 ids should not be reused immediately, so that a stale reference 2159 situation is not created. Same as for Cancel-Job and job-ids. 2161 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2162 performing this operation MUST either be the owner of the Subscription 2163 object or have operator or administrator access rights for the Printer 2164 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2165 MUST reject the operation and return: client-error-forbidden, client- 2166 error-not-authenticated, and client-error-not-authorized as appropriate. 2168 Request: 2169 Group 1: Operation Attributes Printer 2170 support 2171 "attributes-charset" (charset) R 2172 "attributes-natural-language" (naturalLanguage) R 2173 "printer-uri" (uri) R 2174 ["requesting-user-name" (name(MAX))] RECOMMENDED 2175 "subscription-id" (integer(1:MAX)) R 2176 Response: 2177 Group 1: Operation Attributes Printer 2178 support 2179 "status-code" (type2 enum) R 2180 "attributes-charset" (charset) R 2181 "attributes-natural-language" (naturalLanguage) R 2182 ["status-message" (text(255))] O 2183 ["detailed-status-message" (text(MAX))] O 2184 Group 2: Unsupported Attributes R 2186 9 Comparison of Per-Job Submission Subscriptions versus Per-Printer 2187 Subscriptions 2189 Per-Job and Per-Printer subscriptions are quite similar. However, there 2190 are some semantic differences between Per-Job subscriptions and Per- 2191 Printer subscriptions. A Per-Job Submission Subscription is established 2192 by the client when submitting a job. A Per-Printer Subscription is 2193 established between a client and a Printer using the new Create-Printer- 2194 Subscription operation. Some specific differences are: 2196 1.Either type of subscription can subscribe to Job events, Printer 2197 events, or both. 2199 2.For Per-Job Subscriptions, the subscription is only valid while the 2200 job is "not-complete" (see sections 6.2 and 6.3). 2202 3.For the Per-Printer Subscriptions, the subscription is valid until it 2203 is explicitly canceled with a Cancel-Printer-Subscription operation 2204 or the time (in seconds) that the Printer returned in the "notify- 2205 lease-time-granted" operation attribute expires, whichever occurs 2206 first. 2208 4.Job Events in a Per-Job Subscription apply only to "one job" (the Job 2209 created by the job creation operation). 2211 Expires January 22, 2000 2213 5.Job Events in a Per-Printer-Subscription apply to ALL jobs contained 2214 in the IPP Printer object. 2216 6.Printer Events in both kinds of subscriptions apply no matter which 2217 job is being processed, if any. 2219 10 Conformance Requirements 2221 This section further enhances the Conformance Requirements detailed in 2222 [IPP-MOD] section 5. Extensions made to the events herein must be made 2223 such that new events or event attributes are backward compatible to 2224 clients who implemented early versions of this notification 2225 specification. 2227 It is OPTIONAL to implement this Event Notification specification. If 2228 implemented, IPP objects MUST support all of the REQUIRED object 2229 attributes as defined in this document in the indicated sections. 2231 If IPP Notification is implemented, the operations described in this 2232 document must be supported as described in Table 10: 2234 Table 10 - Conformance Requirements for Operations 2236 Attribute Conformance 2237 requirements 2238 "job-notify" in Job Creation operations (section 7.1) REQUIRED 2239 Set-Job-Attributes (see section 7.4) OPTIONAL 2240 Create-Printer-Subscription (section 8.1) REQUIRED 2241 Get-Printer-Subscription-Attributes (section 8.2) REQUIRED 2242 Get-Printer-Subscriptions (section 8.3) REQUIRED 2243 Renew-Printer-Subscription (section 8.4) REQUIRED 2244 Cancel-Printer-Subscription (section 8.5) REQUIRED 2246 11 IANA Considerations 2248 IANA will be called on to register URL schemes for notification delivery 2249 for use in the "notification-recipient" attribute, using the same 2250 procedures outlined in [ipp-mod]. 2252 12 Internationalization Considerations 2254 This IPP notification specification continues the internationalization 2255 of [ipp-mod] for attributes containing text strings and names. A 2256 subscribing client can specify a different natural language and charset 2257 for each Notification content delivered to a Notification Recipient. 2259 The Human Consumable Notification content is a 'text/plain; charset=utf- 2260 8' by default where the Notification Sender has localized the text 2261 message as requested by the subscriber for the intended Notification 2262 Recipient. 2264 Expires January 22, 2000 2265 13 Security Considerations 2267 By far the biggest security concern is the abuse of notification: 2268 sending unwanted notifications to third parties (i.e., spam). The 2269 problem is made worse by notification addresses that may be 2270 redistributed to multiple parties (e.g. mailing lists). There exist 2271 scenarios where third party notification is required (see Scenario #2 2272 and #3 in [ipp-not-req]). The fully secure solution would require 2273 active agreement of all recipients before sending out anything. 2274 However, requirement #9 in [ipp-req] (.There is no requirement for IPP 2275 Printer receiving the print request to validate the identity of an event 2276 recipient.) argues against this. Certain systems may decide to disallow 2277 third party notifications (a traditional fax model). 2279 Clients submitting notification requests to the IPP Printer has the same 2280 security issues as submitting an IPP/1.1 print job request. The same 2281 mechanisms used by IPP/1.1 can therefore be used by the client 2282 notification submission. Operations that require authentication can use 2283 the HTTP authentication. Operations that require privacy can use the 2284 HTTP/TLS privacy. 2286 The notification access control model should be similar to the IPP 2287 access control model for Jobs. Creating a Per-Printer Notification 2288 Subscription object is associated with a user. Only the creator or an 2289 operator can cancel the subscription. The system may limit the listing 2290 of items to only those items owned by the user. Some subscriptions 2291 (e.g. those that have a lifetime longer than a job) can be done only by 2292 privileged users (users having operator and/or administrator access 2293 rights), if that is the authorization policy. 2295 The standard security concerns (delivery to the right user, privacy of 2296 content, tamper proof content) apply to the notification delivery. IPP 2297 should use the security mechanism of the delivery method used. Some 2298 delivery mechanisms are more secure than others. Therefore, sensitive 2299 notifications should use the delivery method that has the strongest 2300 security. 2302 14 Status Codes 2304 The following status codes are defined as extensions for notification: 2306 14.1client-error-uri-notification-scheme-not-supported (0x04??) 2308 The scheme of the client-supplied URI in a "notify-recipient" operation 2309 attribute in a Create-Printer-Subscription operation is not supported. 2310 See [ipp-mod] section 3.1.7. 2312 Note: There is no corresponding Per-Job subscription error, since the 2313 Printer object MUST ignore any errors in the "job-notify" operation 2314 attribute and perform the Job Creation operation (see section 5.1), 2315 since the job can still be printed. 2317 ISSUE 4 - The client-error-uri-scheme-not-supported is already an 2318 IPP/1.1 status code and section 3.1.6.1 indicates that the "document- 2320 Expires January 22, 2000 2321 uri" attribute NEED NOT be returned in the Unsupported Attributes group, 2322 otherwise, we could use that error code and REQUIRE that offending "xxx- 2323 uri" attribute(s) to be returned. 2325 14.2server-error-too-many-subscriptions (0x04??) 2327 The bounded set of concurrent Per-Printer subscriptions supported by the 2328 Printer object would be exceeded if this request were accepted. 2330 Note: There is no corresponding Per-Job subscription error, since the 2331 Printer object MUST ignore any errors in the "job-notify" operation 2332 attribute and perform the Job Creation operation (see section 5.1), 2333 since the job can still be printed. 2335 14.3server-error-too-many-events (0x04??) 2337 The client supplied more events in the "notify-events" operation 2338 attribute in a Create-Printer-Subscription that the Printer supports, as 2339 indicated in its "max-events-supported" attribute (see section 5.5.4). 2341 Note: There is no corresponding Per-Job subscription error, since the 2342 Printer object MUST ignore any errors in the "job-notify" operation 2343 attribute and perform the Job Creation operation (see section 5.1), 2344 since the job can still be printed. 2346 ISSUE 5 - Should the entire "job-notify" operation attribute be ignored, 2347 if one of its member attributes has a problem, or should just that 2348 member attribute be ignored? If the latter, then is just the member 2349 attribute returned in the Unsupported Attributes group? 2351 15 References 2353 [ipp-coll] 2354 deBry, R., , Hastings, T., Herriot, R., "Internet Printing 2355 Protocol/1.0 & 1.1: collection attribute syntax", , work in progress, August 22, 1999. 2358 [ipp-mod] 2359 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 2360 "Internet Printing Protocol/1.1: Model and Semantics", < draft- 2361 ietf-ipp-model-v11-04.txt>, work in progress, June 23, 1999. 2363 [ipp-not-hist] 2364 deBry, R., Lewis, H., Hastings, T., "Internet Printing 2365 Protocol/1.1: Requirements for IPP Notifications", , work in progress, August 22, 1999. 2368 [ipp-not-req] 2369 deBry, R., Lewis, H., Hastings, T., "Internet Printing 2370 Protocol/1.1: Requirements for IPP Notifications", , work in progress, August 11, 1999. 2373 Expires January 22, 2000 2375 [ipp-set2] 2376 Kugler, C., , Hastings, T., "Internet Printing Protocol/1.0 & 1.1: 2377 Additional Operations, Set 2", , work in 2378 progress, August 22, 1999. 2380 [ipp-prog] 2381 Hastings, T., Bergman, R., Lewis, H., "Proposed Job Progress 2382 Attributes for IPP", work in 2383 progress, May 18, 1999. 2385 [RFC2046] 2386 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 2387 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 2388 RFC1522, RFC1590), RFC 2046. 2390 [RFC2119] 2391 S. Bradner, "Key words for use in RFCs to Indicate Requirement 2392 Levels", RFC 2119 , March 1997 2394 [RFC2566] 2396 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 2397 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, April 2398 1999. 2400 16 Author's Addresses 2402 Scott A. Isaacson (Editor) 2403 Novell, Inc. 2404 122 E 1700 S 2405 Provo, UT 84606 2407 Phone: 801-861-7366 2408 Fax: 801-861-2517 2409 e-mail: sisaacson@novell.com 2411 Tom Hastings 2412 Xerox Corporation 2413 737 Hawaii St. ESAE 231 2414 El Segundo, CA 90245 2416 Phone: 310-333-6413 2417 Fax: 310-333-5514 2418 e-mail: hastings@cp10.es.xerox.com 2420 Roger deBry 2421 Utah Valley State College 2422 Orem, UT 84058 2424 Phone: (801) 222-8000 2425 EMail: debryro@uvsc.edu 2427 Jay Martin 2429 Expires January 22, 2000 2430 e-mail: jkm@underscore.com 2432 Michael Shepherd 2433 Xerox Corporation 2434 800 Phillips Road MS 128-51E 2435 Webster, NY 14450 2437 Phone: 716-422-2338 2438 Fax: 716-265-8871 2439 e-mail: mshepherd@crt.xerox.com 2441 Ron Bergman (Editor) 2442 Dataproducts Corp. 2443 1757 Tapo Canyon Road 2444 Simi Valley, CA 93063-3394 2446 Phone: 805-578-4421 2447 Fax: 805-578-4001 2448 Email: rbergman@dpc.com 2450 A. Appendix - Summary of Notification Attribute Usage 2452 This appendix summarizes the usage of Notification attributes in the Job 2453 operation attribute collection, Job object, Subscription object, 2454 Notification content, Job operations, and Subscriptions operations. 2456 ISSUE 6 - Should this appendix be kept in the spec or moved to the 2457 Implementer's Guide? 2459 17 Appendix C: Full Copyright Statement 2461 Copyright (C) The Internet Society (1998,1999). All Rights Reserved 2463 This document and translations of it may be copied and furnished to 2464 others, and derivative works that comment on or otherwise explain it or 2465 assist in its implementation may be prepared, copied, published and 2466 distributed, in whole or in part, without restriction of any kind, 2467 provided that the above copyright notice and this paragraph are included 2468 on all such copies and derivative works. However, this document itself 2469 may not be modified in any way, such as by removing the copyright notice 2470 or references to the Internet Society or other Internet organizations, 2471 except as needed for the purpose of developing Internet standards in 2472 which case the procedures for copyrights defined in the Internet 2473 Standards process must be followed, or as required to translate it into 2474 languages other than English. 2476 The limited permissions granted above are perpetual and will not be 2477 revoked by the Internet Society or its successors or assigns. 2479 This document and the information contained herein is provided on an "AS 2480 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 2482 Expires January 22, 2000 2483 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 2484 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 2485 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 2486 FITNESS FOR A PARTICULAR PURPOSE. 2488 Expires January 22, 2000