idnits 2.17.1 draft-ietf-ipp-not-spec-02.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: ---------------------------------------------------------------------------- ** 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 69 longer pages, the longest (page 8) being 69 lines == It seems as if not all pages are separated by form feeds - found 0 form feeds but 70 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 ([RFC2568], [RFC2569], [IPP-PRO], [IPP-IIG], [IPP-MOD], [RFC2567]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. == There are 49 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 401 has weird spacing: '...b Prin salie...' == Line 402 has weird spacing: '... ter uri:...' == Line 404 has weird spacing: '... yes no ...' == Line 411 has weird spacing: '... yes no ...' == Line 418 has weird spacing: '...016 no yes ...' == (16 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 exact meaning of the all-uppercase expression 'NOT REQUIRED' is not defined in RFC 2119. If it is intended as a requirements expression, it should be rewritten using one of the combinations defined in RFC 2119; otherwise it should not be all-uppercase. -- 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 (March 8, 2000) is 8814 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-MOD' is mentioned on line 3012, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 73, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 74, but not defined == Missing Reference: 'TBD' is mentioned on line 288, but not defined == Missing Reference: 'RFC2573' is mentioned on line 2620, but not defined ** Obsolete undefined reference: RFC 2573 (Obsoleted by RFC 3413) == Unused Reference: 'RFC2566' is defined on line 3278, but no explicit reference was found in the text ** Obsolete normative reference: RFC 1866 (Obsoleted by RFC 2854) ** Obsolete normative reference: RFC 2279 (Obsoleted by RFC 3629) ** Obsolete normative reference: RFC 2302 (Obsoleted by RFC 3302) ** Obsolete normative reference: RFC 2376 (Obsoleted by RFC 3023) ** Obsolete normative reference: RFC 2566 (Obsoleted by RFC 2911) ** Downref: Normative reference to an Experimental RFC: RFC 2567 ** Downref: Normative reference to an Experimental RFC: RFC 2568 ** Downref: Normative reference to an Experimental RFC: RFC 2569 Summary: 15 errors (**), 0 flaws (~~), 19 warnings (==), 3 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 Hitachi Koki Imaging Solutions 14 March 8, 2000 15 Internet Printing Protocol (IPP): 16 IPP Event Notification Specification 18 Copyright (C) The Internet Society (2000). 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, and future 42 versions that allows a client to subscribe to printing related events. 43 Subscriptions include "Per-Job subscriptions" and "Per-Printer 44 subscriptions". One or more Per-Job Submission subscriptions are 45 specified by the client when submitting a job. Additional Per-Job and 46 Per-Printer subscriptions are created by performing separate explicit 47 Create-Job-Subscription Create-Printer-Subscription operations, 48 respectively. Subscriptions are modeled as Subscription objects. Four 49 other operations are defined for Subscription objects: Get-Attributes, 50 Get-Subscriptions, Renew-Subscription, and Cancel-Subscription. 52 A subscription request and the Subscription object includes: the names 53 of Job and/or Printer events, the Notification Recipient URL, the 55 Expires September 8, 2000 56 Notification Content format, if several are supported, possibly some 57 opaque data, and the charset and natural language. In addition, the 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 1 ISSUE is included in the text. 65 Expires September 8, 2000 67 The full set of IPP documents includes: 69 Design Goals for an Internet Printing Protocol [RFC2567] 70 Rationale for the Structure and Model and Protocol for the Internet 71 Printing Protocol [RFC2568] 72 Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] 73 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 74 Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] 75 Mapping between LPD and IPP Protocols [RFC2569] 77 The "Design Goals for an Internet Printing Protocol" document takes a 78 broad look at distributed printing functionality, and it enumerates 79 real-life scenarios that help to clarify the features that need to be 80 included in a printing protocol for the Internet. It identifies 81 requirements for three types of users: end users, operators, and 82 administrators. It calls out a subset of end user requirements that are 83 satisfied in IPP/1.0. Operator and administrator requirements are out 84 of scope for version 1.0. A few OPTIONAL operator operations have been 85 added to IPP/1.1. 87 The "Rationale for the Structure and Model and Protocol for the Internet 88 Printing Protocol" document describes IPP from a high level view, 89 defines a roadmap for the various documents that form the suite of IPP 90 specifications, and gives background and rationale for the IETF working 91 group's major decisions. 93 The "Internet Printing Protocol/1.1: Model and Semantics", describes a 94 simplified model with abstract objects, their attributes, and their 95 operations that are independent of encoding and transport. It introduces 96 a Printer and a Job object. The Job object optionally supports multiple 97 documents per Job. It also addresses security, internationalization, and 98 directory issues. 100 The "Internet Printing Protocol/1.1: Encoding and Transport" document is 101 a formal mapping of the abstract operations and attributes defined in 102 the model document onto HTTP/1.1. It defines the encoding rules for a 103 new Internet MIME media type called "application/ipp". This document 104 also defines the rules for transporting over HTTP a message body whose 105 Content-Type is "application/ipp". This document defines a new scheme 106 named 'ipp' for identifying IPP printers and jobs. Finally, this 107 document defines interoperability rules for supporting IPP/1.0 clients. 109 The "Internet Printing Protocol/1.1: Implementer's Guide" document gives 110 insight and advice to implementers of IPP clients and IPP objects. It 111 is intended to help them understand IPP/1.0 and some of the 112 considerations that may assist them in the design of their client and/or 113 IPP object implementations. For example, a typical order of processing 114 requests is given, including error checking. Motivation for some of the 115 specification decisions is also included. 117 The "Mapping between LPD and IPP Protocols" document gives some advice 118 to implementers of gateways between IPP and LPD (Line Printer Daemon) 119 implementations. 121 Expires September 8, 2000 122 Table of Contents 124 1 Introduction.......................................................7 125 1.1 Notification Overview.........................................8 127 2 Model for Per-Job and Per-Printer Subscription and Event Notification 128 11 129 2.1 Model for Per-Job Subscription and Notification..............11 130 2.2 Model for Per-Printer Subscription and Notification..........13 131 2.3 Relationship between the Printer object and the Notification 132 Delivery Service..................................................13 133 2.3.1 Use of a Notification Service transparently to clients...13 134 2.3.2 Use of Notification Service transparently to the IPP Printer 135 14 137 3 Terminology.......................................................15 138 3.1 Conformance Terminology......................................15 139 3.2 Other terminology............................................16 141 4 Object Model for Notification.....................................19 142 4.1 Object relationships.........................................20 143 4.1.1 Printer object and Per-Printer Subscription objects......20 144 4.1.2 Job object and Per-Job Subscription objects..............21 146 5 Subscription Object attributes....................................21 147 5.1 notify-recipient (uri).......................................23 148 5.2 notify-events (1setOf type2 keyword).........................25 149 5.3 notify-format (mimeMediaType)................................28 150 5.4 subscriber-user-data (octetString(63)).......................29 151 5.5 notify-charset (charset).....................................30 152 5.6 notify-natural-language (naturalLanguage)....................30 153 5.7 subscription-request-id......................................30 154 5.8 subscription-id (integer (1:MAX))............................30 155 5.9 notify-lease-expiration-time (integer(0:MAX))................31 156 5.10 printer-uri (uri)............................................31 157 5.11 subscriber-user-name (name(MAX)).............................31 158 5.12 notify-server-up-time (integer(1:MAX)).......................32 159 5.13 notify-persistence-granted (boolean).........................32 161 6 Printer Description Attributes related to Notification............32 162 6.1 notify-schemes-supported (1setOf uriScheme)..................33 163 6.2 notify-events-default (1setOf type2 keyword).................33 164 6.3 notify-events-supported (1setOf type2 keyword)...............33 165 6.4 max-events-supported (integer(5:MAX))........................34 166 6.5 notify-format-supported (1setOf mimeMediaType)...............34 167 6.6 max-job-subscriptions-supported (integer(0:MAX)).............34 168 6.7 max-printer-subscriptions-supported (integer(0:MAX)).........35 169 6.8 notify-lease-time-supported (rangeOfInteger(0:MAX))..........35 170 6.9 notify-lease-time-default (integer(0:MAX))...................35 171 6.10 persistent-jobs-supported (boolean)..........................35 172 6.11 persistent-subscriptions-supported (boolean).................36 173 6.12 printer-state-change-time (integer(1:MAX))...................36 175 Expires September 8, 2000 176 6.13 printer-state-change-date-time (dateTime)....................36 178 7 Notification Content..............................................36 179 7.1 Notification content MIME media type formats.................37 180 7.1.1 Human Consumable form....................................37 181 7.1.2 Machine Consumable form..................................37 182 7.2 Notification content attributes common to Job and Printer events 183 38 184 7.2.1 "trigger-event" (type2 keyword)..........................41 185 7.2.2 "trigger-time" (integer(MIN:MAX))........................41 186 7.2.3 "trigger-date-time" (dateTime)...........................41 187 7.2.4 "human-readable-report" (text(MAX))......................41 188 7.3 Additional Notification content attributes for Job events only41 189 7.4 Additional Notification content attributes for Printer events 190 only 42 192 8 Operations for notification.......................................43 193 8.1 Operations for Per-Job Subscriptions only....................43 194 8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) 195 and Validate-Job................................................43 196 8.1.2 Create-Job-Subscription operation........................47 197 8.2 Operations for Per-Printer Subscriptions only................49 198 8.2.1 Create-Printer-Subscription operation....................49 199 8.3 Common Operations for Per-Job and Per-Printer Subscriptions..53 200 8.3.1 Get-Subscription-Attributes operation....................53 201 8.3.2 Get-Subscriptions operation..............................54 202 8.3.3 Renew-Subscription operation.............................56 203 8.3.4 Cancel-Subscription operation............................57 205 9 Comparison of Per-Job versus Per-Printer Subscriptions............58 207 10Out of Band Values................................................59 208 10.1 'none'.......................................................59 210 11Conformance Requirements..........................................59 212 12IANA Considerations...............................................60 214 13Internationalization Considerations...............................60 216 14Security Considerations...........................................60 218 15Status Codes......................................................61 219 15.1 'successful-ok-ignored-subscriptions' (0x0003)...............61 220 15.2 client-error-uri-notification-scheme-not-supported (0x0414)..62 221 15.3 client-error-too-many-subscriptions (0x0415).................62 222 15.4 client-error-too-many-events (0x0416)........................62 224 16Addition attribute tag encodings..................................62 226 17References........................................................63 228 18Author's Addresses................................................65 230 Expires September 8, 2000 231 A.Appendix: Change History.........................................66 232 18.1 Changes to the March 6, 2000 version to create the March 8, 2000 233 version66 234 18.2 Changes to the February 2, 2000 version to create the March 6, 235 2000 version......................................................66 236 18.3 Changes to the October 14, 1999 version to create the February 237 2, 2000 version...................................................68 239 B.Appendix: Full Copyright Statement................................70 241 Tables 242 Table 1 - Summary of Per-Job and Per-Printer Subscription operations.10 243 Table 2 - Subscription object attributes.............................22 244 Table 3 - Printer Description attributes associated with Notification33 245 Table 4 - Common Job and Printer Notification content attributes.....39 246 Table 5 - Additional Notification content attributes for Job events only 247 .................................................................41 248 Table 6 - Additional Notification content attributes for Printer events 249 only.............................................................42 250 Table 7 - Member attributes of the "job-notify" collection operation 251 attribute........................................................44 252 Table 8 - "job-notify" supported and default attributes..............44 253 Table 9 - Conformance Requirements for Operations....................60 255 Figures 256 Figure 1 - Client-Printer Per-Job Subscription and Notification Model11 257 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 258 Model............................................................12 259 Figure 3 - Client-Printer Per-Printer Subscription and Notification 260 Model............................................................13 261 Figure 4 - Opaque Use of a Notification Service Transparent to the 262 Client...........................................................14 263 Figure 5 - Use of a Notification Service transparent to the IPP Printer 264 .................................................................15 265 Figure 6 - Object Model for Notification.............................20 267 Expires September 8, 2000 268 1 Introduction 270 This IPP notification specification is an extension to IPP/1.0 [RFC2568, 271 RFC2569] and IPP/1.1 [ipp-mod, ipp-pro]. This document in combination 272 with the following documents is intended to meet the notification 273 requirements described in [ipp-not-req]: 275 Internet Printing Protocol/1.0 & 1.1: "Collection Attribute 276 Syntax" [ipp-coll] 277 Internet Printing Protocol/1.0 & 1.1: "Job Progress Attributes" 278 [ipp-prog] 279 Internet Printing Protocol/1.0 & 1.1: "Notification Change 280 History" [ipp-not-hist] 282 In addition, each notification delivery method, whether REQUIRED or 283 OPTIONAL, is described in separate documents: 285 Internet Printing Protocol/1.0 & 1.1: "Notification Delivery 286 Method xxx [TBD] 287 Internet Printing Protocol/1.0 & 1.1: "Notification Delivery 288 Method yyy [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 defines the Subscription object and its attributes. 305 - Section 6 defines the Printer Description attributes 307 - Section 7 defines the Notification content of Human Consumable 308 and Machine Consumable Event formats. 310 - Sections 8 and 9 define the Per-Job and Per-Printer Subscription 311 operations. 313 - Section 10 defines the out-of-band values. 315 - Section 11 and 12 define the conformance requirements and IANA 316 requirements, respectively. 318 - Section 13 - 15 cover Internationalization, Security, and Status 319 codes. 321 Expires September 8, 2000 322 - Appendix A is a summary of the Notification Attribute usage 324 - Appendix B is a Change History 326 1.1 Notification Overview 328 A client can establish an event notification subscription so that when 329 one of the specified events occurs, an asynchronous Notification is sent 330 to a specified Notification Recipient. 332 One or more Per-Job Submission subscriptions are specified by the client 333 when submitting a job. One or more Per-Job or Per-Printer subscriptions 334 are created by performing separate explicit Create-Job-Subscription or 335 Create-Printer-Subscriptions operations, respectively. 337 A Per-Job or Per-Printer subscription request includes: 339 1. the names of Job and/or Printer events that are of interest to the 340 Notification Recipient 342 2. the delivery method and address to use to deliver the notification 343 to one Notification Recipient 345 3. if Human Consumable notification content is to be sent, which text 346 format 348 4. some opaque data that the subscriber wants to be sent to the 349 Notification Recipient in the Notification, perhaps to identify 350 either the subscriber or the ultimate recipient 352 5. the charset to use in the Notification, if it is to be different 353 than the one used in the request that created the subscription 355 6. the natural language to use in the Human Consumable Notification, 356 if it is to be different than the one used in the request that 357 created the subscription 359 7. the requested lease time in seconds for the subscription 361 8. whether or not the subscription is requested to be persistent 362 across power cycles. 364 For Per-Job subscriptions, a client requests job and printer event 365 notification using the "job-notify" operation attribute when creating a 366 job with any of the Job Creation operation: Print-Job, Print-URI, and 367 Create-Job. The "job-notify" operation attributes may be submitted to 368 the Validate-Job in order to be validated. The "job-notify" operation 369 attribute contains one or more collection values, each consisting of a 370 number of member attributes that specify a subscription, so that a Job 371 can have more than one Per-Job subscription. The 'collection' is a new 372 attribute syntax (see [ipp-coll]). The member attributes of each 373 collection value are copied to separate Subscription objects to populate 374 the corresponding Subscription Description attributes. 376 For Per-Printer subscriptions and Per-Job subscriptions created after 377 the Job has been created, a client requests job and printer event 378 notification using new operations independent of any job. The Printer 380 Expires September 8, 2000 381 keeps each subscription in a separate Subscription object. The Create- 382 Job-Subscription and Create-Printer-Subscription operations create an 383 instance of the Subscription object supplying these new operation 384 attributes and returns a subscription-id (analogous to a job-id for a 385 Job object). These operation attributes are copied to the Subscription 386 object as Subscription Description attributes and so may be queried 387 using the Get-Subscription-Attributes and Get-Subscriptions operations. 388 The subscriber requests a lease time for each Per-Printer subscription 389 which MAY be infinite. The Printer grants a lease time according to its 390 configured policy. A client MUST renew the Subscription before the 391 granted lease time expires using the Renew-Subscription operation. 393 Table 1 summarizes the Per-Job and Per-Printer Subscription operations, 394 assigns their operation-id (see [ipp-mod] section 4.4.15) and their 395 salient input operation attributes. 397 Expires September 8, 2000 398 Table 1 - Summary of Per-Job and Per-Printer Subscription operations 400 Operation: Oper. Per- Per- Brief Description 401 ID Job Prin salient inputs beside printer- 402 ter uri: 404 Print-Job, Print- see yes no Create one or more Per-Job 405 URI, Create-Job [ipp- Subscriptions as part of the Job 406 mod] Creation operations 407 1setOf {recipient, [events,] 408 [format,] [user-data,] 409 [charset,] [natural-language]} 411 Validate-Job see yes no Check that the Job Creation 412 [ipp- operation would be accepted 413 mod] including the Subscription 414 1setOf {recipient, [events,] 415 [format,] [user-data,] 416 [charset,] [natural-language]} 418 Create-Printer- 0x0016 no yes Create a Per-Printer 419 Subscription Subscription 420 recipient, [events,] [format,] 421 [user-data,] [charset,] 422 [natural-language,] [lease-time- 423 requested,] [persistence- 424 requested] 426 Create-Job- 0x0017 yes no Create a Per-Job Subscription 427 Subscription recipient, job-id, [events,] 428 [format,] [user-data,] 429 [charset,] [natural-language,] 431 Get-Subscription- 0x0018 yes yes Get specified Subscription 432 Attributes attributes of the specified 433 Subscription object 434 subscription-id, [requested- 435 attributes] 437 Get-Subscriptions 0x0019 yes yes Get the specified Subscription 438 attributes from all my or all of 439 the Subscription objects 440 [job-id], [my-subscriptions,] 441 [requested-attributes] 443 Renew-Subscription 0x001A yes yes Renew the Subscription lease 444 subscription-id, [lease time- 445 requested] 447 Cancel- 0x001B yes yes Cancel the Subscription 448 Subscription subscription-id 450 Expires September 8, 2000 451 There are two steps that IPP notification must take regarding each event 452 - an internal event recording, and an external notification: 454 1) As an events occurs, the printer internally records in the job 455 objects and the printer objects those events which are required to 456 be supported by the system and those that are subscribed to by a 457 notification recipient. 459 2) As an events occurs, the Printer searches the set of 460 subscriptions for any interest in that event. As the Printer finds 461 that some notification recipient is interested in that event (the 462 notification recipient is subscribed to the event), the Printer 463 increments the Subscription object's "subscription-request-id" 464 (integer (0:MAX)) attribute and a notification is generated and 465 delivered using the methods and target addresses identified in the 466 subscription, passing the incremented "request-id". The 467 "subscription-request-id" sequence number permits a Notification 468 Recipient to detect duplicate notifications due either to duplicate 469 subscriptions or retries and to detect dropped notifications. 471 2 Model for Per-Job and Per-Printer Subscription and Event Notification 473 2.1 Model for Per-Job Subscription and Notification 475 Per-Job subscriptions are created by a client (desktop or server acting 476 as a client) as part of creation of the job in an IPP Printer (printing 477 device or server). More than one subscription may be submitted with a 478 job. Additional subscriptions may be associated with the job using the 479 Create-Job-Subscription operation. The IPP Printer object delivers a 480 Notifications to the Notification Recipient supplied by the Client in 481 each subscription. A Notification Recipient can be the Job submitter or 482 a third party. 484 Figure 1 shows the Per-Job subscription notification model for a simple 485 Client - Printer relationship. 487 embedded printer: 488 output device or server 489 desktop or server +---------------+ 490 +--------+ | ########### | 491 | client |---IPP job submission------># Printer # | 492 +--------+ Per-Job subscription | # Object # | 493 +------------+ | #####|##### | 494 |Notification| +-------|-------+ 495 |Recipient |<-----IPP Notifications---------+ 496 +------------+ (Job and/or Printer events) 498 Figure 1 - Client-Printer Per-Job Subscription and Notification Model 500 Figure 2 shows a (spooling or non-spooling) Server that implements two 501 Printer objects (1 and 2) that represent two devices. The devices A and 502 B in turn each implement an IPP Printer object (3 and 4, respectively). 504 Expires September 8, 2000 505 The Server implementation has three choices for how to support Per-Job 506 subscriptions to the client (and itself): 508 1.forward the Per-Job subscriptions to the down stream IPP Printer 509 and let it perform the notification directly to the Notification 510 Recipients supplied by the Client (Notifications(C)) and use 511 Per-Printer Subscriptions for the Server's own purposes. 513 2.save the client-supplied Per-Job subscription on the Job object 514 in the server and substitute its own Per-Job subscription with 515 the Server as the Notification Recipient (Notifications(B)). 516 Then the Server relays Notifications to the client-supplied 517 Notification Recipients (Notifications(A)). 519 3.A combination of 1 and 2 in which the Server adds its own Per- 520 Job subscriptions to those supplied by the client. Thus the IPP 521 Job that goes to Printer object 4 has a combination of 522 subscription information from both the Client and the Server. 523 This latter approach is sometimes called "piggy-backing" because 524 the Server is adding its Per-Job subscription information to 525 that supplied by the client. Piggy-backing is especially 526 useful, if device B also accepts (IPP or non-IPP) requests from 527 other servers. Then when all the jobs from Server S have been 528 completed by device B, there will be no more Job events sent to 529 Server S. (Server S could still maintain a long term Per- 530 Printer subscription with Printer D to that Server S can have 531 Printer B's state track (shadow) that of Printer D or Server S 532 could poll Printer D when queried about Printer B). 534 device A 535 server S +------------+ 536 +------------+ | ###########| 537 +--------+ IPP Job | ###########| IPP Job | # Printer #| 538 | client |--submission---># Printer #|---submission-----># Object 3#| 539 +--------+ Per-Job | # Object 1#| Per-Job | ###########| 540 subscription | ###########| subscription +------------+ 541 | | device B 542 +--------+ IPP Job | ###########| +------------+ 543 | client |--submission---># Printer #| IPP Job | ###########| 544 +--------+ Per-Job | # Object 2#|---submission-----># Printer #| 545 subscription | ###|#######| Per-Job | # Object 4#| 546 +----|---^---+ subscription | ####|#|####| 547 +--------+ | | +-----|-|----+ 548 |Notific-|<-Notifications(A)-+ +--- Notifications(B)-------+ | 549 |ation Re|<----------------Notifications(C)--------------------+ 550 |cipient | 551 +--------+ 553 Figure 2 - Client-Server-Printer Per-Job Subscription and Notification 554 Model 556 Expires September 8, 2000 558 2.2 Model for Per-Printer Subscription and Notification 560 Per-Printer subscriptions are created by a client (an end user, an 561 operator, or a server acting as a client) using a Create-Printer- 562 Subscription operation that is independent of Job Submission. The 563 Printer object (printing device or server) creates a Subscription object 564 to hold the attributes supplied by the subscriber. The client creates 565 separate Per-Printer subscriptions if more than one Notification 566 Recipient is desired. The Printer delivers Notifications to the 567 Notification Recipient specified by each Per-Printer subscription. A 568 Notification Recipient may be the subscriber or a third party. Figure 3 569 shows the Per-Printer subscription notification model for the Client - 570 Printer relationship where the client may be an end user, an operator, 571 or a server acting as a client. 573 desktop or server server or printing device 574 +---------------+ 575 +--------+ | ########### | 576 | client |---Create-Printer-Subscription------># Printer # | 577 +--------+ (Per-Printer subscription) | # Object # | 578 | #####|##### | 579 +------------+ +-------|-------+ 580 |Notification|<----------IPP Notifications-------------+ 581 |Recipient | (Job and/or Printer events) 582 +------------+ 584 Figure 3 - Client-Printer Per-Printer Subscription and Notification 585 Model 587 2.3 Relationship between the Printer object and the Notification 588 Delivery Service 590 The IPP Notification model does not mandate that the IPP Printer object 591 implement the full semantics of subscription, report generation, and 592 multiple delivery methods itself. This section describes two methods of 593 using third party notification services. The first is transparent to 594 the client and the second is transparent to the IPP Printer. 596 2.3.1 Use of a Notification Service transparently to clients 598 An implementation may be configured to use some other notification 599 service to either (1) delivery the Notifications to the Notification 600 Recipient(s) specified in the IPP Subscription or (2) keep the 601 Subscriptions, accept events, possibly format the notification in the 602 natural language of the Notification Recipient when a Human Consumable 603 text format is used, and deliver the Notifications to the Notification 604 Recipient(s) indicated in the IPP Subscription. Figure 4 shows this 605 partitioning. 607 Expires September 8, 2000 608 output device or server 609 desktop or server +---------------+ 610 +--------+ | ########### | 611 | client |---IPP subscription--------># Printer # | 612 +--------+ | # Object # | 613 | #####|##### | 614 +-------|-------+ 615 | Subscriptions 616 *******| OR Events 617 +------------+ * | 618 |Notification| * +------v--------+ 619 |Recipient |<--IPP Notifications-----| Notification | 620 +------------+ * | Service | 621 * +---------------+ 622 * 623 * 624 *** = Implementation configuration opaque boundary 626 Figure 4 - Opaque Use of a Notification Service Transparent to the 627 Client 629 In any case, the interface between the IPP Printer and the other 630 notification service is outside the scope of this document and is 631 intended to be transparent to the client and this specification. 633 2.3.2 Use of Notification Service transparently to the IPP Printer 635 Another way that a Notification Service can be used is if the 636 Notification Recipient indicated in the IPP Subscription is a 637 notification service (transparent to the IPP Printer), which in turn 638 forwards the Notification to the Ultimate Notification Recipient using 639 additional parameters in the IPP Subscription (URI parameters or 640 subscriber user data). In such cases, the Ultimate Notification 641 Recipient has also subscribed directly with the other notification 642 service (by means outside this document). As far as the IPP Printer is 643 concerned, the IPP Subscription indicated that the IPP Printer is to 644 delivery Notifications to the Notification Recipient (Notification 645 Service) using the specified notification delivery method. The method 646 that the Notification Recipient uses for delivering the notification to 647 the Ultimate Notification Recipient is beyond the scope of this document 648 and is transparent to the IPP Printer. However, the client does have to 649 know how to pass additional information to the Notification Recipient in 650 the IPP Subscription using either extra parameters in the URI or 651 subscriber user data. Examples of this latter approach are paging, 652 immediate messaging services, and NOS vendors infrastructure. Figure 5 653 shows this approach. 655 Expires September 8, 2000 656 desktop or server server or printing device 657 +---------------+ 658 +--------+ | ########### | 659 | client |----------IPP Subscriptions---------># Printer # | 660 +--------+ | # Object # | 661 | #####|##### | 662 +------------+ +------------+ +-------|-------+ 663 |Ultimate | |Notification|<---IPP Notifications-----+ 664 |Notification|<----|Recipient | 665 |Recipient | +------------+ 666 +------------+ (Notification Service) 668 Figure 5 - Use of a Notification Service transparent to the IPP Printer 670 3 Terminology 672 This section defines terminology used throughout this document. 674 3.1 Conformance Terminology 676 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 677 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 678 conformance to this specification. These terms are defined in 679 [ipp-mod section 13.1 on conformance terminology, most of which is 680 taken from RFC 2119 [RFC2119]. 682 REQUIRED - an adjective used to indicate that a conforming IPP 683 Printer implementation MUST support the indicated operation, 684 object, attribute, attribute value, status code, or out-of-band 685 value in requests and responses. See [ipp-mod] "Appendix A - 686 Terminology for a definition of "support". Since support of this 687 entire notification specification is OPTIONAL for conformance to 688 IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document 689 means "REQUIRED if this OPTIONAL notification specification is 690 implemented". 692 RECOMMENDED - an adjective used to indicate that a conforming IPP 693 Printer implementation is recommended to support the indicated 694 operation, object, attribute, attribute value, status code, or out- 695 of-band value in requests and responses. Since support of this 696 entire notification specification is OPTIONAL for conformance to 697 IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document 698 means "RECOMMENDED if this OPTIONAL notification specification is 699 implemented". 701 OPTIONAL - an adjective used to indicate that a conforming IPP 702 Printer implementation MAY, but is NOT REQUIRED to, support the 703 indicated operation, object, attribute, attribute value, status 704 code, or out-of-band value in requests and responses. 706 settable - an adjective used to indicate that a Printer 707 implementation supports setting the value(s) of an attribute using 709 Expires September 8, 2000 710 the Set-Job-Attributes or Set-Printer-Attributes operations (see 711 [ipp-set]). 713 READ-ONLY - an adjective used in an attribute definition to indicate 714 that an IPP Printer MUST NOT support the attribute as being 715 settable using the Set-Job-Attributes or Set-Printer-Attributes 716 operations (see [ipp-set]). 718 3.2 Other terminology 720 Job Submitting End User - A human end user who submits a print job 721 to an IPP Printer. This person may or may not be within the same 722 security domain as the Printer. This person may or may not be 723 geographically near the printer. 725 Administrator - A human user who established policy for and 726 configures the print system. 728 Operator - A human user who carries out the policy established by the 729 Administrator and controls the day to day running of the print 730 system. 732 Job Submitting Application - An application (for example, a batch 733 application), acting on behalf of a Job Submitting End User, which 734 submits a print job to an IPP Printer. The application may or may 735 not be within the same security domain as the Printer. This 736 application may or may not be geographically near the printer. 738 Security Domain - The set of network components which can communicate 739 without going through a proxy or firewall. A security domain may be 740 geographically very large, for example - anyplace within IBM.COM. 742 IPP Client (or client) - The software component (desktop or server) 743 that sends an IPP operation request to an IPP Printer object 744 (server or printing device) and accepts the resulting operation 745 response from the IPP Printer object. 747 Job Recipient - A human who is the ultimate consumer of the print 748 job. In many cases this will be the same person as the Job 749 Submitting End User, but need not be. 750 Example: If I use IPP to print a document on a printer in a 751 business partner's office, I am the Job Submitting End User, while 752 the person I intend the document for in my business partner's 753 office is the Job Recipient. Since one of the goals of IPP is to 754 be able to print near the Job Recipient of the printed output, we 755 would normally expect that person to be in the same security domain 756 as, and geographically near, the Printer. However, this may not 757 always be the case. For example, I submit a print job across the 758 Internet to a Kinko's print shop. I am both the Submitting End User 759 and the Job Recipient, but I am neither near nor in the same 760 security domain as the Printer. 762 Expires September 8, 2000 764 Job Recipient Proxy - A human acting on behalf of the Job Recipient. 765 In particular, the Job Recipient Proxy physically picks up the 766 printed document from the Printer, if the Job Recipient cannot 767 perform that function. The Proxy is by definition geographically 768 near and in the same security domain as the printer. 769 Example: I submit a print job from home to be printed on a printer 770 at work. I'd like my secretary to pick up the print job and put it 771 on my desk. In this case, I am acting as both Job Submitting End 772 User and Job Recipient. My secretary is acting as a Job Recipient 773 Proxy 775 Notification Subscriber (or Subscriber) - A client that requests the 776 IPP Printer to send Event Notifications to one or more Notification 777 Recipients. A Notification Subscriber may be: 779 1.a Job Submitting End User or Job Submitting Application (desktop 780 or server) that is submitting a job or 782 2.an End User, an Operator, or an Administrator that is not 783 submitting a job. 785 Subscription - A request by a Notification Subscriber to the IPP 786 Printer to send Event Notifications to a specified Notification 787 Recipient when the event occur. A Subscription is represented as a 788 set of attributes that indicate the "what, where, who, and how" for 789 notification. Notifications are generated for certain events 790 (what) and delivered using various delivery methods (how) to 791 certain addresses (where and who). 793 Per-Job Subscription - A Subscription that a client specifies as part 794 of a create job operation (Print-Job, Print-URI, Create-Job), a 795 Validate-Job operation, or an explicit Create-Job-Subscription 796 operation with a Job object as the target. 798 Per-Printer Subscription - A Subscription that a client specifies 799 using an explicit Create-Printer-Subscription operation with a 800 Printer object as the target. 802 Notification Source - The entity that sends Event Notifications. It 803 MAY be the IPP Printer itself or the IPP Printer MAY be configured 804 to use a Notification Service to delivery Notifications 805 transparently to the subscribing clients (see Figure 4). 807 Notification Recipient - The entity identified as a recipient within 808 a subscription that receives IPP Notifications about Job and/or 809 Printer events (see Figure 4 and Figure 5). A Notification 810 Recipient may be a: Job Submitting End User, Job Submitting 811 Application (desktop or server), Job Recipient, Job Recipient 812 Proxy, a Notification Service, an Operator, or Administrator, etc., 813 and their representative or log file or usage statistics gathering 814 application or other active or passive entities. A Java Listener 815 is an example of a Notification Recipient. 817 Expires September 8, 2000 819 Ultimate Notification Recipient - The entity to which the 820 Notification Recipient (stores and) forwards an IPP Notification 821 when the Notification Recipient is a Notification Service (see 822 Figure 5). 824 Event - An event is some occurrence (either expected or unexpected) 825 within the printing system of a change of state, condition, or 826 configuration of a Job or Printer object. A property of an event 827 is that it only occurs at one instant in time and does not span the 828 time the physical event takes place. For instance, jam-occurred 829 and jam-cleared are two distinct events. The jam-occurred event is 830 reported only when the jam initially occurs and only if there is 831 one or more event subscriptions outstanding for that event. 833 Events can be classified along two dimensions: 835 - Either as Job Events or Printer Events, and 836 - Either as Errors, Warnings, or Reports 838 A Job event is some interesting state change in the Job object, and 839 a Printer event is some interesting change in the Printer object. 841 A report event is purely informational, such as 'job-completed' or 842 'accepting-jobs'. A warning is not serious and processing 843 continues. An error is serious and either the job is aborted or 844 the printer stops. These are typical uses of the terms report, 845 warning, and error, although the actual usage is implementation 846 dependent. 848 An event occurs for a job or printer whether any entity has 849 subscribed to be notified for that event or not. A notification is 850 only generated depending on the set of subscriptions outstanding. 852 Notification - When an event occurs, a Notification is generated 853 that fully describes the event (what the event was, where it 854 occurred, when it occurred, etc.). Notifications are delivered to 855 each Notification Recipient that has a subscription that includes 856 the event, if any. The Notification is delivered to the address of 857 the Notification Recipient using the notification delivery method 858 defined in the subscription. However, a Notification is sent ONLY 859 if there is a corresponding subscription. 861 Notification Delivery Method (or Delivery Method for short) - 862 Notifications are delivered using a method, such as email, TCP/IP, 863 etc. 865 Immediate Notification - Notifications that are delivered using a 866 delivery method which is not store-and-forward (e.g. TCP 867 connection, UDP datagram). This can be on the order of several 868 minutes subject to network latency. 870 Store and Forward Notification - A Notification which are not 871 necessarily delivered to Notification Recipients immediately, but 872 is queued for delivery by some intermediate network application, 874 Expires September 8, 2000 875 for later retrieval. Email and Instant Messaging services are 876 examples of a store and forward notification delivery method. 878 Human Consumable Notification - Notifications that are intended to be 879 consumed by human End Users only. They are simple text that has 880 been localized for the Notification Recipient as specified in the 881 subscription. Programs are not intended to parse Human Consumable 882 Notification, since it is localized and the content depends on 883 implementation. There is no standardized format. 885 Machine Consumable Notification - Notifications that are intended for 886 consumption by a program only. They use the encoding of an IPP 887 response. The Notification Recipient must localize the contents, 888 if displaying it to a human. 890 Subscription Creation operation - One of the operations that creates 891 a Subscription object: Job Creation operations (Create-Job, Print- 892 Job, and Print-URI), Create-Job-Subscription, and Create-Printer- 893 Subscription. 895 4 Object Model for Notification 897 This section describes the notification object model that adds a 898 REQUIRED Subscription object which together with the Job and Printer 899 object provide the complete notification semantics. 901 Expires September 8, 2000 902 The object relationships can be seen pictorially as: 904 Subscription objects (Per-Printer Subscriptions) Printer object 905 +----+ +------------+ 906 | s1 |<---------------------------------------------->| | 907 +----++ | | 908 | s2 |<--------------------------------------------->| p1 | 909 +----++ | | 910 | s3 |<-------------------------------------------->| | 911 +----+ +------------+ 912 Job objects 913 +---------+ 914 | | 915 +----+ | j1 | 916 | s4 |<-------->| | 917 +----+ | | 918 | | s4 is a Per-Job subscription object 919 ++--------++ 920 | | 921 +----+ | j2 | 922 | s5 |<------->| | 923 +----++ | | 924 | s6 |<------>| | s5 and s6 are Per-Job subscription 925 +----+ ++--------++ objects 926 | | 927 | j3 | 928 | | 929 | | <----> indicates association 930 +---------+ 932 Figure 6 - Object Model for Notification 934 s1, s2, and s3 are Per-Printer Subscription objects and can 935 identify Printer and/or Job events. 936 s4, s5, and s6 are Per-Job subscription objects and can identify 937 Printer and/or Job events. 939 4.1 Object relationships 941 This sub-section defines the object relationships between the Printer, 942 Job, and Subscription objects. Whether Per-Printer Subscription objects 943 are actually contained in a Printer object or are just bi-directionally 944 associated with them in some way is IMPLEMENTATION DEPENDENT and is 945 transparent to the client. Similarly, whether Per-Job Subscription 946 objects are actually contained in a Job object or are just bi- 947 directionally associated with them in some way is IMPLEMENTATION 948 DEPENDENT and is transparent to the client. The object relationships 949 are defined as follows: 951 4.1.1 Printer object and Per-Printer Subscription objects 953 1. The Printer object contains (is associated with) zero or more Per- 954 Printer Subscription objects (p1 contains s1-s3 Per-Printer 955 Subscription objects). 957 Expires September 8, 2000 959 2. A Per-Printer Subscription object (s1-s3) cannot be contained in 960 (or associated with) more than one Printer object (p1). 962 3. Each Per-Printer Subscription object (s1, s2, and s3) is contained 963 in (or is associated with) one Printer object (p1) and each 964 represents one Per-Printer subscription. 966 4. Each Per-Printer Subscription object identifies one or more Job 967 and/or Printer events. Such Job events are for all jobs on the 968 Printer. Such Printer events are for any Printer event, no matter 969 which job is processing and when no jobs are processing. 971 4.1.2 Job object and Per-Job Subscription objects 973 1. A Job object (j1, j2, j3) contains (is associated with) zero or 974 more Per-Job subscription objects (s4-s6). Job j1 is associated 975 with Per-Job subscription object s4, Job j2 is associated with Per- 976 Job subscription objects s5 and s6, and Job j3 is not associated 977 with any Per-Job subscription object. 979 2. A Per-Job Subscription object cannot be contained in (or associated 980 with) more than one Job object. 982 3. Each Per-Job Subscription object is contained in (or associated 983 with) one Job object and each represents one Per-Job Subscription. 985 4. Each Per-Job Subscription object identifies one or more Job and/or 986 Printer events. Such Job events are only for this job (different 987 than "per-Printer" Subscriptions). Such Printer events are for any 988 Printer event, no matter which job and when no jobs are processing 989 (same as for "per-Printer" Subscriptions). 991 5 Subscription Object attributes 993 Table 2 lists the Subscription object attributes defined in this section 994 and the related Printer Description attributes defined in section 6, if 995 any. The definitions of the object attributes are specified in this 996 section so that they can be referred to from the subsequent definitions 997 of the operations that set them. All of the Subscription object 998 attributes are READ-ONLY. They can be set only by specific operations 999 that create or perform operations on Subscription objects (see section 1000 8). 1002 Expires September 8, 2000 1003 Table 2 - Subscription object attributes 1005 Subscription object Printer Related Printer Description 1006 attributes: support attribute(s) 1008 Set by client input to a 1009 Subscription Creation 1010 operation 1012 notify-recipient (uri) REQUIRED notify-schemes-supported 1013 (1setOf uriScheme) 1015 notify-events (1setOf type2 REQUIRED notify-events-default (1setOf 1016 keyword) type2 keyword) 1018 notify-events-supported (1setOf 1019 type2 keyword) 1021 max-events-supported 1022 (integer(5:MAX)) 1024 notify-format REQUIRED notify-format-supported (1setOf 1025 (mimeMediaType) mimeMediaType) 1027 subscriber-user-data REQUIRED n/a 1028 (octetString(63)) 1030 notify-charset (charset) OPTIONAL charset-supported (1setOf 1031 charset) 1033 notify-natural-languages OPTIONAL generated-natural-language- 1034 (1setOf supported (1setOf 1035 naturalLanguage) naturalLanguage) 1037 Subscription object Printer Related Printer Description 1038 attributes: support attribute(s) 1040 Printer initializes to 0, 1041 increments at beginning of 1042 each event 1044 subscription-request-id REQUIRED n/a 1045 (integer(0:MAX)) 1047 Expires September 8, 2000 1049 Subscription object Printer Related Printer Description 1050 attributes: support attribute(s) 1052 Printer sets as part of 1053 Subscription Creation 1054 operation 1056 subscription-id REQUIRED max-job-subscriptions-supported 1057 (integer(1:MAX)) (integer(0:MAX)) 1059 max-printer-subscriptions- 1060 supported (integer(0:MAX)) 1062 notify-lease-expiration- REQUIRED notify-lease-time-default 1063 time (integer(0:MAX)) (integer(0:MAX)) 1065 notify-lease-time-supported 1066 (rangeOfInteger(0:MAX)) 1068 printer-uri (uri) REQUIRED printer-uri-supported 1070 subscriber-user-name REQUIRED n/a 1071 (name(MAX)) 1073 Subscription object Printer Related Printer Description 1074 attributes: support attribute(s) 1075 Returned by Printer on 1076 Subscription Creation 1077 operation 1079 notify-server-up-time REQUIRED printer-up-time 1080 (integer(1:MAX)) (integer(1:MAX)) 1082 notify-persistence-granted REQUIRED persistent-subscriptions- 1083 (boolean) supported (boolean) 1085 Note: The Subscription object does not contain the "job-id" 1086 Subscription Description attribute. The Get-Subscriptions operation has 1087 the "job-id" as an input operation attribute, so the "job-id" isn't 1088 returned in the response. If an implementation needs such a link 1089 between Subscription objects and Job objects, then it keeps such a link 1090 as in internal attribute. The intent is that whether Per-Job 1091 Subscription objects are actually contained in a Job object or are just 1092 associated with them in some way is IMPLEMENTATION DEPENDENT and is 1093 transparent to the client. 1095 5.1 notify-recipient (uri) 1097 This REQUIRED READ-ONLY Subscription object attribute describes both 1098 where (the address of the Notification Recipient) and how (the delivery 1100 Expires September 8, 2000 1101 method) notifications are to be delivered to the Notification Recipient 1102 when any of the events specified in the "notify-events" attribute occur. 1104 There are potentially many different notification delivery methods for 1105 IPP notifications, standardized as well as proprietary. This document 1106 does not define any of these delivery mechanisms; they will each be 1107 described in separate supplementary documents. 1109 Each of the notification delivery method documents must provide at least 1110 the following information: 1112 1) The URI scheme used. 1114 2) The supported and default delivery format, and if not one of the 1115 specified types in Section 5.3, description of the notification 1116 content. 1118 3)Any content length restrictions imposed by the delivery protocol. 1120 4) The latency of the delivery protocol used. 1122 5)The reliability of the transport and delivery protocol used. 1124 6) The security aspects of the transport and delivery protocol used, 1125 e.g. how it is handled in firewalls. 1127 7) How the delivery protocol is initiated, e.g. does it have to be 1128 initiated by the receiving user (pull), or is it initiated by the 1129 notification service (push). 1131 The following notification delivery schemes are defined in other 1132 documents for use as part of the URI value of this attribute: 1134 'ipp:' - The Notification Recipient uses server directed polling to 1135 pull Notifications [ipp-method-poll] 1137 'indp:' - The Notification Source sends Send-Notifications operations 1138 to the Notification Recipient [ipp-method-indp] 1140 'mailto:' - The Notification Source sends a email message using SMTP 1141 with possible attachments containing Machine Consumable 1142 Notification Content [ipp-method-mailto] 1144 'snmpnotify:' - The Notification Source sends SNMP traps and/or 1145 informs to the Notification Recipient [ipp-method-snmp] 1147 This list of notification delivery schemes will be added to as needed 1148 using the registration procedures defined in [ipp-mod]. 1150 ISSUE 01 - Once a number of delivery solutions have been developed and 1151 evaluated, we may want to make one or several of them REQUIRED for 1152 implementation to ensure a minimum set of interoperability. Which one 1153 or ones should be REQUIRED? 1155 Expires September 8, 2000 1156 5.2 notify-events (1setOf type2 keyword) 1158 This REQUIRED READ-ONLY Subscription object attribute identifies the job 1159 and/or printer events that are to be delivered to the Notification 1160 Recipient as Notifications as defined in section 7. If the client did 1161 not supply this attribute when supplying the subscription, the Printer 1162 object populates this attribute with its "notify-events-default" 1163 attribute value (see section 6.2). 1165 There are both job events and printer events. Each job and printer 1166 event is assigned a keyword to use in this attribute and in the 1167 Notification. Job and printer events have the following semantics 1168 depending on whether the subscription is a Per-Job or a Per-Printer 1169 subscription: 1171 Job events: The semantics for job events depends on whether the 1172 subscription is a Per-Job Subscription or a Per-Printer 1173 Subscription. For Per-Job Subscriptions, the Printer MUST 1174 generate Notifications only for the job events of the job with 1175 which the Subscription is associated. For Per-Printer 1176 Subscriptions, the Printer MUST generate Notifications for the 1177 job events for any job submitted to the Printer. 1179 For example, consider the event when there are 10 'pending' 1180 jobs, one 'processing' job, and 30 'completed' jobs and the 1181 'processing' job completes. The Printer MUST generate a 'job- 1182 completed' job event Notification if the job has a Per-Job 1183 Subscription that contained the 'job-completed' event in this 1184 attribute. The Printer MUST NOT generate Notifications for 1185 any other jobs whose Per-Job Subscriptions contain the 'job- 1186 completed' event in this attribute. 1188 Printer events: The semantics for printer events does not depend 1189 on whether the subscription is a Per-Job or a Per-Printer 1190 Subscription. For both Per-Job Subscriptions and Per-Printer 1191 Subscriptions, the Printer MUST generate Notifications for 1192 printer events, no matter what job is processing, including 1193 when no jobs are processing. 1195 For example, consider the event when there are 10 'pending' 1196 jobs, one 'processing' job, and 30 'completed' jobs and the 1197 Printer enters the 'stopped' state. The Printer MUST generate 1198 a 'printer-state-changed' printer event Notification for each 1199 of the 11 'pending' and 'processing' jobs whose Per-Job 1200 Subscriptions contain the 'printer-state-changed' event in 1201 this attribute. The Printer MUST NOT generate Notifications 1202 for any of the 'completed' jobs' whose Per-Job Subscriptions 1203 contain the 'printer-state-changed' event in this attribute. 1205 The events are defined to be disjoint. For example, the 'job-state- 1206 changed' event does not include the 'job-created' and 'job-completed' 1207 events. In order to get all three events, the client supplies all three 1208 keywords in this attribute. 1210 Expires September 8, 2000 1211 A Printer MUST support the events indicated as "REQUIRED" and MAY 1212 support of the events indicated as "OPTIONAL". 1214 The standard job event keyword values are: 1216 'none': REQUIRED - no notifications of any events (an IPP object can 1217 use this value to indicate that it is configured not to support 1218 event notification; a client would not subscribe to this event). 1220 'job-created': REQUIRED - the Printer object has accepted a Job 1221 Creation operation (Print-Job, Print-URI, or Create-Job) and the 1222 job's "time-at-creation" attribute value is set (see [ipp-mod] 1223 section 4.3.14.1). The Printer puts the job in the 'pending', 1224 'pending-held' or 'processing' states. 1225 Note: This event is separate from the 'job-state-changed' event so 1226 that it can be subscribed to without having to get every job state 1227 change event for a Notification Recipient that is only interested 1228 in when the job is first created. 1230 'job-completed': REQUIRED - the job has reached one of the completed 1231 states, i.e., the value of the job's "job-state" attribute has 1232 changed to: 'completed', 'aborted', or 'canceled'. The Job's 1233 "time-at-completed" and "date-time-at-completed" (if supported) 1234 attributes are set (see [ipp-mod] section 4.3.14). 1235 Note: This event is separate from 'job-state-changed' so that it 1236 can be subscribed to without having to get every job state change 1237 event for a Notification Recipient that is only interested in when 1238 the job is completed. 1240 'job-state-changed': REQUIRED - the job has changed from any state 1241 to any other state and/or a value has been added or removed from 1242 the job's "job-state-reasons" attribute, except when the job is 1243 created or when the job moves to any of the "completed" job states 1244 ('completed', 'aborted', or 'canceled'). 1246 This event also indicates that one or more values have been added 1247 to or removed from the Job's "job-state-reasons" attribute, such as 1248 'job-queued' or 'job-printing', whether or not the job's state has 1249 changed. If job state reasons are added when the job is created, 1250 only the 'job-created' event is generated, in order to keep the 1251 events disjoint. If job state reasons are added or removed when 1252 the job is completed, only the 'job-completed' event is generated, 1253 in order to keep the events disjoint. 1255 A client that wants to subscribe to all job state changes, 1256 including creation and completion, includes the 'job-created', 1257 'job-state-changed', and 'job-completed' in the notification 1258 subscription. When a job is finally removed from the Job History 1259 (see [ipp-mod] 4.3.7.1) no event is generated, i.e., neither a 1260 'job-state-changed' event nor a 'job-purged' event is generated. 1262 'job-config-changed': OPTIONAL - when the configuration of a job has 1263 changed, i.e., the value of the "job-message-from-operator" or any 1264 of the non-READ-ONLY Job attributes have changed, such as any of 1266 Expires September 8, 2000 1267 the job template attributes or the "job-name" attribute. Often, 1268 such a change is the result of the user or the operator performing 1269 a Set-Job-Attributes operation (see [ipp-set]) on the Job object. 1270 The client performs a Get-Job-Attributes to find out the new values 1271 of the changed attributes. This event is useful for GUI clients 1272 and drivers to update the job information to the user. 1274 'job-purged': OPTIONAL - when a 'not-completed' job (i.e., not 1275 'completed', 'canceled', or 'aborted') was purged from the printer 1276 using the Purge-Jobs operation. No event, including this event, is 1277 generated when a job is aged out of the Job History or moved out 1278 explicitly with the Purge-Jobs operation. 1280 'job-progress' - a sheet or copy has completed. See separate [ipp- 1281 prog] spec. 1283 The standard Printer event keywords values are: 1285 'none': REQUIRED - no notification of any events (an IPP object can 1286 use this value to indicate that it is configured not to support 1287 event notification; a client would not subscribe to this event). 1289 'printer-restarted': OPTIONAL - when the printer is powered up or 1290 the Restart-Printer operation is performed (see [ipp-mod]). 1291 Note: This event is separate from the 'printer-state-changed' 1292 event so that it can be subscribed to without having to get every 1293 printer state change event, for a Notification Recipient that is 1294 only interested in when the Printer first comes up. 1296 'printer-shutdown': OPTIONAL - when the device is being powered down 1297 or the Shutdown-Printer operation has been performed (see [ipp- 1298 set2]). 1299 Note: This event is separate from 'printer-state-changed' so that 1300 it can be subscribed to without having to get every Printer state 1301 change event, for a Notification Recipient that is only interested 1302 in when the Printer is powered down or shutdown. 1304 'printer-state-changed': REQUIRED - the Printer changed state, i.e., 1305 the value of the Printer's "printer-state", "printer-state-reasons" 1306 (whether "printer-state" changed or not), and/or "printer-is- 1307 accepting-jobs" attributes changed, except when the Printer starts 1308 up or is shutdown. If printer state reasons are added when the 1309 Printer is started up, only the 'printer-restarted' event is 1310 generated, in order to keep the events disjoint. If printer state 1311 reasons are added or removed when the printer is powered-down or 1312 shutdown, only the 'printer-shutdown' event is generated, in order 1313 to keep the events disjoint. 1315 A client that wants to subscribe to all printer state changes, 1316 including restart and power-down/shutdown, includes the 'printer- 1317 restarted', 'printer-state-changed', and 'printer-shutdown' in the 1318 notification subscription. 1320 Expires September 8, 2000 1322 'printer-media-changed': OPTIONAL - when the media loaded on a 1323 printer has been changed, i.e., the "media-ready" attribute has 1324 changed. This event includes both an actual media change and 1325 filling an empty input tray with the same or different media. The 1326 client must check the "media-ready" Printer attribute (see [ipp- 1327 mod] section 4.2.11) separately to find out what new media was 1328 loaded or filled. 1330 'printer-config-changed': OPTIONAL - when the configuration of a 1331 Printer has changed, i.e., the value of the "printer-message-from- 1332 operator" or any non-READ-ONLY Printer attribute has changed, 1333 except for "media-ready" (which has its own event), whether through 1334 the Set-Printer-Attributes operation or by other means and whether 1335 initiated by a human or not. For example, any "xxx-supported", 1336 "xxx-default", "printer-message-from-operator", etc. values have 1337 changed. The client has to perform a Get-Printer-Attributes to 1338 find out the new values of these changed attributes. This event is 1339 useful for GUI clients and drivers to update the available printer 1340 capabilities to the user. 1342 'printer-queue-changed': OPTIONAL - the order of jobs in the 1343 Printer's queue has changed, so that an application that is 1344 monitoring the queue can perform a Get-Jobs operation to determine 1345 the new order. This event does not include when a job enters the 1346 queue (the 'job-created' event covers that) and does not include 1347 when a job leaves the queue (the 'job-completed' event covers 1348 that). 1350 'printer-no-longer-full': OPTIONAL - when the Printer can now accept 1351 a Print-Job, Print-URI, Create-Job, Send-Document, or Send-URI 1352 request. This event is used when there is more than one client 1353 feeding a printer/server (fan-in), and the Printer may still be 1354 printing but has acquired more buffer space to accept jobs. This 1355 event only occurs when the Printer did not have room to accept jobs 1356 previously and rejected a Print-Job, Print-URI, Create-Job, Send- 1357 Document, or Send-URI operation. 1359 'printer-almost-idle': OPTIONAL - when the Printer needs another Job 1360 in order to stay busy. This event is used when a spooler is 1361 feeding more than one printer/server (fan-out), and the spooler 1362 holds jobs until a Printer requests them, rather than committing 1363 jobs to IPP Printers before it is necessary. This event MAY be 1364 used by a Printer implementation to request a new job from any 1365 subscribers sufficiently ahead of time so that the device does not 1366 run out of work between jobs. 1368 5.3 notify-format (mimeMediaType) 1370 This REQUIRED READ-ONLY Subscription object attribute indicates the MIME 1371 Media type of Human Consumable and/or Machine Consumable format content 1372 that is to be sent in the Notifications for the Notification Content 1373 that is under control of the Subscriber. Depending on the delivery 1374 method definition document, this attribute MAY specify the MIME Media 1376 Expires September 8, 2000 1377 type for the entire Notification Content, or just a portion that is 1378 controllable by the subscriber, if there is a fixed part as well. For 1379 example, if the entire Notification Content is always a fixed Machine 1380 Consumable MIME Media type, such as the 'ipp:' delivery method which 1381 uses the 'application/ipp' MIME Media type (see [indp-method]), then 1382 this attribute controls the format of the "human-readable-report" 1383 (text(MAX)) Notification Content attribute (see section 7.2) in the 1384 Machine Consumable form. As another example, if the Notification 1385 Content is always a Human Consumable format content with a MIME Media 1386 attachment, such as with the 'mailto:' delivery method [ipp-method- 1387 mailto], this attribute controls the format of the attachment. 1389 If the 'text' MIME media type registration permits a charset parameter, 1390 than such a specification MUST be used (instead of the "notify-charset" 1391 attribute - see section 5.5) in order to indicate the charset to be used 1392 in the notification content. 1394 If the Subscriber did not supply this attribute when requesting the 1395 subscription, the Printer object populates this Subscription object 1396 attribute with either the 'none' out-of-band value (see section 10.1) or 1397 one of the values of the Printer's "notify-format-supported" attribute 1398 (see section 6.5), depending on the delivery method and implementation, 1399 since there is no "notify-format-default" defined in this document. 1401 Standard mimeMediaType values are: 1403 'none': This out-of-band value (see section 10.1) indicates that the 1404 Subscriber-controllable part of the Notification content is not to 1405 be sent. 1406 'text/plain; charset=utf-8': Human Consumable plain text containing 1407 characters from ISO 10646 represented as UTF-8 [RFC2279] as defined 1408 in section 7.1.1. 1409 'text/html': Human Consumable HTML data [RFC1866] as defined in 1410 section 7.1.1. 1411 'text/xml': Machine Consumable XML data [RFC2376] as defined in 1412 section 7.1.2. 1413 'application/ipp': Machine Consumable IPP request as defined in 1414 section 7.1.2 data encoded as in [ipp-pro]. 1415 'application/postscript': Human Consumable PostScript [RFC2046] 1416 'image/tiff': Human Consumable image data [RFC2302] 1418 5.4 subscriber-user-data (octetString(63)) 1420 This REQUIRED READ-ONLY Subscription object attribute holds opaque 1421 information being sent from the Subscriber to the Notification 1422 Recipient, such as the identify of the Subscriber or a path or index to 1423 some Subscriber information. Or it MAY contain a key that the 1424 Notification Recipient needs in order to process the Notification, such 1425 as the ultimate recipient, if the Notification Recipient is a general 1426 application that in turn forwards notifications and the ultimate 1427 recipient isn't included in the value of the "notify-recipient" 1428 attribute. An Instant Messaging Service is an example of such a general 1429 application where the "subscriber-user-data" might be the user's id for 1431 Expires September 8, 2000 1432 that messaging service and the "notification-recipient" is the URL of 1433 the messaging service. 1435 5.5 notify-charset (charset) 1437 This OPTIONAL READ-ONLY Subscription object attribute specifies the 1438 charset to be used in the Notification content sent to the Notification 1439 Recipient, whether the notification content is Machine Consumable or 1440 Human Consumable. This attribute MUST NOT be used when the "notify- 1441 format" attribute value specifies the charset parameter in its MIME 1442 media type value, e.g., 'text/plain; charset=utf-8'. 1444 5.6 notify-natural-language (naturalLanguage) 1446 This OPTIONAL READ-ONLY Subscription object attribute specifies the 1447 natural language for the IPP object to use in the Notification content 1448 that is sent to the Notification Recipient, whether the notification 1449 content is Machine Consumable or Human Consumable. 1451 5.7 subscription-request-id 1453 This REQUIRED READ-ONLY Subscription object attribute holds the most 1454 recent request-id sequence number delivered in a Notification content to 1455 the Notification Recipient. A value of 0 indicates that no 1456 Notifications have been sent for this subscription. The first request- 1457 id sent for a subscription MUST be 1. Each Notification Recipient 1458 receives its own monotonically increasing series of request-ids 1459 operation parameters (see [ipp-mod] section 3.1.2), i.e., no gaps, in 1460 order to be able to detect a missing notification. 1462 5.8 subscription-id (integer (1:MAX)) 1464 This REQUIRED READ-ONLY Subscription object attribute uniquely 1465 identifies this Subscription object instance on this Printer object or 1466 this Job object. The Printer object, on acceptance of a Create-Job- 1467 Subscription or Create-Printer-Subscription request, generates an ID 1468 which identifies the new Subscription object on that Printer or Job. 1469 The Printer returns the value of the "subscription-id" attribute as part 1470 of the response to a Create-Job-Subscription or Create-Printer- 1471 Subscription request. The 0 value is not included to allow for 1472 compatibility with "job-id" and with SNMP index values which also cannot 1473 be 0. 1475 It is RECOMMENDED that Per-Printer Subscription objects be persistent. 1476 Then the Subscription objects including the subscription-id remains 1477 unique across power-cycles. Even if an implementation does not make 1478 Per-Printer subscription objects persist, the implementation SHOULD make 1479 every attempt not to re-use subscription ids that subscribers might 1480 still think are valid. In other words, the Printer SHOULD at least keep 1481 the next subscription-id to be assigned in non-volatile memory. Note: 1482 it is assumed that Per-Job subscriptions are persistent if Jobs are 1484 Expires September 8, 2000 1485 persistent, in order to be consistent with the persistency of Job 1486 objects. The [ipp-mod] RECOMMENDS that Job objects be persistent. 1488 5.9 notify-lease-expiration-time (integer(0:MAX)) 1490 This REQUIRED READ-ONLY Subscription object attribute specifies the time 1491 in the future when the subscription lease will expire, i.e., the 1492 "printer-up-time" value at which the lease will expire. When the 1493 Printer object creates a Per-Printer Subscription object, it populates 1494 this attribute with the appropriate value. When the indicated time 1495 arrives, the Printer MUST delete the Per-Printer Subscription object. 1496 Per-Job Subscription objects always return a value of 0 since Per-Job 1497 Subscriptions don't have a lease, but exist for the life-time of the Job 1498 instead. 1500 A client is able to extend a lease of a Per-Printer subscription using 1501 the Renew-Subscription operation (see section 8.3.3). A value of 0 1502 indicates an infinite time, if such a policy is supported as indicated 1503 in the "notify-lease-time-supported" (integer(0:MAX)) Printer 1504 Description attribute (see section 6.8) and the subscriber is authorized 1505 to request an infinite lease. A Per-Job subscription cannot be renewed. 1507 Note: In order to compute the number of seconds remaining in a Per- 1508 Printer Subscription lease, a client can subtract the "notify-server-up- 1509 time" Subscription object attribute (see section 5.12) from the "notify- 1510 lease-expiration-time" Subscription object attribute. 1512 5.10printer-uri (uri) 1514 This REQUIRED READ-ONLY Subscription object attribute identifies the 1515 Printer object that created this Subscription object. When a Printer 1516 object creates a Subscription object, it populates this attribute with 1517 the Printer object URI that was used in the create request. This 1518 attribute permits a client to identify the Printer object URI that was 1519 used to create this Subscription object, i.e., what security scheme was 1520 used. 1522 5.11subscriber-user-name (name(MAX)) 1524 This REQUIRED READ-ONLY Subscription object attribute contains the name 1525 of the user that created the Subscription object. The Printer object 1526 sets this attribute to the most authenticated printable name that it can 1527 obtain from the authentication service over which the IPP operation was 1528 received. This attribute is intended to help a human user determine for 1529 which Per-Printer Subscriptions they are the Subscriber. Only if such 1530 is not available, does the Printer object use the value supplied by the 1531 client in the "requesting-user-name" operation attribute of the create 1532 operation (see [IPP-MOD] Sections 4.4.2, 4.4.3, and 8). For Per-Job 1533 subscriptions created as part of the Job creation operation, the value 1534 of the "subscriber-user-name" is the same as the "job-originating-user- 1535 name" Job attribute (see [ipp-mod] section 4.3.6). 1537 Expires September 8, 2000 1538 The value of the "subscriber-user-name" is implementation dependent when 1539 a server accepts a request and forwards it to a downstream IPP Printer 1540 (see Figure 2 and the [ipp-iig]). 1542 Note: The Printer object needs to keep an internal originating user id 1543 of some form, typically as a credential of a principal, with the 1544 Subscription object. Since such an internal attribute is 1545 implementation-dependent and not of interest to clients, it is not 1546 specified as a Subscription Description attribute. This originating 1547 user id is used for authorization checks (if any) on all subsequent 1548 operations. 1550 5.12notify-server-up-time (integer(1:MAX)) 1552 This REQUIRED READ-ONLY Subscription object attribute indicates the 1553 amount of time (in seconds) that the Printer or Notification Delivery 1554 Service implementation has been up and running. This attribute is an 1555 alias for the Printer's "printer-up-time" attribute" (see [ipp-mod] 1556 section 4.4.29) if the Printer is keeping the Subscription objects or is 1557 the up time for the Notification Delivery Service if the Printer has 1558 delegated the responsibility for keeping Subscription objects to a 1559 notification delivery service, in an analogous way that the Job's "job- 1560 printer-up-time" is an alias for "printer-up-time" Printer attribute 1561 (see [ipp-mod] section 4.3.13.4). 1563 Note: The purpose of this attribute is so that a client can request 1564 this attribute in a Get-Subscription-Attributes or Get-Subscriptions 1565 request and use the value returned in combination with the "notify- 1566 lease-expiration-time" (see section 5.9) in order to display the wall 1567 clock time equivalent to the user. The difference between this 1568 attribute and the 'integer' value of the "notify-lease-expiration-time" 1569 attribute is the number of seconds in the future that the subscription 1570 will expire. A client can compute the wall-clock time at which the 1571 subscription will expire by adding this difference to the client.s wall- 1572 clock time. 1574 5.13notify-persistence-granted (boolean) 1576 This REQUIRED READ-ONLY Subscription object attribute indicates whether 1577 or not the Per-Job or Per-Printer Subscription is persistent, i.e., 1578 saved across power cycles in an implementation-define manner. 1580 6 Printer Description Attributes related to Notification 1582 This section defines the Printer Description attributes that are related 1583 to Notification. Table 3 lists the Printer Description attributes and 1584 indicates the Printer support required for conformance and whether or 1585 not the attribute is READ-ONLY: . 1587 Expires September 8, 2000 1588 Table 3 - Printer Description attributes associated with Notification 1590 Printer object attributes: Printer READ- 1591 support ONLY? 1593 notify-schemes-supported (1setOf uriScheme) REQUIRED no 1595 notify-events-default (1setOf type2 keyword) REQUIRED no 1597 notify-events-supported (1setOf type2 keyword) REQUIRED no 1599 max-events-supported (integer(5:MAX)) REQUIRED no 1601 notify-format-supported (1setOf mimeMediaType) REQUIRED no 1603 max-job-subscriptions-supported (integer(0:MAX)) REQUIRED no 1605 max-printer-subscriptions-supported (integer(0:MAX)) REQUIRED no 1607 notify-lease-time-supported (rangeOfInteger(0:MAX)) REQUIRED no 1609 notify-lease-time-default (integer(0:MAX)) REQUIRED no 1611 persistent-jobs-supported (boolean) OPTIONAL no 1613 persistent-subscriptions-supported (boolean) OPTIONAL no 1615 printer-state-change-time (integer(1:MAX)) PTIONAL yes 1617 printer-state-change-date-time (dateTime) OPTIONAL yes 1619 6.1 notify-schemes-supported (1setOf uriScheme) 1621 This REQUIRED Printer attribute describes the notification delivery 1622 methods supported by this Printer object. Standard values are defined in 1623 Section 5.1. 1625 6.2 notify-events-default (1setOf type2 keyword) 1627 This REQUIRED Printer attribute identifies the event values if the 1628 client does not supply the "notify-events" operation attribute in a 1629 Subscription Creation operation. Any value in this attribute MUST also 1630 appear in the "notify-events-supported" attribute, i.e., be a supported 1631 event. 1633 6.3 notify-events-supported (1setOf type2 keyword) 1635 This REQUIRED Printer attribute identifies the events supported by this 1636 Printer object for both Per-Job and Per-Printer subscriptions which MUST 1637 be the same. Standard values are defined in Section 5.2. 1639 Expires September 8, 2000 1640 6.4 max-events-supported (integer(5:MAX)) 1642 This REQUIRED Printer attribute specifies the maximum number of events 1643 that are supported in a single Per-Job or Per-Printer subscription which 1644 must be the same. A Printer MUST support at least 5 events per 1645 subscription, so that clients can depend on at least 5 events in a 1646 single subscription. If the number of events supplied by a client in a 1647 subscription exceed this number, the Printer rejects the request and 1648 returns the 'client-error-too-many-events (see section 15.4). If 1649 notification is not supported, this attribute MUST NOT be supported. 1651 6.5 notify-format-supported (1setOf mimeMediaType) 1653 This REQUIRED Printer attributes identifies the MIME media types 1654 supported for Human Consumable and/or Machine Consumable notification 1655 content that the subscriber can control, if any. If the Notification 1656 content is fixed by the implementation, then the value of this attribute 1657 is that MIME media type, if is has been registered, or the 'none' out- 1658 of-band value (see section 10.1) otherwise. See the definition of the 1659 "notify-format" attribute in section 5.3 for details and some example 1660 values. 1662 Not all formats listed in the "notify-format-supported" attribute need 1663 be available with all delivery methods specified in the "notify-schemes- 1664 supported". However, all Human Consumable formats, if any, SHOULD be 1665 available with all delivery methods. It is much harder to support a 1666 Human Consumable format because of localization issues. Once the code 1667 is written to support a particular Human Consumable format, it is easy 1668 to transmit it on any of the supported notify-schemes. Thus, if a 1669 vendor decides to support a notify-scheme, it has already committed to 1670 implement the Machine Consumable format. This may be simple if existing 1671 code can be reused, e.g. application/ipp and or more difficult if new 1672 code must be written, e.g., it is SNMP. 1674 6.6 max-job-subscriptions-supported (integer(0:MAX)) 1676 This REQUIRED Printer attribute specifies the maximum number of Per-Job 1677 subscriptions that are supported for a job, i.e., the maximum number of 1678 collection values for the "job-notify" operation attribute, and/or the 1679 maximum number of subsequent Create-Job-Subscription operation requests 1680 in combination for a job. A value of 0 indicates no effective maximum. 1681 A Printer MUST support at least 1 Per-Job subscription. If the number 1682 of Per-Job subscriptions supplied by a client in a Job Creation request 1683 exceeds the value of this attribute or would exceed some implementation- 1684 defined total number of Per-Job Subscriptions for the Printer, the 1685 Printer MUST accept the Job Creation and ignore the excess 1686 subscriptions. If a subsequent Create-Job-Subscription request would 1687 exceed this number, the Printer rejects the request and returns the 1688 'client-error-too-many-subscriptions' (see section 15.3). 1690 If a Printer does not support Per-Job Subscriptions, it MUST NOT support 1691 this attribute. The usual way for a client to determine whether an IPP 1692 Printer supports a feature is to query the Printer's "operations- 1694 Expires September 8, 2000 1695 supported" attribute. However, there is no new REQUIRED operation for 1696 Per-Job Subscriptions. Therefore, the RECOMMENDED way for a client to 1697 determine whether or not a Printer supports Per-Job Subscriptions is to 1698 query this attribute to see if it is supported (since the Create-Job- 1699 Subscriptions is an OPTIONAL operation). 1701 6.7 max-printer-subscriptions-supported (integer(0:MAX)) 1703 This REQUIRED Printer attribute specifies the maximum number of Per- 1704 Printer subscriptions that are supported by multiple Create-Printer- 1705 Subscription requests, i.e., the maximum number of un-expired Per- 1706 Printer Subscription objects that the Printer supports at a time. A 1707 value of 0 indicates no effective maximum. A Printer MUST support at 1708 least 1 Per-Printer subscription. If the number of Per-Printer 1709 subscriptions exceeds the value of this attribute or would exceed some 1710 implementation-defined total number of Per-Printer Subscriptions for the 1711 Printer (if any), the Printer rejects the Create-Printer-Subscription 1712 request and returns the 'client-error-too-many-subscriptions' (see 1713 section 15.3). 1715 If a Printer does not support Per-Printer Subscriptions, then it MUST 1716 NOT support this attribute. None the less, the RECOMMENDED way for a 1717 client to determine whether or not a Printer supports Per-Printer 1718 Subscriptions is to query the "operations-supported" to see if the 1719 Create-Printer-Subscriptions operation is supported, rather than 1720 querying this attribute. 1722 6.8 notify-lease-time-supported (rangeOfInteger(0:MAX)) 1724 This REQUIRED Printer attribute specifies the range of values in seconds 1725 that are supported for the "notify-lease-time-requested" operation 1726 attribute in a Create-Printer-Subscription or Renew-Subscription request 1727 for a Per-Printer subscription. When the lease time expires for a Per- 1728 Printer Subscription without renewing, the Printer MUST delete the 1729 Subscription object. If the client requests a value outside this range, 1730 the Printer MUST grant a value that is in this range (see section 5.9). 1731 A value of 0 indicates an infinite lease, i.e., one that does not 1732 expire. 1734 6.9 notify-lease-time-default (integer(0:MAX)) 1736 This REQUIRED Printer attribute specifies the value of the lease time 1737 that the Printer object has been configured to assume if the client does 1738 not supply a "notify-lease-time-requested" operation attribute in the 1739 Create-Printer-Subscription or Renew-Subscription requests. 1741 6.10persistent-jobs-supported (boolean) 1743 This OPTIONAL Printer attribute indicates whether or not the Printer 1744 supports persistent Jobs, i.e., Jobs object that are preserved across 1745 power cycles. If Jobs are persistent, then Per-Job Subscriptions MUST 1747 Expires September 8, 2000 1748 also be persistent, since they are part of the Job object. It is 1749 RECOMMENDED that Jobs (and Per-Job Subscriptions) be persistent. 1751 As with any settable attribute, if the Printer supports setting this 1752 attribute to more than one value, then the value being set MUST control 1753 whether or not the Printer keeps Jobs persistently as per the rules in 1754 [ipp-set]). As with any settable attribute, if the Printer only 1755 supports one value, it MAY support this attribute either (1) as settable 1756 to that one value, or as not-settable, depending on implementation (see 1757 [ipp-set]). 1759 6.11persistent-subscriptions-supported (boolean) 1761 This OPTIONAL Printer attribute indicates whether or not the Printer 1762 supports persistent Per-Printer Subscriptions, i.e., Subscription 1763 objects that are preserved across power cycles. When this value is 1764 'true' the implementation MAY support some that are persistent and some 1765 that are not. If the value is 'false' or the attribute is not 1766 supported, Per-Printer Subscriptions MUST NOT be persistent. It is 1767 RECOMMENDED that Per-Printer subscriptions be persistent. 1769 As with any settable attribute, if the Printer supports setting this 1770 attribute to more than one value, then the value being set MUST control 1771 whether or not the Printer keeps Jobs persistently as per the rules in 1772 [ipp-set]). As with any settable attribute, if the Printer only 1773 supports one value, it MAY support this attribute either (1) as settable 1774 to that one value, or as not-settable, depending on implementation (see 1775 [ipp-set]). 1777 6.12printer-state-change-time (integer(1:MAX)) 1779 This OPTIONAL READ-ONLY Printer attribute records the time, i.e., copy 1780 of the Printer's "printer-up-time" attribute, that the Printer's 1781 "printer-state" attribute was last changed. On power-up, the Printer 1782 populates the "printer-state-change-time" from its "printer-up-time" 1783 attribute, so that it always has a value. 1785 6.13printer-state-change-date-time (dateTime) 1787 This OPTIONAL READ-ONLY Printer attribute records the date and time, 1788 i.e., copy of the Printer's "printer-current-time" (dateTime) attribute 1789 (see [ipp-mod] section 4.4.30), that the Printer's "printer-state" 1790 attribute was last changed. On power-up, the Printer populates the 1791 "printer-state-change-date-time" from its "printer-current-time" 1792 attribute, so that it always has a value. 1794 7 Notification Content 1796 This section defines the Notification content that is sent to a 1797 Notification Recipient when an event occurs. The Notification MAY be 1799 Expires September 8, 2000 1800 sent by the IPP Printer or a third party Notification Service (see 1801 section 2.3). 1803 There are two notification content types: Machine Consumable and Human 1804 Consumable, i.e., 'text' MIME media type. For most notification 1805 delivery methods both content types are defined. Each Notification 1806 Content type will either define one specific Machine Consumable form 1807 (usual) or indicate that no Machine Consumable form is defined. In 1808 addition, each Notification Content type will indicates whether (usual) 1809 or not Human Consumable forms are permitted. But the definition will 1810 not define the Human Consumable forms. For those Human Consumable forms 1811 that a Printer implementation supports as indicated in the Printer's 1812 "notify-format-supported" attribute, it MUST support for all 1813 Notification Content formats supported that permit Human Consumable 1814 form. 1816 7.1 Notification content MIME media type formats 1818 This section defines the Notification content that the Notification 1819 Source sends asynchronously to each Notification Recipient based on the 1820 subscription information stored with the subscription. The Notification 1821 is either in a Human Consumable or Machine Consumable form. 1823 7.1.1 Human Consumable form 1825 If the notification delivery method is defined to permit Human 1826 Consumable forms such as the entire Notification Content or a portion of 1827 the Notification Content, such as either an attachment or the "human- 1828 readable-report" attribute (see section 7.2) then the following 1829 RECOMMENDATIONS apply: 1831 The text message SHOULD include information about the attributes in 1832 sections 7.2 and 7.3 for job events or in sections 7.2 and 7.4 for 1833 printer events. This information is localized according to the 1834 information about natural language and charset in the subscription. 1836 An implementation MAY extend the contents of a Human Consumable 1837 notification by adding additional information. 1839 7.1.2 Machine Consumable form 1841 If the notification delivery method is defined to have a Machine 1842 Consumable form and that form is defined to be the 'application/ipp' 1843 MIME media type [ipp-mod], then the following rules apply: 1845 1.The notification content MUST use the 'application/ipp' MIME 1846 media type [ipp-mod] using one of: (1) the Get-Job-Attributes 1847 response encoding for job events, (2) Get-Printer-Attributes 1848 response for printer events, or (3) a new Sent-Notifications 1849 operation for both job and printer events. 1851 2.The attributes listed in sections 7.2 and 7.3 are sent in a 1852 Notification for Job events. 1854 Expires September 8, 2000 1856 3.The attributes listed in sections 7.2 and 7.4 are sent in a 1857 Notification for Printer events. 1859 4.For any 'text' or 'name' attribute value in any notification, 1860 the charset and natural language rules that apply to all IPP 1861 operations apply to these attributes as well, since they are 1862 represented as operation responses. 1864 5.The "human-readable-report" attribute can be defined to be 1865 REQUIRED, OPTIONAL, or MUST NOT be sent. 1867 6.If the values of any of the attributes sent in an notification 1868 content are not known, the value sent in the report content is 1869 the out-of-band 'unknown' value, rather than omitting the 1870 attribute (see the beginning of [ipp-mod] section 4.1). 1872 An implementation MAY extend the contents of the Machine Consumable 1873 notification by adding additional attributes. Notification Recipients 1874 MUST be able to accept Notifications containing attributes they do not 1875 recognize. What a Notification Recipient does with an unrecognized 1876 attribute is implementation-dependent. Notification Recipients MAY 1877 attempt to display unrecognized attributes anyway or MAY ignore them. 1879 7.2 Notification content attributes common to Job and Printer events 1881 This section lists the parameters and attributes that are included in 1882 both Job and Printer event Notifications. 1884 The notification delivery method either models the Notification as a (1) 1885 request if the IPP Printer sends the Notification to the Notification 1886 Recipient when the event occurs or as a (2) response if the IPP Printer 1887 is queried for the Notification by a Notification Recipient: 1889 Request: If the delivery method defines that the IPP Printer sends 1890 the Notification, then the delivery method also defines whether or 1891 not the Notification Recipient returns a response. If the IPP 1892 Printer sends a Notification request, it uses the "operation-id 1893 alternative for item #0 in Table 4: 1895 Response: If the delivery method defines that the IPP Printer 1896 supports an operation that returns a Notification as a response to 1897 the Notification Recipient, it uses the "status-code" alternative 1898 for item #0 in Table 4. 1900 Some events do not include all of these attributes as shown in Table 4. 1901 Each notification content contains a single Job or Printer event, 1902 whether that event was subscribed using the Job Submission Subscription 1903 mechanism or the Per-Printer subscription mechanism. If either kind of 1904 Subscription subscribed to both Job and Printer events, then the Printer 1905 will send or return them as separate Job Notification content and 1906 Printer Notification contents to the same Notification Recipient. 1908 Expires September 8, 2000 1909 Table 4 lists the attributes that are defined for use in Notifications 1910 and indicates the Printer support required for conformance: References 1911 of the form "mod m.n.o" refer to [ipp-mod] sections. 1913 Table 4 - Common Job and Printer Notification content attributes 1915 Attributes Reference Events 1917 'job- all others 1918 progress' 1920 The following attributes MUST occur in this order: 1922 version-number (integer mod 3.1.1 REQUIRED REQUIRED 1923 (0:32767)) 1925 operation-id (integer (0:32767)) mod 3.1.1 REQUIRED REQUIRED 1926 or 1927 status-code (integer (0:32767)) 1929 request-id (integer (0:MAX)) 5.7 & mod REQUIRED REQUIRED 1930 3.1.1 1932 attributes-charset (charset) 5.5 & mod REQUIRED REQUIRED 1933 3.1.4 1935 attributes-natural-language 5.6 & mod REQUIRED REQUIRED 1936 (naturalLanguage) 3.1.4 1938 printer-uri (uri) 5.10 REQUIRED REQUIRED 1940 The following attribute MAY occur in any order: 1942 printer-name (name(127)) mod 4.4.4 n/a REQUIRED 1944 job-id (integer(1:MAX)) mod 4.3.2 REQUIRED REQUIRED** 1946 job-name (name(MAX)) mod 4.3.5 n/a REQUIRED** 1948 trigger-event (type2 keyword) 7.2.1 REQUIRED REQUIRED 1950 trigger-time (integer(MIN:MAX)) 7.2.2 REQUIRED REQUIRED 1952 trigger-date-time (dateTime) 7.2.3 n/a OPTIONAL 1954 subscription-id (integer(1:MAX)) 5.8 REQUIRED REQUIRED 1956 subscriber-user-name (name(MAX)) 5.11 REQUIRED REQUIRED 1958 subscriber-user-data 5.4 REQUIRED REQUIRED 1959 (octetString(63)) 1961 notify-format (mimeMediaType) 5.3 OPTIONAL OPTIONAL 1963 Expires September 8, 2000 1964 Attributes Reference Events 1966 'job- all others 1967 progress' 1969 human-readable-report (text(MAX)) 7.2.4 OPTIONAL OPTIONAL 1971 Attribute Notes: 1973 "version-number" - the major and minor version number. 1975 "operation-id" - the operation id if the delivery method document models 1976 the Notification as the Printer sending the Notification to the 1977 Notification Recipient (whether the Notification Recipient returns 1978 a response or not). 1980 "status-code" - a value of 0x600 (hexadecimal 600) for a Job event and 1981 0x601 (hexadecimal 601) for a Printer event if the delivery method 1982 document models the Notification as the Printer returning the 1983 Notification to the Notification Recipient as a response to a 1984 request. 1986 "request-id" - the sequence number for this subscription, starting at 1, 1987 for each subscription, i.e., the Printer copies the current value 1988 of the "subscription-request-id' Subscription object attribute to 1989 the Notification request content. 1991 "attributes-charset" - the value comes from the "notify-charset" 1992 attribute in the Subscription object. 1994 "attributes-natural-language" - the value comes from the "notify- 1995 natural-language" attribute in the Subscription object. 1997 "printer-uri" - the value comes from the "job-printer-uri" Job attribute 1998 for Per-Job subscriptions. 2000 **"job-id" and "job-name" - included in Printer event Notifications only 2001 for Per-Job subscriptions. 2003 "job-name" - SNMP delivery method can truncate to less than 255 octets, 2004 since the Notification needs to fit into 484 octets or so on some 2005 transports that SNMP is defined for. See [ipp-method-snmp] 2007 "subscription-id" - the unique identifier for the Subscription object on 2008 this Printer. 2010 "subscriber-user-name" - the subscriber user name that created the 2011 Subscription object. SNMP delivery method can truncate to less 2012 than 255 octets, since the Notification needs to fit into 484 2013 octets or so on some transports that SNMP is defined for. See 2014 [ipp-method-snmp] 2016 Expires September 8, 2000 2018 "subscriber-user-data" - opaque user data that may identify either the 2019 Subscriber and/or the ultimate Notification Recipient. The client 2020 MUST supply this attribute, if the definition of the delivery 2021 method specified in the "notify-recipient" attribute REQUIRES the 2022 client to supply it. 2024 "notify-format (mimeMediaType) - indicates the text MIME media type (see 2025 section 5.3) for the "human-readable-report" attribute. This 2026 attribute MUST be present if the "human-readable-report" 2027 (text(MAX)) attribute is present in order to unambiguously identify 2028 the format of its text value to the Notification Recipient. 2030 7.2.1 "trigger-event" (type2 keyword) 2032 This REQUIRED Notification Content attribute indicates the event that 2033 caused this Notification to be delivered. 2035 7.2.2 "trigger-time" (integer(MIN:MAX)) 2037 This REQUIRED Notification Content attribute indicates the time at which 2038 the event occurred, i.e., the "printer-up-time" value (see [ipp-mod] 2039 section 4.4.29) when the event occurred. 2041 7.2.3 "trigger-date-time" (dateTime) 2043 This OPTIONAL Notification Content attribute indicates the date and time 2044 at which the event occurred, i.e., the "printer-current-time" value (see 2045 [ipp-mod] section 4.4.30) when the event occurred. 2047 7.2.4 "human-readable-report" (text(MAX)) 2049 This OPTIONAL Notification Content attribute contains the human 2050 consumable text message (see section 7.1.1) that describes the event and 2051 is represented in the text format specified by the "notify-format" 2052 attribute. Whether or not this attribute is defined depends on the 2053 delivery method definition document and MUST be defined only for use in 2054 the Machine Consumable format. If this attribute is defined for use in 2055 the Machine Consumable Notification, then whether this attribute is 2056 REQUIRED or OPTIONAL also depends on the delivery method definition 2057 document. 2059 7.3 Additional Notification content attributes for Job events only 2061 Table 5 lists the additional attributes that are included only in Job 2062 event Notifications and indicates the Printer support required for 2063 conformance: "R" indicates REQUIRED, "O" indicates OPTIONAL, and "CR" 2064 indicates CONDITIONALLY REQUIRED, i.e., REQUIRED in a Notification if 2065 the corresponding Job attributes are supported. Some events do not 2066 include all of these attributes as shown in Table 5. 2068 Table 5 - Additional Notification content attributes for Job events only 2070 Attributes Reference Events 2072 Expires September 8, 2000 2073 'job- 'job- all 2074 progre complet othe 2075 ss' ed' rs 2077 job-state (type1 enum) mod 4.3.7 R R R 2079 job-state-reasons (1setOf type2 mod 4.3.8 R R R 2080 keyword) 2082 job-k-octets (integer(0:MAX)) mod O O 2083 4.3.17.1 2085 job-k-octets-processed (integer(0:MAX)) mod O O 2086 4.3.18.1 2088 job-impressions (integer(0:MAX)) mod O O 2089 4.2.17.2 2091 job-impressions-completed mod CR CR 2092 (integer(0:MAX)) 4.3.18.2 2094 impressions-completed-current-copy [ipp- R 2095 (integer(0:MAX)) prog] 2097 job-media-sheets (integer(0:MAX)) mod O O 2098 4.3.17.3 2100 job-media-sheets-completed mod CR CR 2101 (integer(0:MAX)) 4.3.18.3 2103 job-collation-type (type2 enum) [ipp- R 2104 prog] 2106 sheet-completed-copy-number [ipp- R 2107 (integer(0:MAX)) prog] 2109 sheet-completed-document- [ipp- R 2110 number(integer(0:MAX)) prog] 2112 7.4 Additional Notification content attributes for Printer events only 2114 Table 6 lists the additional attributes that are included only in 2115 Printer event Notifications and indicates the Printer support required 2116 for conformance: 2118 Table 6 - Additional Notification content attributes for Printer events 2119 only 2121 Attributes Reference Events 2123 all printer 2124 events 2126 Expires September 8, 2000 2128 Attributes Reference Events 2130 all printer 2131 events 2133 printer-state (type1 enum) mod 4.4.11 REQUIRED 2135 printer-state-reasons (1setOf type2 keyword) mod 4.4.12 REQUIRED 2137 printer-is-accepting-jobs (boolean) mod 4.4.23 REQUIRED 2139 8 Operations for notification 2141 This section defines all of the operations for notification which are 2142 summarized in Table 1 in section 1.1, including the assignment of the 2143 operation-id. 2145 8.1 Operations for Per-Job Subscriptions only 2147 This section defines the operation requests and responses that are 2148 related to Per-Job subscriptions and its Subscription object. Section 2149 8.3 defines the REQUIRED operation requests and responses associated 2150 with the REQUIRED Per-Printer subscription and its Subscription object. 2152 8.1.1 Job Creation Operations (Create-Job, Print-Job, Print-URI) and 2153 Validate-Job 2155 The usual method for a client to associate one subscription with a Job 2156 is to specify the subscription when the job is created. For a Per-Job 2157 Subscription, the client supplies the "job-notify (1setOf collection)" 2158 operation attribute with the member attributes listed in Table 7 with 2159 any of the Job Creation operations (Create-Job, Print-Job, Print-URI), 2160 plus Validate-Job (which doesn't create a job or subscription). If the 2161 client does not supply the "job-notify" attribute in the create 2162 operation, there is no subscription made (either implicitly or 2163 explicitly). 2165 If a Printer does not support this notification specification, then it 2166 MUST ignore the "job-notify" operation attribute and return it in the 2167 response indicated as an attribute that is not supported. See [ipp-mod] 2168 section 3.1.7 for details on returning Unsupported Attributes. 2170 Expires September 8, 2000 2171 Table 7 - Member attributes of the "job-notify" collection operation 2172 attribute 2174 Member attribute of "job-notify" Referen client Printer 2175 collection ce MUST support 2176 supply 2178 notify-recipient (uri) 5.1 yes REQUIRED 2180 notify-events (1setOf type2 keyword) 5.2 no REQUIRED 2182 notify-format (mimeMediaType) 5.3 no REQUIRED 2184 subscriber-user-data (octetString(63)) 5.4 depends on REQUIRED 2185 delivery 2186 method ** 2188 notify-charset (charset) 5.5 no OPTIONAL 2190 notify-natural-language 5.6 no OPTIONAL 2191 (naturalLanguage) 2193 Table 8 shows the "job-notify" (collection) member attributes with their 2194 corresponding "xxx-default" and "xxx-supported" attributes. The Printer 2195 uses the "xxx-default" values if the client omits the member attribute 2196 in the request. The "xxx-supported" attributes are used by the Printer 2197 to validate the request. The client can query to determine supported 2198 values. 2200 Table 8 - "job-notify" supported and default attributes 2202 "job-notify" member "xxx-default", if "xxx-supported" 2203 attribute any 2205 notify-recipient none notify-schemes-supported 2206 (uri) (1setOf uriScheme) 2208 notify-events (1setOf notify-events-supported 2209 notify-events- 2210 type2 keyword) (1setOf type2 keyword) 2211 default (1setOf 2212 max-events-supported 2213 type2 keyword) 2214 (integer(5:MAX)) 2216 notify-format none notify-format-supported 2217 (mimeMediaType) (1setOf mimeMediaType) 2219 subscriber-user-data none none 2220 (octetString(63)) 2222 notify-charset charset-configured charset-supported (1setOf 2223 (charset) (charset) charset) 2225 notify-natural- natural-language- generated-natural-language- 2227 Expires September 8, 2000 2228 "job-notify" member "xxx-default", if "xxx-supported" 2229 attribute any 2231 language configured supported (1setOf 2232 (naturalLanguage) (naturalLanguage) naturalLanguage) 2234 See the referenced sections for a definition of these operation 2235 attributes, since they are copied to the Subscription object as the 2236 Subscription Description attributes described in section 5. 2238 The following rules apply to Per-Job subscriptions created as part of 2239 the Job Creation operations: 2241 1. Any subscription can contain job events, printer events, or both. 2243 2. The Job Submission Subscription is only valid while the job is "not- 2244 completed". The job is "not-completed" while it is in the 2245 'pending', 'pending-held', 'processing', and 'processing-stopped' 2246 states. The job changes from being "not-completed" to "retained" 2247 when it is done processing and enters any of the 'completed', 2248 'canceled', or 'aborted' states. The job becomes "not-completed" 2249 again when it is restarted using the Restart-Job operation (see 2250 [ipp-mod]). 2252 3. Since no job is created for the Validate-Job operation, the only 2253 purpose of supplying the subscription operation attributes in the 2254 Validate-Job operation is to validate that the values are supported; 2255 the Printer object does not establish a notification subscription as 2256 a result of the Validate-Job operation. 2258 4. Since a Job Submission Subscription is included within a job 2259 submission operation, any interest in job events is limited to "this 2260 job" only (the Job object created because of this job creation 2261 operation). There is no mechanism to subscribe to events for all 2262 jobs or specifically some job other than this job in a create 2263 operation. But see the Create-Printer-Subscription operation 2264 (section 8.2.1) for an explicit operation to subscribe for job 2265 and/or printer events independently of any particular job 2266 submission, i.e., Per-Printer subscriptions. 2268 5. Event reporting only occurs when a notification recipient has 2269 specified a subscription to any event(s). 2271 6. The notification implementation MAY allow an administrator to 2272 configure a policy on what events may be dropped. 2274 7. ** The client MUST supply the "subscriber-user-data" 2275 (octetString(63)) attribute, if the definition of the delivery 2276 method specified in the "notify-recipient" attribute REQUIRES the 2277 client to supply it. 2279 8. If the OPTIONAL "notify-charset" attribute is not supported or the 2280 supplied value is not supported, the IPP Printer MUST return the 2281 attribute in the Unsupported Attributes Group but still accept the 2282 operation, as with all Job create operations. In this case, the 2284 Expires September 8, 2000 2285 Printer MUST use the natural language supplied in the "attributes- 2286 charset" Job creation operation attribute, if that natural language 2287 value is supported by the Printer, else the Printer object MUST use 2288 the Printer's "charset-configured" value. See the Print-Job 2289 operation in [ipp-mod]. 2291 9. If the OPTIONAL "notify-natural-language" attribute is not supported 2292 or the supplied value is not supported, the IPP Printer MUST return 2293 the attribute in the Unsupported Attributes Group but still accept 2294 the operation, as with all Job create operations. In this case, the 2295 Printer MUST use the natural language supplied in the "attributes- 2296 natural-language" Job creation operation attribute, if that natural 2297 language value is supported by the Printer, else the Printer object 2298 MUST use the Printer's "natural-language-configured" value. See the 2299 Print-Job operation in [ipp-mod]. 2301 10. If a collection contains other unrecognized, unsupported member 2302 attributes and/or conflicting values, the attribute returned in the 2303 Unsupported Group is a collection containing the unrecognized, 2304 unsupported member attributes, and/or conflicting values. The 2305 Printer MUST return the unrecognized member attributes with the out- 2306 of-band value of 'unsupported'. The Printer MUST return the 2307 unsupported member attributes and conflicting values with their 2308 unsupported values. See [ipp-coll]. 2310 11. If the number of events supplied in the "notify-events" attribute 2311 exceeds the Printer's "max-events-supported" attribute, the Printer 2312 MUST accept the request with the status code 'successful-ok-ignored- 2313 or-substituted-attributes' and return the "job-notify" collection in 2314 the Unsupported Attributes Group with only the "job-events" member 2315 attribute containing the events that exceed the maximum. 2317 12. If the Per-Job subscriptions would exceed the limit of Per-Job 2318 subscriptions supported per job as specified by the Printer's "max- 2319 job-subscriptions-supported" attribute or would exceed some 2320 implementation-defined limit on the total number of Per-Job 2321 subscriptions for the Printer (if any), the Printer MUST accept the 2322 request with the status code 'successful-ok-ignored-subscriptions', 2323 MUST return the "job-notify" attribute in the Unsupported Attributes 2324 Group with only the collection value(s) that represent the excess 2325 subscriptions that are being ignored, and MUST perform the Job 2326 Creation operation (see section 8.1.1), since the job can still be 2327 printed. 2329 13. If the job is accepted and one or more subscriptions are ignored, 2330 the status code returned is 'successful-ok-ignored-subscriptions. 2331 This status code is returned even if other job attributes are 2332 unsupported or in conflict. That is, if an IPP Printer finds a 2333 warning that would allow it to return 'successful-ok-ignored- 2334 subscriptions' and either 'successful-ok-ignored-or-substituted- 2335 attributes' and/or 'successful-ok-conflicting-attributes', it must 2336 return 'successful-ok-ignored-subscriptions'. In other words, the 2337 precedence for returning success codes is: 'successful-ok-ignored- 2338 subscriptions', 'successful-ok-conflicting-attributes', and 2339 'successful-ok-ignored-or-substituted-attributes'. 2341 Expires September 8, 2000 2343 8.1.2Create-Job-Subscription operation 2345 The OPTIONNAL Create-Job-Subscription operation creates a Per-Job 2346 Subscription object . The client can specify one or more job and/or 2347 printer events to be delivered as notifications to one Notification 2348 Recipient. For the Per-Job subscription objects, the Job events are for 2349 this job only. The printer events are any events generated by that 2350 Printer for any job or when no job is involved at all (same as for Per- 2351 Job Subscriptions). 2353 The Printer returns a subscription id and the length of time for which 2354 it has granted a lease for the subscription. 2356 A client can unsubscribe using the Cancel-Subscription operation 2357 (section 8.3.4) and the subscription id. 2359 Two Create-Job-Subscription operations with the same events and same 2360 Notification Recipient MUST be kept as distinct subscriptions and be 2361 assigned distinct subscription ids. A Printer MUST allow such duplicate 2362 subscriptions such that Cancel-Subscription doesn't unsubscribe both 2363 subscriptions and MUST send the Notifications twice to the Notification 2364 Recipient, since the "request-id" is supposed to count monotonically for 2365 each Subscription object. 2367 If the Printer has a bounded set of concurrent Per-Job subscriptions and 2368 the request would exceed that bound, the Printer rejects the operation 2369 and returns the 'client-error-too-many-subscriptions' status code. The 2370 client SHOULD try again later. 2372 Access Rights: To create Per-Job subscription objects, the 2373 authenticated user (see [IPP-MOD] section 8.3) performing this operation 2374 MUST either be the job owner or have operator or administrator access 2375 rights for the Printer object (see [IPP-MOD] sections 1 and 8.5). 2376 Otherwise the IPP object MUST reject the operation and return: the 2377 'client-error-forbidden', 'client-error-not-authenticated', or 'client- 2378 error-not-authorized' status code as appropriate. 2380 Request: 2382 Group 1: Operation Attributes Referencclient MUST Printer 2383 e [ipp- supply support 2384 mod] 2385 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2386 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2387 (naturalLanguage) 2388 "printer-uri" (uri) 3.1.5 yes REQUIRED 2389 "job-id" (integer(1:MAX)) 3.1.5 yes REQUIRED 2390 "job-uri" (uri) 3.1.5 if not REQUIRED 2391 "printer- 2392 uri" and 2393 "job-id" 2394 "requesting-user-name" 8.3 RECOMMENDED REQUIRED 2395 (name(MAX)) 2397 Expires September 8, 2000 2399 Group 2: Subscription Attributes Referen client MUST Printer 2400 ce supply support 2401 "notify-recipient" (uri) 5.1 yes REQUIRED 2402 "notify-events" (1setOf type2 5.2 no REQUIRED 2403 keyword) 2404 "notify-format" (mimeMediaType) 5.3 no REQUIRED 2405 "subscriber-user-data" 5.4 depends on REQUIRED 2406 (octetString(63)) delivery 2407 method 2408 "notify-charset" (charset) 5.5 no OPTIONAL 2409 "notify-natural-language" 5.6 no OPTIONAL 2410 (naturalLanguage) 2411 "notify-persistence-requested" see no OPTIONAL 2412 (boolean) below 2414 Response: 2416 Group 1: Operation Attributes Reference REQUIRED 2417 [ipp-mod] in 2418 response 2419 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2420 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2421 "attributes-natural-language" 3.1.4.2 REQUIRED 2422 (naturalLanguage) 2423 "status-message" (text(255)) 3.1.6.2 OPTIONAL 2424 "detailed-status-message" (text(MAX)) 3.1.6.3 OPTIONAL 2426 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2427 section 3.1.7) unsupported 2428 attributes 2430 Group 3: Subscriptions Attributes Reference REQUIRED 2431 in 2432 response 2433 "subscription-id" (integer(1:MAX)) 5.8 REQUIRED 2434 "notify-persistence-granted" (boolean) 5.13 REQUIRED 2436 Attribute Notes: 2438 "job-id" (integer(1:MAX)) - the client MUST either (1) supply this 2439 attribute, in combination with the "printer-uri" attribute, in 2440 order to create a Per-Job subscription for the Job identified by 2441 the "job-id" value or supply the "job-uri" instead, as with any Job 2442 operation: 2444 "job-uri" (uri) - the client MUST supply this attribute, if the 2445 "printer-uri" and "job-id" are not supplied, in order to identify 2446 the Job to which the Per-Job Subscription is being created. 2448 "notify-recipient" (uri) - the client MUST supply this attribute in 2449 order to have a subscription. 2451 Expires September 8, 2000 2453 "notify-event" (1setOf type2 keyword) - if the client does not supply 2454 this attribute, the Printer populates the "notify-events" 2455 Subscription Description attribute from its "notify-events-default" 2456 Printer Description attribute. 2458 "notify-format" (mimeMediaType) - if the client supplies this attribute, 2459 the value indicates which Human Consumable text format is requested 2460 for use in the Notification using the delivery method that the 2461 client supplies in the "notify-recipient" attribute. If the client 2462 does not supply this attribute, the Machine-Consumable form of the 2463 delivery method that the client supplies in the "notify-recipient" 2464 attribute is used. 2466 "subscriber-user-data" (octetString(63)) - the client MUST supply this 2467 attribute, if the definition of the delivery method specified in 2468 the "notify-recipient" attribute REQUIRES the client to supply it. 2470 "notify-persistence-requested" (boolean) - whether or not the Per-Job 2471 Subscription is to be persistent, i.e., saved across power cycles. 2472 Note: Persistent trap registrations is a client option in SNMPv3 2473 [RFC2573]. 2475 "notify-persistence-granted" (boolean) - whether or not this 2476 Subscription object instance is persistent. This attribute MUST be 2477 returned whether "notify-persistence-requested" is supported or 2478 not, so that the client knows which. 2480 8.2 Operations for Per-Printer Subscriptions only 2482 This section defines the operation requests and responses associated 2483 with the Per-Printer subscription and its Subscription object. 2485 8.2.1 Create-Printer-Subscription operation 2487 The REQUIRED Create-Printer-Subscription operation creates a Per-Printer 2488 Subscription object . The client can specify one or more job and/or 2489 printer events to be delivered as notifications to one Notification 2490 Recipient. For the Per-Printer subscription objects, the job events are 2491 for any job submitted to the Printer. The printer events are any events 2492 generated by that Printer for any job or when no job is involved at all. 2494 The Printer returns a subscription id and the time at which the 2495 subscription lease expires (which may be earlier or later than the 2496 client requested). 2498 The client MUST renew the Per-Printer subscription using the Renew- 2499 Subscription operation (see section 8.3.3) before the lease runs out in 2500 order to maintain the subscription. A client can unsubscribe using the 2501 Cancel-Subscription operation (section 8.3.4) and the subscription id. 2503 Two Create-Printer-Subscription operations with the same events and same 2504 Notification Recipient MUST be kept as distinct subscriptions and be 2505 assigned distinct subscription ids. A Printer MUST allow such duplicate 2507 Expires September 8, 2000 2508 subscriptions such that Cancel-Subscription doesn't unsubscribe both 2509 subscriptions and MUST send the Notifications twice to the Notification 2510 Recipient, since the "request-id" is supposed to count monotonically for 2511 each subscription. 2513 If the Printer has a bounded set of concurrent Per-Printer subscriptions 2514 and the request would exceed that bound, the Printer rejects the 2515 operation and returns the 'client-error-too-many-subscriptions' status 2516 code. The client SHOULD try again later. 2518 Access Rights: To create Per-Printer subscription objects, the 2519 authenticated user performing this operation MUST have Per-Printer 2520 subscription rights for this Printer. Otherwise the IPP object MUST 2521 reject the operation and return: the 'client-error-forbidden', 'client- 2522 error-not-authenticated', or 'client-error-not-authorized' status code 2523 as appropriate. 2525 Request: 2527 Group 1: Operation Attributes Referen client Printer 2528 ce MUST support 2529 [ipp- supply 2530 mod] 2531 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2532 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2533 (naturalLanguage) 2534 "printer-uri" (uri) 3.1.5 yes REQUIRED 2535 "requesting-user-name" 8.3 RECOMMEND REQUIRED 2536 (name(MAX)) ED 2538 Expires September 8, 2000 2540 Group 2: Subscription Attributes Referen client Printer 2541 ce MUST support 2542 supply 2543 "notify-recipient" (uri) 5.1 yes REQUIRED 2544 "notify-events" (1setOf type2 5.2 no REQUIRED 2545 keyword) 2546 "notify-format" (mimeMediaType) 5.3 no REQUIRED 2547 "subscriber-user-data" 5.4 depends REQUIRED 2548 (octetString(63)) on the 2549 delivery 2550 method 2551 "notify-charset" (charset) 5.5 no OPTIONAL 2552 "notify-natural-language" 5.6 no OPTIONAL 2553 (naturalLanguage) 2554 "notify-lease-time-requested" see no REQUIRED 2555 (integer(0:MAX)) below 2556 "notify-persistence-requested" see no OPTIONAL 2557 (boolean) below 2559 Response: 2561 Group 1: Operation Attributes Reference REQUIRED 2562 in 2563 response 2564 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2565 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2566 "attributes-natural-language" 3.1.4.2 REQUIRED 2567 (naturalLanguage) 2568 "status-message" (text(255)) 3.1.6.2 OPTIONAL 2569 "detailed-status-message" (text(MAX)) 3.1.6.3 OPTIONAL 2571 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2572 section 3.1.7) unsupported 2573 attributes 2575 Group 3: Subscription Attributes Reference REQUIRED 2576 in 2577 response 2578 "subscription-id" (integer(1:MAX)) 5.8 REQUIRED 2579 "notify-lease-expiration-time" 5.9 REQUIRED 2580 (integer(0:MAX)) 2581 "notify-server-up-time" (integer(1:MAX)) 5.12 REQUIRED 2582 "notify-persistence-granted" (boolean) 5.13 REQUIRED 2584 Attribute Notes: 2586 "notify-recipient" (uri) - the client MUST supply this attribute in 2587 order to have a subscription. 2589 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 2590 requested for the subscription lease. A value of 0 indicates a 2591 request that the Per-Printer Subscription lease never expire. 2592 Supplying a 0 value MAY require authentication in order to be used, 2594 Expires September 8, 2000 2595 if 0 is supported at all. 2596 If the client does not supply this attribute, the Printer uses its 2597 "notify-lease-time-default" Printer Description attribute value 2598 (see section 6.9). 2600 "notify-event" (1setOf type2 keyword) - if the client does not supply 2601 this attribute, the Printer populates the "notify-events" 2602 Subscription Description attribute from its "notify-events-default" 2603 Printer Description attribute. 2605 "notify-format" (mimeMediaType) - if the client supplies this attribute, 2606 the value indicates which Human Consumable text format is requested 2607 for use in the Notification using the delivery method that the 2608 client supplies in the "notify-recipient" attribute. If the client 2609 does not supply this attribute, the Machine-Consumable form of the 2610 delivery method that the client supplies in the "notify-recipient" 2611 attribute is used. 2613 "subscriber-user-data" (octetString(63)) - the client MUST supply this 2614 attribute, if the definition of the delivery method specified in 2615 the "notify-recipient" attribute REQUIRES the client to supply it. 2617 "notify-persistence-requested" (boolean) - whether or not the Per- 2618 Printer Subscription is to be persistent, i.e., saved across power 2619 cycles. Note: Persistent trap registrations is a client option in 2620 SNMPv3 [RFC2573]. 2622 "notify-lease-expiration-time" (integer(0:MAX)) - The Printer object 2623 MUST return this attribute which is the time in the future at which 2624 the subscription lease will expire, i.e., the "printer-up-time" 2625 value (in time ticks - see [ipp-mod] section 4.4.29) at which the 2626 Printer will delete the Subscription. A value of 0 indicates that 2627 the lease subscription will never expire. 2629 "notify-server-up-time" (integer(1:MAX)) - The Printer object MUST 2630 return this attribute which is an alias for the Printer's "printer- 2631 up-time" Printer Description attribute. The client subtracts this 2632 value from the "notify-lease-expiration-time" value returned in 2633 order to determine the number of second in the future that the 2634 subscription will expire. This computed value may be less than the 2635 requester requested in the "notify-lease-time-requested" if it was 2636 greater than the MAX supported or more than the requester requested 2637 if it was less than the MIN supported, as indicated in the 2638 Printer's "notify-lease-time-supported" (rangeOfInteger(0:MAX)) 2639 attribute (see section 6.8). 2641 "notify-persistence-granted" - whether or not this Subscription object 2642 instance is persistent. This attribute MUST be returned whether 2643 "notify-persistence-requested" is supported or not, so that the 2644 client knows which. 2646 Expires September 8, 2000 2648 8.3 Common Operations for Per-Job and Per-Printer Subscriptions 2650 This section defines the operations that are common to both Per-Job and 2651 Per-Printer subscriptions. 2653 8.3.1 Get-Subscription-Attributes operation 2655 The REQUIRED Get-Subscription-Attributes returns the requested 2656 attributes of the identified Subscription object. See section 5. 2658 Request: 2659 Group 1: Operation Attributes Referen client Printer 2660 ce MUST support 2661 [ipp- supply 2662 mod] 2663 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2664 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2665 (naturalLanguage) 2666 "printer-uri" (uri) 3.1.5 yes REQUIRED 2667 "requesting-user-name" 8.3 RECOMMEND RECOMMEND 2668 (name(MAX)) ED ED 2670 Group 2: Subscription Attributes Referen client Printer 2671 ce MUST support 2672 supply 2674 "subscription-id" 5.8 yes REQUIRED 2675 (integer(1:MAX)) 2676 "requested-attributes" (1setOf see no REQUIRED 2677 type2 keyword) below 2678 Response: 2679 Group 1: Operation Attributes Reference REQUIRED 2680 [ipp-mod] in 2681 response 2682 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2683 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2684 "attributes-natural-language" 3.1.4.2 REQUIRED 2685 (naturalLanguage) 2686 "status-message" (text(255)) 3.1.6.2 OPTIONAL 2687 "detailed-status-message (text(MAX)) 3.1.6.3 OPTIONAL 2689 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2690 section 3.1.7) unsupported 2691 attributes 2693 Group 3: 2696 This operation is similar to the Get-Printer-Attributes operation. 2698 "requested-attributes" (1setOf keyword): The client OPTIONALLY supplies 2699 this attribute. The Printer object MUST support this attribute. 2701 Expires September 8, 2000 2702 It is a set of Subscription attribute names and/or the 'all' 2703 attribute group name in whose values the requester is interested. 2704 This set of attributes is returned for each Job object that is 2705 returned. If the client does not supply this attribute, the 2706 Printer MUST respond as if the client had supplied this attribute 2707 with the value: 'all'. 2709 8.3.2 Get-Subscriptions operation 2711 The REQUIRED Get-Subscriptions operation returns the requested 2712 attributes of the Subscription objects (see section 5). 2714 Request: 2715 Group 1: Operation Attributes Referen client Printer 2716 ce MUST support 2717 [ipp- supply 2718 mod] 2719 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2720 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2721 (naturalLanguage) 2722 "printer-uri" (uri) 3.1.5 yes REQUIRED 2723 "job-id" (integer(1:MAX)) 3.1.5 yes, if REQUIRED 2724 Per-Job 2725 Subscript 2726 ion 2727 "requesting-user-name" 8.3 RECOMMENT RECOMMEND 2728 (name(MAX)) ED ED 2729 "limit" (integer(1:MAX)) see OPTIONAL REQUIRED 2730 below 2731 "requested-attributes" (1setOf see OPTIONAL REQUIRED 2732 type2 keyword) below 2733 "my-subscriptions" (boolean) see OPTIONAL REQUIRED 2734 below 2735 Response: 2736 Group 1: Operation Attributes Reference REQUIRED 2737 [ipp-mod] in 2738 response 2739 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2740 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2741 "attributes-natural-language" 3.1.4.2 REQUIRED 2742 (naturalLanguage) 2743 "status-message" (text) 3.1.6.2 OPTIONAL 2744 "detailed-status-message" (text(MAX)) 3.1.6.3 OPTIONAL 2746 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2747 section 3.1.7) unsupported 2748 attributes 2750 Group 3 to N: 2754 Expires September 8, 2000 2756 Attribute Notes: 2758 This operation is similar to the Get-Jobs operation (see [ipp-mod]). If 2759 the client wants any attributes returned, including the "subscription- 2760 id", it must include the attribute keyword name in the "requested- 2761 attributes" operation attribute. If the "requested-attributes. 2762 operation attribute is omitted, the Printer MUST respond as if the 2763 client supplied the value: 'subscription-id'. 2765 "job-id" (integer(1:MAX)) - If the client supplies this attribute, all 2766 of the Per-Job Subscription objects for the identified job are 2767 candidates for return. It this attribute is omitted, all of the 2768 Per-Printer Subscription objects are candidates for return. 2770 "limit" (integer(1:MAX)): The client OPTIONALLY supplies this 2771 attribute. The Printer object MUST support this attribute. It is 2772 an integer value that determines the maximum number of Subscription 2773 objects that a client will receive from the Printer even if "my- 2774 subscriptions" constrain which subscriptions are returned. The 2775 limit is a "stateless limit" in that if the value supplied by the 2776 client is 'N', then only the first 'N' Subscriptions are returned 2777 in the Get-Subscriptions Response. There is no mechanism to allow 2778 for the next 'M' Subscriptions after the first 'N' Subscriptions. 2779 If the client does not supply this attribute, the Printer object 2780 responds with all applicable Subscriptions. 2782 "requested-attributes" (1setOf keyword): The client OPTIONALLY supplies 2783 this attribute. The Printer object MUST support this attribute. 2784 It is a set of Subscription attribute names and/or the 'all' 2785 attribute group name in whose values the requester is interested. 2786 This set of attributes is returned for each Job object that is 2787 returned. If the client does not supply this attribute, the 2788 Printer MUST respond as if the client had supplied this attribute 2789 with the value: 'all'. 2791 "my-subscriptions" (boolean): The client OPTIONALLY supplies this 2792 attribute. The Printer object MUST support this attribute. It 2793 indicates whether Subscriptions from all users or just the 2794 Subscriptions submitted by the requesting user of this request MUST 2795 be returned by the Printer object. If the client does not supply 2796 this attribute, the Printer object MUST respond as if the client 2797 had supplied the attribute with a value of 'false', i.e., 2798 Subscriptions from all users. The means for authenticating the 2799 requesting user and matching the Subscription objects is the same 2800 as for jobs as described in [ipp-mod] section 8. 2802 Groups 3 to N: Subscription Object Attributes: The Printer object 2803 responds with one set of Subscription Object Attributes for each 2804 returned Subscription object. The Printer object ignores (does not 2805 respond with) any requested attribute or value which is not 2806 supported or which is restricted by the security policy in force, 2807 including whether the requesting user is the user that created the 2808 Subscription object (subscribing user) or not (see [ipp-mod] 2809 section 8). 2811 Expires September 8, 2000 2813 8.3.3 Renew-Subscription operation 2815 The REQUIRED Renew-Subscription operation permits a client to request 2816 the IPP Printer to extend the lease on a Subscription object instance. 2817 There is no way to renew a Per-Job subscription, since they are 2818 automatically canceled after the job completes and no longer has any 2819 documents, i.e., the job is no longer retained (see [ipp-mod] section 2820 4.3.7.2). If the requested subscription object is a Per-Job 2821 subscription, the Printer MUST grant an infinite lease by returning a 0 2822 value for the "notify-lease-expiration-time". 2824 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2825 performing this operation MUST either be the owner of the Subscription 2826 object or have operator or administrator access rights for the Printer 2827 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2828 MUST reject the operation and return: the 'client-error-forbidden', 2829 'client-error-not-authenticated', or 'client-error-not-authorized' 2830 status code as appropriate. 2832 Request: 2834 Group 1: Operation Attributes Referen client Printer 2835 ce MUST support 2836 [ipp- supply 2837 mod] 2838 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2839 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2840 (naturalLanguage) 2841 "printer-uri" (uri) 3.1.5 yes REQUIRED 2842 "requesting-user-name" 8.3 RECOMMEND RECOMMEND 2843 (name(MAX)) ED ED 2845 Group 2: Subscription Attributes Referen client Printer 2846 ce MUST support 2847 supply 2848 "subscription-id" 5.8 yes REQUIRED 2849 (integer(1:MAX)) 2850 "notify-lease-time-requested" see no REQUIRED 2851 (integer(0:MAX)) below 2853 Response: 2855 Group 1: Operation Attributes Reference REQUIRED 2856 [ipp-mod] in 2857 response 2858 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2859 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2860 "attributes-natural-language" 3.1.4.2 REQUIRED 2861 (naturalLanguage) 2862 "status-message" (text(255)) 3.1.6.2 OPTIONAL 2863 "detailed-status-message" (text(MAX)) 3.1.6.3 OPTIONAL 2865 Expires September 8, 2000 2867 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2868 section 3.1.7) unsupported 2869 attributes 2871 Group 3: Subscriptions Attributes Reference REQUIRED 2872 in 2873 response 2874 "notify-lease-expiration-time" 5.9 REQUIRED 2875 (integer(0:MAX)) 2876 "notify-server-up-time" (integer(1:MAX)) 5.12 REQUIRED 2878 Attribute Notes: 2880 "notify-lease-time-requested" (integer(0:MAX) - the number of seconds 2881 requested for the Per-Printer subscription lease. Same as Create- 2882 Printer-Subscriptions (see section 8.2.1). 2884 "notify-lease-expiration-time" - the time in the future when the 2885 subscription will expire. Same as for the Create-Printer- 2886 Subscription operation (see section 8.2.1). 2888 "notify-server-up-time" - the Printer object MUST return this attribute 2889 which is an alias for the Printer's "printer-up-time" Printer 2890 Description attribute. The client subtracts this value from the 2891 "notify-lease-expiration-time" value returned in order to determine 2892 the number of second in the future that the subscription will 2893 expire (see further explanation in section 8.2.1). 2895 Note: There is no way to change any of the Subscription object 2896 attributes, except the "notify-lease-expiration-time" attribute (using 2897 the Renew-Subscription operation). In order to change other attributes, 2898 a client can create a new Subscription object and then use the Cancel- 2899 Subscription operation to cancel the old one (or do this in the other 2900 order, in case there is a limit on the number of Subscription object 2901 instances, as long as a short window with no Notifications is ok). 2903 Note: There is no need to renew a Per-Job Subscription, since it is 2904 effectively the time that the Job is active (see section 8.1). 2906 8.3.4 Cancel-Subscription operation 2908 The REQUIRED Cancel- Subscription operation allows a client to remove a 2909 Subscription object. No more Notifications are delivered for that 2910 Subscription. Once performed, there is no way to use that Subscription 2911 in the future. Subscription-ids should not be reused immediately, so 2912 that a stale reference situation is not created. Same as for Cancel-Job 2913 and job-ids. 2915 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2916 performing this operation MUST either be the owner of the Subscription 2917 object or have operator or administrator access rights for the Printer 2918 object (see [IPP-MOD] sections 1 and 8.5). Otherwise the IPP object 2920 Expires September 8, 2000 2921 MUST reject the operation and return: the 'client-error-forbidden', 2922 'client-error-not-authenticated', or 'client-error-not-authorized' 2923 status code as appropriate. 2925 Request: 2926 Group 1: Operation Attributes Referen client Printer 2927 ce MUST support 2928 [ipp- supply 2929 mod] 2930 "attributes-charset" (charset) 3.1.4.1 yes REQUIRED 2931 "attributes-natural-language" 3.1.4.1 yes REQUIRED 2932 (naturalLanguage) 2933 "printer-uri" (uri) 3.1.5 yes REQUIRED 2934 "requesting-user-name" 8.3 RECOMMEND RECOMMEND 2935 (name(MAX)) ED ED 2937 Group 2: Subscription Attributes Referen client Printer 2938 ce MUST support 2939 supply 2940 "subscription-id" 5.8 yes REQUIRED 2941 (integer(1:MAX)) 2942 Response: 2943 Group 1: Operation Attributes Reference REQUIRED 2944 [ipp-mod] in 2945 response 2946 "status-code" (type2 enum) 3.1.6.1 REQUIRED 2947 "attributes-charset" (charset) 3.1.4.2 REQUIRED 2948 "attributes-natural-language" 3.1.4.2 REQUIRED 2949 (naturalLanguage) 2950 "status-message" (text(255)) 3.1.6.2 OPTIONAL 2951 "detailed-status-message" (text(MAX)) 3.1.6.3 OPTIONAL 2953 Group 2: Unsupported Attributes (see [ipp-mod] REQUIRED if 2954 section 3.1.7) unsupported 2955 attributes 2957 9 Comparison of Per-Job versus Per-Printer Subscriptions 2959 Per-Job and Per-Printer subscriptions are quite similar. Either type of 2960 subscription can subscribe to Job events, Printer events, or both. Both 2961 types of subscriptions can be queried using the Get-Subscriptions and 2962 Get-Subscription-Attributes operations and canceled using the Cancel- 2963 Subscription operation. Both types of subscriptions create Subscription 2964 objects which have the same attributes defined. However, there are some 2965 semantic differences between Per-Job subscriptions and Per-Printer 2966 subscriptions. A Per-Job Submission Subscription is established by the 2967 client when submitting a job and after creating the job using the 2968 Create-Job-Subscription operation by specifying the "job-id" of the job. 2969 A Per-Printer Subscription is established between a client and a 2971 Expires September 8, 2000 2972 Printer using the Create-Printer-Subscription operation. Some specific 2973 differences are: 2975 1.A client usually creates a Per-Job subscription as part of the Job 2976 Creation operations (Create-Job, Print-Job, and Print-URI), rather 2977 than using the OPTIONAL Create-Job-Subscription operation, especially 2978 since Printer implementations NEED NOT support the Create-Job- 2979 Subscription operation, since it is OPTIONAL. 2981 2.For Per-Job subscriptions, the subscription is only valid while the 2982 job is "not-complete" (see sections 7.2 and 7.3) while for the Per- 2983 Printer subscriptions, the subscription is valid until the time (in 2984 seconds) that the Printer returned in the "notify-lease-expiration- 2985 time" operation attribute expires. 2987 3.Job Events in a Per-Job subscription apply only to "one job" (the Job 2988 created by the job creation operation or references by the Create- 2989 Job-Subscription operation) while Job Events in a Per-Printer 2990 subscription apply to ALL jobs contained in the IPP Printer object. 2992 10 Out of Band Values 2994 This section defines out-of-band values (see [ipp-mod] section 4.1) for 2995 use with attributes defined in this and other documents. 2997 10.1'none' 2999 This out-of-band value permits a client to indicate in a request that a 3000 specified attribute in the request MUST NOT be applied to the job. 3001 Specifically, this value overrides the Printer's "xxx-default" attribute 3002 value for the attribute, if one exists. This out-of-band value is 3003 needed since attributes that are of the 'collection', 'uri', and 3004 'mimeMediaType' type need a way for a client to specify that the Printer 3005 MUST NOT apply the value of an "xxx-default" attribute to the job. See 3006 [ipp-coll] for a complete specification, including encoding. 3008 11 Conformance Requirements 3010 It is OPTIONAL to implement this Event Notification specification. An 3011 implementation conforming to this specification MUST also meet the 3012 Conformance Requirements detailed in [IPP-MOD] section 5. If this Event 3013 Notification specification is implemented, IPP objects MUST support all 3014 of the REQUIRED object attributes as defined in this document in the 3015 indicated sections: 3017 1.REQUIRED Subscription object attributes in section 5. 3019 2.REQUIRED Printer Description object attributes in section 6. 3021 3.REQUIRED attributes in Notification content in section 7. 3023 Expires September 8, 2000 3025 In addition, the Printer MUST support the 'collection' attribute syntax 3026 (see [ipp-coll]). 3028 Extensions made to the events herein must be made such that new events 3029 or event attributes are backward compatible to clients who implemented 3030 early versions of this notification specification. 3032 If this Event Notification specification is implemented, the operations 3033 described in section 8 MUST be supported as described in Table 9: 3035 Table 9 - Conformance Requirements for Operations 3037 Attribute Conformance 3038 requirements 3039 "job-notify" (1setOf collection) in Job REQUIRED 3040 Creation operations (section 8.1.1) 3041 Create-Printer-Subscription (section 8.2.1) REQUIRED 3042 Create-Job-Subscription (section 8.1.2) OPTIONAL 3043 Get-Subscription-Attributes (section 8.3.1) REQUIRED 3044 Get-Subscriptions (section 8.3.2) REQUIRED 3045 Renew-Subscription (section 8.3.3) REQUIRED 3046 Cancel-Subscription (section 8.3.4) REQUIRED 3048 12 IANA Considerations 3050 IANA will be called on to register URL schemes for notification delivery 3051 methods, such as 'snmpnotify', for use in the "notification-recipient" 3052 attribute, using the same procedures outlined in [ipp-mod]. 3054 13 Internationalization Considerations 3056 This IPP notification specification continues the internationalization 3057 of [ipp-mod] for attributes containing text strings and names. A 3058 subscribing client can specify a different natural language and charset 3059 for each Notification content delivered to a Notification Recipient. 3061 The Human Consumable Notification content is a 'text/plain; charset=utf- 3062 8' by default where the Notification Sender has localized the text 3063 message as requested by the subscriber for the intended Notification 3064 Recipient. 3066 14 Security Considerations 3068 By far the biggest security concern is the abuse of notification: 3069 sending unwanted notifications to third parties (i.e., spam). The 3070 problem is made worse by notification addresses that may be 3071 redistributed to multiple parties (e.g. mailing lists). There exist 3072 scenarios where third party notification is required (see Scenario #2 3073 and #3 in [ipp-not-req]). The fully secure solution would require 3074 active agreement of all recipients before sending out anything. 3075 However, requirement #9 in [ipp-req] (.There is no requirement for IPP 3077 Expires September 8, 2000 3078 Printer receiving the print request to validate the identity of an event 3079 recipient.) argues against this. Certain systems may decide to disallow 3080 third party notifications (a traditional fax model). 3082 Clients submitting notification requests to the IPP Printer has the same 3083 security issues as submitting an IPP/1.1 print job request. The same 3084 mechanisms used by IPP/1.1 can therefore be used by the client 3085 notification submission. Operations that require authentication can use 3086 the HTTP authentication. Operations that require privacy can use the 3087 HTTP/TLS privacy. 3089 The notification access control model should be similar to the IPP 3090 access control model for Jobs. Creating a Per-Printer Notification 3091 Subscription object is associated with a user. Only the creator or an 3092 operator can cancel the subscription. The system may limit the listing 3093 of items to only those items owned by the user. Some subscriptions 3094 (e.g. those that have a lifetime longer than a job) can be done only by 3095 privileged users (users having operator and/or administrator access 3096 rights), if that is the authorization policy. 3098 The standard security concerns (delivery to the right user, privacy of 3099 content, tamper proof content) apply to the notification delivery. IPP 3100 should use the security mechanism of the delivery method used. Some 3101 delivery mechanisms are more secure than others. Therefore, sensitive 3102 notifications should use the delivery method that has the strongest 3103 security. 3105 15 Status Codes 3107 The following status codes are defined as extensions for notification: 3109 15.1'successful-ok-ignored-subscriptions' (0x0003) 3111 The number of subscriptions supplied in a Job Creation operation 3112 (Create-Job, Print-Job, Print-URI) exceeds either the limit of Per-Job 3113 subscriptions supported per job as specified by the Printer's "max-job- 3114 subscriptions-supported" attribute or some implementation-defined limit 3115 on the total number of Per-Job subscriptions for the Printer (if any). 3116 The Printer MUST accept the request with this status code, MUST return 3117 the "job-notify" attribute in the Unsupported Attributes Group with only 3118 the collection value(s) that represent the excess subscriptions that are 3119 being ignored, and MUST perform the Job Creation operation (see section 3120 8.1.1), since the job can still be printed. 3122 This status code is returned even if other job attributes are 3123 unsupported or in conflict. That is, if an IPP Printer finds a warning 3124 that would allow it to return 'successful-ok-ignored-subscriptions' and 3125 either 'successful-ok-ignored-or-substituted-attributes' and/or 3126 'successful-ok-conflicting-attributes', it must return 'successful-ok- 3127 ignored-subscriptions'. In other words, the precedence for returning 3128 success codes is: 'successful-ok-ignored-subscriptions', 'successful-ok- 3130 Expires September 8, 2000 3131 conflicting-attributes', and 'successful-ok-ignored-or-substituted- 3132 attributes'. 3134 15.2client-error-uri-notification-scheme-not-supported (0x0414) 3136 The scheme of the client-supplied URI in a "notify-recipient" operation 3137 attribute in a Create-Printer-Subscription or Create-Printer- 3138 Subscription operation is not supported. See [ipp-mod] section 3.1.7. 3140 There is no corresponding Per-Job subscription error for a Job Creation 3141 operation, since the Printer object MUST ignore any errors in the "job- 3142 notify" operation attribute, MUST return the "notify-recipient" 3143 attribute in the Unsupported Attributes Group, and perform the Job 3144 Creation operation (see section 8.1.1), since the job can still be 3145 printed. 3147 15.3client-error-too-many-subscriptions (0x0415) 3149 The bounded set of concurrent Per-Printer subscriptions supported by the 3150 Printer object would be exceeded if this Create-Printer-Subscription 3151 request were accepted or the bounded set of concurrent Per-Job 3152 subscriptions supported by the Printer object would be exceeded if this 3153 Create-Job-Subscriptions request were accepted. 3155 Note: There is no corresponding Per-Job subscription error on a Job 3156 Creation operation, since the Printer object MUST ignore any errors in 3157 the "job-notify" operation attribute and perform the Job Creation 3158 operation (see section 8.1.1), since the job can still be printed. 3160 15.4client-error-too-many-events (0x0416) 3162 The client supplied more events in the "notify-events" operation 3163 attribute in a Create-Job-Subscription or Create-Printer-Subscription 3164 operation than the Printer supports, as indicated in its "max-events- 3165 supported" attribute (see section 6.4). 3167 There is no corresponding Per-Job subscription error for a Job Creation 3168 operation, since the Printer object MUST ignore any errors in the "job- 3169 notify" operation attribute, MUST return the "notify-events" attribute 3170 in the Unsupported Attributes Group with only the excess events that are 3171 being ignored, and perform the Job Creation operation (see section 3172 8.1.1), since the job can still be printed. 3174 16 Addition attribute tag encodings 3176 The Subscription attributes tag and the Notification attributes tag are 3177 assigned the following delimiter tag values as extensions to the 3178 encoding defined in [ipp-pro]) for use in requests and responses to 3179 delimit Subscription object attribute Groups and Notification Content 3180 attribute Groups: 3182 Expires September 8, 2000 3183 Tag Value (Hex) Delimiter 3185 0x06 subscription-attributes-tag 3186 0x07 notification-attributes-tag 3188 17 References 3190 [ipp-coll] 3191 deBry, R., , Hastings, T., Herriot, R., "Internet Printing 3192 Protocol/1.0 & 1.1: collection attribute syntax", , work in progress, February 22, 2000. 3195 [ipp-mod] 3196 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 3197 "Internet Printing Protocol/1.1: Model and Semantics", < draft- 3198 ietf-ipp-model-v11-06.txt>, work in progress, March 1, 2000. 3200 [ipp-not-hist] 3201 deBry, R., Lewis, H., Hastings, T., "Internet Printing 3202 Protocol/1.1: Change History for IPP Notifications", , work in progress, August 22, 1999. 3205 [ipp-method-indp] 3206 Parra, H., Hastings, T., "Internet Printing Protocol (IPP): The 3207 INDP Event Notification Delivery Method", , work in progress, March 8, 2000. 3210 [ipp-method-ipp] 3211 Manros, C., Hastings, T., Herriot, R., Lewis, H., "Internet 3212 Printing Protocol (IPP): The 'ipp' Notification Delivery Polling 3213 Method", , work in progress, 3214 March 8, 2000. 3216 [ipp-method-mailto] 3217 Holst, H. and Hastings, T., "Internet Printing Protocol (IPP): The 3218 'mailto' Notification Delivery Method", , work in progress, March 9, 2000. 3221 [ipp-method-snmp] 3222 McDonald, I., Hastings, T., "Internet Printing Protocol (IPP): 3223 Notifications over SNMP", , 3224 work in progress, December 1, 1999. 3226 [ipp-not-req] 3227 deBry, R., Lewis, H., Hastings, T., "Internet Printing 3228 Protocol/1.1: Requirements for IPP Notifications", , work in progress, August 11, 1999. 3231 [ipp-pro] 3232 Herriot, R., Butler, S., Moore, P., Tuner, R., "Internet Printing 3233 Protocol/1.1: Encoding and Transport", , work in progress, March 1, 2000. 3236 Expires September 8, 2000 3238 [ipp-prog] 3239 Hastings, T., Bergman, R., Lewis, H., "Proposed Job Progress 3240 Attributes for IPP", work in 3241 progress, February 2, 2000. 3243 [ipp-set] 3244 Kugler, C., , Hastings, T., Herriot, R., Lewis, H, "Internet 3245 Printing Protocol (IPP): Job and Printer Set Operations", , work in progress, March 8, 3247 2000. 3249 [ipp-set2] 3250 Kugler, C., , Hastings, T., Lewis, H, "Internet Printing Protocol 3251 (IPP): Additional Operations, Set 2", , work in progress, February 3, 2000. 3254 [RFC1866] 3255 Berners-Lee, T., Connolly, D., "Hypertext Markup Language - 2.0", 3256 RFC 1866, November 1995. 3258 [RFC2046] 3259 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. 3260 N. Freed & N. Borenstein. November 1996. (Obsoletes RFC1521, 3261 RFC1522, RFC1590), RFC 2046. 3263 [RFC2119] 3264 S. Bradner, "Key words for use in RFCs to Indicate Requirement 3265 Levels", RFC 2119 , March 1997 3267 [RFC2279] 3268 F. Yergeau , "UTF-8, a transformation format of ISO 10646", RFC 3269 2279. January 1998. 3271 [RFC2302] 3272 Parsons, G., et. al., "Tag Image File Format (TIFF) - 3273 image/tiff", RFC 2302, March 1998. 3275 [RFC2376] 3276 Whitehead, E., Murata, M., "XML Media Types", RFC 2376, July 1998. 3278 [RFC2566] 3279 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 3280 "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, 3281 April 1999. 3283 [RFC2567] 3284 Wright, D., "Design Goals for an Internet Printing Protocol", RFC 3285 2567, April 1999. 3287 [RFC2568] 3288 Zilles, S., "Rationale for the Structure and Model and Protocol for 3289 the Internet Printing Protocol", RFC 2568, April 1999. 3291 Expires September 8, 2000 3293 [RFC2569] 3294 Herriot, R., Hastings, T., Jacobs, N., Martin, J., "Mapping between 3295 LPD and IPP Protocols", RFC 2569, April 1999. 3297 18 Author's Addresses 3299 Scott A. Isaacson (Editor) 3300 Novell, Inc. 3301 122 E 1700 S 3302 Provo, UT 84606 3304 Phone: 801-861-7366 3305 Fax: 801-861-2517 3306 e-mail: sisaacson@novell.com 3308 Tom Hastings 3309 Xerox Corporation 3310 737 Hawaii St. ESAE 231 3311 El Segundo, CA 90245 3313 Phone: 310-333-6413 3314 Fax: 310-333-5514 3315 e-mail: hastings@cp10.es.xerox.com 3317 Roger deBry 3318 Utah Valley State College 3319 Orem, UT 84058 3321 Phone: (801) 222-8000 3322 EMail: debryro@uvsc.edu 3324 Jay Martin 3325 e-mail: jkm@underscore.com 3327 Michael Shepherd 3328 Xerox Corporation 3329 800 Phillips Road MS 128-51E 3330 Webster, NY 14450 3332 Phone: 716-422-2338 3333 Fax: 716-265-8871 3334 e-mail: mshepherd@crt.xerox.com 3336 Ron Bergman (Editor) 3337 Hitachi Koki Imaging Solutions 3338 1757 Tapo Canyon Road 3339 Simi Valley, CA 93063-3394 3341 Phone: 805-578-4421 3342 Fax: 805-578-4001 3343 Email: rbergma@hitachi-hkis.com 3345 Expires September 8, 2000 3347 A. Appendix: Change History 3349 This section summarizes the changes to the document. Each sub-section 3350 is in reverse chronological order. Adding or removing ISSUES that don't 3351 change the document are not listed here. 3353 18.1Changes to the March 6, 2000 version to create the March 8, 2000 3354 version 3356 The following changes were made to the March 6, 2000 version to create 3357 the March 8, 2000 version based on the agreements reached on the mailing 3358 list: 3360 1.Changed the name of the SNMP delivery method from 'snmp' to 3361 'snmpnotify', since the Notification Recipient isn't an SNMP agent. 3363 2.Clarified that an implementation with only a single value for 3364 persistent-jobs-supported (boolean) or persistent-subscriptions- 3365 supported (boolean) MAY make it settable to the single value or make 3366 it not-settable. 3368 18.2Changes to the February 2, 2000 version to create the March 6, 2000 3369 version 3371 The following changes were made to the February 2, 2000 version to 3372 create the March 6, 2000 version based on the agreements reached on the 3373 mailing list, at the February IPP WG meetings, and reflected in the 3374 minutes: 3376 1.Clarified that this extension is intended as an extension to IPP/1.0, 3377 IPP/1.1, and future versions. 3379 2.Allocated the operation-id 0x0016 to 0x001B values for the 3380 Notification operations defined in the document. 3382 3.Pre-pended the word "subscription-" on the front of the "request-id" 3383 Subscription object attribute to distinguish it from the "request-id" 3384 parameter that is sent in every request and response. 3386 4.Added the term "settable" for describing attributes that are not 3387 READ-ONLY. 3389 5.Added the term "Subscription Creation operation" to stand for any 3390 operation that can create a Subscription object: Job Creation 3391 operations (Create-Job, Print-Job, and Print-URI), Create-Job- 3392 Subscription, and Create-Printer-Subscription. 3394 6.Changed the "subscriber-user-name" (name(MAX)) Subscription object 3395 attribute from OPTIONAL to REQUIRED. 3397 7.Changed the name and semantics of "notify-printer-up- 3398 time(integer(1:MAX)) to notify-server-up-time so that it can be 3400 Expires September 8, 2000 3401 either the Printer's uptime or a Notification Delivery Service 3402 uptime. 3404 8.Added the 'ipp:', 'indp:', 'mailto:, and 'snmp:' notification 3405 delivery schemes to the definition of the "notify-recipients" to 3406 indicate possible schemes. 3408 9.Changed the name and semantics of "notify-text-format" 3409 (mimeMediaType) to "notify-format" so that it can be used to specify 3410 either Human Consumable or Machine Consumable formats where the 3411 implementation supports both. Clarified that this attribute controls 3412 whatever variable Notification Content that the implementation 3413 supports, which may be an attachment to the fixed content format or 3414 the contents of the "human-readable-report" (text(MAX)) attribute. 3415 Clarified that an implementation NEED NOT support all of its 3416 supported Notification Content formats with all of its supported 3417 delivery methods. 3419 10. Added 'text/xml', 'application/ipp', 'application/postscript', and 3420 'image/tiff' and additional example MIME media types for "notify- 3421 format" (mimeMediaType). 3423 11. Clarified that the recommend way for a client to determine whether 3424 or not a Printer supports Per-Job Subscriptions is to query the 3425 Printer's "max-job-subscriptions-supported" attribute, since Create- 3426 Job-Subscriptions is an OPTIONAL operation. 3428 12. Clarified that the recommend way for a client to determine whether 3429 or not a Printer supports Per-Printer Subscriptions is to query the 3430 Printer's "operations-supported" attribute to see if the Create- 3431 Printer-Subscriptions operations is supported, since this is the 3432 usual way to determine a Printer's capabilities. 3434 13. Clarified that if "persistent-jobs-supported" (boolean) and 3435 "persistent-subscriptions-supported" (boolean) are settable, then 3436 setting them must affect whether or not jobs and subscriptions are 3437 persistent. 3439 14. Allowed delivery methods to send operations with or without a 3440 response, depending on the definition of the delivery method. 3442 15. Indicated that a deliver method definition is free to REQUIRE that 3443 the client supply the "subscriber-user-data" attribute. 3445 16. Required that the Printer support the "job-uri" operation attribute 3446 as a target, in addition to "printer-uri"&"job-id", i.e., keep 3447 consistent with all Job operations. 3449 17. Changed the 'none' out-of-band value to be a reference to the 3450 collection document [ipp-coll], since the use for it in this document 3451 is with the 'collection' attribute syntax. 3453 Expires September 8, 2000 3455 18. Clarified that a conforming implementation MUST support the 3456 'collection' attribute syntax, since that is required in Job Creation 3457 operations. 3459 19. Allocated the values to the new status codes defined in this 3460 document. 3462 20. Allocated the [ipp-pro] subscription-attributes-tag and 3463 notification-attributes-tag delimiter tags to delimit Subscription 3464 attributes and Notification Content attributes in requests and 3465 responses. 3467 21. Changed the 'server-error-too-many-subscriptions' and 'server- 3468 error-too-many-events' to be client errors, i.e., 'client-error-too- 3469 many-subscriptions' and 'client-error-too-many-events', since other 3470 errors of this type are client errors. 3472 18.3Changes to the October 14, 1999 version to create the February 2, 3473 2000 version 3475 The following changes were made to the October 14, 1999 version to 3476 create the February 2, 2000 version based on the agreements reached at 3477 the October and December IPP WG meetings and reflected in the minutes: 3479 1.Added a Java Listener as an example of a Notification Recipient. 3481 2.Clarified the object relationships in section 4.1. 3483 3.Clarified how job events differ for Per-Job versus Per-Printer 3484 Subscriptions. 3486 4.Added the ability for the Machine Consumable form to contain a Human 3487 Readable "human-readable-report" (text) attribute so that both forms 3488 could be sent in the same Notification. 3490 5.Clarified that the 'none' value for notify-text-format 3491 (mimeMediaType) has to be out-of-band, not the text string 'none' as 3492 a mimeMediaType. 3494 6.Clarified that 'none' means send the Machine Consumable form without 3495 the "human-readable-report" (text) attribute, if it is defined. 3497 7.Clarified that Notification Recipients MUST be able to accept 3498 unrecognized attributes. 3500 8.Allowed the notification delivery method definition to be modeled as 3501 (1) a request with an operation code without a response, (2) a 3502 request with a operation code with a response or (3) a response with 3503 a status code. 3505 Expires September 8, 2000 3507 9.Added "notify-text-format" (mimeMediaType) and "human-readable- 3508 report" (text(MAX)) to be able to be sent in a Notification content, 3509 if the notification delivery method document permits it. 3511 10. Added "job-k-octets" (integer(0:MAX)), "job-impressions" 3512 (integer(0:MAX)), and "job-media-sheets" (integer(0:MAX)) as OPTIONAL 3513 for Notification content for use in job-progress events to show the 3514 target values so that the Notification Recipient can show a 3515 thermometer. 3517 11. Added a Subscription Attributes group (and subscription-attributes 3518 tag) the Create-Job-Subscription and Create-Printer-Subscription 3519 requests and responses. 3521 12. Added the 'none' out-of-band value for use with "notify-text- 3522 format" (mimeMediaType) attribute. 3524 13. Changed the job progress attributes from using -2 to mean 'unknown' 3525 as in the PWG Job Monitoring MIB, to use the 'unknown' out-of-band 3526 value. 3528 Expires September 8, 2000 3530 B. Appendix: Full Copyright Statement 3532 Copyright (C) The Internet Society (1998,1999,2000). All Rights Reserved 3534 This document and translations of it may be copied and furnished to 3535 others, and derivative works that comment on or otherwise explain it or 3536 assist in its implementation may be prepared, copied, published and 3537 distributed, in whole or in part, without restriction of any kind, 3538 provided that the above copyright notice and this paragraph are included 3539 on all such copies and derivative works. However, this document itself 3540 may not be modified in any way, such as by removing the copyright notice 3541 or references to the Internet Society or other Internet organizations, 3542 except as needed for the purpose of developing Internet standards in 3543 which case the procedures for copyrights defined in the Internet 3544 Standards process must be followed, or as required to translate it into 3545 languages other than English. 3547 The limited permissions granted above are perpetual and will not be 3548 revoked by the Internet Society or its successors or assigns. 3550 This document and the information contained herein is provided on an "AS 3551 IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 3552 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 3553 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 3554 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 3555 FITNESS FOR A PARTICULAR PURPOSE. 3557 Expires September 8, 2000