idnits 2.17.1 draft-ietf-ipp-not-spec-01.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 55 longer pages, the longest (page 34) being 76 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 56 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 396 has weird spacing: '...- yes no ...' == Line 400 has weird spacing: '... yes no ...' == Line 404 has weird spacing: '... no yes ...' == Line 409 has weird spacing: '... yes no ...' == Line 413 has weird spacing: '...- yes yes ...' == (8 more instances...) == 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 (October 14, 1999) is 8959 days in the past. Is this intentional? 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 27, but not defined == Missing Reference: 'IPP-REQ' is mentioned on line 65, but not defined == Missing Reference: 'IPP-RAT' is mentioned on line 67, but not defined == Missing Reference: 'IPP-MOD' is mentioned on line 2517, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 69, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 70, but not defined == Missing Reference: 'IPP LPD' is mentioned on line 71, but not defined == Missing Reference: 'TBD' is mentioned on line 288, but not defined == Missing Reference: 'RFC2573' is mentioned on line 2241, but not defined ** Obsolete undefined reference: RFC 2573 (Obsoleted by RFC 3413) == Unused Reference: 'RFC2046' is defined on line 2761, but no explicit reference was found in the text == Unused Reference: 'RFC2566' is defined on line 2774, but no explicit reference was found in the text == Unused Reference: 'RFC2639' is defined on line 2779, but no explicit reference was found in the text ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Obsolete normative reference: RFC 2639 (Obsoleted by RFC 3196) Summary: 11 errors (**), 0 flaws (~~), 24 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 INTERNET-DRAFT 2 S. Isaacson 3 Novell, Inc. 4 J. Martin 5 Underscore 6 R. deBry 7 Utah Valley State College 8 T. Hastings 9 Xerox Corporation 10 M. Shepherd 11 Xerox Corporation 12 R. Bergman 13 Dataproducts Corp. 14 October 14, 1999 16 Internet Printing Protocol/1.1: IPP Event Notification Specification 18 Copyright (C) The Internet Society (1999). All Rights Reserved. 20 Status of this Memo 22 This document is an Internet-Draft and is in full conformance with all 23 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 24 documents of the Internet Engineering Task Force (IETF), its areas, and 25 its working groups. Note that other groups may also distribute working 26 documents as Internet-Drafts. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference material 31 or to cite them other than as "work in progress". 33 The list of current Internet-Drafts can be accessed at 34 http://www.ietf.org/ietf/1id-abstracts.txt 36 The list of Internet-Draft Shadow Directories can be accessed as 37 http://www.ietf.org/shadow.html. 39 Abstract 41 This document describes an extension to the IPP/1.0 & IPP/1.1 model that 42 allows a client to subscribe to printing related events. Subscriptions 43 include "Per-Job subscriptions" and "Per-Printer subscriptions". One or 44 more Per-Job Submission subscriptions are specified by the client when 45 submitting a job. Additional Per-Job and Per-Printer subscriptions are 46 created by performing separate explicit Create-Job-Subscription Create- 47 Printer-Subscription operations, respectively. Subscriptions are 48 modeled as Subscription objects. Four other operations are defined for 49 subscription objects: get attributes, get subscriptions, renew a 50 subscription, and cancel a subscription. 52 A subscription request and the Subscription object includes: the names 53 of Job and/or Printer events, the Notification Recipient URL, the text 54 format if Human Consumable notification is requested, possibly some 55 opaque data, and the charset and natural language. In addition, the 57 Expires April 14, 2000 58 subscription request includes: the requested lease time and persistency 59 for the subscription. When the event occurs, a notification is 60 generated and delivered using the information specified in the 61 subscription. 63 The full set of IPP documents includes: 65 Design Goals for an Internet Printing Protocol [IPP-REQ] 66 Rationale for the Structure and Model and Protocol for the Internet 67 Printing Protocol [IPP-RAT] 68 Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] 69 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 70 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 71 Mapping between LPD and IPP Protocols [IPP LPD] 73 The "Design Goals for an Internet Printing Protocol" document takes a 74 broad look at distributed printing functionality, and it enumerates 75 real-life scenarios that help to clarify the features that need to be 76 included in a printing protocol for the Internet. It identifies 77 requirements for three types of users: end users, operators, and 78 administrators. It calls out a subset of end user requirements that are 79 satisfied in IPP/1.0. Operator and administrator requirements are out 80 of scope for version 1.0. A few OPTIONAL operator operations have been 81 added to IPP/1.1. 83 The "Rationale for the Structure and Model and Protocol for the Internet 84 Printing Protocol" document describes IPP from a high level view, 85 defines a roadmap for the various documents that form the suite of IPP 86 specifications, and gives background and rationale for the IETF working 87 group's major decisions. 89 The "Internet Printing Protocol/1.1: Model and Semantics", describes a 90 simplified model with abstract objects, their attributes, and their 91 operations that are independent of encoding and transport. It introduces 92 a Printer and a Job object. The Job object optionally supports multiple 93 documents per Job. It also addresses security, internationalization, and 94 directory issues. 96 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 97 a formal mapping of the abstract operations and attributes defined in 98 the model document onto HTTP/1.1. It defines the encoding rules for a 99 new Internet MIME media type called "application/ipp". This document 100 also defines the rules for transporting over HTTP a message body whose 101 Content-Type is "application/ipp". This document defines a new scheme 102 named 'ipp' for identifying IPP printers and jobs. Finally, this 103 document defines interoperability rules for supporting IPP/1.0 clients. 105 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 106 insight and advice to implementers of IPP clients and IPP objects. It 107 is intended to help them understand IPP/1.1 and some of the 108 considerations that may assist them in the design of their client and/or 110 Expires April 14, 2000 111 IPP object implementations. For example, a typical order of processing 112 requests is given, including error checking. Motivation for some of the 113 specification decisions is also included. 115 The "Mapping between LPD and IPP Protocols" document gives some advice 116 to implementers of gateways between IPP and LPD (Line Printer Daemon) 117 implementations. 119 Expires April 14, 2000 120 Table of Contents 122 1 Introduction.......................................................7 124 1.1Notification Overview..........................................7 126 2 Model for Per-Job and Per-Printer Subscription and Event Notification 127 10 129 2.1Model for Per-Job Subscription and Notification...............10 130 2.2Model for Per-Printer Subscription and Notification...........11 131 2.3Relationship between the Printer object and the Notification 132 Delivery Service..................................................12 133 2.3.1 Use of a Notification Service transparently to clients...12 134 2.3.2 Use of Notification Service transparently to the IPP Printer 135 13 137 3 Terminology.......................................................14 139 3.1Conformance Terminology.......................................14 140 3.2Other terminology.............................................14 142 4 Object Model for Notification.....................................17 144 4.1Object relationships..........................................18 146 5 Subscription Object attributes....................................19 148 5.1notify-recipient (uri)........................................21 149 5.2notify-events (1setOf type2 keyword)..........................22 150 5.3notify-text-format (mimeMediaType)............................25 151 5.4subscriber-user-data (octetString(63))........................25 152 5.5notify-charset (charset)......................................26 153 5.6notify-natural-language (naturalLanguage).....................26 154 5.7request-id....................................................26 155 5.8subscription-id (integer (1:MAX)).............................26 156 5.9notify-lease-expiration-time (integer(0:MAX)).................27 157 5.10 printer-uri (uri)............................................27 158 5.11 subscriber-user-name (name(MAX)).............................27 159 5.12 notify-printer-up-time (integer(1:MAX))......................28 160 5.13 notify-persistence-granted (boolean).........................28 162 6 Printer Description Attributes related to Notification............28 164 6.1notify-schemes-supported (1setOf uriScheme)...................29 165 6.2notify-events-default (1setOf type2 keyword)..................29 166 6.3notify-events-supported (1setOf type2 keyword)................30 167 6.4max-events-supported (integer(5:MAX)).........................30 168 6.5notify-text-format-supported (1setOf mimeMediaType)...........30 169 6.6max-job-subscriptions-supported (integer(1:MAX))..............31 170 6.7max-printer-subscriptions-supported (integer(0:MAX))..........31 171 6.8notify-lease-time-supported (rangeOfInteger(0:MAX))...........31 172 6.9notify-lease-time-default (integer(0:MAX))....................31 173 6.10 persistent-jobs-supported (boolean)..........................32 174 6.11 persistent-subscriptions-supported (boolean).................32 175 6.12 printer-state-change-time (integer(1:MAX))...................32 176 6.13 printer-state-change-date-time (dateTime)....................32 178 7 Notification Content..............................................32 180 Expires April 14, 2000 181 7.1Notification content MIME media type formats..................33 182 7.2Machine Consumable form.......................................33 183 7.3Human Consumable form.........................................33 184 7.4Notification content attributes common to Job and Printer events 185 34 186 7.5Additional Notification content attributes for Job events only 36 187 7.6Additional Notification content attributes for Printer events 188 only 37 190 8 Operations for notification.......................................37 192 8.1Operations for Per-Job Subscriptions only.....................37 193 8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) 194 and Validate-Job................................................37 195 8.1.2 Create-Job-Subscription operation........................40 196 8.2Operations for Per-Printer Subscriptions only.................42 197 8.2.1 Create-Printer-Subscription operation....................42 198 8.3Common Operations for Per-Job and Per-Printer Subscriptions...45 199 8.3.1 Get-Subscription-Attributes operation....................45 200 8.3.2 Get-Subscriptions operation..............................46 201 8.3.3 Renew-Subscription operation.............................47 202 8.3.4 Cancel- Subscription operation...........................48 204 9 Comparison of Per-Job versus Per-Printer Subscriptions............49 206 10 Conformance Requirements........................................49 208 11 IANA Considerations.............................................50 210 12 Internationalization Considerations.............................50 212 13 Security Considerations.........................................50 214 14 Status Codes....................................................51 216 14.1 'successful-ok-ignored-subscriptions' (0x0003)...............51 217 14.2 client-error-uri-notification-scheme-not-supported (0x04??)..52 218 14.3 server-error-too-many-subscriptions (0x04??).................52 219 14.4 server-error-too-many-events (0x04??)........................52 221 15 Additions to the IPP Encoding and Transport Document............52 223 16 References......................................................53 225 17 Author's Addresses..............................................55 227 18 Appendix C: Full Copyright Statement............................56 229 Expires April 14, 2000 230 Tables 232 Table 1 - Summary of Per-Job and Per-Printer Subscription operations..9 234 Table 2 - Subscription object attributes.............................20 236 Table 3 - Printer Description attributes associated with Notification29 238 Table 4 - Common Job and Printer Notification content attributes.....34 240 Table 5 - Additional Notification content attributes for Job events only 241 .................................................................36 243 Table 6 - Additional Notification content attributes for Printer events 244 only.............................................................37 246 Table 7 - Member attributes of the "job-notify" collection operation 247 attribute........................................................38 249 Table 8 - Conformance Requirements for Operations....................50 251 Figures 253 Figure 1 - Client-Printer Per-Job Subscription and Notification Model10 255 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 256 Model............................................................11 258 Figure 3 - Client-Printer Per-Printer Subscription and Notification 259 Model............................................................12 261 Figure 4 - Opaque Use of a Notification Service Transparent to the 262 Client...........................................................13 264 Figure 5 - Use of a Notification Service transparent to the IPP Printer 265 .................................................................14 267 Figure 6 - Object Model for Notification.............................18 269 Expires April 14, 2000 270 1 Introduction 272 This IPP notification specification is an extension to IPP/1.0 [RFC2568, 273 RFC2569] and IPP/1.1 [ipp-mod, ipp-pro]. This document in combination 274 with the following documents is intended to meet the notification 275 requirements described in [ipp-not-req]: 277 Internet Printing Protocol/1.1: "Collection Attribute Syntax" 278 [ipp-coll] 279 Internet Printing Protocol/1.1: "Job Progress Attributes" [ipp- 280 prog] 281 Internet Printing Protocol/1.1: "Notification Change History" 282 [ipp-not-hist] 283 In addition, each notification delivery method, whether REQUIRED or 284 OPTIONAL, is described in separate documents: 285 Internet Printing Protocol/1.1: "Notification Delivery Method xxx 286 [TBD] 287 Internet Printing Protocol/1.1: "Notification Delivery Method yyy 288 [TBD] 290 The rest of this document is laid out as follows: 292 - The rest of Section 1.1 is an overview of IPP Notification. 294 - Section 2 is the model for network entities that use IPP 295 notification, including clients (desktop and servers), IPP Printers 296 (servers and devices), and Notification Recipients. 298 - Section 3 is the terminology used throughout the document. 300 - Section 4 is the object model for notification, including Job, 301 Printer, and Subscription objects. 303 - Section 5 and 6 defines the notification attributes for each of 304 the Subscription and Printer objects. 306 - Section 7 defines the content of Human Consumable and Machine 307 Consumable Event Notification contents. 309 - Sections 8 and 9 define the Per-Job and Per-Printer Subscription 310 operations. 312 - Section 10 and 11 define the conformance requirements and IANA 313 requirements, respectively. 315 - Section 12 - 14 cover Internationalization, Security, and Status 316 codes. 318 1.1 Notification Overview 320 A client can establish an event notification subscription so that when 321 one of the specified events occurs, an asynchronous Notification is sent 322 to a specified Notification Recipient. 324 Expires April 14, 2000 325 One or more Per-Job Submission subscriptions are specified by the client 326 when submitting a job. One or more Per-Job or Per-Printer subscriptions 327 are created by performing separate explicit Create-Job-Subscription or 328 Create-Printer-Subscriptions operations, respectively. 330 A Per-Job or Per-Printer subscription request includes: 332 1. the names of Job and/or Printer events that are of interest to the 333 Notification Recipient 335 2. the delivery method and address to use to deliver the notification 336 to one Notification Recipient 338 3. if Human Consumable notification content is to be sent, which text 339 format 341 4. some opaque data that the subscriber wants to be sent to the 342 Notification Recipient in the Notification, perhaps to identify 343 either the subscriber or the ultimate recipient 345 5. the charset to use in the Notification, if it is to be different 346 than the one used in the request that created the subscription 348 6. the natural language to use in the Human Consumable Notification, 349 if it is to be different than the one used in the request that 350 created the subscription 352 7. the requested lease time in seconds for the subscription 354 8. whether or not the subscription is requested to be persistent 355 across power cycles. 357 For Per-Job subscriptions, a client requests job and printer event 358 notification using the "job-notify" operation attribute when creating a 359 job with any of the Job Creation operation: Print-Job, Print-URI, and 360 Create-Job. The "job-notify" operation attributes may be submitted to 361 the Validate-Job in order to be validated. . The "job-notify" 362 operation attribute contains one or more collection values, each 363 consisting of a number of member attributes that specify a subscription, 364 so that a Job can have more than one Per-Job subscription. The 365 'collection' is a new attribute syntax (see [ipp-coll]). The member 366 attributes of each collection value are copied to separate Subscription 367 objects to populate the corresponding Subscription Description 368 attributes. 370 For Per-Printer subscriptions and Per-Job subscriptions created after 371 the Job has been created, a client requests job and printer event 372 notification using new operations independent of any job. The Printer 373 keeps each subscription in a separate Subscription object. The Create- 374 Job-Subscription and Create-Printer-Subscription operations create an 375 instance of the Subscription object supplying these new operation 376 attributes and returns a subscription-id (analogous to a job-id for a 377 Job object). These operation attributes are copied to the Subscription 378 object as Subscription Description attributes and so may be queried 379 using the Get-Subscription-Attributes and Get-Subscriptions operations. 380 The subscriber requests a lease time for each Per-Printer subscription 382 Expires April 14, 2000 383 which MAY be infinite. The Printer grants a lease time according to its 384 configured policy. A client MUST renew the Subscription before the 385 granted lease time expires using the Renew-Subscription operation. 387 Table 1 summarizes the Per-Job and Per-Printer Subscription operations 388 and their salient input operation attributes. 390 Table 1 - Summary of Per-Job and Per-Printer Subscription operations 392 Operation: Per- Per- salient inputs beside printer-uri: 393 Job Prin 394 ter 396 Print-Job, Print- yes no 1setOf {recipient, [events,] [text- 397 URI, Create-Job format,] [user-data,] [charset,] 398 [natural-language]} 400 Validate-Job yes no 1setOf {recipient, [events,] [text- 401 format,] [user-data,] [charset,] 402 [natural-language]} 404 Create-Printer- no yes recipient, [events,] [text-format,] 405 Subscription [user-data,] [charset,] [natural- 406 language,] [lease-time-requested,] 407 [persistence-requested] 409 Create-Job- yes no recipient, job-id, [events,] [text- 410 Subscription format,] [user-data,] [charset,] 411 [natural-language,] 413 Get-Subscription- yes yes subscription-id, [requested- 414 Attributes attributes] 416 Get-Subscriptions yes yes [job-id], [my-subscriptions,] 417 [requested-attributes] 419 Renew-Subscription yes yes subscription-id, [lease time- 420 requested] 422 Cancel-Subscription yes yes subscription-id 424 There are two steps that IPP notification must take regarding each event 425 . an internal event recording, and an external notification: 427 1) As an events occurs, the printer internally records in the job 428 objects and the printer objects those events which are required to 429 be supported by the system and those that are subscribed to by a 430 notification recipient. 432 2) As an events occurs, the Printer searches the set of 433 subscriptions for any interest in that event. As the Printer finds 434 that some notification recipient is interested in that event (the 435 notification recipient is subscribed to the event), the "request- 436 id" sequence number for that event is incremented and a 437 notification is generated and delivered using the methods and 438 target addresses identified in the subscription. The "request-id" 439 sequence number permits a Notification Recipient to detect 441 Expires April 14, 2000 442 duplicate notifications due either to duplicate subscriptions or 443 retries and to detect dropped notifications. 445 2 Model for Per-Job and Per-Printer Subscription and Event Notification 447 2.1 Model for Per-Job Subscription and Notification 449 Per-Job subscriptions are created by a client (desktop or server acting 450 as a client) as part of creation of the job in an IPP Printer (printing 451 device or server). More than one subscription may be submitted with a 452 job. Additional subscriptions may be associated with the job using the 453 Create-Job-Subscription operation. The IPP Printer object delivers a 454 Notifications to the Notification Recipient supplied by the Client in 455 each subscription. A Notification Recipient can be the Job submitter or 456 a third party. 458 Figure 1 shows the Per-Job subscription notification model for a simple 459 Client - Printer relationship. 461 embedded printer: 462 output device or server 463 desktop or server +---------------+ 464 +--------+ | ########### | 465 | client |---IPP job submission------># Printer # | 466 +--------+ Per-Job subscription | # Object # | 467 +------------+ | #####|##### | 468 |Notification| +-------|-------+ 469 |Recipient |<-----IPP Notifications---------+ 470 +------------+ (Job and/or Printer events) 472 Figure 1 - Client-Printer Per-Job Subscription and Notification Model 474 Figure 2 shows a (spooling or non-spooling) Server that implements two 475 Printer objects (1 and 2) that represent two devices. The devices A and 476 B in turn each implement an IPP Printer object (3 and 4, respectively). 477 The Server implementation has three choices for how to support Per-Job 478 subscriptions to the client (and itself): 480 1.forward the Per-Job subscriptions to the down stream IPP Printer 481 and let it perform the notification directly to the Notification 482 Recipients supplied by the Client (Notifications(C)) and use 483 Per-Printer Subscriptions for the Server's own purposes. 485 2.save the client-supplied Per-Job subscription on the Job object 486 in the server and substitute its own Per-Job subscription with 487 the Server as the Notification Recipient (Notifications(B)). 488 Then the Server relays Notifications to the client-supplied 489 Notification Recipients (Notifications(A)). 491 3.A combination of 1 and 2 in which the Server adds its own Per- 492 Job subscriptions to those supplied by the client. Thus the IPP 493 Job that goes to Printer object 4 has a combination of 495 Expires April 14, 2000 496 subscription information from both the Client and the Server. 497 This latter approach is sometimes called "piggy-backing" because 498 the Server is adding its Per-Job subscription information to 499 that supplied by the client. Piggy-backing is especially 500 useful, if device B also accepts (IPP or non-IPP) requests from 501 other servers. Then when all the jobs from Server S have been 502 completed by device B, there will be no more Job events sent to 503 Server S. (Server S could still maintain a long term Per- 504 Printer subscription with Printer D to that Server S can have 505 Printer B's state track (shadow) that of Printer D or Server S 506 could poll Printer D when queried about Printer B). 508 device A 509 server S +------------+ 510 +------------+ | ###########| 511 +--------+ IPP Job | ###########| IPP Job | # Printer #| 512 | client |--submission---># Printer #|---submission-----># Object 3#| 513 +--------+ Per-Job | # Object 1#| Per-Job | ###########| 514 subscription | ###########| subscription +------------+ 515 | | device B 516 +--------+ IPP Job | ###########| +------------+ 517 | client |--submission---># Printer #| IPP Job | ###########| 518 +--------+ Per-Job | # Object 2#|---submission-----># Printer #| 519 subscription | ###|#######| Per-Job | # Object 4#| 520 +----|---^---+ subscription | ####|#|####| 521 +--------+ | | +-----|-|----+ 522 |Notific-|<-Notifications(A)-+ +--- Notifications(B)-------+ | 523 |ation Re|<----------------Notifications(C)--------------------+ 524 |cipient | 525 +--------+ 527 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 528 Model 530 2.2 Model for Per-Printer Subscription and Notification 532 Per-Printer subscriptions are created by a client (an end user, an 533 operator, or a server acting as a client) using a Create-Printer- 534 Subscription operation that is independent of Job Submission. The 535 Printer object (printing device or server) creates a Subscription object 536 to hold the attributes supplied by the subscriber. The client creates 537 separate Per-Printer subscriptions if more than one Notification 538 Recipient is desired. The Printer delivers Notifications to the 539 Notification Recipient specified by each Per-Printer subscription. A 540 Notification Recipient may be the subscriber or a third party. Figure 3 541 shows the Per-Printer subscription notification model for the Client - 542 Printer relationship where the client may be an end user, an operator, 543 or a server acting as a client. 545 Expires April 14, 2000 546 desktop or server server or printing device 547 +---------------+ 548 +--------+ | ########### | 549 | client |---Create-Printer-Subscription------># Printer # | 550 +--------+ (Per-Printer subscription) | # Object # | 551 | #####|##### | 552 +------------+ +-------|-------+ 553 |Notification|<----------IPP Notifications-------------+ 554 |Recipient | (Job and/or Printer events) 555 +------------+ 557 Figure 3 - Client-Printer Per-Printer Subscription and Notification 558 Model 560 2.3 Relationship between the Printer object and the Notification 561 Delivery Service 563 The IPP Notification model does not mandate that the IPP Printer object 564 implement the full semantics of subscription, report generation, and 565 multiple delivery methods itself. This section describes two methods of 566 using third party notification services. The first is transparent to 567 the client and the second is transparent to the IPP Printer. 569 2.3.1 Use of a Notification Service transparently to clients 571 An implementation may be configured to use some other notification 572 service to either (1) delivery the Notifications to the Notification 573 Recipient(s) specified in the IPP Subscription or (2) keep the 574 Subscriptions, accept events, possibly format the notification in the 575 natural language of the Notification Recipient when a Human Consumable 576 text format is used, and deliver the Notifications to the Notification 577 Recipient(s) indicated in the IPP Subscription. Figure 4 shows this 578 partitioning. 580 Expires April 14, 2000 581 output device or server 582 desktop or server +---------------+ 583 +--------+ | ########### | 584 | client |---IPP subscription--------># Printer # | 585 +--------+ | # Object # | 586 | #####|##### | 587 +-------|-------+ 588 | Subscriptions 589 *******| OR Events 590 +------------+ * | 591 |Notification| * +------v--------+ 592 |Recipient |<--IPP Notifications-----| Notification | 593 +------------+ * | Service | 594 * +---------------+ 595 * 596 *** = Implementation configuration opaque boundary 598 Figure 4 - Opaque Use of a Notification Service Transparent to the 599 Client 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 the client and this specification. 605 2.3.2 Use of Notification Service transparently to the IPP Printer 607 Another way that a Notification Service can be used is if the 608 Notification Recipient indicated in the IPP Subscription is a 609 notification service (transparent to the IPP Printer), which in turn 610 forwards the Notification to the Ultimate Notification Recipient using 611 additional parameters in the IPP Subscription (URI parameters or 612 subscriber user data). In such cases, the Ultimate Notification 613 Recipient has also subscribed directly with the other notification 614 service (by means outside this document). As far as the IPP Printer is 615 concerned, the IPP Subscription indicated that the IPP Printer is to 616 delivery Notifications to the Notification Recipient (Notification 617 Service) using the specified notification delivery method. The method 618 that the Notification Recipient uses for delivering the notification to 619 the Ultimate Notification Recipient is beyond the scope of this document 620 and is transparent to the IPP Printer. However, the client does have to 621 know how to pass additional information to the Notification Recipient in 622 the IPP Subscription using either extra parameters in the URI or 623 subscriber user data. Examples of this latter approach are paging, 624 immediate messaging services, and NOS vendors infrastructure. Figure 5 625 shows this approach. 627 Expires April 14, 2000 628 desktop or server server or printing device 629 +---------------+ 630 +--------+ | ########### | 631 | client |----------IPP Subscriptions---------># Printer # | 632 +--------+ | # Object # | 633 | #####|##### | 634 +------------+ +------------+ +-------|-------+ 635 |Ultimate | |Notification|<---IPP Notifications-----+ 636 |Notification|<----|Recipient | 637 |Recipient | +------------+ 638 +------------+ (Notification Service) 640 Figure 5 - Use of a Notification Service transparent to the IPP Printer 642 3 Terminology 644 This section defines terminology used throughout this document. 646 3.1 Conformance Terminology 648 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 649 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 650 conformance to this specification. These terms are defined in 651 [ipp-mod section 13.1 on conformance terminology, most of which is 652 taken from RFC 2119 [RFC2119]. 653 Since support of this entire notification specification is 654 OPTIONAL for conformance to IPP/1.0 or IPP/1.1, the use of the 655 term REQUIRED (R) in this document means "REQUIRED if this 656 notification specification is implemented". Likewise, the 657 term RECOMMENDED means "RECOMMENDED if this notification 658 specification is implemented" and OPTIONAL (O) means OPTIONAL 659 if this notification specification is implemented. 660 READ-ONLY - indicates an attribute that MUST NOT be settable using 661 the Set-Job-Attributes or Set-Printer-Attributes operations (see 662 [ipp-set2]). 664 3.2 Other terminology 666 Job Submitting End User - A human end user who submits a print job 667 to an IPP Printer. This person may or may not be within the same 668 security domain as the Printer. This person may or may not be 669 geographically near the printer. 670 Administrator - A human user who established policy for and 671 configures the print system. 672 Operator - A human user who carries out the policy established by the 673 Administrator and controls the day to day running of the print 674 system. 675 Job Submitting Application - An application (for example, a batch 676 application), acting on behalf of a Job Submitting End User, which 677 submits a print job to an IPP Printer. The application may or may 679 Expires April 14, 2000 680 not be within the same security domain as the Printer. This 681 application may or may not be geographically near the printer. 682 Security Domain - The set of network components which can communicate 683 without going through a proxy or firewall. A security domain may be 684 geographically very large, for example - anyplace within IBM.COM. 685 IPP Client (or client) - The software component (desktop or server) 686 that sends an IPP operation request to an IPP Printer object 687 (server or printing device) and accepts the resulting operation 688 response from the IPP Printer object. 689 Job Recipient - A human who is the ultimate consumer of the print 690 job. In many cases this will be the same person as the Job 691 Submitting End User, but need not be. 692 Example: If I use IPP to print a document on a printer in a 693 business partner's office, I am the Job Submitting End User, while 694 the person I intend the document for in my business partner's 695 office is the Job Recipient. Since one of the goals of IPP is to 696 be able to print near the Job Recipient of the printed output, we 697 would normally expect that person to be in the same security domain 698 as, and geographically near, the Printer. However, this may not 699 always be the case. For example, I submit a print job across the 700 Internet to a Kinko's print shop. I am both the Submitting End User 701 and the Job Recipient, but I am neither near nor in the same 702 security domain as the Printer. 703 Job Recipient Proxy - A human acting on behalf of the Job Recipient. 704 In particular, the Job Recipient Proxy physically picks up the 705 printed document from the Printer, if the Job Recipient cannot 706 perform that function. The Proxy is by definition geographically 707 near and in the same security domain as the printer. 708 Example: I submit a print job from home to be printed on a printer 709 at work. I'd like my secretary to pick up the print job and put it 710 on my desk. In this case, I am acting as both Job Submitting End 711 User and Job Recipient. My secretary is acting as a Job Recipient 712 Proxy 713 Notification Subscriber (or Subscriber) - A client that requests the 714 IPP Printer to send Event Notifications to one or more Notification 715 Recipients. A Notification Subscriber may be: 716 1.a Job Submitting End User or Job Submitting Application (desktop 717 or server) that is submitting a job or 718 2.an End User, an Operator, or an Administrator that is not 719 submitting a job. 720 Subscription - A request by a Notification Subscriber to the IPP 721 Printer to send Event Notifications to a specified Notification 722 Recipient when the event occur. A Subscription is represented as a 723 set of attributes that indicate the "what, where, who, and how" for 724 notification. Notifications are generated for certain events 725 (what) and delivered using various delivery methods (how) to 726 certain addresses (where and who). 727 Per-Job Subscription - A Subscription that a client specifies as part 728 of a create job operation (Print-Job, Print-URI, Create-Job), a 729 Validate-Job operation, or an explicit Create-Job-Subscription 730 operation with a Job object as the target. 732 Expires April 14, 2000 734 Per-Printer Subscription - A Subscription that a client specifies 735 using an explicit Create-Printer-Subscription operation with a 736 Printer object as the target. 737 Notification Source - The entity that sends Event Notifications. It 738 MAY be the IPP Printer itself or the IPP Printer MAY be configured 739 to use a Notification Service to delivery Notifications 740 transparently to the subscribing clients (see Figure 4). 741 Notification Recipient - The entity identified as a recipient within 742 a subscription that receives IPP Notifications about Job and/or 743 Printer events (see Figure 4 and Figure 5). A Notification 744 Recipient may be a: Job Submitting End User, Job Submitting 745 Application (desktop or server), Job Recipient, Job Recipient 746 Proxy, a Notification Service, an Operator, or Administrator, etc., 747 and their representative or log file or usage statistics gathering 748 application or other active or passive entities. 749 Ultimate Notification Recipient - The entity to which the 750 Notification Recipient (stores and) forwards an IPP Notification 751 when the Notification Recipient is a Notification Service (see 752 Figure 5). 753 Event - An event is some occurrence (either expected or unexpected) 754 within the printing system of a change of state, condition, or 755 configuration of a Job or Printer object. A property of an event 756 is that it only occurs at one instant in time and does not span the 757 time the physical event takes place. For instance, jam-occurred 758 and jam-cleared are two distinct events. The jam-occurred event is 759 reported only when the jam initially occurs and only if there is 760 one or more event subscriptions outstanding for that event. 762 Events can be classified along two dimensions: 763 - Either as Job Events or Printer Events, and 764 - Either as Errors, Warnings, or Reports 766 A Job event is some interesting state change in the Job object, and 767 a Printer event is some interesting change in the Printer object. 769 A report event is purely informational, such as 'job-completed' or 770 'accepting-jobs'. A warning is not serious and processing 771 continues. An error is serious and either the job is aborted or 772 the printer stops. These are typical uses of the terms report, 773 warning, and error, although the actual usage is implementation 774 dependent. 776 An event occurs for a job or printer whether any entity has 777 subscribed to be notified for that event or not. A notification is 778 only generated depending on the set of subscriptions outstanding. 780 Notification - When an event occurs, a Notification is generated 781 that fully describes the event (what the event was, where it 782 occurred, when it occurred, etc.). Notifications are delivered to 783 each Notification Recipient that has a subscription that includes 784 the event, if any. The Notification is delivered to the address of 786 Expires April 14, 2000 787 the Notification Recipient using the notification delivery method 788 defined in the subscription. However, a Notification is sent ONLY 789 if there is a corresponding subscription. 790 Notification Delivery Method (or Delivery Method for short) - 791 Notifications are delivered using a method, such as email, TCP/IP, 792 etc. 793 Immediate Notification - Notifications that are delivered using a 794 delivery method which is not store-and-forward (e.g. TCP 795 connection, UDP datagram). This can be on the order of several 796 minutes subject to network latency. 797 Store and Forward Notification - A Notification which are not 798 necessarily delivered to Notification Recipients immediately, but 799 is queued for delivery by some intermediate network application, 800 for later retrieval. Email and Instant Messaging services are 801 examples of a store and forward notification delivery method. 802 Human Consumable Notification - Notifications that are intended to be 803 consumed by human End Users only. They are simple text that has 804 been localized for the Notification Recipient as specified in the 805 subscription. Programs are not intended to parse Human Consumable 806 Notification, since it is localized and the content depends on 807 implementation. There is no standardized format. 808 Machine Consumable Notification - Notifications that are intended for 809 consumption by a program only. They use the encoding of an IPP 810 response. The Notification Recipient must localize the contents, 811 if displaying it to a human. 813 4 Object Model for Notification 815 This section describes the notification object model that adds a 816 REQUIRED Subscription object which together with the Job and Printer 817 object provide the complete notification semantics. 819 Expires April 14, 2000 820 The object relationships can be seen pictorially as: 822 Subscription objects (Per-Printer Subscriptions) Printer object 823 +----+ +------------+ 824 | s1 |<---------------------------------------------->| | 825 +----++ | | 826 | s2 |<--------------------------------------------->| p1 | 827 +----++ | | 828 | s3 |<-------------------------------------------->| | 829 +----+ +------------+ 830 Job objects 831 +---------+ 832 | | 833 +----+ | j1 | 834 | s4 |<-------->| | 835 +----+ | | 836 | | s4 is a Per-Job subscription object 837 ++--------++ 838 | | 839 +----+ | j2 | 840 | s5 |<------->| | 841 +----++ | | 842 | s6 |<------>| | s5 and s6 are Per-Job subscription 843 +----+ ++--------++ objects 844 | | 845 | j3 | 846 | | 847 | | <----> indicates association 848 +---------+ 850 Figure 6 - Object Model for Notification 852 s1, s2, and s3 are Per-Printer Subscription objects and can 853 identify Printer and/or Job events. 855 s4, s5, and s6 are Per-Job subscription objects and can identify 856 Printer and/or Job events. 858 4.1 Object relationships 860 The object relationships can be stated as follows: 862 1. The Printer object contains zero or more Per-Printer Subscription 863 objects (p1 contains s1-s3 Per-Printer Subscription objects). 865 2. Each Per-Printer Subscription object (s1, s2, and s3) is contained 866 in one Printer object (p1) and each represents one Per-Printer 867 subscription. 869 3. Each "Per-Printer" Subscription object identifies one or more Job 870 and/or Printer events. Such Job events are for all jobs on the 871 Printer. Such Printer events are for any Printer event, no matter 872 which job is processing and when no jobs are processing. 874 Expires April 14, 2000 876 4. A Job object is associated with zero or more Per-Job subscription 877 objects. Job j1 is associated with Per-Job subscription object s4, 878 Job j2 is associated with Per-Job subscription objects s5 and s6, 879 and Job j3 is not associated with any Per-Job subscription object. 880 Note: the IPP notification interface semantics are defined so that 881 an implementation MAY associate Per-Job Subscription objects with 882 Job objects by having the Job objects actually contain its 883 associated Per-Job Subscription objects or MAY just use some 884 internal bi-directional linking mechanism between the Job and 885 Subscription objects. Either implementation technique is 886 transparent to the client. 888 5. Each "Per-Job" subscription object identifies one or more Job 889 and/or Printer events. Such Job events are only for this job 890 (different than "per-Printer" Subscriptions). Such Printer events 891 are for any Printer event, no matter which job and when no jobs are 892 processing (same as for "per-Printer" Subscriptions). 894 6. A Per-Printer Subscription object cannot be contained in or 895 associated with more than one Printer object. 897 7. A Per-Job Subscription object cannot be contained in or associated 898 with more than one Job object. 900 5 Subscription Object attributes 902 The following notification attributes are defined for the Subscription 903 object. The definitions of the object attributes are specified here so 904 that they can be referred to from the subsequence definitions of the 905 operations that set them. 907 Expires April 14, 2000 908 Table 2 - Subscription object attributes 910 Subscription object attributes: Print READ-ONLY, set by: 911 er 912 suppo 913 rt 915 notify-recipient (uri) REQUI client - Job Creation, 916 RED Create-Job-Subscription, 917 and Create-Printer- 918 Subscription 920 notify-events (1setOf type2 REQUI client - Job Creation, 921 keyword) RED Create-Job-Subscription, 922 and Create-Printer- 923 Subscription 925 notify-text-format (mimeMediaType) REQUI client - Job Creation, 926 RED Create-Job-Subscription, 927 and Create-Printer- 928 Subscription 930 subscriber-user-data REQUI client - Job Creation, 931 (octetString(63)) RED Create-Job-Subscription, 932 and Create-Printer- 933 Subscription 935 notify-charset (charset) OOPTI client - Job Creation, 936 ONAL Create-Job-Subscription, 937 and Create-Printer- 938 Subscription 940 notify-natural-languages (1setOf OOPTI client - Job Creation, 941 naturalLanguage) ONAL Create-Job-Subscription, 942 and Create-Printer- 943 Subscription 945 request-id (integer(0:MAX)) REQUI initialized to 0, 946 RED incremented by Printer - 947 beginning of each event 949 subscription-id (integer(1:MAX)) REQUI Printer - Job Creation, 950 RED Create-Job-Subscription, 951 and Create-Printer- 952 Subscription 954 notify-lease-expiration-time REQUI Printer - Job Creation 955 (integer(0:MAX)) RED (set to 0) and Create- 956 Printer-Subscription, 957 Renew-Subscription 959 printer-uri (uri) REQUI Printer - Job Creation, 960 RED Create-Job-Subscription, 961 and Create-Printer- 962 Subscription 964 Expires April 14, 2000 966 subscriber-user-name (name(MAX)) OPTIO Printer - Job Creation, 967 NAL Create-Job-Subscription, 968 and Create-Printer- 969 Subscription 971 notify-printer-up-time REQUI Printer - returned by 972 (integer(1:MAX)) RED Create-Printer- 973 Subscription, Get- 974 Subscription-Attributes, 975 and Get-Subscriptions 977 notify-persistence-granted REQUI Printer - returned by 978 (boolean) RED Create-Job-Subscription 979 and Create-Printer- 980 Subscription 982 Note: The Subscription object does not contain the "job-id" 983 Subscription Description attribute. The Get-Subscriptions operation has 984 the "job-id" as an input operation attribute, so the "job-id" isn't 985 returned in the response. If an implementation needs such a link 986 between Subscription objects and Job objects, then it keeps such a link 987 as in internal attribute. The intent is that whether Per-Job 988 Subscription objects are actually contained in a Job object or are just 989 associated with them in some way is IMPLEMENTATION DEPENDENT and is 990 transparent to the client. 992 5.1 notify-recipient (uri) 994 This REQUIRED READ-ONLY Subscription object attribute describes both 995 where (the address of the Notification Recipient) and how (the delivery 996 method) notifications are to be delivered to the Notification Recipient 997 when any of the events specified in the "notify-events" attribute occur. 999 There are potentially many different notification delivery methods for 1000 IPP notifications, standardized as well as proprietary. This document 1001 does not define any of these delivery mechanisms; they will each be 1002 described in separate complementary documents. 1004 Each of the notification delivery method documents must provide at least 1005 the following information: 1007 1) The URI scheme used. 1009 2) The supported and default delivery format, and if not one of the 1010 specified types in Section 5.3, description of the notification 1011 content. 1013 3)Any content length restrictions imposed by the delivery protocol. 1015 4) The latency of the delivery protocol used. 1017 5)The reliability of the transport and delivery protocol used. 1019 6) The security aspects of the transport and delivery protocol used, 1020 e.g. how it is handled in firewalls. 1022 Expires April 14, 2000 1024 7) How the delivery protocol is initiated, e.g. does it have to be 1025 initiated by the receiving user (pull), or is it initiated by the 1026 notification service (push). 1028 ISSUE 1 - Once a number of delivery solutions have been developed and 1029 evaluated, we may want to make one or several of them REQUIRED for 1030 implementation to ensure a minimum set of interoperability. Which one 1031 or ones should be REQUIRED? 1033 5.2 notify-events (1setOf type2 keyword) 1035 This REQUIRED READ-ONLY Subscription object attribute identifies the job 1036 and/or printer events that are to be delivered to the Notification 1037 Recipient as Notifications as defined in section 7. If the client did 1038 not supply this attribute when supplying the subscription, the Printer 1039 object populates this attribute with its "notify-events-default" 1040 attribute value (see section 6.2). 1042 There are both job events and printer events. Each job and printer 1043 event is assigned a keyword to use in this attribute and in the 1044 Notification. 1046 The events are defined to be disjoint. 1048 A Printer MUST support the events indicated as "REQUIRED". 1050 The standard job event keyword values are: 1052 'none': REQUIRED - no notifications of any events (an IPP object can 1053 use this value to indicate that it is configured not to support 1054 event notification; a client would not subscribe to this event). 1055 'job-created': REQUIRED - the Printer object has accepted a job 1056 creation operation (Print-Job, Print-URI, or Create-Job) and the 1057 job's "time-at-creation" attribute value is set (see [ipp-mod] 1058 section 4.3.14.1). The Printer puts the job in the 'pending', 1059 'pending-held' or 'processing' states. 1060 Note: This event is separate from the 'job-state-changed' event so 1061 that it can be subscribed to without having to get every job state 1062 change event for a Notification Recipient that is only interested 1063 in when the job is first created. 1064 'job-completed': REQUIRED - the job has reached one of the completed 1065 states, i.e., the value of the job's "job-state" attribute has 1066 changed to: 'completed', 'aborted', or 'canceled'. The Job's 1067 "time-at-completed" and "date-time-at-completed" (if supported) 1068 attributes are set (see [ipp-mod] section 4.3.14). 1069 Note: This event is separate from 'job-state-changed' so that it 1070 can be subscribed to without having to get every job state change 1071 event for a Notification Recipient that is only interested in when 1072 the job is completed. 1073 'job-state-changed': REQUIRED - the job has changed from any state 1074 to any other state and/or a value has been added or removed from 1075 the job's "job-state-reasons" attribute, except when the job is 1076 created or when the job moves to any of the "completed" job states 1077 ('completed', 'aborted', or 'canceled'). 1079 Expires April 14, 2000 1080 This event also indicates that one or more values have been added 1081 to or removed from the Job's "job-state-reasons" attribute, such as 1082 'job-queued' or 'job-printing', whether or not the job's state has 1083 changed. If job state reasons are added when the job is created, 1084 only the 'job-created' event is generated, in order to keep the 1085 events disjoint. If job state reasons are added or removed when 1086 the job is completed, only the 'job-completed' event is generated, 1087 in order to keep the events disjoint. 1089 A client that wants to subscribe to all job state changes, 1090 including creation and completion, includes the 'job-created', 1091 'job-state-changed', and 'job-completed' in the notification 1092 subscription. When a job is finally removed from the Job History 1093 (see [ipp-mod] 4.3.7.1) no event is generated, i.e., neither a 1094 'job-state-changed' event nor a 'job-purged' event is generated. 1095 'job-config-changed': OPTIONAL . when the configuration of a job has 1096 changed, i.e., the value of the "job-message-from-operator" or any 1097 of the non-READ-ONLY Job attributes have changed, such as any of 1098 the job template attributes or the "job-name" attribute. 1099 Typically, such a change is the result of the user or the operator 1100 performing a Set-Job-Attributes operation (see [ipp-set2]) on the 1101 Job object. The client performs a Get-Job-Attributes to find out 1102 the new values of the changed attributes. This event is useful for 1103 GUI clients and drivers to update the job information to the user. 1104 'job-purged': OPTIONAL - when a 'not-completed' job (i.e., not 1105 'completed', 'canceled', or 'aborted') was purged from the printer 1106 using the Purge-Jobs operation. No event, including this event, is 1107 generated when a job is aged out of the Job History or moved out 1108 explicitly with the Purge-Jobs operation. 1109 'job-progress' - a sheet or copy has completed. See separate [ipp- 1110 prog] spec. 1112 The standard Printer event keywords values are: 1114 'none': REQUIRED - no notification of any events (an IPP object can 1115 use this value to indicate that it is configured not to support 1116 event notification; a client would not subscribe to this event). 1117 'printer-restarted': OPTIONAL - when the printer is powered up or 1118 the Restart-Printer operation is performed (see [ipp-set2]). 1119 Note: This event is separate from the 'printer-state-changed' 1120 event so that it can be subscribed to without having to get every 1121 printer state change event, for a Notification Recipient that is 1122 only interested in when the Printer first comes up. 1123 'printer-shutdown': OPTIONAL - when the device is being powered down 1124 or the Shutdown-Printer operation has been performed with either 1125 power-off or standby options (see [ipp-set2]). 1126 Note: This event is separate from 'printer-state-changed' so that 1127 it can be subscribed to without having to get every Printer state 1128 change event, for a Notification Recipient that is only interested 1129 in when the Printer is powered down or shutdown. 1131 Expires April 14, 2000 1133 'printer-state-changed': REQUIRED - the Printer changed state, i.e., 1134 the value of the Printer's "printer-state", "printer-state-reasons" 1135 (whether "printer-state" changed or not), and/or "printer-is- 1136 accepting-jobs" attributes changed, except when the Printer starts 1137 up or is shutdown. If printer state reasons are added when the 1138 Printer is started up, only the 'printer-restarted' event is 1139 generated, in order to keep the events disjoint. If printer state 1140 reasons are added or removed when the printer is powered-down or 1141 shutdown, only the 'printer-shutdown' event is generated, in order 1142 to keep the events disjoint. 1144 A client that wants to subscribe to all printer state changes, 1145 including restart and power-down/shutdown, includes the 'printer- 1146 restarted', 'printer-state-changed', and 'printer-shutdown' in the 1147 notification subscription. 1148 'printer-media-changed': OPTIONAL . when the media loaded on a 1149 printer has been changed, i.e., the "media-ready" attribute has 1150 changed. This event includes both an actual media change and 1151 filling an empty input tray with the same or different media. The 1152 client must check the "media-ready" Printer attribute (see [ipp- 1153 mod] section 4.2.11) separately to find out what new media was 1154 loaded or filled. 1155 'printer-config-changed': OPTIONAL . when the configuration of a 1156 Printer has changed, i.e., the value of the "printer-message-from- 1157 operator" or any non-READ-ONLY Printer attribute has changed, 1158 except for "media-ready" (which has its own event), whether through 1159 the Set-Printer-Attributes operation or by other means and whether 1160 initiated by a human or not. For example, any "xxx-supported", 1161 "xxx-default", "printer-message-from-operator", etc. values have 1162 changed. The client has to perform a Get-Printer-Attributes to 1163 find out the new values of these changed attributes. This event is 1164 useful for GUI clients and drivers to update the available printer 1165 capabilities to the user. 1166 'printer-queue-changed': OPTIONAL - the order of jobs in the 1167 Printer's queue has changed, so that an application that is 1168 monitoring the queue can perform a Get-Jobs operation to determine 1169 the new order. This event does not include when a job enters the 1170 queue (the 'job-created' event covers that) and does not include 1171 when a job leaves the queue (the 'job-completed' event covers 1172 that). 1173 'printer-no-longer-full': OPTIONAL . when the Printer can now accept 1174 a Print-Job, Print-URI, Create-Job, Send-Document, or Send-URI 1175 request. This event is used when there is more than one client 1176 feeding a printer/server (fan-in), and the Printer may still be 1177 printing but has acquired more buffer space to accept jobs. This 1178 event only occurs when the Printer did not have room to accept jobs 1179 previously and rejected a Print-Job, Print-URI, Create-Job, Send- 1180 Document, or Send-URI operation. 1181 'printer-almost-idle': OPTIONAL . when the Printer needs another Job 1182 in order to stay busy. This event is used when a spooler is 1183 feeding more than one printer/server (fan-out), and the spooler 1185 Expires April 14, 2000 1186 holds jobs until a Printer requests them, rather than committing 1187 jobs to IPP Printers before it is necessary. This event MAY be 1188 used by a Printer implementation to request a new job from any 1189 subscribers sufficiently ahead of time so that the device does not 1190 run out of work between jobs. 1192 5.3 notify-text-format (mimeMediaType) 1194 This REQUIRED READ-ONLY Subscription object attribute indicates the type 1195 of Human Consumable format content that is to be sent in the 1196 notifications, instead of the Machine Consumable format defined for the 1197 notification scheme, if any. Most delivery methods are defined to have 1198 a particular Machine Consumable forms of notification content type and 1199 to permit Human Consumable forms as well. An implementation MAY support 1200 one or more Human Consumable formats, i.e., 'text' MIME media types, for 1201 those delivery methods that permit the Human Consumable form. 1203 If the 'text' MIME media type registration permits a charset parameter, 1204 than such a specification MUST be used (instead of the "notify-charset" 1205 attribute) in order to indicate the charset to be used in the 1206 notification content. 1208 If the Subscriber did not supply this attribute when requesting the 1209 subscription, the Printer object populates this Subscription object 1210 attribute with either the 'none' value or one of the values of the 1211 Printer's "notify-text-format-supported" attribute (see section 6.5), 1212 depending on whether or not the delivery method specified in the 1213 "notify-recipient" attribute is defined to have a Machine Consumable 1214 format (usual), respectively. In the latter case, the value selected 1215 depends on the implementation. 1217 Standard mimeMediaType values are: 1219 'none': Indicates that the notification content is not to be any 1220 of the text types, i.e., that the Machine Consumable, not the Human 1221 Consumable, form is to be sent. If the client omits supplying this 1222 attribute, the meaning is the same as if the client supplied the 1223 'none' value. 1225 'text/plain; charset=utf-8': A plain text document in ISO 10646 1226 represented as UTF-8 [RFC2279] as defined in section 7. 1228 'text/html': An HTML document [rfc????]. 1230 5.4 subscriber-user-data (octetString(63)) 1232 This REQUIRED READ-ONLY Subscription object attribute holds opaque 1233 information being sent from the Subscriber to the Notification 1234 Recipient, such as the identify of the Subscriber or a path or index to 1235 some Subscriber information. Or it MAY contain a key that the 1236 Notification Recipient needs in order to process the Notification, such 1238 Expires April 14, 2000 1239 as the ultimate recipient, if the Notification Recipient is a general 1240 application that in turn forwards notifications and the ultimate 1241 recipient isn't included in the value of the "notify-recipient" 1242 attribute. An Instant Messaging Service is an example of such a general 1243 application where the "subscriber-user-data" might be the user's id for 1244 that messaging service and the "notification-recipient" is the URL of 1245 the messaging service. 1247 5.5 notify-charset (charset) 1249 This OPTIONAL READ-ONLY Subscription object attribute specifies the 1250 charset to be used in the Notification content sent to the Notification 1251 Recipient, whether the notification content is Machine Consumable or 1252 Human Consumable. This attribute MUST NOT be used when the "notify- 1253 text-format" attribute value specifies the charset parameter in its MIME 1254 media type value, e.g., 'text/plain; charset=utf-8'. 1256 5.6 notify-natural-language (naturalLanguage) 1258 This OPTIONAL READ-ONLY Subscription object attribute specifies the 1259 natural language for the IPP object to use in the Notification content 1260 that is sent to the Notification Recipient, whether the notification 1261 content is Machine Consumable or Human Consumable. 1263 5.7 request-id 1265 This REQUIRED READ-ONLY Subscription object attribute holds the most 1266 recent request-id sequence number delivered in a Notification content to 1267 the Notification Recipient. A value of 0 indicates that no 1268 Notifications have been sent for this subscription. The first request- 1269 id sent for a subscription MUST be 1. Each Notification Recipient has 1270 its own monotonically increasing series of request-ids, i.e., no gaps, 1271 in order to be able to detect a missing notification. 1273 5.8 subscription-id (integer (1:MAX)) 1275 This REQUIRED READ-ONLY Subscription object attribute uniquely 1276 identifies this Subscription object instance on this Printer object or 1277 this Job object. The Printer object, on acceptance of a Create-Job- 1278 Subscription or Create-Printer-Subscription request, generates an ID 1279 which identifies the new Subscription object on that Printer or Job. 1280 The Printer returns the value of the "subscription-id" attribute as part 1281 of the response to a Create-Job-Subscription or Create-Printer- 1282 Subscription request. The 0 value is not included to allow for 1283 compatibility with "job-id" and with SNMP index values which also cannot 1284 be 0. 1286 It is RECOMMENDED that Per-Printer Subscription objects be persistent. 1287 Then the Subscription objects including the subscription-id remains 1288 unique across power-cycles. Even if an implementation does not make 1289 Per-Printer subscription objects persist, the implementation SHOULD make 1290 every attempt not to re-use subscription ids that subscribers might 1292 Expires April 14, 2000 1293 still think are valid. In other words, the Printer SHOULD at least keep 1294 the next subscription-id to be assigned in non-volatile memory. Note: 1295 it is assumed that Per-Job subscriptions are persistent if Jobs are 1296 persistent, in order to be consistent with the persistency of Job 1297 objects. The [ipp-mod] RECOMMENDS that Job objects be persistent. 1299 5.9 notify-lease-expiration-time (integer(0:MAX)) 1301 This REQUIRED READ-ONLY Subscription object attribute specifies the time 1302 in the future when the subscription lease will expire, i.e., the 1303 "printer-up-time" value at which the lease will expire. When the 1304 Printer object creates a Per-Printer Subscription object, it populates 1305 this attribute with the appropriate value. When the indicated time 1306 arrives, the Printer MUST delete the Per-Printer Subscription object. 1307 Per-Job Subscription objects always return a value of 0 since Per-Job 1308 Subscriptions don't have a lease, but exist for the life-time of the Job 1309 instead. 1311 A client is able to extend a lease of a Per-Printer subscription using 1312 the Renew-Subscription operation (see section 8.3.3). A value of 0 1313 indicates an infinite time, if such a policy is supported as indicated 1314 in the "notify-lease-time-supported" (integer(0:MAX)) Printer 1315 Description attribute (see section 6.8) and the subscriber is authorized 1316 to request an infinite lease. A Per-Job subscription cannot be renewed. 1318 Note: In order to compute the number of seconds remaining in a Per- 1319 Printer Subscription lease, a client can subtract the "notify-printer- 1320 up-time" Subscription object attribute (see section 5.12) from the 1321 "notify-lease-expiration-time" Subscription object attribute. 1323 5.10printer-uri (uri) 1325 This REQUIRED READ-ONLY Subscription object attribute identifies the 1326 Printer object that created this Subscription object. When a Printer 1327 object creates a Subscription object, it populates this attribute with 1328 the Printer object URI that was used in the create request. This 1329 attribute permits a client to identify the Printer object URI that was 1330 used to create this Subscription object, i.e., what security scheme was 1331 used. 1333 5.11subscriber-user-name (name(MAX)) 1335 This OPTIONAL READ-ONLY Subscription object attribute contains the name 1336 of the user that created the Subscription object. The Printer object 1337 sets this attribute to the most authenticated printable name that it can 1338 obtain from the authentication service over which the IPP operation was 1339 received. This attribute is intended to help a human user determine for 1340 which Per-Printer Subscriptions they are the Subscriber. Only if such 1341 is not available, does the Printer object use the value supplied by the 1342 client in the "requesting-user-name" operation attribute of the create 1343 operation (see [IPP-MOD] Sections 4.4.2, 4.4.3, and 8). For Per-Job 1344 subscriptions created as part of the Job creation operation, the value 1346 Expires April 14, 2000 1347 of the "subscriber-user-name" is the same as the "job-originating-user- 1348 name" Job attribute (see [ipp-mod] section 4.3.6). 1350 The value of the "subscriber-user-name" is implementation dependent when 1351 a server accepts a request and forwards it to a downstream IPP Printer 1352 (see Figure 2 and the [ipp-iig]). 1354 Note: The Printer object needs to keep an internal originating user id 1355 of some form, typically as a credential of a principal, with the 1356 Subscription object. Since such an internal attribute is 1357 implementation-dependent and not of interest to clients, it is not 1358 specified as a Subscription Description attribute. This originating 1359 user id is used for authorization checks (if any) on all subsequent 1360 operations. 1362 5.12notify-printer-up-time (integer(1:MAX)) 1364 This REQUIRED READ-ONLY Subscription object attribute indicates the 1365 amount of time (in seconds) that the Printer implementation has been up 1366 and running. This attribute is an alias for the Printer's "printer-up- 1367 time" attribute" (see [ipp-mod] section 4.4.29), in an analogous way 1368 that the Job's "job-printer-up-time" is an alias for "printer-up-time" 1369 (see [ipp-mod] section 4.3.13.4). 1371 Note: A client can request this attribute in a Get-Subscription- 1372 Attributes or Get-Subscriptions request and use the value returned in 1373 combination with the "notify-lease-expiration-time" (see section 5.9) in 1374 order to display wall clock time equivalent to the user. The difference 1375 between this attribute and the 'integer' value of the "notify-lease- 1376 expiration-time" attribute is the number of seconds in the future that 1377 the subscription will expire. A client can compute the wall-clock time 1378 at which the subscription will expire by adding this difference to the 1379 client.s wall-clock time. 1381 5.13notify-persistence-granted (boolean) 1383 This REQUIRED Subscription object attribute whether or not the Per-Job 1384 or Per-Printer Subscription is persistent, i.e., saved across power 1385 cycles in an implementation-define manner. 1387 6 Printer Description Attributes related to Notification 1389 This section defines the Printer Description attributes that are related 1390 to Notification. Table 3 lists the Printer Description attributes and 1391 indicates the Printer support required for conformance: "R" indicates 1392 REQUIRED, "O" indicates OPTIONAL, and "CR" indicates CONDITIONALLY 1393 REQUIRED, i.e., required if Human Consumable notification formats are 1394 supported. 1396 Expires April 14, 2000 1397 Table 3 - Printer Description attributes associated with Notification 1399 Printer object attributes: Print READ-ONLY, set by: 1400 er 1401 suppo 1402 rt 1404 notify-schemes-supported (1setOf R Administrator/implem 1405 uriScheme) entation 1407 notify-events-default (1setOf type2 R Administrator/implem 1408 keyword) entation 1410 notify-events-supported (1setOf type2 R Administrator/implem 1411 keyword) entation 1413 max-events-supported (integer(5:MAX)) R Administrator/implem 1414 entation 1416 notify-text-format-supported (1setOf CR Administrator/implem 1417 mimeMediaType) entation 1419 max-job-subscriptions-supported R Administrator/implem 1420 (integer(1:MAX)) entation 1422 max-printer-subscriptions-supported R Administrator/implem 1423 (integer(0:MAX)) entation 1425 notify-lease-time-supported R Administrator/implem 1426 (rangeOfInteger(0:MAX)) entation 1428 notify-lease-time-default R Administrator/implem 1429 (integer(0:MAX)) entation 1431 persistent-jobs-supported (boolean) O Administrator/implem 1432 entation 1434 persistent-subscriptions-supported O Administrator/implem 1435 (boolean) entation 1437 printer-state-change-time O Administrator/implem 1438 (integer(1:MAX)) entation 1440 printer-state-change-date-time O Administrator/implem 1441 (dateTime) entation 1443 6.1 notify-schemes-supported (1setOf uriScheme) 1445 This REQUIRED Printer attribute describes the notification delivery 1446 methods supported by this Printer object. Standard values are defined in 1447 Section 5.1). 1449 6.2 notify-events-default (1setOf type2 keyword) 1451 This REQUIRED Printer attribute identifies the event values if the 1452 client does not supply the "notify-events" operation attribute in either 1453 a Job creation request, Create-Job-Subscription, or the Create-Printer- 1455 Expires April 14, 2000 1456 Subscription request. Any value in this attribute MUST also appear in 1457 the notify-events-supported attribute, i.e., be a supported event. 1459 6.3 notify-events-supported (1setOf type2 keyword) 1461 This REQUIRED Printer attribute identifies the events supported by this 1462 Printer object for both Per-Job and Per-Printer subscriptions which MUST 1463 be the same. Standard values are defined in Section 5.2. 1465 6.4 max-events-supported (integer(5:MAX)) 1467 This REQUIRED Printer attribute specifies the maximum number of events 1468 that are supported in a single Per-Job or Per-Printer subscription which 1469 must be the same. A Printer MUST support at least 5 events per 1470 subscription, so that clients can depend on at least 5 events in a 1471 single subscription. If the number of events supplied by a client in a 1472 subscription exceed this number, the Printer rejects the request and 1473 returns the 'server-error-too-many-events (see section 14.4). If 1474 notification is not supported, this attribute MUST NOT be supported. 1476 6.5 notify-text-format-supported (1setOf mimeMediaType) 1478 This CONDITIONALLY REQUIRED Printer attributes identifies the MIME media 1479 types supported for Human Consumable notification content for those 1480 notification delivery methods that support Human Consumable format (most 1481 do). If an implementation supports any Human Consumable formats, it 1482 MUST support this attribute and MUST support those Human Consumable 1483 formats for all notification delivery methods that permit a Human 1484 Consumable format. If the implementation does not support any Human 1485 Consumable MIME media types, then the 'none' MUST be the only value of 1486 this attribute or this attribute MUST NOT be supported at all. 1488 A client can determine what formats are supported for a notify-scheme as 1489 follows. The implementation contains a hard coding of the Machine 1490 Consumable format (obtained from the specification). If the hard coding 1491 (obtained from the specification) prohibits a Human Consumable format 1492 for the notify-scheme, or the printer doesn't support the "notify-text- 1493 format-supported" attribute, there are no Human Consumable formats for 1494 any notify-scheme. Otherwise, the attribute "notify-text-formats- 1495 supported" specifies the supported mime types for those delivery schemes 1496 that are supported and permit a Human Consumable format. 1498 Note: The rationale for the "notify-text-format-supported" attribute is 1499 that the Machine Consumable format seems easy to pick for each notify- 1500 scheme and thus easy to document. It is easy for a printer to support 1501 most Machine Consumable formats. It is much harder to support a Human 1502 Consumable format because of localization issues. Once the code is 1503 written to support a particular Human Consumable format, it is easy to 1504 transmit it on any of the supported notify-schemes. Thus, if a vendor 1505 decides to support a notify-scheme, it has already committed to 1506 implement the Machine Consumable format. This may be simple if existing 1508 Expires April 14, 2000 1509 code can be reused, e.g. application/ipp and or more difficult if new 1510 code must be written, e.g. it is SNMP. 1512 6.6 max-job-subscriptions-supported (integer(1:MAX)) 1514 This REQUIRED Printer attribute specifies the maximum number of Per-Job 1515 subscriptions that are supported for a job, i.e., the maximum number of 1516 collection values for the "job-notify" operation attribute, and/or the 1517 maximum number of subsequent Create-Job-Subscription operation requests 1518 in combination for a job. A value of 0 indicates no effective maximum. 1519 A Printer MUST support at least 1 Per-Job subscription. If the number 1520 of Per-Job subscriptions supplied by a client in a Job Creation request 1521 exceeds the value of this attribute or would exceed some implementation- 1522 defined total number of Per-Job Subscriptions for the Printer, the 1523 Printer MUST accept the Job Creation and ignore the excess 1524 subscriptions. If a subsequent Create-Job-Subscription request would 1525 exceed this number, the Printer rejects the request and returns the 1526 'server-error-too-many-subscriptions' (see section 14.3). 1528 6.7 max-printer-subscriptions-supported (integer(0:MAX)) 1530 This REQUIRED Printer attribute specifies the maximum number of Per- 1531 Printer subscriptions that are supported by multiple Create-Printer- 1532 Subscription requests, i.e., the maximum number of un-expired Per- 1533 Printer Subscription objects that the Printer supports at a time. A 1534 value of 0 indicates no effective maximum. A Printer MUST support at 1535 least 1 Per-Printer subscription. If the number of Per-Printer 1536 subscriptions exceeds the value of this attribute or would exceed some 1537 implementation-defined total number of Per-Printer Subscriptions for the 1538 Printer (if any), the Printer rejects the Create-Printer-Subscription 1539 request and returns the 'server-error-too-many-subscriptions' (see 1540 section 14.3). 1542 6.8 notify-lease-time-supported (rangeOfInteger(0:MAX)) 1544 This REQUIRED Printer attribute specifies the range of values in seconds 1545 that are supported for the "notify-lease-time-requested" operation 1546 attribute in a Create-Printer-Subscription or Renew-Subscription request 1547 for a Per-Printer subscription. When the lease time expires for a Per- 1548 Printer Subscription without renewing, the Printer MUST delete the 1549 Subscription object. If the client requests a value outside this range, 1550 the Printer MUST grant a value that is in this range (see section 5.9). 1551 A value of 0 indicates an infinite lease, i.e., one that does not 1552 expire. 1554 6.9 notify-lease-time-default (integer(0:MAX)) 1556 This REQUIRED Printer attribute specifies the value of the lease time 1557 that the Printer object has been configured to assume if the client does 1558 not supply a "notify-lease-time-requested" operation attribute in the 1559 Create-Printer-Subscription or Renew-Subscription requests. 1561 Expires April 14, 2000 1562 6.10persistent-jobs-supported (boolean) 1564 This OPTIONAL Printer attribute indicates whether or not the Printer 1565 supports persistent Jobs, i.e., Jobs object that are preserved across 1566 power cycles. If Jobs are persistent, then Per-Job Subscriptions MUST 1567 also be persistent, since they are part of the Job object. It is 1568 RECOMMENDED that Jobs (and Per-Job Subscriptions) be persistent. 1570 6.11persistent-subscriptions-supported (boolean) 1572 This OPTIONAL Printer attribute indicates whether or not the Printer 1573 supports persistent Per-Printer Subscriptions, i.e., Subscription 1574 objects that are preserved across power cycles. When this value is 1575 'true' the implementation MAY support some that are persistent and some 1576 that are not. If the value is 'false' or the attribute is not 1577 supported, Per-Printer Subscriptions MUST NOT be persistent. It is 1578 RECOMMENDED that Per-Printer subscriptions be persistent. 1580 6.12printer-state-change-time (integer(1:MAX)) 1582 This OPTIONAL Printer attribute records the time, i.e., copy of the 1583 Printer's "printer-up-time" attribute, that the Printer's "printer- 1584 state" attribute was last changed. On power-up, the Printer populates 1585 the "printer-state-change-time" from its "printer-up-time" attribute, so 1586 that it always has a value. 1588 6.13printer-state-change-date-time (dateTime) 1590 This OPTIONAL Printer attribute records the date and time, i.e., copy of 1591 the Printer's "printer-current-time" attribute, that the Printer's 1592 "printer-state" attribute was last changed. On power-up, the Printer 1593 populates the "printer-state-change-date-time" from its "printer- 1594 current-time" attribute, so that it always has a value. 1596 7 Notification Content 1598 This section defines the Notification content that is sent to a 1599 Notification Recipient when an event occurs. The Notification MAY be 1600 sent by the IPP Printer or a third party Notification Service (see 1601 section 2.3). 1603 There are two notification content types: Machine Consumable and Human 1604 Consumable, i.e., 'text' MIME media type. For most notification 1605 delivery methods both content types are defined. Each Notification 1606 Content type will either define one specific Machine Consumable form 1607 (usual) or indicate that no Machine Consumable form is defined. In 1608 addition, each Notification Content type will indicates whether (usual) 1609 or not Human Consumable forms are permitted. But the definition will 1610 not define the Human Consumable forms. For those Human Consumable forms 1611 that a Printer implementation supports as indicated in the Printer's 1612 "notify-text-format-supported" attribute, it MUST support for all 1614 Expires April 14, 2000 1615 Notification Content formats supported that permit Human Consumable 1616 form. 1618 7.1 Notification content MIME media type formats 1620 This section defines the Notification content that the Notification 1621 Source sends asynchronously to each Notification Recipient based on the 1622 subscription information stored with the subscription. The Notification 1623 is either in a Machine Consumable or Human Consumable form. 1625 7.2 Machine Consumable form 1627 If the notification delivery method is defined to have a Machine 1628 Consumable form and that form is defined to be the 'application/ipp' 1629 MIME media type [ipp-mod], then the following rules apply: 1631 The notification content MUST use the 'application/ipp' MIME media type 1632 [ipp-mod] using the Get-Job-Attributes response encoding for job events 1633 and Get-Printer-Attributes response for printer events. The attributes 1634 listed in sections 7.4 and 7.5 are sent in an notification for Job 1635 events. The attributes listed in sections 7.4 and 7.6 are sent in an 1636 notification for Printer events. For any 'text' or 'name' attribute 1637 value in any notification, the charset and natural language rules that 1638 apply to all IPP operations apply to these attributes as well, since 1639 they are represented as operation responses. The Unsupported Attributes 1640 Group in the response is not sent. If the values of any of the 1641 attributes sent in an notification content are not known, the value sent 1642 in the report content is the out-of-band 'unknown' value, rather than 1643 omitting the attribute (see the beginning of [ipp-mod] section 4.1). 1645 Issue 2 - Should we change the Notification Model to allow notification 1646 delivery methods that are request and response (in addition to the 1647 current model which has only one-directional notification delivery using 1648 the 'application/ipp' operation response format? 1650 Issue 3 - If the answer to Issue 2 is yes, should we change the format 1651 of the notification content using 'application/ipp' to always be a (new) 1652 Send-Notification operation request, whether the scheme returns a 1653 response or not? 1655 An implementation MAY extend the contents of the Machine Consumable 1656 notification by adding additional attributes. 1658 7.3 Human Consumable form 1660 If the notification delivery method is defined to permit Human 1661 Consumable forms then the following RECOMMENDATIONS apply: 1663 The text message SHOULD include information about the attributes in 1664 sections 7.4 and 7.5 for job events or in sections 7.4 and 7.6 for 1665 printer events. This information is localized according to the 1666 information about natural language and charset in the subscription. 1668 Expires April 14, 2000 1669 An implementation MAY extend the contents of a Human Consumable 1670 notification by adding additional information. 1672 7.4 Notification content attributes common to Job and Printer events 1674 This section lists the parameters and attributes that are included in 1675 both Job and Printer event Notifications. Some events do not include 1676 all of these attributes as shown in Table 4. Each notification content 1677 contains a single Job or Printer event, whether that event was 1678 subscribed using the Job Submission Subscription mechanism or the Per- 1679 Printer subscription mechanism. If either kind of subscription 1680 subscribed to both Job and Printer events, then they will be sent as 1681 separate Job notification content and Printer notification contents to 1682 the same Notification Recipient. References of the form "mod m.n.o" 1683 refer to [ipp-mod] sections. 1685 Table 4 lists the attributes that are defined for use in Notifications 1686 and indicates the Printer support required for conformance: "R" 1687 indicates REQUIRED and "O" indicates OPTIONAL. 1689 Table 4 - Common Job and Printer Notification content attributes 1691 Reference Events 1693 Attributes 'job- all 1694 progress' others 1696 R R 1697 1. version-number (integer mod 3.1.1 1698 (0:32767)) 1700 R R 1701 2. status-code (integer mod 3.1.1 1702 (0:32767)) 1704 3. request-id (integer (0:MAX)) 5.7 & mod R R 1705 3.1.1 1707 4. attributes-charset (charset) 5.5 & mod R R 1708 3.1.4 1710 5. attributes-natural-language 5.6 & mod R R 1711 (naturalLanguage) 3.1.4 1713 R R 1714 6. printer-uri (uri) 5.10 1716 R 1717 7. printer-name (name(127)) mod 4.4.4 1719 R R** 1720 8. job-id (integer(1:MAX)) mod 4.3.2 1722 R** 1723 9. job-name (name(MAX)) mod 4.3.5 1725 Expires April 14, 2000 1726 Reference Events 1728 Attributes 'job- all 1729 progress' others 1731 10.trigger-event (type2 keyword) 5.2 R R 1733 11.trigger-time R R 1734 (integer(MIN:MAX)) 1736 12.trigger-date-time (dateTime) O 1738 13.subscription-id 5.8 R R 1739 (integer(1:MAX)) 1741 O O 1742 14.subscriber-user-name 5.11 1743 (name(MAX)) 1745 15.subscriber-user-data 5.4 R R 1746 (octetString(63)) 1748 Attribute Notes: 1750 "status-code" - a value of 600 for a Job event and 601 for a Printer 1751 event. 1753 "request-id" - the sequence number for this subscription, starting at 1 1754 for each subscription. 1756 "attributes-charset" - the value comes from the "notify-charset" 1757 attribute in the Subscription object. 1759 "attributes-natural-language" - the value comes from the "notify- 1760 natural-language" attribute in the Subscription object. 1762 "printer-uri" - the value comes from the "job-printer-uri" Job attribute 1763 for Per-Job subscriptions. 1765 **"job-id" and "job-name" - included in Printer event Notifications only 1766 for Per-Job subscriptions. 1768 "trigger-event" - the event that caused this Notification to be 1769 delivered. 1771 "trigger-time" - the "printer-up-time" value when the event occurred. 1773 "trigger-date-time" - the "printer-current-time" value when the event 1774 occurred - OPTIONAL to support. 1776 "job-name" - SNMP delivery method can truncate to less than 255 octets, 1777 since the Notification needs to fit into 484 octets or so on some 1778 transports that SNMP is defined for. 1780 "subscription-id" - the unique identifier for the Subscription object on 1781 this Printer. 1783 Expires April 14, 2000 1785 "subscriber-user-name" - the subscriber user name that created the 1786 Subscription object. SNMP delivery method can truncate to less 1787 than 255 octets, since the Notification needs to fit into 484 1788 octets or so on some transports that SNMP is defined for. 1790 "subscriber-user-data" - opaque user data that may identify either the 1791 Subscriber and/or the ultimate Notification Recipient. 1793 7.5 Additional Notification content attributes for Job events only 1795 Table 5 lists the additional attributes that are included only in Job 1796 event Notifications and indicates the Printer support required for 1797 conformance: "R" indicates REQUIRED, "O" indicates OPTIONAL, and "CR" 1798 indicates CONDITIONALLY REQUIRED, i.e., REQUIRED in a Notification if 1799 the corresponding Job attributes are supported. Some events do not 1800 include all of these attributes as shown in Table 5. 1802 Table 5 - Additional Notification content attributes for Job events only 1804 Events 1806 Attributes Reference 'job- 'job- all 1807 progre complet othe 1808 ss' ed' rs 1810 16.job-state (type1 enum) mod 4.3.7 R R R 1812 17.job-state-reasons (1setOf type2 mod 4.3.8 R R R 1813 keyword) 1815 18.job-k-octets-processed mod O O 1816 (integer(0:MAX)) 4.3.18.1 1818 19.job-impressions-completed mod CR CR 1819 (integer(0:MAX)) 4.3.18.2 1821 20.job-media-sheets-completed mod CR CR 1822 (integer(0:MAX)) 4.3.18.3 1824 21.job-collation-type (type2 enum) [ipp- R 1825 prog] 1827 22.sheet-completed-copy-number [ipp- R 1828 (integer(-2:MAX)) prog] 1830 23.sheet-completed-document- [ipp- R 1831 number(integer(-2:MAX)) prog] 1833 24.impressions-interpreted (integer(- [ipp- R 1834 2:MAX)) prog] 1836 25.impressions-completed-current-copy [ipp- R 1837 (integer(-2:MAX)) prog] 1839 Expires April 14, 2000 1841 7.6 Additional Notification content attributes for Printer events only 1843 Table 6 lists the additional attributes that are included only in 1844 Printer event Notifications and indicates the Printer support required 1845 for conformance: "R" indicates REQUIRED and "O" indicates OPTIONAL. 1847 Table 6 - Additional Notification content attributes for Printer events 1848 only 1850 Events 1852 Attributes Reference all printer 1853 events 1855 26.printer-state (type1 enum) mod R 1856 4.4.11 1858 27.printer-state-reasons (1setOf type2 mod R 1859 keyword) 4.4.12 1861 28.printer-is-accepting-jobs (boolean) mod R 1862 4.4.23 1864 8 Operations for notification 1866 This section defines all of the operations for notification. 1868 8.1 Operations for Per-Job Subscriptions only 1870 This section defines the operation requests and responses that are 1871 related to Per-Job subscriptions and its Subscription object. Section 1872 8.3 defines the REQUIRED operation requests and responses associated 1873 with the REQUIRED Per-Printer subscription and its Subscription object. 1875 8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) and 1876 Validate-Job 1878 The usual method for a client to associate one subscription with a Job 1879 is to specify the subscription when the job is created. For a Per-Job 1880 Subscription, the client supplies the "job-notify (1setOf collection)" 1881 operation attribute with the member attributes listed in Table 7 with 1882 any of the job creation operations (Create-Job, Print-Job, Print-URI), 1883 plus Validate-Job (which doesn't create a job or subscription). If the 1884 client does not supply the "job-notify" attribute in the create 1885 operation, there is no subscription made (either implicitly or 1886 explicitly). 1888 If a Printer does not support this notification specification, then it 1889 MUST ignore the "job-notify" operation attribute and return it in the 1890 response indicated as an attribute that is not supported. See [ipp-mod] 1891 section 3.1.7 for details on returning Unsupported Attributes. 1893 Expires April 14, 2000 1894 Table 7 - Member attributes of the "job-notify" collection operation 1895 attribute 1897 Member attribute of "job-notify" Referen REQUIRED Printer 1898 collection ce in support 1899 request 1901 notify-recipient (uri) 5.1 yes REQUIRED 1903 notify-events (1setOf type2 keyword) 5.2 no REQUIRED 1905 notify-text-format (mimeMediaType) 5.3 no REQUIRED 1907 subscriber-user-data 5.4 no REQUIRED 1908 (octetString(63)) 1910 notify-charset (charset) 5.5 no OPTIONAL 1912 notify-natural-language 5.6 no OPTIONAL 1913 (naturalLanguage) 1915 See the referenced sections for a definition of these operation 1916 attributes, since they are copied to the Subscription object as the 1917 Subscription Description attributes described in section 5. 1919 The following rules apply to Per-Job subscriptions created as part of 1920 the Job Creation operations: 1922 1.Any subscription can contain job events, printer events, or both. 1924 2.The Job Submission Subscription is only valid while the job is "not- 1925 completed". The job is "not-completed" while it is in the 'pending', 1926 'pending-held', 'processing', and 'processing-stopped' states. The 1927 job changes from being "not-completed" to "retained" when it is done 1928 processing and enters any of the 'completed', 'canceled', or 1929 'aborted' states. The job becomes "not-completed" again when it is 1930 restarted using the Restart-Job operation (see [ipp-mod]). 1932 3.Since no job is created for the Validate-Job operation, the only 1933 purpose of supplying the subscription operation attributes in the 1934 Validate-Job operation is to validate that the values are supported; 1935 the Printer object does not establish a notification subscription as 1936 a result of the Validate-Job operation. 1938 4.Since a Job Submission Subscription is included within a job 1939 submission operation, any interest in job events is limited to "this 1940 job" only (the Job object created because of this job creation 1941 operation). There is no mechanism to subscribe to events for all 1942 jobs or specifically some job other than this job in a create 1943 operation. But see the Create-Printer-Subscription operation 1944 (section 8.2.1) for an explicit operation to subscribe for job and/or 1945 printer events independently of any particular job submission, i.e., 1946 Per-Printer subscriptions. 1948 5.Event reporting only occurs when a notification recipient has 1949 specified a subscription to any event(s). 1951 Expires April 14, 2000 1953 6.The notification implementation MAY allow an administrator to 1954 configure a policy on what events may be dropped. 1956 7.If the OPTIONAL "notify-charset" attribute is not supported or the 1957 supplied value is not supported, the IPP Printer MUST return the 1958 attribute in the Unsupported Attributes Group but still accept the 1959 operation, as with all Job create operations. In this case, the 1960 Printer MUST use the natural language supplied in the "attributes- 1961 charset" Job creation operation attribute, if that natural language 1962 value is supported by the Printer, else the Printer object MUST use 1963 the Printer's "charset-configured" value. See the Print-Job 1964 operation in [ipp-mod]. 1966 8.If the OPTIONAL "notify-natural-language" attribute is not supported 1967 or the supplied value is not supported, the IPP Printer MUST return 1968 the attribute in the Unsupported Attributes Group but still accept 1969 the operation, as with all Job create operations. In this case, the 1970 Printer MUST use the natural language supplied in the "attributes- 1971 natural-language" Job creation operation attribute, if that natural 1972 language value is supported by the Printer, else the Printer object 1973 MUST use the Printer's "natural-language-configured" value. See the 1974 Print-Job operation in [ipp-mod]. 1976 9.If a collection contains other unrecognized, unsupported member 1977 attributes and/or conflicting values, the attribute returned in the 1978 Unsupported Group is a collection containing the unrecognized, 1979 unsupported member attributes, and/or conflicting values. The Printer 1980 MUST return the unrecognized member attributes with the out-of-band 1981 value of 'unsupported'. The Printer MUST return the unsupported 1982 member attributes and conflicting values with their unsupported 1983 values. See [ipp-coll]. 1985 10. If the number of events supplied in the "notify-events" attribute 1986 exceeds the Printer's "max-events-supported" attribute, the Printer 1987 MUST accept the request with the status code 'successful-ok-ignored- 1988 or-substituted-attributes' and return the "job-notify" collection in 1989 the Unsupported Attributes Group with only the "job-events" member 1990 attribute containing the events that exceed the maximum. 1992 11. If the Per-Job subscriptions would exceed the limit of Per-Job 1993 subscriptions supported per job as specified by the Printer's "max- 1994 job-subscriptions-supported" attribute or would exceed some 1995 implementation-defined limit on the total number of Per-Job 1996 subscriptions for the Printer (if any), the Printer MUST accept the 1997 request with the status code 'successful-ok-ignored-subscriptions', 1998 MUST return the "job-notify" attribute in the Unsupported Attributes 1999 Group with only the collection value(s) that represent the excess 2000 subscriptions that are being ignored, and MUST perform the Job 2001 Creation operation (see section 8.1.1), since the job can still be 2002 printed. 2004 If the job is accepted and one or more subscriptions are ignored, the 2005 status code returned is 'successful-ok-ignored-subscriptions. This 2006 status code is returned even if other job attributes are unsupported 2008 Expires April 14, 2000 2009 or in conflict. That is, if an IPP Printer finds a warning that 2010 would allow it to return 'successful-ok-ignored-subscriptions' and 2011 either 'successful-ok-ignored-or-substituted-attributes' and/or 2012 'successful-ok-conflicting-attributes', it must return 'successful- 2013 ok-ignored-subscriptions'. In other words, the precedence for 2014 returning success codes is: 'successful-ok-ignored-subscriptions', 2015 'successful-ok-conflicting-attributes', and 'successful-ok-ignored- 2016 or-substituted-attributes'. 2018 8.1.2Create-Job-Subscription operation 2020 The OPTIONNAL Create-Job-Subscription operation creates a Per-Job 2021 Subscription object . The client can specify one or more job and/or 2022 printer events to be delivered as notifications to one Notification 2023 Recipient. For the Per-Job subscription objects, the Job events are for 2024 this job only. The printer events are any events generated by that 2025 Printer for any job or when no job is involved at all (same as for Per- 2026 Job Subscriptions). 2028 The Printer returns a subscription id and the length of time for which 2029 it has granted a lease for the subscription. 2031 A client can unsubscribe using the Cancel-Subscription operation 2032 (section 8.3.4) and the subscription id. 2034 Two Create-Job-Subscription operations with the same events and same 2035 Notification Recipient MUST be kept as distinct subscriptions and be 2036 assigned distinct subscription ids. A Printer MUST allow such duplicate 2037 subscriptions such that Cancel-Subscription doesn't unsubscribe both 2038 subscriptions and MUST send the Notifications twice to the Notification 2039 Recipient, since the "request-id" is supposed to count monotonically for 2040 each subscription. 2042 If the Printer has a bounded set of concurrent Per-Job subscriptions and 2043 the request would exceed that bound, the Printer rejects the operation 2044 and returns the 'server-error-too-many-subscriptions' status code. The 2045 client SHOULD try again later. 2047 Access Rights: To create Per-Job subscription objects, the 2048 authenticated user (see [IPP-MOD] section 8.3) performing this operation 2049 MUST either be the job owner or have operator or administrator access 2050 rights for the Printer object (see [IPP-MOD] sections 1 and 8.5). 2051 Otherwise the IPP object MUST reject the operation and return: client- 2052 error-forbidden, client-error-not-authenticated, and client-error-not- 2053 authorized as appropriate. 2055 Expires April 14, 2000 2056 Request: 2057 Group 1: Operation Attributes Printer 2058 support 2059 "attributes-charset" (charset) REQUIRED 2060 "attributes-natural-language" REQUIRED 2061 (naturalLanguage) 2062 "printer-uri" (uri) REQUIRED 2063 "job-id" (integer(1:MAX)) REQUIRED 2064 ["requesting-user-name" (name(MAX))] RECOMMENDED 2065 "notify-recipient" (uri) REQUIRED 2066 ["notify-events" (1setOf type2 keyword)] REQUIRED 2067 ["notify-text-format" (mimeMediaType)] REQUIRED 2068 ["subscriber-user-data" (octetString(63))] REQUIRED 2069 ["notify-charset" (charset)] OPTIONAL 2070 ["notify-natural-language" OPTIONAL 2071 (naturalLanguage)] 2072 ["notify-persistence-requested" (boolean)] OPTIONAL 2073 Response: 2074 Group 1: Operation Attributes Printer 2075 Support 2076 "status-code" (type2 enum) REQUIRED 2077 "attributes-charset" (charset) REQUIRED 2078 "attributes-natural-language" REQUIRED 2079 (naturalLanguage) 2080 ["status-message" (text(255))] OPTIONAL 2081 ["detailed-status-message" (text(MAX))] OPTIONAL 2082 "subscription-id" (integer(1:MAX)) REQUIRED 2083 "notify-persistence-granted" (boolean) REQUIRED 2084 Group 2: Unsupported Attributes REQUIRED 2086 Attribute Notes: 2088 "job-id" (integer(1:MAX)) - the client MUST supply this attribute in 2089 order to create a Per-Job subscription for the Job identified by 2090 the "job-id" value. 2092 Note: Unlike all other operations on the Job object, the "job-uri" 2093 operation attribute is not defined for use with this operation. 2095 ISSUE 4 - Ok that "job-uri" isn't defined for use with the Create- 2096 Job-Subscription operation? 2098 "notify-recipient" (uri) - the client MUST supply this attribute in 2099 order to have a subscription. 2101 "notify-event" (1setOf type2 keyword) - if the client does not supply 2102 this attribute, the Printer populates the "notify-events" 2103 Subscription Description attribute from its "notify-events-default" 2104 Printer Description attribute. 2106 "notify-text-format" (mimeMediaType) - if the client supplies this 2107 attribute, the value indicates which Human Consumable text format 2109 Expires April 14, 2000 2110 is requested for use in the Notification using the delivery method 2111 that the client supplies in the "notify-recipient" attribute. If 2112 the client does not supply this attribute, the Machine-Consumable 2113 form of the delivery method that the client supplies in the 2114 "notify-recipient" attribute is used. 2116 "notify-persistence-requested" (boolean) - whether or not the Per-Job 2117 Subscription is to be persistent, i.e., saved across power cycles. 2118 Note: Persistent trap registrations is a client option in SNMPv3 2119 [RFC2573]. 2121 "notify-persistence-granted" (boolean) - whether or not this 2122 Subscription object instance is persistent. This attribute MUST be 2123 returned whether "notify-persistence-requested" is supported or 2124 not, so that the client knows which. 2126 8.2 Operations for Per-Printer Subscriptions only 2128 This section defines the operation requests and responses associated 2129 with the Per-Printer subscription and its Subscription object. 2131 8.2.1 Create-Printer-Subscription operation 2133 The REQUIRED Create-Printer-Subscription operation creates a Per-Printer 2134 Subscription object . The client can specify one or more job and/or 2135 printer events to be delivered as notifications to one Notification 2136 Recipient. For the Per-Printer subscription objects, the job events are 2137 for any job submitted to the Printer. The printer events are any events 2138 generated by that Printer for any job or when no job is involved at all. 2140 The Printer returns a subscription id and the time at which the 2141 subscription lease expires (which may be earlier or later than the 2142 client requested). 2144 The client must renew the Per-Printer subscription using the Renew- 2145 Subscription operation (see section 8.3.3) before the lease runs out in 2146 order to maintain the subscription. A client can unsubscribe using the 2147 Cancel-Subscription operation (section 8.3.4) and the subscription id. 2149 Two Create-Printer-Subscription operations with the same events and same 2150 Notification Recipient MUST be kept as distinct subscriptions and be 2151 assigned distinct subscription ids. A Printer MUST allow such duplicate 2152 subscriptions such that Cancel-Subscription doesn't unsubscribe both 2153 subscriptions and MUST send the Notifications twice to the Notification 2154 Recipient, since the "request-id" is supposed to count monotonically for 2155 each subscription. 2157 If the Printer has a bounded set of concurrent Per-Printer subscriptions 2158 and the request would exceed that bound, the Printer rejects the 2159 operation and returns the 'server-error-too-many-subscriptions' status 2160 code. The client SHOULD try again later. 2162 Expires April 14, 2000 2163 Access Rights: To create Per-Printer subscription objects, the 2164 authenticated user performing this operation MUST have Per-Printer 2165 subscription rights for this Printer. Otherwise the IPP object MUST 2166 reject the operation and return: client-error-forbidden, client-error- 2167 not-authenticated, and client-error-not-authorized as appropriate. 2169 Request: 2170 Group 1: Operation Attributes Printer 2171 support 2172 "attributes-charset" (charset) REQUIRED 2173 "attributes-natural-language" REQUIRED 2174 (naturalLanguage) 2175 "printer-uri" (uri) REQUIRED 2177 ["requesting-user-name" (name(MAX))] RECOMMENDED 2178 "notify-recipient" (uri) REQUIRED 2179 ["notify-events" (1setOf type2 keyword)] REQUIRED 2180 ["notify-text-format" (mimeMediaType)] REQUIRED 2181 ["subscriber-user-data" (octetString(63))] REQUIRED 2182 ["notify-charset" (charset)] OPTIONAL 2183 ["notify-natural-language" OPTIONAL 2184 (naturalLanguage)] 2185 ["notify-lease-time-requested" REQUIRED 2186 (integer(0:MAX))] 2187 ["notify-persistence-requested" (boolean)] OPTIONAL 2188 Response: 2189 Group 1: Operation Attributes Printer 2190 Support 2191 "status-code" (type2 enum) REQUIRED 2192 "attributes-charset" (charset) REQUIRED 2193 "attributes-natural-language" REQUIRED 2194 (naturalLanguage) 2195 ["status-message" (text(255))] OPTIONAL 2196 ["detailed-status-message" (text(MAX))] OPTIONAL 2197 "subscription-id" (integer(1:MAX)) REQUIRED 2198 "notify-lease-expiration-time" REQUIRED 2199 (integer(0:MAX)) 2200 "notify-printer-up-time" (integer(1:MAX)) REQUIRED 2201 "notify-persistence-granted" (boolean) REQUIRED 2202 Group 2: Unsupported Attributes REQUIRED 2204 ISSUE 5 - Ok that we aren't passing the operation attributes that are 2205 copied to the Subscription object in the new Subscription object 2206 attributes group? Some of the "notify-xxx" attributes aren't 2207 Subscription object attributes. 2209 Attribute Notes: 2211 "notify-recipient" (uri) - the client MUST supply this attribute in 2212 order to have a subscription. 2214 Expires April 14, 2000 2216 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 2217 requested for the subscription lease. A value of 0 indicates a 2218 request that the Per-Printer Subscription lease never expire. 2219 Supplying a 0 value MAY require authentication in order to be used, 2220 if 0 is supported at all. 2221 If the client does not supply this attribute, the Printer uses its 2222 "notify-lease-time-default" Printer Description attribute value 2223 (see section 6.9). 2225 "notify-event" (1setOf type2 keyword) - if the client does not supply 2226 this attribute, the Printer populates the "notify-events" 2227 Subscription Description attribute from its "notify-events-default" 2228 Printer Description attribute. 2230 "notify-text-format" (mimeMediaType) - if the client supplies this 2231 attribute, the value indicates which Human Consumable text format 2232 is requested for use in the Notification using the delivery method 2233 that the client supplies in the "notify-recipient" attribute. If 2234 the client does not supply this attribute, the Machine-Consumable 2235 form of the delivery method that the client supplies in the 2236 "notify-recipient" attribute is used. 2238 "notify-persistence-requested" (boolean) - whether or not the Per- 2239 Printer Subscription is to be persistent, i.e., saved across power 2240 cycles. Note: Persistent trap registrations is a client option in 2241 SNMPv3 [RFC2573]. 2243 "notify-lease-expiration-time" (integer(0:MAX)) - The Printer object 2244 MUST return this attribute which is the time in the future at which 2245 the subscription lease will expire, i.e., the "printer-up-time" 2246 value (in time ticks - see [ipp-mod] section 4.4.29) at which the 2247 Printer will delete the Subscription. A value of 0 indicates that 2248 the lease subscription will never expire. 2250 "notify-printer-up-time" (integer(1:MAX)) - The Printer object MUST 2251 return this attribute which is an alias for the Printer's "printer- 2252 up-time" Printer Description attribute. The client subtracts this 2253 value from the "notify-lease-expiration-time" value returned in 2254 order to determine the number of second in the future that the 2255 subscription will expire. This computed value may be less than the 2256 requester requested in the "notify-lease-time-requested" if it was 2257 greater than the MAX supported or more than the requester requested 2258 if it was less than the MIN supported, as indicated in the 2259 Printer's "notify-lease-time-supported" (rangeOfInteger(0:MAX)) 2260 attribute (see section 6.8). 2262 "notify-persistence-granted" - whether or not this Subscription object 2263 instance is persistent. This attribute MUST be returned whether 2264 "notify-persistence-requested" is supported or not, so that the 2265 client knows which. 2267 Expires April 14, 2000 2269 8.3 Common Operations for Per-Job and Per-Printer Subscriptions 2271 This section defines the operations that are common to both Per-Job and 2272 Per-Printer subscriptions. 2274 8.3.1 Get-Subscription-Attributes operation 2276 The REQUIRED Get-Subscription-Attributes returns the requested 2277 attributes of the identified Subscription object. See section 5. 2279 Request: 2280 Group 1: Operation Attributes Printer 2281 support 2282 "attributes-charset" (charset) REQUIRED 2283 "attributes-natural-language" REQUIRED 2284 (naturalLanguage) 2285 "printer-uri" (uri) REQUIRED 2286 ["requesting-user-name" (name(MAX))] RECOMMENDED 2287 "subscription-id" (integer(1:MAX)) REQUIRED 2288 ["requested-attributes" (1setOf type2 REQUIRED 2289 keyword)] 2290 Response: 2291 Group 1: Operation Attributes Printer 2292 support 2293 "status-code" (type2 enum) REQUIRED 2294 "attributes-charset" (charset) REQUIRED 2295 "attributes-natural-language" REQUIRED 2296 (naturalLanguage) 2297 ["status-message" (text(255))] OPTIONAL 2298 ["detailed-status-message (text(MAX))] OPTIONAL 2299 Group 2: Unsupported Attributes REQUIRED 2300 Group 3: 2303 This operation is similar to the Get-Printer-Attributes operation. If 2304 the client omits the "requested-attributes" operation attribute, the 2305 Printer MUST respond as if the client had supplied the 'all' value, 2306 i.e., return all of the attributes supported for the Subscription 2307 object. 2309 Expires April 14, 2000 2310 8.3.2 Get-Subscriptions operation 2312 The REQUIRED Get-Subscriptions operation returns the requested 2313 attributes of the Subscription objects (see section 5). 2315 Request: 2316 Group 1: Operation Attributes Printer 2317 support 2318 "attributes-charset" (charset) REQUIRED 2319 "attributes-natural-language" REQUIRED 2320 (naturalLanguage) 2321 "printer-uri" (uri) REQUIRED 2322 ["job-id" (integer(1:MAX))] REQUIRED 2323 ["requesting-user-name" (name(MAX))] RECOMMENDED 2324 ["limit" (integer(1:MAX))] REQUIRED 2325 ["requested-attributes" (1setOf type2 REQUIRED 2326 keyword)] 2327 ["my-subscriptions" (boolean)] REQUIRED 2328 Response: 2329 Group 1: Operation Attributes Printer 2330 support 2331 "status-code" (type2 enum) REQUIRED 2332 "attributes-charset" (charset) REQUIRED 2333 "attributes-natural-language" REQUIRED 2334 (naturalLanguage) 2335 ["status-message" (text)] OPTIONAL 2336 ["detailed-status-message" (text(MAX))] OPTIONAL 2337 Group 2: Unsupported Attributes REQUIRED 2338 Group 3 to N: 2342 Attribute Notes: 2344 This operation is similar to the Get-Jobs operation (see [ipp-mod]). If 2345 the client wants any attributes returned, including the "subscription- 2346 id", it must include the attribute keyword name in the "requested- 2347 attributes" operation attribute. If the "requested-attributes. 2348 operation attribute is omitted, the Printer MUST respond as if the 2349 client supplied the value: 'subscription-id'. 2351 "job-id" (integer(1:MAX)) - If the client supplies this attribute, all 2352 of the Per-Job Subscription objects for the identified job are 2353 candidates for return. It this attribute is omitted, all of the 2354 Per-Printer Subscription objects are candidates for return. 2356 "my-subscriptions" (boolean) - If the client supplies the "my- 2357 subscriptions" with a 'false' value or omits it, the Printer 2358 returns all subscriptions, subject to the security policy in force. 2360 Groups 3 to N: Subscription Object Attributes: The Printer object 2361 responds with one set of Subscription Object Attributes for each 2363 Expires April 14, 2000 2364 returned Subscription object. The Printer object ignores (does not 2365 respond with) any requested attribute or value which is not 2366 supported or which is restricted by the security policy in force, 2367 including whether the requesting user is the user that created the 2368 Subscription object (subscribing user) or not (see [ipp-mod] 2369 section 8). 2371 8.3.3 Renew-Subscription operation 2373 The REQUIRED Renew-Subscription operation permits a client to request 2374 the IPP Printer to extend the lease on a Subscription object instance. 2375 There is no way to renew a Per-Job subscription, since they are 2376 automatically canceled after the job completes and no longer has any 2377 documents, i.e., the job is no longer retained (see [ipp-mod] section 2378 4.3.7.2). If the requested subscription object is a Per-Job 2379 subscription, the Printer MUST grant an infinite lease by returning a 0 2380 value for the "notify-lease-expiration-time". 2382 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2383 performing this operation MUST either be the owner of the Subscription 2384 object or have operator or administrator access rights for the Printer 2385 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2386 MUST reject the operation and return: client-error-forbidden, client- 2387 error-not-authenticated, and client-error-not-authorized as appropriate. 2389 Request: 2390 Group 1: Operation Attributes Printer 2391 support 2392 "attributes-charset" (charset) REQUIRED 2393 "attributes-natural-language" REQUIRED 2394 (naturalLanguage) 2395 "printer-uri" (uri) REQUIRED 2396 ["requesting-user-name" (name(MAX))] RECOMMENDED 2397 "subscription-id" (integer(1:MAX)) REQUIRED 2398 ["notify-lease-time-requested" REQUIRED 2399 (integer(0:MAX))] 2400 Response: 2401 Group 1: Operation Attributes Printer 2402 support 2403 "status-code" (type2 enum) REQUIRED 2404 "attributes-charset" (charset) REQUIRED 2405 "attributes-natural-language" REQUIRED 2406 (naturalLanguage) 2407 ["status-message" (text(255))] OPTIONAL 2408 ["detailed-status-message" (text(MAX))] OPTIONAL 2409 "notify-lease-expiration-time" REQUIRED 2410 (integer(0:MAX)) 2411 "notify-printer-up-time" (integer(1:MAX)) REQUIRED 2412 Group 2: Unsupported Attributes REQUIRED 2414 Attribute Notes: 2416 Expires April 14, 2000 2417 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 2418 requested for the Per-Printer subscription lease. Same as Create- 2419 Printer-Subscriptions (see section 8.2.1). 2421 "notify-lease-expiration-time" - the time in the future when the 2422 subscription will expire. Same as for the Create-Printer- 2423 Subscription operation (see section 8.2.1). 2425 "notify-printer-up-time" - the Printer object MUST return this attribute 2426 which is an alias for the Printer's "printer-up-time" Printer 2427 Description attribute. The client subtracts this value from the 2428 "notify-lease-expiration-time" value returned in order to determine 2429 the number of second in the future that the subscription will 2430 expire (see further explanation in section 8.2.1). 2432 Note: There is no way to change any of the Subscription object 2433 attributes, except the "notify-lease-expiration-time" attribute (using 2434 the Renew-Subscription operation). In order to change other attributes, 2435 a client can create a new Subscription object and then use the Cancel- 2436 Subscription operation to cancel the old one (or do this in the other 2437 order, in case there is a limit on the number of Subscription object 2438 instances, as long as a short window with no Notifications is ok). 2440 Note: There is no need to renew a Per-Job Subscription, since it is 2441 effectively the time that the Job is active (see section 8.1). 2443 8.3.4 Cancel- Subscription operation 2445 The REQUIRED Cancel- Subscription operation allows a client to remove a 2446 Subscription object. No more Notifications are delivered for that 2447 Subscription. Once performed, there is no way to use that Subscription 2448 in the future. Subscription-ids should not be reused immediately, so 2449 that a stale reference situation is not created. Same as for Cancel-Job 2450 and job-ids. 2452 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2453 performing this operation MUST either be the owner of the Subscription 2454 object or have operator or administrator access rights for the Printer 2455 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2456 MUST reject the operation and return: client-error-forbidden, client- 2457 error-not-authenticated, and client-error-not-authorized as appropriate. 2459 Request: 2460 Group 1: Operation Attributes Printer 2461 support 2462 "attributes-charset" (charset) REQUIRED 2463 "attributes-natural-language" REQUIRED 2464 (naturalLanguage) 2465 "printer-uri" (uri) REQUIRED 2466 ["requesting-user-name" (name(MAX))] RECOMMENDED 2467 "subscription-id" (integer(1:MAX)) REQUIRED 2468 Response: 2470 Expires April 14, 2000 2471 Group 1: Operation Attributes Printer 2472 support 2473 "status-code" (type2 enum) REQUIRED 2474 "attributes-charset" (charset) REQUIRED 2475 "attributes-natural-language" REQUIRED 2476 (naturalLanguage) 2477 ["status-message" (text(255))] OPTIONAL 2478 ["detailed-status-message" (text(MAX))] OPTIONAL 2479 Group 2: Unsupported Attributes REQUIRED 2481 9 Comparison of Per-Job versus Per-Printer Subscriptions 2483 Per-Job and Per-Printer subscriptions are quite similar. Either type of 2484 subscription can subscribe to Job events, Printer events, or both. Both 2485 types of subscriptions can be queried using the Get-Subscriptions and 2486 Get-Subscription-Attributes operations and canceled using the Cancel- 2487 Subscription operation. Both types of subscriptions create Subscription 2488 objects which have the same attributes defined. However, there are some 2489 semantic differences between Per-Job subscriptions and Per-Printer 2490 subscriptions. A Per-Job Submission Subscription is established by the 2491 client when submitting a job and after creating the job using the 2492 Create-Job-Subscription operation by specifying the "job-id" of the job. 2493 A Per-Printer Subscription is established between a client and a 2494 Printer using the Create-Printer-Subscription operation. Some specific 2495 differences are: 2497 1.A client usually creates a Per-Job subscription as part of the Job 2498 Creation operations (Create-Job, Print-Job, and Print-URI), rather 2499 than using the OPTIONAL Create-Job-Subscription operation, especially 2500 since some Printer implementations MAY not support the Create-Job- 2501 Subscription operation, since it is OPTIONAL. 2503 2.For Per-Job subscriptions, the subscription is only valid while the 2504 job is "not-complete" (see sections 7.4 and 7.5) while for the Per- 2505 Printer subscriptions, the subscription is valid until the time (in 2506 seconds) that the Printer returned in the "notify-lease-expiration- 2507 time" operation attribute expires. 2509 3.Job Events in a Per-Job subscription apply only to "one job" (the Job 2510 created by the job creation operation or references by the Create- 2511 Job-Subscription operation) while Job Events in a Per-Printer 2512 subscription apply to ALL jobs contained in the IPP Printer object. 2514 10 Conformance Requirements 2516 This section further enhances the Conformance Requirements detailed in 2517 [IPP-MOD] section 5. Extensions made to the events herein must be made 2518 such that new events or event attributes are backward compatible to 2520 Expires April 14, 2000 2521 clients who implemented early versions of this notification 2522 specification. 2524 It is OPTIONAL to implement this Event Notification specification. If 2525 implemented, IPP objects MUST support all of the REQUIRED object 2526 attributes as defined in this document in the indicated sections. 2528 If IPP Notification is implemented, the operations described in this 2529 document must be supported as described in Table 8: 2531 Table 8 - Conformance Requirements for Operations 2533 Attribute Conformance 2534 requirements 2535 "job-notify" in Job Creation operations REQUIRED 2536 (section 8.1.1) 2537 Create-Printer-Subscription (section 8.2.1) REQUIRED 2538 Create-Job-Subscription (section 8.1.2) OPTIONAL 2539 Get-Subscription-Attributes (section 8.3.1) REQUIRED 2540 Get-Subscriptions (section 8.3.2) REQUIRED 2541 Renew-Subscription (section 8.3.3) REQUIRED 2542 Cancel-Subscription (section 8.3.4) REQUIRED 2544 11 IANA Considerations 2546 IANA will be called on to register URL schemes for notification delivery 2547 for use in the "notification-recipient" attribute, using the same 2548 procedures outlined in [ipp-mod]. 2550 12 Internationalization Considerations 2552 This IPP notification specification continues the internationalization 2553 of [ipp-mod] for attributes containing text strings and names. A 2554 subscribing client can specify a different natural language and charset 2555 for each Notification content delivered to a Notification Recipient. 2557 The Human Consumable Notification content is a 'text/plain; charset=utf- 2558 8' by default where the Notification Sender has localized the text 2559 message as requested by the subscriber for the intended Notification 2560 Recipient. 2562 13 Security Considerations 2564 By far the biggest security concern is the abuse of notification: 2565 sending unwanted notifications to third parties (i.e., spam). The 2566 problem is made worse by notification addresses that may be 2567 redistributed to multiple parties (e.g. mailing lists). There exist 2568 scenarios where third party notification is required (see Scenario #2 2569 and #3 in [ipp-not-req]). The fully secure solution would require 2570 active agreement of all recipients before sending out anything. 2571 However, requirement #9 in [ipp-req] (.There is no requirement for IPP 2573 Expires April 14, 2000 2574 Printer receiving the print request to validate the identity of an event 2575 recipient.) argues against this. Certain systems may decide to disallow 2576 third party notifications (a traditional fax model). 2578 Clients submitting notification requests to the IPP Printer has the same 2579 security issues as submitting an IPP/1.1 print job request. The same 2580 mechanisms used by IPP/1.1 can therefore be used by the client 2581 notification submission. Operations that require authentication can use 2582 the HTTP authentication. Operations that require privacy can use the 2583 HTTP/TLS privacy. 2585 The notification access control model should be similar to the IPP 2586 access control model for Jobs. Creating a Per-Printer Notification 2587 Subscription object is associated with a user. Only the creator or an 2588 operator can cancel the subscription. The system may limit the listing 2589 of items to only those items owned by the user. Some subscriptions 2590 (e.g. those that have a lifetime longer than a job) can be done only by 2591 privileged users (users having operator and/or administrator access 2592 rights), if that is the authorization policy. 2594 The standard security concerns (delivery to the right user, privacy of 2595 content, tamper proof content) apply to the notification delivery. IPP 2596 should use the security mechanism of the delivery method used. Some 2597 delivery mechanisms are more secure than others. Therefore, sensitive 2598 notifications should use the delivery method that has the strongest 2599 security. 2601 14 Status Codes 2603 The following status codes are defined as extensions for notification: 2605 14.1'successful-ok-ignored-subscriptions' (0x0003) 2607 The number of subscriptions supplied in a Job Creation operation 2608 (Create-Job, Print-Job, Print-URI) exceeds either the limit of Per-Job 2609 subscriptions supported per job as specified by the Printer's "max-job- 2610 subscriptions-supported" attribute or some implementation-defined limit 2611 on the total number of Per-Job subscriptions for the Printer (if any). 2612 The Printer MUST accept the request with this status code, MUST return 2613 the "job-notify" attribute in the Unsupported Attributes Group with only 2614 the collection value(s) that represent the excess subscriptions that are 2615 being ignored, and MUST perform the Job Creation operation (see section 2616 8.1.1), since the job can still be printed. 2618 This status code is returned even if other job attributes are 2619 unsupported or in conflict. That is, if an IPP Printer finds a warning 2620 that would allow it to return 'successful-ok-ignored-subscriptions' and 2621 either 'successful-ok-ignored-or-substituted-attributes' and/or 2622 'successful-ok-conflicting-attributes', it must return 'successful-ok- 2623 ignored-subscriptions'. In other words, the precedence for returning 2624 success codes is: 'successful-ok-ignored-subscriptions', 'successful-ok- 2626 Expires April 14, 2000 2627 conflicting-attributes', and 'successful-ok-ignored-or-substituted- 2628 attributes'. 2630 14.2client-error-uri-notification-scheme-not-supported (0x04??) 2632 The scheme of the client-supplied URI in a "notify-recipient" operation 2633 attribute in a Create-Printer-Subscription or Create-Printer- 2634 Subscription operation is not supported. See [ipp-mod] section 3.1.7. 2636 There is no corresponding Per-Job subscription error for a Job Creation 2637 operation, since the Printer object MUST ignore any errors in the "job- 2638 notify" operation attribute, MUST return the "notify-recipient" 2639 attribute in the Unsupported Attributes Group, and perform the Job 2640 Creation operation (see section 8.1.1), since the job can still be 2641 printed. 2643 14.3server-error-too-many-subscriptions (0x04??) 2645 The bounded set of concurrent Per-Printer subscriptions supported by the 2646 Printer object would be exceeded if this request were accepted. 2648 Note: There is no corresponding Per-Job subscription error, since the 2649 Printer object MUST ignore any errors in the "job-notify" operation 2650 attribute and perform the Job Creation operation (see section 8.1.1), 2651 since the job can still be printed. 2653 14.4server-error-too-many-events (0x04??) 2655 The client supplied more events in the "notify-events" operation 2656 attribute in a Create-Job-Subscription or Create-Printer-Subscription 2657 operation than the Printer supports, as indicated in its "max-events- 2658 supported" attribute (see section 6.4). 2660 There is no corresponding Per-Job subscription error for a Job Creation 2661 operation, since the Printer object MUST ignore any errors in the "job- 2662 notify" operation attribute, MUST return the "notify-events" attribute 2663 in the Unsupported Attributes Group with only the excess events that are 2664 being ignored, and perform the Job Creation operation (see section 2665 8.1.1), since the job can still be printed. 2667 15 Additions to the IPP Encoding and Transport Document 2669 The Subscription object tag needs to be assigned in section 3.7.1 2670 Delimiter Tags: 2672 3.7.1 Delimiter Tags 2674 The following table specifies the values for the delimiter tags: 2676 Tag Value (Hex) Delimiter 2678 0x00 reserved 2680 Expires April 14, 2000 2681 Tag Value (Hex) Delimiter 2683 0x01 operation-attributes-tag 2684 0x02 job-attributes-tag 2685 0x03 end-of-attributes-tag 2686 0x04 printer-attributes-tag 2687 0x05 unsupported-attributes-tag 2688 0x06 subscription-attributes-tag 2689 0x07-0x0e reserved for future delimiters 2690 0x0F reserved for future chunking-end-of-attributes- 2691 tag 2693 When an xxx-attributes-tag occurs in the protocol, it MUST mean that 2694 zero or more following attributes up to the next delimiter tag are 2695 attributes belonging to group xxx as defined in the model document, 2696 where xxx is operation, job, printer, unsupported, subscription. 2698 Doing substitution for xxx in the above paragraph, this means the 2699 following. When an operation-attributes-tag occurs in the protocol, it 2700 MUST mean that the zero or more following attributes up to the next 2701 delimiter tag are operation attributes as defined in the model document. 2702 When an job-attributes-tag occurs in the protocol, it MUST mean that the 2703 zero or more following attributes up to the next delimiter tag are job 2704 attributes or job template attributes as defined in the model document. 2705 When a printer-attributes-tag occurs in the protocol, it MUST mean that 2706 the zero or more following attributes up to the next delimiter tag are 2707 printer attributes as defined in the model document. When an 2708 unsupported-attributes-tag occurs in the protocol, it MUST mean that the 2709 zero or more following attributes up to the next delimiter tag are 2710 unsupported attributes as defined in the model document. When a 2711 subscription-attributes-tag occurs in the protocol, it MUST mean that 2712 the zero or more following attributes up to the next delimiter tag are 2713 subscription attributes as defined in the [ipp-not] document. 2715 Add a reference to [ipp-not]. 2717 16 References 2719 [ipp-coll] 2720 deBry, R., , Hastings, T., Herriot, R., "Internet Printing 2721 Protocol/1.1: collection attribute syntax", , work in progress, September 9, 1999. 2724 [ipp-iig] 2725 Hastings, T., Manros, C., "Internet Printing Protocol/1.1: , work in progress, 2727 September 27, 1999. 2729 Expires April 14, 2000 2731 [ipp-mod] 2732 deBry, R., Hastings, T., Herriot, R., Isaacson, S., Powell, P., 2733 "Internet Printing Protocol/1.1: Model and Semantics", < draft- 2734 ietf-ipp-model-v11-04.txt>, work in progress, June 23, 1999. 2736 [ipp-not-hist] 2737 deBry, R., Lewis, H., Hastings, T., "Internet Printing 2738 Protocol/1.1: Requirements for IPP Notifications", , work in progress, August 22, 1999. 2741 [ipp-not-req] 2742 deBry, R., Lewis, H., Hastings, T., "Internet Printing 2743 Protocol/1.1: Requirements for IPP Notifications", , work in progress, August 11, 1999. 2746 [ipp-pro] 2747 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 2748 Protocol/1.1: Encoding and Transport", , work in progress, June, 1999. 2751 [ipp-prog] 2752 Hastings, T., Bergman, R., Lewis, H., "Proposed Job Progress 2753 Attributes for IPP", work in 2754 progress, May 18, 1999. 2756 [ipp-set2] 2757 Kugler, C., , Hastings, T., "Internet Printing Protocol/1.1: 2758 Additional Operations, Set 2", , work in 2759 progress, August 22, 1999. 2761 [RFC2046] 2762 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 2763 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 2764 RFC1522, RFC1590), RFC 2046. 2766 [RFC2119] 2767 S. Bradner, "Key words for use in RFCs to Indicate Requirement 2768 Levels", RFC 2119 , March 1997 2770 [RFC2279] 2771 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 2772 2279. January 1998. 2774 [RFC2566] 2775 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 2776 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 2777 April 1999. 2779 [RFC2639] 2780 Hastings, T., Manros, C., "Internet Printing Protocol/1.0: 2781 Implementer's Guide", RFC 2639, July 1999. 2783 Expires April 14, 2000 2785 17 Author's Addresses 2787 Scott A. Isaacson (Editor) 2788 Novell, Inc. 2789 122 E 1700 S 2790 Provo, UT 84606 2792 Phone: 801-861-7366 2793 Fax: 801-861-2517 2794 e-mail: sisaacson@novell.com 2796 Tom Hastings 2797 Xerox Corporation 2798 737 Hawaii St. ESAE 231 2799 El Segundo, CA 90245 2801 Phone: 310-333-6413 2802 Fax: 310-333-5514 2803 e-mail: hastings@cp10.es.xerox.com 2805 Roger deBry 2806 Utah Valley State College 2807 Orem, UT 84058 2809 Phone: (801) 222-8000 2810 EMail: debryro@uvsc.edu 2812 Jay Martin 2813 e-mail: jkm@underscore.com 2815 Michael Shepherd 2816 Xerox Corporation 2817 800 Phillips Road MS 128-51E 2818 Webster, NY 14450 2820 Phone: 716-422-2338 2821 Fax: 716-265-8871 2822 e-mail: mshepherd@crt.xerox.com 2824 Ron Bergman (Editor) 2825 Dataproducts Corp. 2826 1757 Tapo Canyon Road 2827 Simi Valley, CA 93063-3394 2829 Phone: 805-578-4421 2830 Fax: 805-578-4001 2831 Email: rbergman@dpc.com 2833 Expires April 14, 2000 2835 18 Appendix C: Full Copyright Statement 2837 Copyright (C) The Internet Society (1998,1999). All Rights Reserved 2839 This document and translations of it may be copied and furnished to 2840 others, and derivative works that comment on or otherwise explain it or 2841 assist in its implementation may be prepared, copied, published and 2842 distributed, in whole or in part, without restriction of any kind, 2843 provided that the above copyright notice and this paragraph are included 2844 on all such copies and derivative works. However, this document itself 2845 may not be modified in any way, such as by removing the copyright notice 2846 or references to the Internet Society or other Internet organizations, 2847 except as needed for the purpose of developing Internet standards in 2848 which case the procedures for copyrights defined in the Internet 2849 Standards process must be followed, or as required to translate it into 2850 languages other than English. 2852 The limited permissions granted above are perpetual and will not be 2853 revoked by the Internet Society or its successors or assigns. 2855 This document and the information contained herein is provided on an "AS 2856 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 2857 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 2858 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 2859 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 2860 FITNESS FOR A PARTICULAR PURPOSE. 2862 Expires April 14, 2000