idnits 2.17.1 draft-ietf-ipp-not-spec-03.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. ** The document seems to lack a 1id_guidelines paragraph about Internet-Drafts being working documents. ** The document seems to lack a 1id_guidelines paragraph about 6 months document validity -- however, there's a paragraph with a matching beginning. Boilerplate error? ** 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 73 longer pages, the longest (page 7) being 67 lines 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 2 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 == The "Author's Address" (or "Authors' Addresses") section title is misspelled. == Line 1163 has weird spacing: '...ccepted a Job...' == Line 2244 has weird spacing: '...printer state...' == Line 2470 has weird spacing: '...rameter retur...' == Line 3769 has weird spacing: '...reation opera...' == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The 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. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: If the client supplies an unsupported scheme in the value of this attribute, then the Printer MUST not create the Subscription Object and MUST return the .notify-status-code. attribute with the .client-error-uri-scheme-not-supported. value in the Subscription Attributes Group in the response. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: successful-ok: the Printer created the Job and all Subscription Objects requested. successful-ok-ignored-subscriptions: the Printer created the Job and not all of the Subscription Objects requested. This status-code hides .successful-ok-xxx. status-codes that could reveal problems in Job creation. The Printer MUST not return the .client-error-ignored-all-subscriptions. status code for Job Creation operations because the Printer returns an error status-code only when it fails to create a Job. == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: The Printer MUST accept requests that are identical to the Job Creation request defined in section 11.1.3.1, except that the request MUST not contain document data. -- 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 (June 30, 2000) is 8699 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: 'IPP-MOD' is mentioned on line 3049, but not defined == Missing Reference: 'IPP-PRO' is mentioned on line 63, but not defined == Missing Reference: 'IPP-IIG' is mentioned on line 64, but not defined == Unused Reference: 'RFC2566' is defined on line 3413, but no explicit reference was found in the text == Outdated reference: A later version (-05) exists of draft-iesg-iana-considerations-04 ** 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: 12 errors (**), 0 flaws (~~), 18 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 INTERNET-DRAFT There are 7 issues in this draft R. Herriot (editor) 3 Xerox Corporation 4 T. Hastings 5 Xerox Corporation 6 R. deBry 7 Utah Valley State College 8 S. Isaacson 9 Novell, Inc. 10 J. Martin 11 Underscore 12 M. Shepherd 13 Xerox Corporation 14 R. Bergman 15 Hitachi Koki Imaging Solutions 16 June 30, 2000 17 Internet Printing Protocol (IPP): 18 IPP Event Notification Specification 20 Copyright (C) The Internet Society (2000). All Rights Reserved. 22 Status of this Memo 24 This document is an Internet-Draft and is in full conformance with all 25 provisions of Section 10 of [RFC2026]. Internet-Drafts are working 26 documents of the Internet Engineering Task Force (IETF), its areas, and 27 its working groups. Note that other groups may also distribute working 28 documents as Internet-Drafts. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference material 33 or to cite them other than as .work in progress.. 35 The list of current Internet-Drafts can be accessed at 36 http://www.ietf.org/ietf/1id-abstracts.txt 38 The list of Internet-Draft Shadow Directories can be accessed as 39 http://www.ietf.org/shadow.html. 41 Abstract 43 This document describes an extension to the IPP/1.0, IPP/1.1, and future 44 versions. This extension allows a client to subscribe to printing 45 related Events. Subscriptions are modeled as Subscription Objects. The 46 Subscription Object specifies that when one of the specified Event 47 occurs, the Printer sends an asynchronous Event Notification to the 48 specified Notification Recipient via the specified Delivery Method 49 (i.e., protocol). A client associates Subscription Objects with a 50 particular Job by performing the Create-Job-Subscriptions operation or 51 by submitting a Job with subscription information. A client associates 52 Subscription Objects with the Printer by performing a Create-Printer- 53 Subscriptions operation. Four other operations are defined for 54 Subscription Objects: Get-Subscriptions-Attributes, Get-Subscriptions, 55 Renew-Subscription, and Cancel-Subscription. 57 The full set of IPP documents includes: 59 Design Goals for an Internet Printing Protocol [RFC2567] 60 Rationale for the Structure and Model and Protocol for the Internet 61 Printing Protocol [RFC2568] 62 Internet Printing Protocol/1.1: Model and Semantics [IPP-MOD] 63 Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] 64 Internet Printing Protocol/1.1: Implementer.s Guide [IPP-IIG] 65 Mapping between LPD and IPP Protocols [RFC2569] 67 The .Design Goals for an Internet Printing Protocol. document takes a 68 broad look at distributed printing functionality, and it enumerates 69 real-life scenarios that help to clarify the features that need to be 70 included in a printing protocol for the Internet. It identifies 71 requirements for three types of users: end users, Operators, and 72 Administrators. It calls out a subset of end user requirements that are 73 satisfied in IPP/1.0. Operator and Administrator requirements are out 74 of scope for version 1.0. A few OPTIONAL Operator operations have been 75 added to IPP/1.1. 77 The .Rationale for the Structure and Model and Protocol for the Internet 78 Printing Protocol. document describes IPP from a high level view, 79 defines a roadmap for the various documents that form the suite of IPP 80 specifications, and gives background and rationale for the IETF working 81 group.s major decisions. 83 The .Internet Printing Protocol/1.1: Model and Semantics., describes a 84 simplified model with abstract objects, their attributes, and their 85 operations that are independent of encoding and transport. It introduces 86 a Printer object and a Job object. The Job object optionally supports 87 multiple documents per Job. It also addresses security, 88 internationalization, and directory issues. 90 The .Internet Printing Protocol/1.1: Encoding and Transport. document is 91 a formal mapping of the abstract operations and attributes defined in 92 the model document onto HTTP/1.1. It defines the encoding rules for a 93 new Internet MIME media type called .application/ipp.. This document 94 also defines the rules for transporting over HTTP a message body whose 95 Content-Type is .application/ipp.. This document defines a new scheme 96 named .ipp. for identifying IPP printers and jobs. Finally, this 97 document defines interoperability rules for supporting IPP/1.0 clients. 99 The .Internet Printing Protocol/1.1: Implementer.s Guide. document gives 100 insight and advice to implementers of IPP clients and IPP objects. It 101 is intended to help them understand IPP/1.0 and some of the 102 considerations that may assist them in the design of their client and/or 103 IPP object implementations. For example, a typical order of processing 104 requests is given, including error checking. Motivation for some of the 105 specification decisions is also included. 107 The .Mapping between LPD and IPP Protocols. document gives some advice 108 to implementers of gateways between IPP and LPD (Line Printer Daemon) 109 implementations. 111 Table of Contents 113 1 Introduction.......................................................7 114 1.1 Notification Overview.........................................7 116 2 Models for Notification............................................9 117 2.1 Model for Notification (Simple Case)..........................9 118 2.2 Model for Notification with Cascading Printers...............10 119 2.3 Distributed Model for Notification...........................10 120 2.4 Extended Notification Recipient..............................11 122 3 Terminology.......................................................11 123 3.1 Conformance Terminology......................................11 124 3.2 Other Terminology............................................11 126 4 Object Relationships..............................................13 127 4.1 Printer and Per-Printer Subscription Objects.................13 128 4.2 Printer, Job and Per-Job Subscription Objects................14 130 5 Subscription Object...............................................14 131 5.1 Rules for Support of Subscription Template Attributes........14 132 5.2 Rules for Processing Subscription Template Attributes........15 133 5.3 Subscription Template Attributes.............................18 134 5.3.1 notify-recipient-uri (uri)...............................20 135 5.3.2 notify-events (1setOf type2 keyword).....................20 136 5.3.3 notify-attributes (1setOf type2 keyword).................26 137 5.3.4 notify-user-data (octetString(63)).......................27 138 5.3.5 notify-charset (charset).................................27 139 5.3.6 notify-natural-language (naturalLanguage)................28 140 5.3.7 notify-lease-duration (integer(0:67108863))..............28 141 5.3.8 notify-persistence (boolean).............................29 142 5.4 Subscription Description Attributes..........................30 143 5.4.1 notify-subscription-id (integer (1:MAX))................31 144 5.4.2 notify-sequence-number (integer (0:MAX)).................31 145 5.4.3 notify-lease-expiration-time (integer(0:MAX))............32 146 5.4.4 notify-printer-up-time (integer(1:MAX))..................32 147 5.4.5 notify-printer-uri (uri).................................33 148 5.4.6 notify-job-id (integer(1:MAX))...........................33 149 5.4.7 notify-subscriber-user-name (name(MAX))..................33 151 6 Printer Description Attributes Related to Notification............34 152 6.1 notify-max-printer-subscriptions-supported (integer(0:MAX))..34 153 6.2 notify-max-job-subscriptions-supported (integer(0:MAX))......34 154 6.3 printer-state-change-time (integer(1:MAX))...................35 155 6.4 printer-state-change-date-time (dateTime)....................35 157 7 New Values for Existing Printer Description Attributes............36 158 7.1 operations-supported (1setOf type2 enum).....................36 160 8 Attributes Only in Event Notifications............................36 161 8.1 notify-subscribed-event (type2 keyword)......................36 162 8.2 notify-text (text(MAX))......................................37 164 9 Event Notification Content........................................37 165 9.1 Content of Machine Consumable Event Notifications............38 166 9.1.1 Attributes in Event Notification Content Common to All 167 Events .........................................................39 168 9.1.2 Additional Attributes in Event Notification Content for Job 169 Events .........................................................40 170 9.1.3 Additional Attributes in Event Notification Content for 171 Printer Events..................................................41 172 9.2 Content of Human Consumable Event Notification...............41 173 9.2.1 Information in Event Notification Content Common to All 174 Events .........................................................42 175 9.2.2 Additional Information in Event Notification Content for Job 176 Events .........................................................43 177 9.2.3 Additional Information in Event Notification Content for 178 Printer Events..................................................44 180 10Delivery Methods..................................................44 182 11Operations for Notification.......................................46 183 11.1 Subscription Creation Operations.............................46 184 11.1.1 Create-Job-Subscriptions Operation......................46 185 11.1.2 Create-Printer-Subscriptions operation...................48 186 11.1.3 Job Creation Operation . Extensions for Notification....49 187 11.2 Other Operations.............................................51 188 11.2.1Validate-Job Operation - Extensions for Notification.....51 189 11.2.2Get-Printer-Attributes - Extensions for Notification.....52 190 11.2.3Get-Subscription-Attributes operation....................52 191 11.2.4Get-Subscriptions operation..............................54 192 11.2.5Renew-Subscription operation.............................57 193 11.2.6Cancel-Subscription operation............................59 195 12Conformance Requirements..........................................60 197 13IANA Considerations...............................................61 198 13.1 Format and Requirements for IPP Delivery Method Registration 199 Proposals.........................................................62 201 14Internationalization Considerations...............................62 203 15Security Considerations...........................................63 205 16Status Codes......................................................63 206 16.1 successful-ok-ignored-subscriptions (0x0003).................63 207 16.2 client-error-ignored-all-subscriptions (0x0414)..............64 209 17Status Codes in Subscription Attributes Groups....................64 210 17.1 client-error-uri-scheme-not-supported (0x040C)...............64 211 17.2 client-error-too-many-subscriptions (0x0415).................64 212 17.3 successful-ok-too-many-events (0x0005).......................65 213 17.4 successful-ok-ignored-or-substituted-attributes (0x0001).....65 215 18Encodings of Additional Attribute Tags............................65 217 19References........................................................65 218 20Author.s Addresses................................................66 220 A.Appendix - Model for Notification with Cascading Printers.........67 222 B.Appendix - Distributed Model for Notification.....................68 224 C.Appendix - Extended Notification Recipient........................69 226 D.Appendix - Details about Conformance Terminology..................70 228 E.Appendix - Object Model for Notification..........................71 229 E.1 Appendix - Object relationships..............................71 230 E.2 Printer Object and Per-Printer Subscription Objects..........72 231 E.3 Job Object and Per-Job Subscription Objects..................72 233 F.Appendix - Per-Job versus Per-Printer Subscription Objects........72 235 G.Appendix: Full Copyright Statement................................73 237 Tables 238 Table 1 . Subscription Template Attributes...........................19 239 Table 2 . Subscription Description Attributes........................30 240 Table 3 . Printer Description Attributes Associated with Notification34 241 Table 4 . Operation-id assignments...................................36 242 Table 5 . Attributes in Event Notification Content....................39 243 Table 6 . Additional Attributes in Event Notification Content for Job 244 Events...........................................................40 245 Table 7 . Combinations of Events and Subscribed Events for .job- 246 impressions-completed............................................41 247 Table 8 . Additional Attributes in Event Notification Content for 248 Printer Events...................................................41 249 Table 9 . Printer Name in Event Notification Content.................42 250 Table 10 . Event Name in Event Notification Content..................43 251 Table 11 . Event Time in Event Notification Content..................43 252 Table 12 . Job Name in Event Notification Content for Job Events.....43 253 Table 13 . Job State in Event Notification Content for Job Events....44 254 Table 14 . Printer State in Event Notification Content for Printer 255 Events...........................................................44 256 Table 15 . Conformance Requirements for Operations...................61 258 Figures 259 Figure 1 . Model for Notification....................................10 260 Figure 2 . Model for Notification with Cascading Printers............68 261 Figure 3 . Opaque Use of a Notification Service Transparent to the 262 Client............................................................69 263 Figure 4 . Use of an Extended Notification Recipient transparent to the 264 Printer..........................................................70 265 Figure 5 . Object Model for Notification.............................71 266 1 Introduction 268 This IPP notification specification is an extension to IPP/1.0 [RFC2568, 269 RFC2569] and IPP/1.1 [ipp-mod, ipp-pro]. This document in combination 270 with the following documents is intended to meet the notification 271 requirements described in [ipp-not-req]: 273 Internet Printing Protocol (IPP): .Job Progress Attributes. [ipp- 274 prog] 275 One or more Delivery Method Documents registered with IANA (see 276 section 13). 278 Note: this document does not define any Delivery Methods, but it does 279 define the rules for conformance for Delivery Method Documents. 281 Refer to the Table of Contents for the layout of this document. 283 1.1 Notification Overview 285 This document defines operations that a client can perform in order to 286 create Subscription Objects in a Printer and carry out other operations 287 on them. A Subscription Object represents a Subscription abstraction. 288 The Subscription Object specifies that when one of the specified Events 289 occurs, the Printer sends an asynchronous Event Notification to the 290 specified Notification Recipient via the specified Delivery Method 291 (i.e., protocol). 293 When a client (called a Subscribing Client) performs an operation that 294 creates a Subscription Object, the operation contains one or more 295 Subscription Template Attributes Groups. Each such group holds 296 information used by the Printer to initialize a newly created 297 Subscription Object. The Printer creates one Subscription Object for 298 each Subscription Template Attributes Group in the operation. This group 299 is like the Job Template Attributes group defined in [ipp-mod]. The 300 following is an example of the information included in a Subscription 301 Template Attributes Group (see section 5 for details on the Subscription 302 Object attributes): 304 1. The names of Subscribed Events that are of interest to the 305 Notification Recipient. 307 2. The address (URL) of one Notification Recipient. 309 3. The Delivery Method (i.e., the protocol) which the Printer uses to 310 send the Event Notification. 312 4. Some opaque data that the Printer sends to the Notification 313 Recipient in the Event Notification. The Notification Recipient 314 might use this opaque data as a forwarding address for the Event 315 Notification. 317 5. The charset to use in text fields within an Event Notification 319 6. The natural language to use in the text fields of the Event 320 Notification 322 7. The requested lease time in seconds for the Subscription Object 324 An operation that creates a Subscription Object is called a Subscription 325 Creation Operation. These operations include the following operations 326 (see section 11.1 for further details): 328 - Job Creation operation: When a client performs such an operation 329 (Print-Job, Print-URI, and Create-Job), a client can include zero or 330 more Subscription Template Attributes Groups in the request. The 331 Printer creates one Subscription Object for each Subscription Template 332 Attributes Group in the request, and the Printer associates each such 333 Subscription Object with the newly created Job. This document extends 334 these operations. definitions in [ipp-mod] by adding Subscription 335 Template Attributes Groups in the request and Subscription Attributes 336 Groups in the response. 338 - Create-Job-Subscriptions operation: A client can include one or more 339 Subscription Template Attributes Groups in the request. The Printer 340 creates one Subscription Object for each Subscription Template 341 Attributes Group and associates each with the job that is the target of 342 this operation. 344 - Create-Printer-Subscriptions operation: A client can include one or 345 more Subscription Template Attributes Groups in the request. The 346 Printer creates one Subscription Object for each Subscription Template 347 Attributes Group and associates each with the Printer that is the target 348 of this operation. 350 For each of the above operations: 352 the Printer associates a Subscription Object with the Printer or a 353 specific Job. When a Subscription Object is associated with a Job 354 Object, it is called a Per-Job Subscription Object. When a Subscription 355 Object is associated with a Printer Object, it is called a Per-Printer 356 Subscription Object. 358 the response contains one Subscription Attributes Group for each 359 Subscription Template Attributes Group in the request and in the same 360 order. When the Printer successfully creates a Subscription Object, its 361 corresponding Subscription Attributes Group contains the .notify- 362 subscription-id. attribute. This attribute uniquely identifies the 363 Subscription Object and is analogous to a .job-id. for a Job object. 364 Some operations described below use the .notify-subscription-id. to 365 identify the target Subscription Object. 367 This document adds the following additional operations (see section 11.2 368 for further details): 370 Validate-Job operation: When a client performs this operation, a client 371 can include zero or more Subscription Template Attributes Groups in the 372 request. The Printer determines if it could create one Subscription 373 Object for each Subscription Template Attributes Group in the request. 374 This document extends this operation.s definition in [ipp-mod] by adding 375 Subscription Template Attributes Groups in the request and Subscription 376 Attributes Groups in the response. 378 Get-Printer-Attributes operation: This document extends this 379 operation.s definition in [ipp-mod] by adding: Subscription Template 380 Attributes, Printer Description Attributes, attributes to existing group 381 names, and new group names for Get-Printer-Attributes to support. 383 Get-Subscription-Attributes operation: This operation allows a client to 384 obtain the specified attributes of a target Subscription Object. 386 Get-Subscriptions operation: This operation allows a client to obtain 387 the specified attributes of all Subscription Objects associated with the 388 Printer or a specified Job. 390 Renew-Subscription operation: This operation renews the lease on the 391 target Per-Printer Subscription Object before it expires. A newly 392 created Per-Printer Subscription Object receives an initial lease. It 393 is the duty of the client to use this operation frequently enough to 394 preserve a Per-Printer Subscription Object. The Printer deletes a Per- 395 Printer Subscription Object when its lease expires. A Per-Job 396 Subscription Object last exactly as long as its associated Job Object 397 and thus doesn.t have a lease. 399 Cancel-Subscription operation: This operation cancels the lease on the 400 specified Per-Printer Subscription Object and thereby deletes the 401 Subscription Object. 403 When an Event occurs, the Printer finds all Subscription Objects 404 listening for the Event (see section 9 for details on finding such 405 Subscription Objects). For each such Subscription Object, the Printer: 407 a) generates an Event Notification with information specified in 408 section 9, AND 410 b) either: 412 i)delivers the Event Notification using the Delivery Method and 413 target address identified in the Subscription Object.s .notify- 414 recipient-uri. attribute if the Delivery Method is a .push., OR 416 ii) saves Event Notification for a time period defined by the 417 Delivery Method if the Delivery Method is a .pull., i.e., the 418 Notification Recipient is expected to fetch the Event 419 Notifications. 421 2 Models for Notification 423 2.1 Model for Notification (Simple Case) 425 As part of a Subscription Creation Operation, an IPP Printer (i.e., an 426 output device or a server) creates one or more Subscription Objects. In 427 a Subscription Creation Operation, the client specifies the Notification 428 Recipient to which the Printer is to deliver Event Notifications. A 429 Notification Recipient can be the Subscribing Client or a third party. 431 Figure 1 shows the Notification model for a simple Client-Printer 432 relationship. 434 embedded printer: 435 output device or server 436 PDA, desktop, or server +---------------+ 437 +--------+ | ########### | 438 | client |-----Subscription ---------># Printer # | 439 +--------+ Creation Operation | # Object # | 440 +------------+ | #####|##### | 441 |Notification| +-------|-------+ 442 |Recipient |<----IPP Event Notifications----+ 443 +------------+ (Job and/or Printer Events) 445 Figure 1 . Model for Notification 447 2.2 Model for Notification with Cascading Printers 449 With this model, there is an intervening Print server between the human 450 user and the Printer in the output device. If the Printer in the output 451 device generates an Event, the system can be configured to send Event 452 Notification either 454 directly to the Notification Recipient specified by the Subscribing 455 Client or 457 via the Print Server to the Notification Recipient specified by the 458 Subscribing Client. 460 See Appendix A for more details. 462 2.3 Distributed Model for Notification 464 The preceding sections (2.1 and 2.2) assume that the Notification 465 software resides in the same device or Server box as the rest of the 466 Printer software. In many implementations, the assumption is correct. 467 However, the Notification model also permits a distributed 468 implementation. 470 For example, the software that supports both Subscription Creation 471 Operations and sending of Event Notifications could be on hardware that 472 is separate from the output device. To make this work, there must be a 473 symbiotic relationship between the output device software and the remote 474 Notification software. Without the remote Notification software, the 475 output device software is not a complete Printer. 477 The term .Printer. in this document includes the software on the output 478 device or server box as well as Notification software that is local to 479 or remote from the output device. 481 Appendix B describes this example in detail. 483 2.4 Extended Notification Recipient 485 The model allows for an extended Notification Recipient that is itself a 486 Notification service that forwards each Event Notification to another 487 recipient. The client contacts this Notification Recipient to arrange 488 for forwarding by means outside the scope of this document. The Printer 489 need not be aware that the Notification Recipient forwards Event 490 Notifications. 492 Appendix C describes this example in detail. 494 3 Terminology 496 This section defines terminology used throughout this document. 498 3.1 Conformance Terminology 500 Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD 501 NOT, MAY, NEED NOT, and OPTIONAL, have special meaning relating to 502 conformance to this specification. These terms are defined in 503 [ipp-mod section 13.1 on conformance terminology, most of which is 504 taken from RFC 2119 [RFC2119]. See Appendix D for complete details. 506 READ-ONLY - an adjective used in an attribute definition to indicate 507 that an IPP Printer MUST NOT allow the attribute.s value to be 508 modified with the Set-Job-Attributes or Set-Printer-Attributes 509 operations (see [ipp-set]). Note: there is no Set-Subscription 510 operation so this term is not used for Subscription object 511 attributes. 513 3.2 Other Terminology 515 Administrator - A human user who establishes policy for and 516 configures the print system. 518 Operator - A human user who carries out the policy established by the 519 Administrator and controls the day to day running of the print 520 system. 522 IPP Client (or client) - The software component (PDA, desktop, or 523 server) that performs an IPP operation directed at an IPP Printer 524 (server or output device). 526 Job Creation operation - One of the operations that creates a Job 527 object: Print-Job, Print-URI and Create-Job. The Validate-Job 528 operation is not a Job Creation operation because no Job object is 529 created. Therefore, when a statement also applies to the Validate- 530 Job operation, it is mentioned explicitly. 532 Event - some occurrence (either expected or unexpected) within the 533 printing system of a change of state, condition, or configuration 534 of a Job or Printer object. An Event occurs only at one instant in 535 time and does not span the time the physical Event takes place. 536 For example, jam-occurred and jam-cleared are two distinct, 537 instantaneous Events, even though the jam may last for a while. 539 Job Event . an Event caused by some change in a particular job on the 540 Printer, e.g., job-completed. 542 Printer Event . an Event caused by some change in the Printer that is 543 not specific to a job, e.g., printer-state-changed. 545 Subscribed Event . an Event that the Subscribing Client expresses 546 interest in by making it a value of the .notify-events. attribute 547 on a Subscription Object. 549 Subscribed Job Event . a Subscribed Event that is a Job Event. 551 Subscribed Printer Event . a Subscribed Event that is a Printer 552 Event. 554 Event Notification - the information about an Event that the Printer 555 sends when an Event occurs. 557 Notification Recipient - the entity to which the Printer sends an 558 Event Notification. 560 Delivery Method - the mechanism by which the Printer delivers the 561 Event Notification, e.g., via email or via SNMP. 563 Delivery Method Document - a document, separate from this document, 564 that defines a Delivery Method. 566 Subscription Object - An object containing a set of attributes that 567 indicate: the Notification Recipient, the Delivery Method, the 568 Subscribed Events that cause the Printer to send an Event 569 Notification, and the information to send in an Event Notification. 571 Per-Job Subscription Object - A Subscription Object that is 572 associated with a single Job. The Create-Job-Subscriptions 573 operation and Job Creation operations create such an object. 575 Per-Printer Subscription Object - A Subscription Object that is 576 associated with the Printer as a whole. The Create-Printer- 577 Subscriptions operation creates such an object. 579 Subscribing Client - The client that creates the Subscription Object. 581 Subscription Creation Operation - An operation that creates a 582 Subscription Object: Job Creation operations, Create-Job- 583 Subscriptions operation, and Create-Printer-Subscriptions 584 operation. In the context of a Job Creation operation, a 585 Subscription Creation Operation is the part of the Job Creation 586 operation that creates a Subscription object. 588 Subscription Creation Request . The request portion of a 589 Subscription Creation Operation. 591 Subscription Template Attributes . Subscription Object attributes 592 that a client can supply in a Subscription Creation Operation and 593 associated Printer Object attributes that specify supported and 594 default values for the Subscription Object attributes. 596 Subscription Description Attributes . Subscription Object attributes 597 that a Printer supplies during a Subscription Creation Operation. 599 Subscription Template Attributes Group . The attributes group in a 600 request that contains Subscription Object attributes that are 601 Subscription Template Attributes. 603 Subscription Attributes Group . The attributes group in a response 604 that contains Subscription Object attributes. 606 Human Consumable Event Notification . localized text for human 607 consumption only. There is no standardized format and thus 608 programs should not try to parse this text. 610 Machine Consumable Event Notification - bytes for program 611 consumption. The bytes are formatted according to the Delivery 612 Method document. 614 Printer . the software that supports an output device or print server 615 (see IPP/1.1 [ipp-mod] which uses the terms Printer and Printer 616 object interchangeably). This document extends the IPP/1.1 Printer 617 definition to include the software that implements Subscription 618 Creation Operations and the sending of Event Notifications, even if 619 the software for such a Printer would be distributed across a 620 network (see section 2.3). 622 Notification . when not in the phrases .Event Notification. and 623 .Notification Recipient. . the concepts of this specification, 624 i.e., Events, Subscription Objects, and Event Notifications. 626 4 Object Relationships 628 This section defines the object relationships between the Printer, Job, 629 and Subscription Objects. It does not define the implementation. For an 630 illustration of these relationships, see Appendix E. 632 4.1 Printer and Per-Printer Subscription Objects 634 1. A Printer object can be associated with zero or more Per-Printer 635 Subscription Objects. 637 2. Each Per-Printer Subscription Object is associated with exactly one 638 Printer object. 640 4.2 Printer, Job and Per-Job Subscription Objects 642 1. A Printer object is associated with zero or more Job objects. 644 2. Each Job object is associated with exactly one Printer object. 646 3. A Job object is associated with zero or more Per-Job Subscription 647 Objects. 649 4. Each Per-Job Subscription Object is associated with exactly one Job 650 object. 652 5 Subscription Object 654 A Subscribing Client creates a Subscription Object with a Subscription 655 Creation Operation in order to indicate its interest in certain Events. 656 See section 11 for a description of these operations. When an Event 657 occurs, the Subscription Object specifies to the Printer where to send 658 Event Notifications, how to send them and what to put in them. See 659 section 9 for details on the contents of an Event Notification. 661 Using the IPP Job Template attributes as a model (see [ipp-mod] section 662 4.2), the attributes of a Subscription Object are divided into two 663 categories: Subscription Template Attributes and Subscription 664 Description Attributes. 666 Subscription Template attributes are, in turn, like the Job Template 667 attributes, divided into 669 1. Subscription Object attributes that a client can supply in a 670 Subscription Creation Request and 672 2. their associated Printer Object attributes that specify supported 673 and default values for the Subscription Object attributes 675 The remainder of this section specifies general rules for Subscription 676 Template Attributes and describes each attribute in a Subscription 677 Object. 679 5.1 Rules for Support of Subscription Template Attributes 681 Subscription Template Attributes are fundamental to the Notification 682 model described in this specification. The client supplies these 683 attributes in Subscription Creation Operations and the Printer uses 684 these attributes to populate a newly created Subscription Object. 686 Subscription Objects attributes that are Subscription Template 687 Attributes conform to the following rules: 689 1. Each attribute.s name starts with the prefix string .notify-. and 690 this document calls such attributes .notify-xxx.. 692 2. For each .notify-xxx. Subscription Object attribute defined in 693 column 1 of Table 1, Table 1 specifies corresponding Printer 694 attributes: .notify-xxx-default., .notify-xxx-supported., .yyy- 695 supported. and .notify-max-xxx-supported. defined in column 2 of 696 Table 1. 698 3. If a Printer supports .notify-xxx. in column 1 of Table 1, then the 699 Printer MUST support all associated attributes specified in column 700 2 of Table 1. For example, Table 1 shows that if the Printer 701 supports .notify-events., it MUST support .notify-events-default., 702 .notify-events-supported. and .notify-max-events-supported.. 704 4. If a Printer does not support .notify-xxx. in column 1 of Table 1, 705 then the Printer MUST NOT support any associated .notify-yyy. 706 attributes specified in column 2 of Table 1. For example, Table 1 707 shows that if the Printer doesn.t support .notify-events., it MUST 708 NOT support .notify-events-default., .notify-events-supported. and 709 .notify-max-events-supported.. Note this rule does not apply to 710 attributes whose names do not start with the string .notify-. and 711 are thus defined in another object and used by other attributes. 713 5. Most .notify-xxx. attributes have a corresponding .yyy-supported. 714 attribute that specifies the supported values for .notify-xxx.. 715 Column 2 of Table 1 specifies the name of each .yyy-supported. 716 attribute. The naming rules of IPP/1.1 (see [ipp-mod]) are used 717 when .yyy-supported. is .notify-xxx-supported.. 719 6. Some .notify-xxx. attributes have a corresponding .notify-xxx- 720 default. attribute that specifies the value for .notify-xxx. if the 721 client does not supply it. Column 2 of Table 1 specifies the name 722 of each .notify-xxx-default. attribute. The naming rules of IPP/1.1 723 (see [ipp-mod]) are used. 725 If a client wishes to present an end user with a list of supported 726 values from which to choose, the client SHOULD query the Printer for its 727 supported value attributes. The client SHOULD also query the default 728 value attributes. If the client then limits selectable values to only 729 those values that are supported, the client can guarantee that the 730 values supplied by the client in the create request all fall within the 731 set of supported values at the Printer. When querying the Printer, the 732 client MAY enumerate each attribute by name in the Get-Printer- 733 Attributes Request, or the client MAY just supply the .subscription- 734 template. group name in order to get the complete set of supported 735 attributes (both supported and default attributes). 737 5.2 Rules for Processing Subscription Template Attributes 739 This section defines a detailed set of rules that a Printer follows when 740 it processes Subscription Template Attributes in a Subscription Creation 741 Request. These rules are similar to the rules for processing Operation 742 attributes in [ipp-mod]. That is, the Printer may or may not support an 743 attribute and a client may or may not supply the attribute. Some 744 combinations of these cases are OK. Others return warnings or errors, 745 and perhaps a list of unsupported attributes. 747 A Printer MUST implement the following behavior for processing 748 Subscription Template Attributes in a Subscription Creation Request: 750 1. If a client supplies a .notify-xxx. attribute from column 1 of 751 Table 1 and the Printer supports it and its value, the Printer MUST 752 populate the attribute on the created Subscription Object. 754 2. If a client supplies a .notify-xxx. attribute from column 1 of 755 Table 1 and the Printer doesn.t support it or its value, the 756 Printer MUST NOT populate the attribute on the created Subscription 757 Object with it. The Printer MUST do one of the following: 759 a)If the value of the .notify-xxx. attribute is unsupported, the 760 Printer MUST return the attribute with its value in the 761 Subscription Attributes Group of the response. 763 b)If .notify-xxx. is an unsupported attribute, the Printer MUST 764 return the attribute in the Subscription Attributes Group of the 765 response with the .unsupported. out-of-band value. 767 Note: The rules of this step are the same as for Unsupported 768 Attributes [ipp-mod] section 3.1.7. except that the unsupported 769 attributes are returned in the Subscription Attributes Group rather 770 than the Unsupported Attributes Group because Subscription Creation 771 Operations can create more than one Subscription Object). 773 3. If a client is REQUIRED to supply a .notify-xxx. attribute from 774 column 1 of Table 1 and the Printer doesn.t support the supplied 775 value, the Printer MUST NOT create a Subscription Object. The rules 776 for Unsupported Attributes in step #2 still apply. 778 4. If a client does not supply a .notify-xxx. attribute from column 1 779 of Table 1 and the attribute is REQUIRED for the client to supply, 780 the Printer MUST reject the Subscription Creation Operation 781 (including Job Creation operations) without creating a Subscription 782 Object, and MUST return in the response: 784 c)the status code .client-error-bad-request. AND 786 d)no Subscription Attribute Groups. 788 5. If a client does not supply a .notify-xxx. attribute from column 1 789 of Table 1 that is OPTIONAL for the client to supply, and column 2 790 of Table 1 either: 792 a)specifies a .notify-xxx-default. attribute, the Printer MUST 793 behave as if the client had supplied the .notify-xxx-default. 794 attribute (see step #1) and populate the Subscription object 795 with the value of the .notify-xxx-default. attribute as part of 796 the Subscription Creation operation (unlike Job Template 797 attributes where the Printer does not populate the Job object 798 with defaults - see [ipp-mod]) OR 800 b)does not specify a .notify-xxx-default. attribute, the Printer 801 MUST populate the .notify-xxx. attribute on the Subscription 802 Object according to the definition of the .notify-xxx. attribute 803 in a section 5.3. For some attributes, the .notify-xxx. is 804 populated with the value of some other attribute, and for 805 others, the .notify-xxx. is NOT populated on the Subscription 806 object at all. 808 6. A Printer MUST create a Subscription Object for each Subscription 809 Template Attributes group in a request unless the Printer: 811 a)encounters some attributes in a Subscription Template Attributes 812 Group that require the Printer not to create the Subscription 813 Object OR 815 b)would be a Per-Job Subscription Object and the number of Per-Job 816 Subscription Objects already equals the value of the .notify- 817 max-job-subscriptions-supported. Printer attribute OR 819 c)would be a Per-Printer Subscription Object and the number of 820 Per-Printer Subscription Objects already equals the value of the 821 .notify-max-printer-subscriptions-supported. Printer attribute. 823 7. A response MUST contain one Subscription Attributes Group for each 824 Subscription Template Attributes Group in the request (and in the 825 same order) whether the Printer creates a Subscription Object from 826 the Subscription Template Attributes Group or not. However, the 827 attributes in each Subscription Attributes Group can be in any 828 order. 830 8. The Printer MUST populate each Subscription Attributes Group of the 831 response such that each contains: 833 a)the .notify-subscription-id. attribute (see section 5.4.1), if 834 and only if the Printer creates a Subscription Object. 836 b)the .notify-lease-duration. attribute (see section 5.3.7), if 837 and only if the Printer creates a Per-Printer Subscription 838 Object. The value of this attribute is the value of the 839 Subscription Object.s .notify-lease-duration. attribute. This 840 value MAY be different from the client-supplied value (see 841 section 5.3.7). If a client supplies this attribute in the 842 creation of a Per-Job Subscription Object, it MUST appear in 843 this group with the out-of-band value .unsupported. to indicate 844 that the Printer doesn.t support it in this context. 846 c)all of the unsupported Subscription Template Attributes from 847 step #2. 849 d)the .notify-status-code. attribute if the Printer does not 850 create the Subscription Object or if there are unsupported 851 attributes from step #2. The possible values of the .notify- 852 status-code. attribute are shown below (see section 17 for more 853 details). The Printer returns the first value in the list below 854 that describes the status. 856 .client-error-uri-scheme-not-supported.: the Subscription 857 Object was not created because the scheme of the .notify- 858 recipient-uri. attribute is not supported. See section 17.1 859 for more details about this status code. See step #3 in 860 this section for the case that causes this error, and the 861 resulting step #6a) that causes the Printer not to create 862 the Subscription Object. 864 .client-error-too-many-subscriptions.: the Subscription 865 Object was not created because the number of Subscription 866 Objects would exceed the value of the Printer.s .notify- 867 max-job-subscriptions-supported. or .notify-max-printer- 868 subscriptions-supported. attributes. The client SHOULD try 869 again later. See section 17.2 for more details about this 870 status code. See steps #6b) and #6c) in this section for 871 the cases that causes this error. 873 .successful-ok-too-many-events.: the Subscription Object was 874 created without the .notify-events. values included in this 875 Subscription Attributes Group because the .notify-events. 876 attribute contains too many values. See section 17.3 for 877 more details about this status code. See step #2 in this 878 section and section 5.3.2 for the cases that cause this 879 status code. 881 .successful-ok-ignored-or-substituted-attributes. : the 882 Subscription Object was created but some supplied 883 Subscription Template Attributes are unsupported. These 884 unsupported attributes are also in the Subscription 885 Attributes Group. See section 17.4 for more details about 886 this status code. See step #2 in this section for the cases 887 that cause this status code. 889 9. The Printer MUST validate all Subscription Template Attributes and 890 MUST return all unsupported attributes and values in the 891 corresponding Subscription Attributes Group of the response (see 892 step #2) unless it determines that it could not create additional 893 Subscription Objects because of condition #6b) or condition #6c). 894 Then, the Printer NEED NOT validate these additional Subscription 895 Template Attributes and the client MUST NOT expect to find 896 unsupported attributes from step #2 in such additional Subscription 897 Attribute Groups. 899 5.3 Subscription Template Attributes 901 This section contains the Subscription Template Attributes defined for 902 the Subscription and Printer objects. 904 Table 1 below shows the Subscription Template Attributes and has two 905 columns: 907 Attribute in Subscription Object: the name and attribute syntax of each 908 Subscription Object Attribute that is a Subscription Template Attribute 910 Default and Supported Printer Attributes: the default attribute and 911 supported Printer attributes that are associated with the attribute in 912 column 1. 914 A Printer MUST support all attributes in Table 1 below except for 915 .notify-attributes. (and .notify-attributes-supported.). A client MUST 916 supply .notify-recipient-uri. and MAY omit any of the rest of the 917 attributes in column 1 of Table 1 in a Subscription Creation Request. 919 Table 1 . Subscription Template Attributes 921 Attribute in Subscription Default and Supported Printer 922 Object Attributes 924 notify-recipient-uri (uri) notify-schemes-supported (1setOf 925 uriScheme) 927 notify-events (1setOf type2 notify-events-default (1setOf type2 928 keyword) keyword) 930 notify-events-supported (1setOf type2 931 keyword) 933 notify-max-events-supported 934 (integer(2:MAX)) 936 notify-attributes (1setOf notify-attributes-supported (1setOf 937 type2 keyword) type2 keyword) 939 notify-user-data 940 (octetString(63)) 942 notify-charset (charset) charset-supported (1setOf charset) 944 notify-natural-languages generated-natural-language-supported 945 (naturalLanguage) (1setOf naturalLanguage) 947 notify-lease-duration notify-lease-duration-default 948 (integer(0:MAX)) (integer(0:67108863)) 950 notify-lease-duration-supported (1setOf 951 (integer(0: 67108863) | 952 rangeOfInteger(0:67108863))) 954 notify-persistence (boolean) notify-persistence-default (boolean) 956 notify-persistence-supported (1setOf 958 Attribute in Subscription Default and Supported Printer 959 Object Attributes 961 boolean) 963 5.3.1 notify-recipient-uri (uri) 965 This attribute.s value is a URL, which is a special case of a URI. Its 966 value consists of a scheme and an address. The address specifies the 967 Notification Recipient and the scheme specifies the Delivery Method for 968 each Event Notification associated with this Subscription Object. 970 A Printer MUST support this attribute. 972 A client MUST supply this attribute in Subscription Creation Operation. 973 Thus there is no need for a default attribute. 975 The .notify-schemes-supported (1setOf uriScheme). attribute MUST specify 976 the schemes supported for this attribute. 978 If the client supplies an unsupported scheme in the value of this 979 attribute, then the Printer MUST not create the Subscription Object and 980 MUST return the .notify-status-code. attribute with the .client-error- 981 uri-scheme-not-supported. value in the Subscription Attributes Group in 982 the response. 984 5.3.2 notify-events (1setOf type2 keyword) 986 This attribute contains a set of Subscribed Events. When an Event 987 occurs and it .matches. a value of this attribute, the Printer sends an 988 Event Notification using information in the Subscription Object. The 989 details of .matching. are described subsection 5.3.2.2. 991 A Printer MUST support this attribute. 993 A client MAY supply this attribute in a Subscription Creation Operation. 994 If the client does not supply this attribute in Subscription Creation 995 Operation, the Printer MUST populate this attribute on the Subscription 996 Object with its .notify-events-default. attribute value. 998 Each value of this attribute on a Subscription Object MUST be one of the 999 values of the .notify-events-supported (1setOf type2 keyword). 1000 attribute. 1002 The number of values of this attribute MUST NOT exceed the value of the 1003 .notify-max-events-supported. attribute. A Printer MUST support at least 1004 2 values per Subscription Object. If the number of values supplied by a 1005 client in a Subscription Creation Operation exceeds the value of this 1006 attribute, the Printer MUST treat extra values as unsupported values and 1007 MUST use the value of .successful-ok-too-many-events. for the .notify- 1008 status-code. attribute in the Subscription Attributes Group of the 1009 response. 1011 ISSUE 01: OK that we changed the number from 5 to 2 because we have 1012 rearranged the categories of Events to have group events? 1014 5.3.2.1 Standard Values for Subscribed Events 1016 Each value of this attribute is a keyword and it specifies a Subscribed 1017 Event that represents certain changes. Some keywords represent a subset 1018 of changes of another keyword, e.g., .job-completed. is an Event value 1019 which is a sub-value of .job-state-change.. See section 5.3.2.2 for the 1020 case where this attribute contains both a value and a sub-value. 1022 The values in this section are divided into three categories: No Events, 1023 Job Events and Printer Events. 1025 A Printer MUST support the Events indicated as .REQUIRED. and MAY 1026 support the Events indicated as .OPTIONAL.. 1028 5.3.2.1.1 No Events 1030 The standard and only keyword value for No Events is: 1032 .none.: REQUIRED - no Event Notifications for any Events. As the 1033 sole value of .notify-events-supported., this value means that the 1034 Printer does not support the sending of Event Notifications. As the 1035 sole value of .notify-events-default., this value means that a 1036 client MUST specify the .notify-events. attribute in order for a 1037 Subscription Creation Operation to succeed. If the Printer receives 1038 this value as the sole value of a Subscription Creation Operation, 1039 it does not create a Subscription Object. If a Printer receives 1040 this value with other values of a Subscription Creation Operation, 1041 the Printer MUST treat this value as an unsupported value. 1043 5.3.2.1.2 Subscribed Printer Events 1045 For a Printer, the first Printer Event MUST be .printer-restarted. and 1046 the last Printer Event MUST be .printer-shutdown.. 1048 The standard keyword values for Subscribed Printer Events are: 1050 .printer-state-changed.: REQUIRED - the Printer changed state from 1051 any state to any other state. Specifically, the value of the 1052 Printer.s .printer-state., .printer-state-reasons. or .printer-is- 1053 accepting-jobs. attributes changed. 1055 This Subscribed Event value has the following sub-values: .printer- 1056 restarted. and .printer-shutdown.. A client can listen for any of 1057 these sub-values if it doesn.t want to listen to all printer-state 1058 changes: 1060 .printer-restarted.: OPTIONAL - when the printer is powered up or 1061 the Restart-Printer operation is performed (see [ipp-set2]). 1062 This event is the first Printer Event that can be received from 1063 a Printer. 1065 .printer-shutdown.: OPTIONAL - when the device is being powered 1066 down or the Shutdown-Printer operation has been performed (see 1067 [ipp-set2]). This event is the last Printer Event that can be 1068 received from a Printer. 1070 .printer-config-changed.: OPTIONAL - when the configuration of a 1071 Printer has changed, i.e., the value of the .printer-message-from- 1072 operator. or any .configuration. Printer attribute has changed. A 1073 .configuration. Printer attribute is an attribute which can change 1074 value because of some human interaction either direct or indirect, 1075 and which is not covered by one of the other Events in this 1076 section. Examples of .configuration. Printer attributes are any of 1077 the Job Template attributes, such as .xxx-supported., .xxx-ready. 1078 and .xxx-default.. Often, such a change is the result of a client 1079 performing a Set-Printer-Attributes operation (see [ipp-set]) on 1080 the Printer. The client has to perform a Get-Printer-Attributes to 1081 find out the new values of these changed attributes. This Event is 1082 useful for GUI clients and drivers to update the available printer 1083 capabilities to the user. 1085 This Event value has the following sub-values: .printer-media- 1086 changed. and .printer-finishings-changed.. A client can listen for 1087 any of these sub-values if it doesn.t want to listen to all 1088 printer-configuration changes: 1090 .printer-media-changed.: OPTIONAL - when the media loaded on a 1091 printer has been changed, i.e., the .media-ready. attribute has 1092 changed. This Event includes two cases: an input tray that goes 1093 empty and an input tray that receives additional media of the 1094 same type or of a different type. The client must check the 1095 .media-ready. Printer attribute (see [ipp-mod] section 4.2.11) 1096 separately to find out what changed. 1098 .printer-finishings-changed.: OPTIONAL - when the finisher on a 1099 printer has been changed, i.e., the .finishings-ready. attribute 1100 has changed. This Event includes two cases: a finisher that goes 1101 empty and a finisher that is refilled (even if it is not full). 1102 The client must check the .finishings-ready. Printer attribute 1103 separately to find out what changed. 1105 .printer-queue-order-changed.: OPTIONAL - the order of jobs in the 1106 Printer.s queue has changed, so that an application that is 1107 monitoring the queue can perform a Get-Jobs operation to determine 1108 the new order. This Event does not include when a job enters the 1109 queue (the .job-created. Event covers that) and does not include 1110 when a job leaves the queue (the .job-completed. Event covers 1111 that). 1113 .printer-no-longer-full.: OPTIONAL - when the Printer has just 1114 become able to accept a Job Creation operation, Send-Document 1115 operation, or Send-URI operation. A Printer sends this Event when 1116 it has acquired more buffer space to accept jobs after it 1117 previously did not have room to accept any more jobs and would have 1118 rejected a Job Creation Operation, a Send-Document operation, or 1119 Send-URI operation. A Notification Recipient listens for this Event 1120 when there is more than one client feeding a printer/server (fan- 1121 in). 1123 .printer-full.: OPTIONAL - when the Printer has just become unable 1124 to accept a Job Creation operation, Send-Document operation, or 1125 Send-URI operation due to lack of buffer space. It is intended that 1126 a Notification Recipient use this Event to stop whatever the 1127 .printer-no-longer-full. Event starts. 1129 ISSUE 02: OK to add .printer-full. Event? 1131 .printer-almost-idle.: OPTIONAL - when the Printer needs another 1132 Job in order to stay busy. A Printer that is an output device MAY 1133 use this Event to request a new job sufficiently ahead of time so 1134 as not to run out of work between jobs. A Printer that is a fan-out 1135 spooler MAY listen for this Event and hold pending Jobs until a 1136 downstream Printer sends this Event to indicate that it needs 1137 another Job in order to stay busy. 1139 .printer-not-almost-idle.: OPTIONAL - when the Printer no-longer 1140 needs another Job in order to stay busy. It is intended that a 1141 Notification Recipient use this Event to stop whatever the 1142 .printer-almost-idle. Event starts. 1144 ISSUE 03: OK to add .printer-not-almost-idle. Event? 1146 5.3.2.1.3 Subscribed Job Events 1148 For each Job object, the first Job Event MUST be .job-created. and the 1149 last Job Event MUST be .job-completed.. 1151 The standard keyword values for Subscribed Job Events are: 1153 .job-state-changed.: REQUIRED - the job has changed from any state 1154 to any other state. Specifically, the Printer sends this Event 1155 whenever the value of the .job-state. attribute or .job-state- 1156 reasons. attribute changes. When a Job is removed from the Job 1157 History (see [ipp-mod] 4.3.7.1), no Event is generated. 1159 This Event value has the following sub-values: .job-created., .job- 1160 completed. and .job-purged.. A client can listen for any of these 1161 sub-values if it doesn.t want to listen to all .job-state changes.. 1163 .job-created.: REQUIRED - the Printer has accepted a Job Creation 1164 operation and the job.s .time-at-creation. attribute value is 1165 set (see [ipp-mod] section 4.3.14.1). The Printer puts the job 1166 in the .pending., .pending-held. or .processing. states. This 1167 event is the first Job Event that can be received from a Job. 1169 .job-completed.: REQUIRED - the job has reached one of the 1170 completed states, i.e., the value of the job.s .job-state. 1171 attribute has changed to: .completed., .aborted., or .canceled.. 1172 The Job.s .time-at-completed. and .date-time-at-completed. (if 1173 supported) attributes are set (see [ipp-mod] section 4.3.14). 1175 This event is the last Job Event that can be received from a 1176 Job. 1178 .job-purged.: OPTIONAL - when a .not-completed. job (i.e., not 1179 .completed., .canceled., or .aborted.) was purged from the 1180 printer using the Purge-Jobs operation. The Printer MUST 1181 immediately send a .job-completed. event after this event to 1182 meet the requirement that .job-completed. is the last event for 1183 the Job. 1185 .job-config-changed.: OPTIONAL - when the configuration of a job 1186 has changed, i.e., the value of the .job-message-from-operator. or 1187 any of the .configuration. Job attributes have changed. A 1188 .configuration. Job attribute is an attribute that can change value 1189 because of some human interaction either direct or indirect. 1190 Examples of .configuration. Job attributes are any of the job 1191 template attributes and the .job-name. attribute. Often, such a 1192 change is the result of the user or the Operator performing a Set- 1193 Job-Attributes operation (see [ipp-set]) on the Job object. The 1194 client performs a Get-Job-Attributes to find out the new values of 1195 the changed attributes. This Event is useful for GUI clients and 1196 drivers to update the job information to the user. 1198 .job-progress.: OPTIONAL . an impression, sheet, or copy has 1199 completed. See the separate [ipp-prog] specification. 1201 5.3.2.2 Rules for Matching of Subscribed Events 1203 When an Event occurs, the Printer MUST find each Subscription object 1204 whose .notify-events. attribute .matches. the Event. The rules for 1205 .matching. of Subscribed Events are described separately for Printer 1206 Events and for Job Events. This section also describes some special 1207 cases. 1209 5.3.2.2.1 Rules for Matching of Printer Events 1211 Suppose that the Printer causes Printer Event E to occur. For each Per- 1212 Job or Per-Printer Subscription S in the Printer, if E equals a value of 1213 this attribute in S or E is a sub-value of a value of this attribute in 1214 S, the Printer MUST generate an Event Notification. 1216 Consider the example. There are three Subscription Objects each with 1217 the Subscribed Printer Event .printer-state-changed.. Subscription 1218 Object A is a Per-Printer Subscription Object. Subscription Object B 1219 is a Per-Job Subscription Object for Job 1, and Subscription Object C 1220 is a Per-Job Subscription Object for Job 2. When the Printer enters 1221 the .stopped. state, the Printer sends an Event Notification to the 1222 Notification Recipients of Subscription Objects A, B, and C because 1223 this is a Printer Event. Note if Job 1 has already completed, the 1224 Printer would not send an Event Notification for its Subscription 1225 Object. 1227 5.3.2.2.2 Rules for Matching of Job Events 1229 Suppose that Job J causes Job Event E to occur. 1231 3. For each Per-Printer Subscription S in the Printer, if E equals a 1232 value of this attribute in S or E is a sub-value of a value of this 1233 attribute in S, the Printer MUST generate an Event Notification. 1235 4. For each Per-Job Subscription S associated with Job J, if E equals 1236 a value of this attribute in S or E is a sub-value of a value of 1237 this attribute in S, the Printer MUST generate an Event 1238 Notification. 1240 5. For each Per-Job Subscription S that is NOT associated Job J, if E 1241 equals a value of this attribute in S or E is a sub-value of a 1242 value of this attribute in, the Printer MUST NOT generate an Event 1243 Notification from S. 1245 Consider the example: There are three Subscription Objects listening 1246 for the Job Event .job-completed.. Subscription Object A is a Per- 1247 Printer Subscription Object. Subscription Object B is a Per-Job 1248 Subscription Object for Job 1, and Subscription Object C is a Per-Job 1249 Subscription Object for Job 2. In addition, Per-Printer Subscription 1250 Object D is listening for the Job Event .job-state-changed.. When Job 1251 1 completes, the Printer sends an Event Notification to the 1252 Notification Recipient of Subscription Object A (because it is Per- 1253 Printer) and Subscription Object B because it is a Per-Job 1254 Subscription Object associated with the Job generating the Event. 1255 The Printer also sends an Event Notification to the Notification 1256 Recipient of Subscription Object D because .job-completed. is a sub- 1257 value of .job-state-changed. . the value that Subscription Object D 1258 is listening for. The Printer does not send an Event Notification to 1259 the Notification Recipients of Subscription Object C because it is a 1260 Per-Job Subscription Object associated with some Job other than the 1261 Job generating the Event. 1263 5.3.2.2.3 Special Cases for Matching Rules 1265 This section contains rule for special cases. 1267 If an Event matches Subscribed Events in two different Subscription 1268 Objects and the Printer would send two identical Event Notifications 1269 (except for the .notify-subscription-id. attribute) to the same 1270 Notification Recipient using the same Delivery Method, the Printer MUST 1271 send both Event Notifications. That is, the Printer MUST NOT try to 1272 consolidate seemingly identical Event Notifications that occur in 1273 separate Subscription objects. Incidentally, the Printer MUST NOT reject 1274 Subscription Creation Operations that would create this scenario. 1276 If an Event matches two values of this .notify-events. attribute in a 1277 single Subscription object (e.g., a value and its sub-value), a Printer 1278 MAY send one Event Notification for each matched value in the 1279 Subscription Object or it MAY send only one Event Notification per 1280 Subscription Object. The rules in sections 5.3.2.2.1 and 5.3.2.2.2 are 1281 purposefully ambiguous about the number of Event Notification sent when 1282 Event E matches two or more values in a Subscription Object. 1284 Consider the example: There are two Per-Printer Subscription Objects 1285 when a Job completes. Subscription Object A has the Subscribed Job 1286 Event .job-state-changed.. Subscription Object B has the Subscribed 1287 Job Events .job-state-changed. and .job-completed.. The Printer sends 1288 an Event Notification to the Notification Recipient of Subscription 1289 Object A with the value of .job-state-changed. for the .notify- 1290 subscribing-event. attribute. The Printer sends either one or two 1291 Event Notifications to the Notification Recipient of Subscription 1292 Object B, depending on implementation. If it sends two Event 1293 Notifications, one has the value of .job-state-changed. for the 1294 .notify-subscribing-event. attribute, and the other has the value of 1295 .job-completed. for the .notify-subscribing-event. attribute. If it 1296 sends one Event Notification, it has the value of either .job-state- 1297 changed. or .job-completed. for the .notify-subscribing-event. 1298 attribute, depending on implementation. The algorithm for choosing 1299 such a value is implementation dependent. 1301 In addition, Delivery Methods MAY allow the Printer to moderate certain 1302 high frequency events (see section 9). 1304 5.3.3 notify-attributes (1setOf type2 keyword) 1306 This attribute contains a set of attribute names. When a Printer sends a 1307 Machine Consumable Event Notification, it includes a fixed set of 1308 attributes (see section 9.1). If this attribute is present and the Event 1309 Notification is Machine Consumable, the Printer also includes the 1310 attributes specified by this attribute. 1312 A Printer MAY support this attribute. 1314 A client MAY supply this attribute in a Subscription Creation Operation. 1315 If the client does not supply this attribute in Subscription Creation 1316 Operation or the Printer does not support this attribute, the 1317 Subscription Object MUST NOT contain the .notify-attributes. attribute. 1318 There is no .notify-attributes-default. attribute. 1320 Each keyword value of this attribute on a Subscription Object MUST be a 1321 value of the .notify-attributes-supported (1setOf type2 keyword). 1322 attribute. The .notify-attributes-supported. MAY contain any Printer 1323 attribute, Job attribute or Subscription Object attribute that the 1324 Printer supports in an Event Notification. It MUST NOT contain any of 1325 the attributes in Section 9.1 that a Printer automatically puts in an 1326 Event Notification; it would be redundant. If a client supplies an 1327 attribute in Section 9.1, the Printer MUST treat it as an unsupported 1328 attribute value of the .notify-attributes. attribute. 1330 The following rules apply to each keyword value N of the .notify- 1331 attributes. attribute: If the value N names: 1333 a) a Subscription attribute, the Printer MUST use the attribute N in 1334 the Subscription Object that is being used to generate the Event 1335 Notification. 1337 b) a Job attribute and the Printer is generating an Event Notification 1338 from a Per-Job Subscription Object S, the Printer MUST use the 1339 attribute N in the Job object associated with S. 1341 c) a Job attribute and the Printer is generating an Event Notification 1342 from a Per-Printer Subscription Object and the Event is: 1344 @ a Job Event, the Printer MUST use the attribute N in the Job 1345 object that caused the Event. 1347 @ a Printer Event, the Printer MUST use the attribute N in the 1348 active Job. 1350 If a Printer supports this attribute and a Subscription Object contains 1351 this attribute and the Delivery Method generates a Machine Consumable 1352 Event Notification, the Printer MUST include in each Event Notification: 1354 a)the attributes specified in section 9.1 and 1356 b)each attribute named by this attribute. 1358 5.3.4 notify-user-data (octetString(63)) 1360 This attribute contains opaque data that some Delivery Methods include 1361 in each Machine Consumable Event Notification. The opaque data might 1362 contain, for example: 1364 the identity of the Subscriber 1366 a path or index to some Subscriber information 1368 a key that identifies to the Notification Recipient the ultimate 1369 recipient of the Event Notification 1371 the id for a Notification Recipient that had previously registered with 1372 an Instant Messaging Service 1374 A Printer MUST support this attribute. 1376 A client MAY supply this attribute in a Subscription Creation Operation. 1377 If the client does not supply this attribute in Subscription Creation 1378 Operation, the Subscription Object MUST NOT contain the .notify-user- 1379 data. attribute. There is no .notify-user-data-default. attribute. 1381 There is no .user-data-supported. attribute. Rather, any octetString 1382 whose length does not exceed 63 octets is a supported value. If the 1383 length exceeds 63 octets, the Printer MUST treat it as an unsupported 1384 value. 1386 5.3.5 notify-charset (charset) 1388 This attribute specifies the charset to be used in the Event 1389 Notification content sent to the Notification Recipient, whether the 1390 Event Notification content is Machine Consumable or Human Consumable. 1392 A Printer MUST support this attribute. 1394 A client MAY supply this attribute in a Subscription Creation Operation. 1395 If the client does not supply this attribute in Subscription Creation 1396 Operation or supplies an unsupported value, the Printer MUST populate 1397 this attribute in the Subscription Object with the value of the 1398 .attributes-charset. operation attribute, which is a REQUIRED attribute 1399 in all IPP requests (see [ipp-mod]). If the value of the .attributes- 1400 charset. attribute is unsupported, the Printer MUST populate this 1401 attribute in the Subscription Object with the value of the Printer.s 1402 .charset-configured. attribute. There is no .notify-charset-default. 1403 attribute. 1405 The value of this attribute on a Subscription Object MUST be a value of 1406 the .charset-supported (1setOf charset). attribute. 1408 5.3.6 notify-natural-language (naturalLanguage) 1410 This attribute specifies the natural language to be used in any human 1411 consumable text in the Event Notification content sent to the 1412 Notification Recipient, whether the Event Notification content is 1413 Machine Consumable or Human Consumable. 1415 A Printer MUST support this attribute. 1417 A client MAY supply this attribute in a Subscription Creation Operation. 1418 If the client does not supply this attribute in Subscription Creation 1419 Operation or supplies an unsupported value, the Printer MUST populate 1420 this attribute in the Subscription Object with the value of the 1421 .attributes-natural-language. operation attribute, which is a REQUIRED 1422 attribute in all IPP requests (see [ipp-mod]). If the value of the 1423 .attributes-natural-language. attribute is unsupported, the Printer MUST 1424 populate this attribute in the Subscription Object with the value of the 1425 Printer.s .natural-language-configured. attribute. There is no .notify- 1426 natural-language-default. attribute. 1428 The value of this attribute on a Subscription Object MUST be a value of 1429 the .generated-natural-language-supported (1setOf type2 1430 naturalLanguage). attribute. 1432 5.3.7 notify-lease-duration (integer(0:67108863)) 1434 This attribute specifies the duration of the lease associated with the 1435 Per-Printer Subscription Object at the time the Subscription Object was 1436 created or the lease was renewed. The duration of the lease is infinite 1437 if the value is 0, i.e., the lease never expires. 1439 This attribute is not present on a Per-Job Subscription Object because 1440 the Subscription Object lasts exactly as long as the associated Job 1441 object. See section 5.4.3 on .notify-lease-expiration-time 1442 (integer(0:MAX)). for more details. 1444 A Printer MUST support this attribute. 1446 For a Subscription Object Creation operation of a Per-Job Subscription 1447 Object, the client MUST NOT supply this attribute. If the client does 1448 supply this attribute, the Printer MUST treat it as an unsupported 1449 attribute. 1451 For a Subscription Creation Operation of a Per-Printer Subscription 1452 Object or a Renew-Subscription operation, a client MAY supply this 1453 attribute. If the client does not supply this attribute, the Printer 1454 MUST populate this attribute with its .notify-lease-duration-default. 1455 (0:67108863) attribute value. If the client supplies this attribute with 1456 an unsupported value, the Printer MUST populate this attribute with a 1457 supported value, and this value SHOULD be as close as possible to the 1458 value requested by the client. Note: this rule implies that a Printer 1459 doesn.t assign the value of 0 (infinite) unless the client requests it. 1461 After the Printer has populated this attribute with a supported value, 1462 the value represents the .granted duration. of the lease and the Printer 1463 sets the value of the Subscription Object.s .notify-lease-expiration- 1464 time. attribute as specified in section 5.4.3. 1466 The value of this attribute on a Subscription Object MUST be a value of 1467 the .notify-lease-duration-supported. (1setOf (integer(0:67108863) | 1468 rangeOfInteger(0:67108863))) attribute. 1470 A Printer MAY require authentication in order to return the value of 0 1471 (the lease never expires) as one of the values of .notify-lease- 1472 duration-supported., and to allow 0 as a value of the .notify-lease- 1473 duration. attribute. 1475 Note: The maximum value 67,108,863 is 2 raised to the 26 power minus 1 1476 and is about 2 years in seconds. The value is considerably less than 1477 MAX so that there is virtually no chance of an overflow when it is added 1478 to .printer-up-time. to produce .notify-lease-expiration-time.. 1480 5.3.8 notify-persistence (boolean) 1482 This attribute specifies whether the Printer preserves the Subscription 1483 Object across power cycles. 1485 A Printer MUST support this attribute. 1487 A client MAY supply this attribute in a Subscription Creation Operation. 1488 If the client does not supply this attribute in Subscription Creation 1489 Operation, the Printer MUST populate this attribute with its .notify- 1490 persistence-default. (boolean) attribute value. If the client supplies 1491 this attribute with an unsupported value, the Printer MUST populate this 1492 attribute with a supported value. The Printer MAY populate this 1493 attribute with a value other than the one the client requests. For 1494 example, if the client specifies .true. and the Printer doesn.t have 1495 space for another Subscription Object, it sets the value of this 1496 attribute to .false.. If the client specifies .false. and the Printer 1497 has a policy of setting this attribute to .true. if there is space, the 1498 Printer sets this attribute to .true.. 1500 The value of this attribute on a Subscription Object MUST be a value of 1501 the .notify-persistence-supported (1setOf boolean). attribute. The 1502 .notify-persistence-supported. (1setOf boolean) attribute can have one 1503 of the following three values: 1505 true: all Subscription Objects are persistent (if there is space). 1507 false: no Subscription Objects are persistent 1509 true, false: some Subscription Objects are persistent and others are 1510 not. For example, the Printer may have room for only 2 Subscription 1511 Objects. 1513 It is RECOMMENDED that all Subscription Objects be persistent. If Jobs 1514 are persistent, the Per-Job Subscription Objects MUST be persistent too. 1516 ISSUE 04: it would be better for this attribute to be a Subscription 1517 Description attribute that the Printer sets to show whether the Object 1518 is persistent or not. Agree? 1520 5.4 Subscription Description Attributes 1522 Subscription Description Attributes are those attributes that a Printer 1523 adds to a Subscription Object at the time of its creation. 1525 A Printer MUST support all attributes in this Table 2. 1527 A client MUST NOT supply the attributes in Table 2 in a Subscription 1528 Template Attributes Group of a Subscription Creation Operation. If the 1529 client supplies them, the Printer MUST NOT set them and MUST treat them 1530 as unsupported attributes. There are no corresponding default or 1531 supported attributes. 1533 Table 2 . Subscription Description Attributes 1535 Subscription Object attributes: 1537 notify-subscription-id (integer(1:MAX)) 1539 notify-sequence-number (integer(0:MAX)) 1541 notify-lease-expiration-time (integer(0:MAX)) 1543 notify-printer-up-time (integer(1:MAX)) 1545 notify-printer-uri (uri) 1547 notify-job-id (integer(1:MAX)) 1548 Subscription Object attributes: 1550 notify-subscriber-user-name (name(MAX)) 1552 5.4.1 notify-subscription-id (integer (1:MAX)) 1554 This attribute identifies a Subscription Object instance with a number 1555 that is unique within the context of the Printer. The Printer generates 1556 this value at the time it creates the Subscription Object. 1558 A Printer MUST support this attribute. 1560 The Printer SHOULD NOT assign the value of this attribute sequentially 1561 as it creates Subscription Objects. Sequential assignment makes it easy 1562 for rogue clients to guess the value of this attribute on other 1563 Subscription Objects. 1565 The Printer SHOULD avoid re-using recent values of this attribute during 1566 continuous operation of the Printer as well as across power cycles. Then 1567 a Subscribing Client is unlikely to find that a stale reference accesses 1568 a new Subscription Object. 1570 The 0 value is not permitted in order to allow for compatibility with 1571 .job-id. and with SNMP index values, which also cannot be 0. 1573 5.4.2 notify-sequence-number (integer (0:MAX)) 1575 The value of this attribute indicates the number of times that the 1576 Printer has generated and attempted to send an Event Notification. When 1577 an Event Notification contains this attribute, the Notification 1578 Recipient can determine whether it missed some Event Notifications 1579 (i.e., numbers skipped) or received duplicates (i.e., same number 1580 twice). 1582 A Printer MUST support this attribute. 1584 When the Printer creates a Subscription Object, it MUST set the value of 1585 this attribute to 0. This value indicates that the Printer has not sent 1586 any Event Notifications for this Subscription Object. 1588 Each time the Printer sends a newly generated Event Notification, it 1589 MUST increase the value of this attribute by 1. For some Delivery 1590 Methods, the Printer MUST include this attribute in each Event 1591 Notification, and the value MUST be the value after it is increased by 1592 1. That is, the value of this attribute in the first Event Notification 1593 after Subscription object creation MUST be 1, the second MUST be 2, etc. 1594 If a Delivery Method is defined such that the Notification Recipient 1595 returns a response, the Printer can re-try sending an Event Notification 1596 a certain number of times with the same sequence number when the 1597 Notification Recipient fails to return a response. 1599 If a Subscription Object lasts long enough to reach the value of MAX, 1600 its next value MUST be 0, i.e., it wraps. 1602 5.4.3 notify-lease-expiration-time (integer(0:MAX)) 1604 This attribute specifies the time in the future when the lease on the 1605 Per-Printer Subscription Object will expire, i.e. the .printer-up-time. 1606 value at which the lease will expire. If the value is 0, the lease never 1607 expires. 1609 A Printer MUST support this attribute. 1611 When the Printer creates a Per-Job Subscription Object, this attribute 1612 MUST NOT be present . the Subscription Object lasts exactly as long as 1613 the associated Job object. 1615 When the Printer creates a Per-Printer Subscription Object, it populates 1616 this attribute with a value that is the sum of the values of the 1617 Printer.s .printer-up-time. attribute and the Subscription Object.s 1618 .notify-lease-duration. attribute with the following exception. If the 1619 value of the Subscription Object.s .notify-lease-duration. attribute is 1620 0 (i.e., no expiration time), then the value of this attribute MUST be 1621 set to 0 (i.e., no expiration time). 1623 When the Printer powers up, it MUST set the value of this attribute in 1624 each persistent Subscription Object using the algorithm in the previous 1625 paragraph. 1627 When the .printer-up-time. equals the value of this attribute, the 1628 Printer MUST delete the Subscription Object. A client can extend a lease 1629 of a Per-Printer Subscription Object with the Renew-Subscription 1630 operation (see section 11.2.5). 1632 Note: In order to compute the number of seconds remaining in a lease for 1633 a Per-Printer Subscription Object, a client can subtract the 1634 Subscription.s .notify-printer-up-time. attribute (see section 5.4.4) 1635 from the Subscription.s .notify-lease-expiration-time. attribute. 1637 5.4.4 notify-printer-up-time (integer(1:MAX)) 1639 This attribute is an alias for the Printer.s .printer-up-time. attribute 1640 . (see [ipp-mod] section 4.4.29). 1642 A Printer MUST support this attribute. 1644 When the Printer creates a Per-Job Subscription Object, this attribute 1645 MUST NOT be present. When the Printer creates a Per-Printer Subscription 1646 Object, this attribute MUST be present. 1648 Note: this attribute exists in a Per-Printer Subscription Object so that 1649 a client using the Get-Subscription-Attributes or Get-Subscription 1650 operations can convert the Per-Printer Subscription.s .notify-lease- 1651 expiration-time. attribute to wall clock time with one request. If the 1652 value of the .notify-lease-expiration-time. attribute is not 0 (i.e., no 1653 expiration time), then the difference between the .notify-lease- 1654 expiration-time. attribute and the .notify-printer-up-time. is the 1655 remaining number of seconds on the lease from the current time. 1657 5.4.5 notify-printer-uri (uri) 1659 This attribute identifies the Printer object that created this 1660 Subscription Object. 1662 A Printer MUST support this attribute. 1664 During a Subscription Creation Operation, the Printer MUST populate this 1665 attribute with the value of the .printer-uri. operation attribute in the 1666 request. From the Printer URI, the client can, for example, determine 1667 what security scheme was used. 1669 5.4.6 notify-job-id (integer(1:MAX)) 1671 This attribute specifies whether the containing Subscription Object is a 1672 Per-Job or Per-Printer Subscription Object, and for Per-Job Subscription 1673 Objects, it specifies the associated Job. 1675 A Printer MUST support this attribute. 1677 If this attribute is not present, the Subscription Object MUST be a Per- 1678 Printer Subscription. If this attribute is present, the Subscription 1679 Object MUST be a Per-Job Subscription Object and this attribute MUST 1680 identify the Job with which the Subscription Object is associated. 1682 Note: This attribute could be useful to a Notification Recipient that 1683 receives an Event Notification generated from a Per-Job Subscription 1684 Object and caused by a Printer Event. The Event Notification gives 1685 access to the Printer and the Subscription Object. The Event 1686 Notification gives access to the associated Job only via this attribute. 1687 ISSUE 05: OK that we added the REQUIRED .notify-job-id. attribute 1688 because it is needed for a Notification Recipient to determine from a 1689 random subscription-id whether a Subscription is Per-Printer or Per-Job 1690 and if the latter which Job. 1692 5.4.7 notify-subscriber-user-name (name(MAX)) 1694 This attribute contains the name of the user who performed the 1695 Subscription Creation Operation. 1697 A Printer MUST support this attribute. 1699 The Printer sets this attribute to the most authenticated printable name 1700 that it can obtain from the authentication service over which the 1701 Subscription Creation Operation was received. The Printer uses the same 1702 mechanism for determining the value of this attribute as it does for a 1703 Job.s .job-originating-user-name. (see [ipp-mod] section 4.3.6). 1705 Note: To help with authentication, a Subscription Object may have 1706 additional private attributes about the user, e.g., a credential of a 1707 principal. Such private attributes are implementation-dependent and not 1708 defined in this document. 1710 6 Printer Description Attributes Related to Notification 1712 This section defines the Printer Description attributes that are related 1713 to Notification. Table 3 lists the Printer Description attributes, 1714 indicates the Printer support required for conformance, and whether or 1715 not the attribute is READ-ONLY (see section 3.1): 1717 Table 3 . Printer Description Attributes Associated with Notification 1719 Printer object attributes: REQUIRED READ-ONLY 1721 notify-max-printer-subscriptions-supported Yes No 1722 (integer(0:MAX)) 1724 notify-max-job-subscriptions-supported Yes No 1725 (integer(0:MAX)) 1727 printer-state-change-time (integer(1:MAX)) No Yes 1729 printer-state-change-date-time (dateTime) No Yes 1731 6.1 notify-max-printer-subscriptions-supported (integer(0:MAX)) 1733 This attribute specifies the maximum number of un-expired Per-Printer 1734 Subscription Objects that the Printer supports at one time. A value of 1735 MAX indicates no effective maximum. 1737 A Printer MUST support this attribute. 1739 A Printer MUST support at least 1 Per-Printer Subscription Object. An 1740 implementation MAY allow an Administrator to set the value of this 1741 attribute to 0 in order to disable creation of Per-Printer Subscription 1742 Objects. 1744 If the number of Per-Printer Subscription Objects equals the value of 1745 this attribute during a Subscription Creation Operation, the Printer 1746 MUST NOT create any additional Per-Printer Subscription Objects. See 1747 section 11.1.2 for details on the creation of Subscription Objects and 1748 how the Printer indicates such failure in a Subscription Creation 1749 Operation. 1751 ISSUE 06: OK to use MAX to mean no limit and 0 to mean that an admin has 1752 turned off subscriptions? 1754 6.2 notify-max-job-subscriptions-supported (integer(0:MAX)) 1756 This attribute specifies the maximum number of Per-Job Subscription 1757 Objects that the Printer supports for each job. For example, if a 1758 Printer can hold 2 Jobs and this attribute has the value of 3, it can 1759 hold a total of 6 Per-Job Subscription Objects. A value of MAX 1760 indicates no effective maximum. 1762 A Printer MUST support this attribute. 1764 A Printer MUST support at least 1 Per-Job Subscription Object per Job. 1765 An implementation MAY allow an Administrator to set the value of this 1766 attribute to 0 in order to disable creation of Per-Job Subscription 1767 Objects. 1769 If the number of Per-Job Subscription Objects associated with the 1770 specified Job equals the value of this attribute during a Subscription 1771 Creation Operation, the Printer MUST NOT create any additional Per-Job 1772 Subscription Objects. See section 11.1 for details on the creation of 1773 Subscription Objects and how the Printer indicates such failure in a 1774 Subscription Creation Operation. 1776 ISSUE 07: OK to use MAX to mean no limit and 0 to mean that an admin has 1777 turned off subscriptions? 1779 6.3 printer-state-change-time (integer(1:MAX)) 1781 This attribute records the most recent time at which the .printer-state- 1782 changed. Printer Event occurred whether or not any Subscription objects 1783 were listening for this event. This attribute helps a client or 1784 operator to determine how long the Printer has been in its current 1785 state. 1787 A Printer MAY support this attribute and if so, the attribute MUST be 1788 READ-ONLY. 1790 On power-up, the Printer MUST set the value of this attribute to be the 1791 value of its .printer-up-time. attribute, so that it always has a value. 1792 Whenever the .printer-state-changed. Printer Event occurs, the Printer 1793 MUST set this attribute to the value of the Printer.s .printer-up-time. 1794 attribute. 1796 6.4 printer-state-change-date-time (dateTime) 1798 This attribute records the most recent time at which the .printer-state- 1799 changed. Printer Event occurred whether or not there were any 1800 Subscription Objects listening for this event. This attribute helps a 1801 client or operator to determine how long the Printer has been in its 1802 current state. 1804 A Printer MAY support this attribute and if so, the attribute MUST be 1805 READ-ONLY. 1807 On power-up, the Printer MUST set the value of this attribute to be the 1808 value of its .printer-current-time. attribute, so that it always has a 1809 value (see [ipp-mod] section 4.4.30 on .printer-current-time.). Whenever 1810 the .printer-state-changed. Printer Event occurs, the Printer MUST set 1811 this attribute to the value of the Printer.s .printer-current-time. 1812 attribute. 1814 7 New Values for Existing Printer Description Attributes 1816 7.1 operations-supported (1setOf type2 enum) 1818 The following .operation-id. values are added in order to support the 1819 new operations defined in this document: 1821 Table 4 . Operation-id assignments 1823 Value Operation Name 1825 0x0016 Create-Printer-Subscriptions 1827 0x0017 Create-Job-Subscriptions 1829 0x0018 Get-Subscription-Attributes 1831 0x0019 Get-Subscriptions 1833 0x001A Renew-Subscription 1835 0x001B Cancel-Subscription 1837 8 Attributes Only in Event Notifications 1839 This section contains those attributes that exist only in Event 1840 Notifications. 1842 8.1 notify-subscribed-event (type2 keyword) 1844 This attribute indicates the Subscribed Event that caused the Printer to 1845 send this Event Notification. This attribute exists only in Event 1846 Notifications. 1848 The Printer MUST send this attribute. This attribute exists only in 1849 Event Notifications. 1851 This attribute MUST contain one of the values of the .notify-events. 1852 attribute in the Subscription Object, i.e., one of the Subscribed Event 1853 values. Its value is the Subscribed Event that .matches. the Event that 1854 caused the Printer to send this Event Notification. This Subscribed 1855 Event value may be identical to the Event or the Event may be a sub- 1856 value of the Subscribed Event. For example, the .job-completed. Event 1857 (which is a sub-event of the .job-state-changed. event) would cause the 1858 Printer to send an Event Notification for either the .job-completed. or 1859 .job-state-changed. Subscribed Events and to send the .job-completed. or 1860 .job-state-changed. value for this attribute, respectively,. See 1861 section 5.3.2.2 for the .matching. rules of Subscribed Events and for 1862 additional examples. 1864 The Delivery Method Document specifies whether the Printer includes the 1865 value of this attribute in an Event Notification. 1867 8.2 notify-text (text(MAX)) 1869 This attribute contains a Human Consumable text message (see section 1870 9.2). This message describes the Event and is encoded as plain text, 1871 i.e., .text/plain. with the charset specified by Subscription Object.s 1872 .notify-charset. attribute. 1874 The Delivery Method Document specifies whether the Printer includes this 1875 attribute in an Event Notification. 1877 The Printer MAY support this attribute. If a Printer supports a Delivery 1878 Method that requires this attribute, then the Printer MUST support this 1879 attribute 1881 9 Event Notification Content 1883 This section defines the Event Notification content that the Printer 1884 sends when an Event occurs. 1886 When an Event occurs, the Printer MUST find each Subscription object 1887 whose .notify-events. attribute .matches. the Event. See section 5.3.2.2 1888 for details on .matching.. For each matched Subscription Object, the 1889 Printer MUST create an Event Notification with the content and format 1890 that the Delivery Method Document specifies. The content contains the 1891 value of attributes specified by the Delivery Method Document. The 1892 Printer obtains the values immediately after the Event occurs. For 1893 example, if the .printer-state. attribute changes from .idle. to 1894 .processing., the Event .printer-state-changed. occurs and the Printer 1895 puts various attributes into the Event Notification, including .printer- 1896 up-time. and .printer-state. with the values that they have immediately 1897 after the Event occurs, i.e., the value of .printer-state. is 1898 .processing.. 1900 If two different Events occur simultaneously, or nearly so (e.g., 1901 .printer-up-time. has the same value for both), the Printer MUST create 1902 a separate Event Notification for each Event, even if the associated 1903 Subscription Object is the same for both Events. For example, suppose 1904 that two nearly-simultaneously Events represent two successive .printer- 1905 state-changed. Events, one from .idle. to .processing. and another from 1906 .processing. to .stopped.. These two Events have the same name but are 1907 different instances of the Event. Then the Printer MUST create a 1908 separate Event Notification for each Event and SHOULD accurately report 1909 the .printer-state. of the first Event as .processing. and the second 1910 Event as .stopped.. 1912 If the same Event occurs several times in quick succession (e.g., .job- 1913 progress.), the Printer MUST create a separate Event Notification for 1914 each Event unless the Delivery Method Document specifies that the Event 1915 is moderated. Events might be moderated by a time interval (e.g., every 1916 10 seconds) or by the number of Events (every 10th occurrence of the 1917 Event). 1919 If a Subscription Object contains more than one Subscribed Event, and 1920 several matching Events occur in quick succession, the Printer MUST 1921 generate a separate Event Notification for each Event. Depending on the 1922 Delivery Method, the Printer MAY combine several Event Notifications 1923 into a single compound Event Notification. 1925 After the Printer has created the Event Notification, the Printer 1926 delivers it via either a: 1928 Push Delivery Method: The Printer sends the Event Notification 1929 shortly after an Event occurs. For some Push Delivery Methods, the 1930 Notification Recipient MUST send a response; for others it MUST NOT 1931 send a response. 1933 Pull Delivery Method: The Printer saves Event Notifications for 1934 some event-lease time and expects the Notification Recipient to 1935 request Event Notifications. The Printer returns the Event 1936 Notifications in a response to such a request. 1938 The next two sections describe the values that a Printer sends in the 1939 content of Machine Consumable and Human Consumable Event Notifications, 1940 respectively. 1942 9.1 Content of Machine Consumable Event Notifications 1944 This section defines the attributes that a Delivery Method MUST mention 1945 in a Delivery Method Document when specifying the Machine Consumable 1946 Event Notification.s contents. 1948 This document does not define the order of attributes in Event 1949 Notifications. However, Delivery Method Documents MAY define the order 1950 of some or all of the attributes. 1952 A Delivery Method Document MUST specify additional attributes (if any) 1953 that a Printer implementation sends in a Machine Consumable Event 1954 Notification. 1956 Notification Recipients MUST be able to accept Event Notifications 1957 containing attributes they do not recognize. What a Notification 1958 Recipient does with an unrecognized attribute is implementation- 1959 dependent. Notification Recipients MAY attempt to display unrecognized 1960 attributes anyway or MAY ignore them. 1962 The next three sections define the attributes in Event Notification 1963 Contents that are: 1965 a)for all Events 1967 b)for Job Events only 1969 c)for Printer Events only 1971 9.1.1 Attributes in Event Notification Content Common to All Events 1973 This section lists the attributes that a Delivery Method MUST specify 1974 for all Events. 1976 The tables in this section and following sections contain the following 1977 columns: 1979 a)Source Value: the name of the attribute that supplies the value 1980 for the Event Notification. Asterisks in this field refer to a 1981 note below the table. 1983 b)Sends: if the Printer supports the value (column 1) on the 1984 Source Object (column 3) the Delivery Method MUST specify: 1986 MUST: that the Printer MUST send the value. 1988 SHOULD: either that the Printer MUST send the value or that 1989 the value is incompatible with the Delivery Method. 1991 MAY: that the Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, 1992 or NEED NOT send the value. 1994 c)Source Object: the object from which the source value comes. If 1995 the object is .Event Notification., the Printer fabricates the 1996 value when it sends the Event Notification. See section 8. 1998 Table 5 lists potential values in each Event Notification. 2000 Table 5 . Attributes in Event Notification Content 2002 Source Value Sends Source Object 2004 notify-subscription-id (integer(1:MAX)) MUST Subscription 2006 notify-printer-uri (uri) MUST Subscription 2008 notify-subscribed-event (type2 keyword) MUST Event 2009 Notification 2011 printer-up-time (integer(MIN:MAX)) MUST Printer 2013 printer-current-time (dateTime) MUST Printer 2015 notify-sequence-number (integer (0:MAX)) SHOULD Subscription 2017 notify-charset (charset) SHOULD Subscription 2019 notify-natural-language (naturalLanguage) SHOULD Subscription 2021 notify-user-data (octetString(63)) * SHOULD Subscription 2023 notify-text (text) SHOULD Event 2024 Source Value Sends Source Object 2026 Notification 2028 attributes from the .notify-attributes. MAY Printer 2029 attribute ** 2031 attributes from the .notify-attributes. MAY Job 2032 attribute ** 2034 attributes from the .notify-attributes. MAY Subscription 2035 attribute ** 2037 * If the Subscription Object does not contain a .notify-user-data. 2038 attribute and the Delivery Method document REQUIRES the Printer to send 2039 the .notify-user-data. source value in the Event Notification, the 2040 Printer MUST send an octet-string of length 0. 2042 ** The last three rows represent additional attributes that a client MAY 2043 request via the .notify-attributes. attribute. A Printer MAY support 2044 the .notify-attributes. attribute. The Delivery Method MUST say that the 2045 Printer MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, or NEED NOT support the 2046 .notify-attributes. attribute and specific values of this attribute. The 2047 Delivery Method MAY say that support for the .notify-attributes. is 2048 conditioned on support of the attribute by the Printer or it MAY say 2049 that Printer MUST support the .notify-attribute. attribute if the 2050 Printer supports the Delivery Method. 2052 9.1.2 Additional Attributes in Event Notification Content for Job Events 2054 This section lists the additional attributes that a Delivery Method MUST 2055 specify for Job Events. See Table 6. 2057 Table 6 . Additional Attributes in Event Notification Content for Job 2058 Events 2060 Source Value Sends Source Object 2062 job-id (integer(1:MAX)) MUST Job 2064 job-state (type1 enum) MUST Job 2066 job-state-reasons (1setOf type2 keyword) MUST Job 2068 job-impressions-completed (integer(0:MAX)) MUST Job 2069 * 2071 * The Printer MUST send the .job-impressions-completed. attribute in an 2072 Event Notification only for the combinations of Events and Subscribed 2073 Events shown in Table 7. 2075 Table 7 . Combinations of Events and Subscribed Events for .job- 2076 impressions-completed. 2078 Job Event Subscribed Job Event 2080 .job-progress. .job-progress. 2082 .job-completed. .job-completed. 2084 .job-completed. .job-state-changed. 2086 9.1.3 Additional Attributes in Event Notification Content for Printer 2087 Events 2089 This section lists the additional attributes that a Delivery Method MUST 2090 specify for Printer Events. See Table 8. 2092 Table 8 . Additional Attributes in Event Notification Content for 2093 Printer Events 2095 Source Value Sends Source Object 2097 printer-state (type1 enum) MUST Printer 2099 printer-state-reasons (1setOf type2 MUST Printer 2100 keyword) 2102 printer-is-accepting-jobs (boolean) MUST Printer 2104 9.2 Content of Human Consumable Event Notification 2106 This section defines the information that a Delivery Method MUST mention 2107 in a Delivery Method Document when specifying the Human Consumable Event 2108 Notifications contents or the value of the .notify-text. attribute. 2110 Such a Delivery Method MUST specify the following information and a 2111 Printer SHOULD send it: 2113 a)the Printer name (see Table 9) 2114 b)the time of the Event (see Table 11) 2115 c)for Printer Events only: 2116 i) the Event (see Table 10) and/or Printer state information 2117 (see Table 14) 2118 d)for Job Events only: 2119 i) the job identity (see Table 12) 2120 ii) the Event (see Table 10) and/or Job state information (see 2121 Table 13) 2123 The subsections of this section specify the attributes that a Printer 2124 MUST use to obtain this information. 2126 A Delivery Method Document MUST specify additional information (if any) 2127 that a Printer implementation sends in a Human Consumable Event 2128 Notification or in the .notify-text. attribute. 2130 A client MUST NOT request additional attributes via the .notify- 2131 attributes. attribute because this attribute works only for Machine 2132 Consumable Event Notifications. 2134 Notification Recipients MUST NOT expect to be able to parse the Human 2135 Consumable Event Notification contents or the value of the .notify-text. 2136 attribute. 2138 The next three sections define the attributes in Event Notification 2139 Contents that are: 2141 a)for all Events 2143 b)for Job Events only 2145 c)for Printer Events only 2147 9.2.1 Information in Event Notification Content Common to All Events 2149 This section lists the source of the information that a Delivery Method 2150 MUST specify for all Events. 2152 There is a separate table for each piece of information. Each row in the 2153 table represents a source value for the information and the values are 2154 listed in order of preference, with the first one being the preferred 2155 one. An implementation SHOULD use the source value from the earliest row 2156 in each table. The tables in this section and following contain the 2157 following columns for each piece of information: 2159 a)Source of Value: the name of the attribute that supplies the 2160 value for the Event Notification 2162 b)Source Object: the object from which the source value comes. 2164 The tables in this section do not contain a .Sends. column because all 2165 rows would have a .SHOULD. as defined in section 9.1.1. 2167 Table 9 lists the source of the information for the Printer Name. The 2168 .printer-name. is more user-friendly unless the Notification Recipient 2169 is in a place where the Printer name is not meaningful. 2171 Table 9 . Printer Name in Event Notification Content 2173 Source Value Source Object 2175 printer-name (name(127)) Printer 2177 notify-printer-uri (uri) Subscription 2178 Table 10 lists the source of the information for the Event name. A 2179 Printer MAY combine this information with state information described 2180 for Jobs in Table 13 or for Printers in Table 14. 2182 Table 10 . Event Name in Event Notification Content 2184 Source Value Source Object 2186 notify-subscribed-event (type2 keyword) Subscription 2188 Table 11 lists the source of the information for the time that the Event 2189 occurred. A Printer can send this value only if it supports the 2190 Printer.s .printer-current-time. attribute. If a Printer does not 2191 support the 2192 .printer-current-time. attribute, it MUST NOT send the .printer-up-time. 2193 value instead, since it is not an allowed option for human consumable 2194 information. 2196 Table 11 . Event Time in Event Notification Content 2198 Source Value Source Object 2200 printer-current-time (dateTime) Printer 2202 9.2.2 Additional Information in Event Notification Content for Job 2203 Events 2205 This section lists the source of the additional information that a 2206 Delivery Method MUST specify for Job Events. 2208 Table 12 lists the source of the information for the job name. The .job- 2209 name. is likely more meaningful to a user than .job-id.. 2211 Table 12 . Job Name in Event Notification Content for Job Events 2213 Source Value Source Object 2215 job-name (name(MAX)) Job 2217 job-id (integer(1:MAX)) Job 2219 Table 13 lists the source of the information for the job state. If a 2220 Printer supports the .job-state-message. and .job-detailed-state- 2221 message. attributes, it SHOULD use those attributes for the job state 2222 information, otherwise, it should fabricate such information from the 2223 .job-state. and .job-state-reasons.. For some Events, a Printer MAY 2224 combine this information with Event information. 2226 Table 13 . Job State in Event Notification Content for Job Events 2228 Source Value Source Object 2230 job-state-message (text(MAX)) Job 2232 job-detailed-status-messages (1setOf text(MAX)) Job 2234 job-state (type1 enum) Job 2236 job-state-reasons (1setOf type2 keyword) Job 2238 9.2.3 Additional Information in Event Notification Content for Printer 2239 Events 2241 This section lists the source of the additional information that a 2242 Delivery Method MUST specify for Printer Events. 2244 Table 14 lists the source of the information for the printer state. If 2245 a Printer supports the .printer-state-message., it SHOULD use that 2246 attribute for the job state information, otherwise it SHOULD fabricate 2247 such information from the .printer-state. and .printer-state-reasons.. 2248 For some Events, a Printer MAY combine this information with Event 2249 information. 2251 Table 14 . Printer State in Event Notification Content for Printer 2252 Events 2254 Source Value Source Object 2256 printer-state-message (text(MAX)) Printer 2258 printer-state (type1 enum) Printer 2260 printer-state-reasons (1setOf type2 keyword) Printer 2262 printer-is-accepting-jobs (boolean) Printer 2264 10 Delivery Methods 2266 A Delivery Method is the mechanism, i.e., protocol, by which the Printer 2267 delivers an Event Notification to a Notification Recipient. There are 2268 several potential Delivery Methods for Event Notifications, 2269 standardized, as well as proprietary. This document does not define any 2270 of these delivery mechanisms. Each Delivery Method MUST be defined in a 2271 Delivery Method Document that is separate from this document. New 2272 Delivery Methods will be created as needed using an extension to the 2273 registration procedures defined in [ipp-mod]. Such documents are 2274 registered with IANA (see section 13). 2276 The following sorts of Delivery Methods are expected: 2278 - The Notification Recipient polls for Event Notifications at 2279 intervals directed by the Printer 2281 - The Printer sends Event Notifications to the Notification Recipient 2282 using http as the transport. 2284 - The Printer sends an email message. 2286 This section specifies how to define a Delivery Method Document and what 2287 to put in such a document. 2289 A Delivery Method Document: 2291 1.MUST define a URL scheme name for the Delivery Method. 2293 2.MUST indicate whether the delivery method is REQUIRED or OPTIONAL for 2294 an IPP Printer to support if it supports Event Notification. 2296 3.MUST define the transport and delivery protocol for the Event 2297 Notification content that a Printer MUST use, i.e., the entire 2298 network stack. 2300 4.MUST indicate whether or not several Event Notifications can be 2301 combined into a compound Event Notification. 2303 5.MUST describe how the Delivery Method is initiated, i.e., is it 2304 initiated by the receiving user (pull), or is it initiated by the 2305 Printer (push). 2307 6.MUST indicate whether the Delivery Method is Machine Consumable or 2308 Human Consumable. 2310 7.MUST define the representation and encoding that a Printer MUST use 2311 for each value or piece of information listed in section 9 (9.1 for 2312 Machine Consumable Event Notification and/or section 9.2 for Human 2313 Consumable Event Notification). 2315 8.MUST specify for each attribute in section 9 whether a Printer MUST, 2316 SHOULD, MAY, MUST NOT, SHOULD NOT or NEED NOT send the attribute in 2317 an Event Notification content. 2319 9.MUST define what frequently occurring Events MUST be moderated, if 2320 any, and whether the moderation mechanism is configurable. Also 2321 whether Events are moderated by sending one per time unit or one per 2322 number of Events. 2324 10. MUST discuss the latency and reliability of the transport and 2325 delivery protocol. 2327 11. MUST discuss the security aspects of the transport and delivery 2328 protocol, e.g., how it is handled in firewalls. 2330 12. MUST identify content length restrictions, if any. 2332 13. MAY define additional values or pieces of information that a 2333 Printer MUST, SHOULD or MAY send in a Notification content. 2335 14. MAY define additional Subscription Template and/or Subscription 2336 Description attributes and the conformance requirements thereof. 2338 15. MAY define additional Printer Description attributes and the 2339 conformance requirements thereof. 2341 11 Operations for Notification 2343 This section defines all of the operations for Notification. Section 7.1 2344 assigns of the .operation-id. for each operation. The following two 2345 sub-sections define Subscription Creation Operations, and other 2346 operations. 2348 11.1 Subscription Creation Operations 2350 This section defines the Subscription Creation Operations. The first 2351 section on Create-Job-Subscriptions gives most of the information. The 2352 other Subscription Creation Operations refer to the section on Create- 2353 Job-Subscriptions, even though the Create-Job-Subscriptions operation is 2354 the only OPTIONAL operation in this document (see section 12). 2356 A Printer MUST support Create-Printer-Subscriptions and the Subscription 2357 Template Attributes Group in Job Creation operations. It MAY support 2358 Create-Job-Subscriptions operations. 2360 11.1.1 Create-Job-Subscriptions Operation 2362 The operation creates one or more Per-Job Subscription Objects. The 2363 client supplies one or more Subscription Template Attributes Groups each 2364 containing one or more of Subscription Template Attributes (defined in 2365 section 5.3). 2367 Except for errors, the Printer MUST create exactly one Per-Job 2368 Subscription Object from each Subscription Template Attributes Group in 2369 the request, even if the newly created Subscription Object would have 2370 identical behavior to some existing Subscription Object. The Printer 2371 MUST associate each newly created Per-Job Subscription Object with the 2372 target Job, which is specified by the .notify-job-id. operation 2373 attribute. 2375 The Printer MUST accept the request in any of the target job.s .not- 2376 completed. states, i.e., .pending., .pending-held., .processing., or 2377 .processing-stopped.. The Printer MUST NOT change the job.s .job-state. 2378 attribute because of this operation. If the target job is in any of the 2379 .completed. states, i.e., .completed., .canceled., or .aborted, then the 2380 Printer MUST reject the request and return the .client-error-not- 2381 possible. status code; the response MUST NOT contain any Subscription 2382 Attribute Groups. 2384 Access Rights: To create Per-Job Subscription Objects, the 2385 authenticated user (see [IPP-MOD] section 8.3) performing this operation 2386 MUST either be the job owner or have Operator or Administrator access 2387 rights for this Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise 2388 the Printer MUST reject the operation and return: the .client-error- 2389 forbidden., .client-error-not-authenticated., or .client-error-not- 2390 authorized. status code as appropriate. 2392 11.1.1.1 Create-Job-Subscriptions Request 2394 The following groups of attributes are part of the Create-Job- 2395 Subscriptions Request: 2397 Group 1: Operation Attributes 2399 Natural Language and Character Set: 2400 The .attributes-charset. and .attributes-natural-language. 2401 attributes as described in [ipp-mod] section 3.1.4.1. 2403 Target: 2404 The .printer-uri. attribute which defines the target for this 2405 operation as described in [ipp-mod] section 3.1.5. 2407 Requesting User Name: 2408 The .requesting-user-name. attribute SHOULD be supplied by the 2409 client as described in [ipp-mod] section 8.3. 2411 notify-job-id (integer(1:MAX)): 2412 The client MUST supply this attribute and it MUST specify the Job 2413 object to associate the Per-Job Subscription with. The value of 2414 .notify-job-id. MUST be the value of the .job-id. of the associated 2415 Job object. If the client does not supply this attribute, the 2416 Printer MUST reject this request with a .client-error-bad-request. 2417 status code. 2419 Group 2-N: Subscription Template Attributes 2421 For each occurrence of this group: 2423 The client MUST supply one or more Subscription Template 2424 Attributes in any order. See section 5.3 for a description of 2425 each such attribute. See section 5.2 for details on processing 2426 these attributes. 2428 11.1.1.2 Create-Job-Subscriptions Response 2430 The Printer MUST return to the client the following sets of attributes 2431 as part of a Create-Job-Subscriptions response: 2433 Group 1: Operation Attributes 2435 Status Message: 2436 As defined in [ipp-mod]. 2438 The Printer can return any status codes defined in [ipp-mod] and 2439 section 16. The following is a description of the important status 2440 codes: 2442 successful-ok: the Printer created all Subscription Objects 2443 requested. 2444 successful-ok-ignored-subscriptions: the Printer created some 2445 Subscription Objects requested but some failed. The 2446 Subscription Attributes Groups with a .notify-status-code. 2447 attribute are the ones that failed. 2448 client-error-ignored-all-subscriptions: the Printer created no 2449 Subscription Objects requested and all failed. The 2450 Subscription Attributes Groups with a .notify-status-code. 2451 attribute are the ones that failed 2452 client-error-not-possible: For this operation and other Per-Job 2453 Subscription operations, this error can occur because the 2454 specified Job has already completed. 2456 Natural Language and Character Set: 2457 The .attributes-charset. and .attributes-natural-language. 2458 attributes as described in [ipp-mod] section 3.1.4.2. 2460 Group 2: Unsupported Attributes 2462 See [ipp-mod] section 3.1.7 for details on returning Unsupported 2463 Attributes. This group does not contain any unsupported 2464 Subscription Template Attributes; they are returned in the 2465 Subscription Attributes Group (see below). 2467 Group 3-N: Subscription Attributes 2469 These groups MUST be returned if and only if the .status-code. 2470 parameter returned in Group 1 has the values: .successful-ok., 2471 .successful-ok-ignored-subscriptions., or .client-error-ignored- 2472 all-subscriptions.. 2474 See section 5.2 for details on the contents of each occurrence of 2475 this group. 2477 11.1.2 Create-Printer-Subscriptions operation 2479 The operation is identical to Create-Job-Subscriptions with exceptions 2480 noted in this section. 2482 The operation creates Per-Printer Subscription Objects instead of Per- 2483 Job Subscription Objects, and associates each newly created Per-Printer 2484 Subscription Object with the Printer specified by the operation target 2485 rather than with a specific Job. 2487 The Printer MUST accept the request in any of its states, i.e., .idle., 2488 .processing., or .stopped.. The Printer MUST NOT change its .printer- 2489 state. attribute because of this operation. 2491 Access Rights: To create Per-Printer Subscription Objects, the 2492 authenticated user (see [IPP-MOD] section 8.3) performing this operation 2493 MUST have Operator or Administrator access rights for this Printer (see 2494 [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject the 2495 operation and return: the .client-error-forbidden., .client-error-not- 2496 authenticated., or .client-error-not-authorized. status code as 2497 appropriate. 2499 11.1.2.1 Create-Printer-Subscriptions Request 2501 The groups are identical to the Create-Job-Subscriptions (see section 2502 11.1.1.1) except that the Operation Attributes group MUST NOT contain 2503 the .notify-job-id. attribute. If the client does supply the .notify- 2504 job-id. attribute, then the Printer MUST treat it as any other 2505 unsupported Operation attribute and MUST return it in the Unsupported 2506 Attributes group. 2508 11.1.2.2 Create-Printer-Subscriptions Response 2510 The groups are identical to the Create-Job-Subscriptions (see section 2511 11.1.1.2). 2513 11.1.3 Job Creation Operation . Extensions for Notification 2515 This document extends the Job Creation operations to create Subscription 2516 Objects as a part of the operation. 2518 The operation is identical to Create-Job-Subscriptions with exceptions 2519 noted in this section. 2521 Unlike the Create-Job-Subscriptions operation, this operation associates 2522 the newly created Subscription Objects with the Job object created by 2523 this operation. The operation succeeds if and only if the Job creation 2524 succeeds. If the Printer does not create some or all of the requested 2525 Subscription Objects, the Printer MUST return a .successful-ok-ignored- 2526 subscriptions. status-code instead of a .successful-ok. status-code, but 2527 the Printer MUST NOT reject the operation because of a failure to create 2528 Subscription Objects. 2530 If the operation includes a Job Template group, the client MUST supply 2531 it after the Operation Attributes group and before the first 2532 Subscription Template Attributes Group. 2534 If a Printer does not support this Notification specification, then it 2535 MUST treat the Subscription Attributes Group like an unknown group and 2536 ignore it (see [ipp-mod] section 5.2.2). Because the Printer ignores 2537 the Subscription Attributes Group, it doesn.t return them in the 2538 response either, thus indicating to the client that the Printer doesn.t 2539 support Notification. 2541 Access Rights: To create Per-Job Subscription Objects, the 2542 authenticated user (see [IPP-MOD] section 8.3) performing this operation 2543 MUST either have permission to create Jobs on the Printer. Otherwise 2544 the Printer MUST reject the operation and return: the .client-error- 2545 forbidden., .client-error-not-authenticated., or .client-error-not- 2546 authorized. status code as appropriate. 2548 11.1.3.1 Job Creation Request 2550 The groups for this operation are sufficiently different from the 2551 Create-Job-Subscriptions operation that they are all presented here. The 2552 following groups of attributes are supplied as part of a Job Creation 2553 Request: 2555 Group 1: Operation Attributes 2557 Same as defined in [ipp-mod] for Print-Job, Print-URI, and Create- 2558 Job requests. 2560 Group 2: Job Template Attributes 2562 The client OPTIONALLY supplies a set of Job Template attributes as 2563 defined in [ipp-mod] section 4.2. 2565 Group 3 to N: Subscription Template Attributes 2567 The same as Group 2-N in Create-Job-Subscriptions. See section 2568 11.1.1.1. 2570 Group N+1: Document Content (Print-Job only) 2572 The client MUST supply the document data to be processed. 2574 11.1.3.2 Job Creation Response 2576 The Printer MUST return to the client the following sets of attributes 2577 as part of a Print-Job, Print-URI, and Create-Job Response: 2579 Group 1: Operation Attributes 2581 Status Message: 2583 As defined in [ipp-mod] for Print-Job, Print-URI, and Create-Job 2584 requests. 2586 The Printer can return any status codes defined in [ipp-mod] and 2587 section 16. The following is a description of the important status 2588 codes: 2590 successful-ok: the Printer created the Job and all Subscription 2591 Objects requested. 2592 successful-ok-ignored-subscriptions: the Printer created the Job 2593 and not all of the Subscription Objects requested. This 2594 status-code hides .successful-ok-xxx. status-codes that could 2595 reveal problems in Job creation. The Printer MUST not return 2596 the .client-error-ignored-all-subscriptions. status code for 2597 Job Creation operations because the Printer returns an error 2598 status-code only when it fails to create a Job. 2600 Natural Language and Character Set: 2601 The .attributes-charset. and .attributes-natural-language. 2602 attributes as described in [ipp-mod] section 3.1.4.2. 2604 Group 2: Unsupported Attributes 2606 See [ipp-mod] section 3.1.7 for details on returning Unsupported 2607 Attributes. This group does not contain any unsupported 2608 Subscription Template Attributes; they are returned in the 2609 Subscription Attributes Group (see below). 2611 Group 3: Job Object Attributes 2613 As defined in [ipp-mod] for Print-Job, Print-URI, and Create-Job 2614 requests. 2616 Group 4 to N: Subscription Attributes 2618 These groups MUST be returned if and only if the client supplied 2619 Subscription Template Attributes and the operation was accepted. 2621 See section 5.2 for details on the contents of each occurrence of 2622 this group. 2624 11.2 Other Operations 2626 This section defines other operations on Subscription objects. 2628 11.2.1Validate-Job Operation - Extensions for Notification 2630 A client can test whether one or more Subscription Objects could be 2631 created using the Validate-Job operation. The client supplies one or 2632 more Subscription Template Attributes Groups (defined in section 5.3), 2633 just as in a Job Creation request. 2635 A Printer MUST support this extension to this operation. 2637 The Printer MUST accept requests that are identical to the Job Creation 2638 request defined in section 11.1.3.1, except that the request MUST not 2639 contain document data. 2641 The Printer MUST return the same groups and attributes as the Print-Job 2642 operation (section 11.1.3.1) with the following exceptions. The Printer 2643 MUST NOT return a Job Object Attributes Group because no Job is created. 2644 The Printer MUST NOT return the .notify-subscription-id. attribute in 2645 any Subscription Attribute Group because no Subscription Object is 2646 created. 2648 If the Printer would succeed in creating a Subscription Object, the 2649 corresponding Subscription Attributes Group either has no .status-code. 2650 attribute or a .status-code. attribute with a value of .successful-ok- 2651 too-many-events. or .successful-ok-ignored-or-substituted-attributes. 2653 (see sections 5.2 and 17). The status-codes have the same meaning as in 2654 Job Creation except the results state what .would happen.. 2656 The Printer MUST validate Subscription Template Attributes Groups in the 2657 same manner as the Job Creation operations. However, to cause the 2658 Printer to validate as many Subscription Template Attributes as 2659 possible, the Printer MUST assume that is can create up to the number of 2660 Subscription Objects equal to the value of .notify-max-job- 2661 subscriptions-supported.. 2663 11.2.2 Get-Printer-Attributes - Extensions for Notification 2665 This operation is extended so that it returns Printer attributes defined 2666 in this document. 2668 A Printer MUST support this extension to this operation. 2670 In addition to the requirements of [ipp-mod] section 3.2.5, a Printer 2671 MUST support the following additional values for the .requested- 2672 attributes. Operation attribute in this operation and return such 2673 attributes in the Printer Object Attributes group of its response. 2675 1. Subscription Template Attributes: Each supported attribute in 2676 column 2 of Table 1. 2678 2. New Printer Description Attributes: Each supported attribute in 2679 section 6. 2681 3. New Group Name: The .subscription-template. group name, which names 2682 all supported Subscription Template Attribute in column 2 of Table 2683 1. Note: This group name is also used in the Get-Subscription- 2684 Attributes and Get-Subscriptions operation with an analogous 2685 meaning. 2687 4. Extended Group Name .printer-description.: The .printer- 2688 description. group name, which names all Printer Description 2689 attributes according to [ipp-mod] section 3.2.5. In this extension 2690 .printer-description. names all attributes specified in [ipp-mod] 2691 plus those named in item 2 of this list. 2693 5. Extended Group Name .all.: The .all. group name, which names all 2694 Printer attributes according to [ipp-mod] section 3.2.5. In this 2695 extension .all. names all attributes specified in [ipp-mod] plus 2696 those named in items 1 and 2 of this list. 2698 11.2.3 Get-Subscription-Attributes operation 2700 This operation allows a client to request the values of the attributes 2701 of a Subscription Object. 2703 A Printer MUST support this operation. 2705 This operation is almost identical to the Get-Job-Attributes operation 2706 (see [ipp-mod] section 3.3.4). The only differences are that the 2707 operation is directed at a Subscription Object rather than a Job object, 2708 and the returned attribute group contains Subscription Object attributes 2709 rather than Job object attributes. 2711 11.2.3.1 Get-Subscription-Attributes Request 2713 The following groups of attributes are part of the Get-Subscription- 2714 Attributes request: 2716 Group 1: Operation Attributes 2718 Natural Language and Character Set: 2719 The .attributes-charset. and .attributes-natural-language. 2720 attributes as described in section [ipp-mod] 3.1.4.1. 2722 Target: 2723 The .printer-uri. attribute which defines the target for this 2724 operation as described in [ipp-mod] section 3.1.5. 2726 .notify-subscription-id. (integer (1:MAX)): 2727 The client MUST supply this attribute. The Printer MUST support 2728 this attribute. This attribute specifies the Subscription Object 2729 from which the client is requesting attributes. If the client omits 2730 this attribute, the Printer MUST reject this request with the 2731 .client-error-bad-request. status code. 2733 Requesting User Name: 2734 The .requesting-user-name. attribute SHOULD be supplied by the 2735 client as described in [ipp-mod] section 8.3. 2737 .requested-attributes. (1setOf keyword): 2738 The client OPTIONALLY supplies this attribute. The Printer MUST 2739 support this attribute. This attribute specifies the attributes of 2740 the specified Subscription Object that the Printer MUST return in 2741 the response. Each value of this attribute is either an attribute 2742 name (defined in sections 5.3 and 5.4) or an attribute group name. 2743 The attribute group names are: 2745 - .subscription-template.: all attributes that are both defined 2746 in section 5.3 and present on the specified Subscription 2747 Object (column 1 of Table 1). 2748 - .subscription-description.: all attributes that are both 2749 defined in section 5.4 and present on the specified 2750 Subscription Object (Table 2). 2751 - .all.: all attributes that are present on the specified 2752 Subscription Object. 2754 A Printer MUST support all these group names. 2756 If the client omits this attribute, the Printer MUST respond as if 2757 this attribute had been supplied with a value of .all.. 2759 11.2.3.2 Get-Subscription-Attributes Response 2761 The Printer returns the following sets of attributes as part of the Get- 2762 Subscription-Attributes Response: 2764 Group 1: Operation Attributes 2766 Status Message: 2767 Same as [ipp-mod]. 2769 Natural Language and Character Set: 2770 The .attributes-charset. and .attributes-natural-language. 2771 attributes as described in [ipp-mod] section 3.1.4.2. The 2772 .attributes-natural-language. MAY be the natural language of the 2773 Subscription Object, rather than the one requested. 2775 Group 2: Unsupported Attributes 2777 See [ipp-mod] section 3.1.7 for details on returning Unsupported 2778 Attributes. 2780 The response NEED NOT contain the .requested-attributes. operation 2781 attribute with any supplied values (attribute keywords) that were 2782 requested by the client but are not supported by the Printer. If 2783 the Printer does return unsupported attributes referenced in the 2784 .requested-attributes. operation attribute and that attribute 2785 included group names, such as .all., the unsupported attributes 2786 MUST NOT include attributes described in the standard but not 2787 supported by the implementation. 2789 Group 3: Subscription Attributes 2791 This group contains a set of attributes with their current values. 2792 Each attribute in this group: 2794 a)MUST be specified by the .requested-attributes. attribute in the 2795 request, AND 2797 b)MUST be present on the specified Subscription Object AND 2799 c)MUST NOT be restricted by the security policy in force. For 2800 example, a Printer MAY prohibit a client who is not the creator 2801 of a Subscription Object from seeing some or all of its 2802 attributes. See [ipp-mod] section 8. 2804 The Printer can return the attributes of the Subscription Object in 2805 any order. The client MUST accept the attributes in any order. 2807 11.2.4 Get-Subscriptions operation 2809 This operation allows a client to retrieve the values of attributes of 2810 all Subscription Objects belonging to a Job or Printer. 2812 A Printer MUST supported this operation. 2814 This operation is similar to the Get-Subscription-Attributes operation, 2815 except that this Get-Subscriptions operation returns attributes from 2816 possibly more than one object. 2818 This operation is similar to the Get-Jobs operation (see [ipp-mod] 2819 section 3.2.6), except that the operation returns Subscription Objects 2820 rather than Job objects. 2822 11.2.4.1 Get-Subscriptions Request 2824 The following groups of attributes are part of the Get-Subscriptions 2825 request: 2827 Group 1: Operation Attributes 2829 Natural Language and Character Set: 2830 The .attributes-charset. and .attributes-natural-language. 2831 attributes as described in [ipp-mod] section 3.1.4.1. 2833 Target: 2834 The .printer-uri. attribute which defines the target for this 2835 operation as described in [ipp-mod] section 3.1.5. 2837 Requesting User Name: 2838 The .requesting-user-name. attribute SHOULD be supplied by the 2839 client as described in [ipp-mod] section 8.3. 2841 .notify-job-id. (integer(1:MAX)): 2842 If the client specifies this attribute, the Printer returns the 2843 specified attributes of all Per-Job Subscription Objects associated 2844 with the Job whose .job-id. attribute value equals the value of 2845 this attribute. If the client does not specify this attribute, the 2846 Printer returns the specified attributes of all Per-Printer 2847 Subscription Objects. Note: there is no way to get all Per-Job 2848 Subscriptions. 2850 .limit. (integer(1:MAX)): 2851 The client OPTIONALLY supplies this attribute. The Printer MUST 2852 support this attribute. It is an integer value that determines the 2853 maximum number of Subscription Objects that a client will receive 2854 from the Printer even if the .my-subscriptions. attribute 2855 constrains which Subscription Objects are returned. The limit is a 2856 .stateless limit. in that if the value supplied by the client is 2857 .N., then only the first .N. Subscription Objects are returned in 2858 the Get-Subscriptions Response. There is no mechanism to allow for 2859 the next .M. Subscription Objects after the first .N. Subscription 2860 Objects. If the client does not supply this attribute, the Printer 2861 responds with all applicable Subscription Objects. 2863 .requested-attributes. (1setOf type2 keyword): 2864 The client OPTIONALLY supplies this attribute. The Printer MUST 2865 support this attribute. This attribute specifies the attributes of 2866 the specified Subscription Objects that the Printer MUST return in 2867 the response. Each value of this attribute is either an attribute 2868 name (defined in sections 5.3 and 5.4) or an attribute group name 2869 (defined in section 11.2.3.1). If the client omits this attribute, 2870 the Printer MUST respond as if the client had supplied this 2871 attribute with the one value: .notify-subscription-id.. 2873 .my-subscriptions. (boolean): 2874 The client OPTIONALLY supplies this attribute. The Printer MUST 2875 support this attribute. If the value is .false., the Printer MUST 2876 consider the Subscription Objects from all users as candidates. If 2877 the value is .true., the Printer MUST return the Subscription 2878 Objects created by the requesting user of this request. If the 2879 client does not supply this attribute, the Printer MUST respond as 2880 if the client had supplied the attribute with a value of .false.. 2881 The means for authenticating the requesting user and matching the 2882 Subscription Objects is similar to that for Jobs which is described 2883 in [ipp-mod] section 8. 2885 11.2.4.2 Get-Subscriptions Response 2887 The Printer returns the following sets of attributes as part of the Get- 2888 Subscriptions Response: 2890 Group 1: Operation Attributes 2892 Status Message: 2893 Same as [ipp-mod]. 2895 Natural Language and Character Set: 2896 The .attributes-charset. and .attributes-natural-language. 2897 attributes as described in [ipp-mod] section 3.1.4.2. 2899 Group 2: Unsupported Attributes 2901 Same as for Get-Subscription-Attributes. 2903 Groups 3 to N: Subscription Attributes 2905 The Printer responds with one Subscription Attributes Group for 2906 each requested Subscription Object (see the .notify-job-id. 2907 attribute in the Operation Attributes Group of this operation). 2909 The Printer returns Subscription Objects in any order. 2911 If the .limit. attribute is present in the Operation Attributes 2912 group of the request, the number of Subscription Attributes Groups 2913 in the response MUST NOT exceed the value of the .limit. attribute. 2915 It there are no Subscription Objects associated with the specified 2916 Job or Printer, the Printer MUST return zero Subscription 2917 Attributes Groups and it MUST NOT treat this case as an error, 2918 i.e., the status-code MUST be .successful-ok. unless something else 2919 causes the status code to have some other value. 2921 See the Group 3 response (Subscription Attributes Group) of the 2922 Get-Subscription-Attributes operation (section 11.2.3.2) for the 2923 attributes that a Printer returns in this group. 2925 11.2.5 Renew-Subscription operation 2927 This operation allows a client to request the Printer to extend the 2928 lease on a Per-Printer Subscription Object. 2930 The Printer MUST support this operation. 2932 The Printer MUST accept this request for a Per-Printer Subscription 2933 Object in any of the target Printer.s states, i.e., .idle., 2934 .processing., or .stopped., but MUST NOT change the Printer.s .printer- 2935 state. attribute. 2937 The Printer MUST reject this request for a Per-Job Subscription Object 2938 because it has no lease (see section 5.4.3). The status code returned 2939 MUST be .client-error-not-possible.. 2941 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 2942 performing this operation MUST either be the owner of the Per-Printer 2943 Subscription Object or have Operator or Administrator access rights for 2944 the Printer (see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer 2945 MUST reject the operation and return: the .client-error-forbidden., 2946 .client-error-not-authenticated., or .client-error-not-authorized. 2947 status code as appropriate. 2949 11.2.5.1 Renew-Subscription Request 2951 The following groups of attributes are part of the Renew-Subscription 2952 Request: 2954 Group 1: Operation Attributes 2956 Natural Language and Character Set: 2957 The .attributes-charset. and .attributes-natural-language. 2958 attributes as described in [ipp-mod] section 3.1.4.1. 2960 Target: 2961 The .printer-uri. attribute which defines the target for this 2962 operation as described in [ipp-mod] section 3.1.5. 2964 .notify-subscription-id. (integer (1:MAX)): 2965 The client MUST supply this attribute. The Printer MUST support 2966 this attribute. This attribute specifies the Per-Printer 2967 Subscription Object whose lease the Printer MUST renew. If the 2968 client omits this attribute, the Printer MUST reject this request 2969 with the .client-error-bad-request. status code. 2971 Requesting User Name: 2972 The .requesting-user-name. (name(MAX)) attribute SHOULD be supplied 2973 by the client as described in [ipp-mod] section 8.3. 2975 Group 2: Subscription Template Attributes 2977 .notify-lease-duration. (integer(0:MAX)): 2978 The client MAY supply this attribute. It indicates the number of 2979 seconds to renew the lease for the specified Subscription Object. 2980 A value of 0 requests an infinite lease (which MAY require Operator 2981 access rights). If the client omits this attribute, the Printer 2982 MUST use the value of the Printer.s .notify-lease-duration-default. 2983 attribute. See section 5.3.7 for more details. 2985 11.2.5.2 Renew-Subscription Response 2987 The Printer returns the following sets of attributes as part of the 2988 Renew-Subscription Response: 2990 Group 1: Operation Attributes 2992 Status Message: 2993 Same as [ipp-mod]. 2995 The following are some of the status codes returned: 2997 successful-ok: The operation successfully renewed the lease on the 2998 Subscription Object for the requested duration.. 2999 successful-ok-ignored-or-substituted-attributes: The operation 3000 successfully renewed the lease on the Subscription Object for 3001 some duration other than the amount requested. 3002 client-error-not-possible: The operation failed because the 3003 .notify-subscription-id. Operation attribute identified a Per- 3004 Job Subscription Object. 3005 client-error-not-found: The operation failed because the .notify- 3006 subscription-id. Operation attribute identified a non-existent 3007 Subscription Object. 3009 Natural Language and Character Set: 3010 The .attributes-charset. and .attributes-natural-language. 3011 attributes as described in [ipp-mod] section 3.1.4.2. The 3012 .attributes-natural-language. MAY be the natural language of the 3013 Subscription Object, rather than the one requested. 3015 Group 2: Unsupported Attributes 3017 See [ipp-mod] section 3.1.7 for details on returning Unsupported 3018 Attributes. 3020 Group 3: Subscription Attributes 3022 The Printer MUST return the following Subscription Attribute: 3024 .notify-lease-duration. (integer(0:MAX)): 3025 The value of this attribute MUST be the number of seconds that the 3026 Printer has granted for the lease of the Subscription Object (see 3027 section 5.3.7 for details, such as the value of this attribute when 3028 the Printer doesn.t support the requested value). 3030 11.2.6 Cancel-Subscription operation 3032 This operation allows a client to delete a Subscription Object and stop 3033 the Printer from sending more Event Notifications. Once performed, 3034 there is no way to reference the Subscription Object. 3036 A Printer MUST supported this operation. 3038 The Printer MUST accept this request in any of the target Printer.s 3039 states, i.e., .idle., .processing., or .stopped., but MUST NOT change 3040 the Printer.s .printer-state. attribute. 3042 If the specified Subscription Object is a Per-Job Subscription Object, 3043 the Printer MUST accept this request in any of the target Job.s states, 3044 but MUST NOT change the Job.s .job-state. attribute or affect the Job. 3046 Access Rights: The authenticated user (see [IPP-MOD] section 8.3) 3047 performing this operation MUST either be the owner of the Subscription 3048 Object or have Operator or Administrator access rights for the Printer 3049 (see [IPP-MOD] sections 1 and 8.5). Otherwise, the Printer MUST reject 3050 the operation and return: the .client-error-forbidden., .client-error- 3051 not-authenticated., or .client-error-not-authorized. status code as 3052 appropriate. 3054 Note: There is no way to change any attributes on a Subscription 3055 Object, except the .notify-lease-duration. attribute (using the Renew- 3056 Subscription operation). In order to change other attributes, a client 3057 performs a Subscription Creation Operation and Cancel-Subscription 3058 operation on the old Subscription Object. If the client wants to avoid 3059 missing Event Notifications, it performs the Subscription Creation 3060 Operation first. If this order would create too many Subscription 3061 Objects on the Printer, the client reverses the order. 3063 11.2.6.1 Cancel-Subscription Request 3065 The following groups of attributes are part of the Cancel-Subscription 3066 Request: 3068 Group 1: Operation Attributes 3070 Natural Language and Character Set: 3071 The .attributes-charset. and .attributes-natural-language. 3072 attributes as described in [ipp-mod] section 3.1.4.1. 3074 Target: 3075 The .printer-uri. attribute which defines the target for this 3076 operation as described in [ipp-mod] section 3.1.5. 3078 .notify-subscription-id. (integer (1:MAX)): 3079 The client MUST supply this attribute. The Printer MUST support 3080 this attribute. This attribute specifies the Subscription Object 3081 that the Printer MUST cancel. If the client omits this attribute, 3082 the Printer MUST reject this request with the .client-error-bad- 3083 request. status code. 3085 Requesting User Name: 3086 The .requesting-user-name. attribute SHOULD be supplied by the 3087 client as described in [ipp-mod] section 8.3. 3089 11.2.6.2 Cancel-Subscription Response 3091 The Printer returns the following sets of attributes as part of the 3092 Cancel-Subscription Response: 3094 Group 1: Operation Attributes 3096 Status Message: 3097 Same as [ipp-mod]. 3099 The following are some of the status codes returned: 3101 successful-ok: The operation successfully canceled (deleted) the 3102 Subscription Object.. 3103 client-error-not-found: The operation failed because the .notify- 3104 subscription-id. Operation attribute identified a non-existent 3105 Subscription Object. 3107 Natural Language and Character Set: 3108 The .attributes-charset. and .attributes-natural-language. 3109 attributes as described in [ipp-mod] section 3.1.4.2. The 3110 .attributes-natural-language. MAY be the natural language of the 3111 Subscription Object, rather than the one requested. 3113 Group 2: Unsupported Attributes 3115 See [ipp-mod] section 3.1.7 for details on returning Unsupported 3116 Attributes. 3118 12 Conformance Requirements 3120 It is OPTIONAL to implement this Event Notification specification. 3122 If this Event Notification specification is implemented, Printers MUST: 3124 meet the Conformance Requirements detailed in section 5 of [ipp-mod]. 3126 support all of the following attributes: 3128 a.REQUIRED Subscription Object attributes in section 5. 3130 b.REQUIRED Printer Description object attributes in section 6. 3132 c.REQUIRED attributes in Event Notification content in section 8. 3134 send Event Notifications that conform to the requirements of the 3135 Delivery Method Document for each supported Delivery Method (the 3136 conformance requirements for Delivery Method Documents is specified in 3137 section 10). 3139 support all operations as described in Table 15: 3141 Table 15 . Conformance Requirements for Operations 3143 Attribute Conformance requirements 3144 Subscription Attributes Group REQUIRED 3145 Create-Printer-Subscriptions REQUIRED 3146 (section 11.1.2) 3147 Create-Job-Subscriptions (section OPTIONAL 3148 11.1.1) 3149 Validate-Job - extensions (section REQUIRED 3150 11.2.1) 3151 Get-Printer-Attributes - extensions REQUIRED 3152 (section 11.2.2) 3153 Get-Subscription-Attributes (section REQUIRED 3154 11.2.3) 3155 Get-Subscriptions (section 11.2.4) REQUIRED 3156 Renew-Subscription (section 11.2.5) REQUIRED 3157 Cancel-Subscription (section 11.2.6) REQUIRED 3159 13 IANA Considerations 3161 This section describes the procedures for registering Event Notification 3162 Delivery Method proposals with IANA to be used with this document. Such 3163 Delivery Method proposals can be IETF standards track documents or 3164 vendor-defined documents. In either case, they will be registered with 3165 IANA using procedures that extend those defined in [ipp-mod] section 6 3166 and 11. 3168 These extension procedures are aligned with the guidelines as set forth 3169 by the IESG [IANA-CON]. Section 13.1 defines the format and content for 3170 new registrations for consideration. IANA will reject registration 3171 proposals that leave out required information or do not follow the 3172 appropriate format described in Section 13.1. 3174 Implementers can, at any time, define new Event Notification Delivery 3175 Methods by proposing the complete specification to IANA: 3177 iana@iana.org 3179 or by filling out the appropriate form on the IANA web pages 3180 (http://www.iana.org). 3182 IANA will forward the registration proposal to the IPP Designated Expert 3183 who will review the proposal with a mailing list that the Designated 3184 Expert keeps for this purpose. Initially, that list will be the mailing 3185 list used by the IPP WG: 3187 ipp@pwg.org 3189 even after the IPP WG is disbanded as permitted by [IANA-CON]. The IPP 3190 Designated Expert is appointed by the IESG Area Director responsible for 3191 IPP, according to [IANA-CON]. 3193 When a Delivery Method Document is approved, the IPP Designated Expert 3194 becomes the point of contact for any future maintenance that might be 3195 required for that registration. 3197 13.1 Format and Requirements for IPP Delivery Method Registration 3198 Proposals 3200 This section defines the format and requirements for an IPP Event 3201 Notification Delivery Method Registration Proposal. A Delivery Method 3202 Registration Proposal: 3204 1.MUST contain the following information: 3206 Type of registration: IPP Event Notification Delivery Method 3207 Name of this delivery method: 3208 Proposed URL scheme name of this delivery method: 3209 Name of proposer: 3210 Address of proposer: 3211 Email address of proposer: 3212 Is this delivery method REQUIRED or OPTIONAL for conformance to the 3213 IPP Event Notification Specification document: 3214 Is this delivery method defining Machine Consumable and/or Human 3215 Consumable content: 3217 2.MUST meet the conformance requirements for Delivery Method Documents 3218 specified in section 10. 3220 14 Internationalization Considerations 3222 This IPP Notification specification continues support for the 3223 internationalization of [ipp-mod] of attributes containing text strings 3224 and names. Allowing a Subscribing Client to specify a different natural 3225 language and charset for each Subscription Object increases the 3226 internationalization support. 3228 The Printer MUST be able to localize the content of Human Consumable 3229 Event Notifications and to localize the value of .notify-text. attribute 3230 in Machine Consumable Event Notifications that it sends to Notification 3231 Recipients. For localization, the Printer MUST use the value of the 3232 .notify-charset. attribute and the .notify-natural-language. attribute 3233 in the Subscription Object supplied by the Subscribing Client. 3235 15 Security Considerations 3237 By far the biggest security concern is the abuse of notification: 3238 sending unwanted Event Notifications to third parties (i.e., spam). The 3239 problem is made worse by notification addresses that may be 3240 redistributed to multiple parties (e.g., mailing lists). There exist 3241 scenarios where third party notification is required (see Scenario #2 3242 and #3 in [ipp-not-req]). The fully secure solution would require 3243 active agreement of all recipients before sending out anything. 3244 However, requirement #9 in [ipp-req] (.There is no requirement for IPP 3245 Printer receiving the print request to validate the identity of an Event 3246 recipient.) argues against this. Certain systems may decide to disallow 3247 third party Event Notifications (a traditional fax model). 3249 Clients submitting Notification requests to the IPP Printer has the same 3250 security issues as submitting an IPP/1.1 print job request. The same 3251 mechanisms used by IPP/1.1 can therefore be used by the client 3252 Notification submission. Operations that require authentication can use 3253 the HTTP authentication. Operations that require privacy can use the 3254 HTTP/TLS privacy. 3256 The Notification access control model should be similar to the IPP 3257 access control model for Jobs. Creating a Per-Printer Subscription 3258 Object is associated with a user. Only the creator or an Operator can 3259 cancel the Subscription Object. The system may limit the listing of 3260 items to only those items owned by the user. Some Subscription Objects 3261 (e.g., those that have a lifetime longer than a job) can be done only by 3262 privileged users (users having Operator and/or Administrator access 3263 rights), if that is the authorization policy. 3265 The standard security concerns (delivery to the right user, privacy of 3266 content, tamper proof content) apply to the Delivery Method. IPP should 3267 use the security mechanism of the Delivery Method used. Some delivery 3268 mechanisms are more secure than others. Therefore, sensitive Event 3269 Notifications should use the Delivery Method that has the strongest 3270 security. 3272 16 Status Codes 3274 The following status codes are defined as extensions for Notification 3275 and are returned as the value of the .status-code. parameter in the 3276 Operation Attributes Group of a response (see [ipp-mod] section 3277 3.1.6.1). Operations in this document can also return the status codes 3278 defined in section 13 of [ipp-mod]. The .successful-ok. status code is 3279 an example of such a status code. 3281 16.1 successful-ok-ignored-subscriptions (0x0003) 3283 The Subscription Creation Operation was unable to create all requested 3284 Subscription Objects. 3286 For a Create-Job-Subscriptions or Create-Printer-Subscriptions 3287 operation, this status code means that the Printer created one or more 3288 Subscription Objects, but not all requested Subscription Objects. 3290 For a Job Creation operation, this status code means that the Printer 3291 created the Job along with zero or more Subscription Objects. The 3292 Printer returns this status code even if other job attributes are 3293 unsupported or in conflict. That is, if an IPP Printer finds a warning 3294 that would allow it to return .successful-ok-ignored-subscriptions. and 3295 either .successful-ok-ignored-or-substituted-attributes. and/or 3296 .successful-ok-conflicting-attributes., it MUST return .successful-ok- 3297 ignored-subscriptions.. 3299 16.2 client-error-ignored-all-subscriptions (0x0414) 3301 This status code is the same as .successful-ok-ignored-subscriptions. 3302 except that only the Create-Job-Subscriptions and Create-Printer- 3303 Subscriptions operation return it. They return this status code only 3304 when the Printer creates zero Subscription Objects. 3306 17 Status Codes in Subscription Attributes Groups 3308 This section contains values of the .notify-status-code. attribute that 3309 the Printer returns in a Subscription Attributes Group in a response 3310 when the corresponding Subscription Object: 3312 1. is not created or 3314 2. is created and some of the client-supplied attributes are not 3315 supported. 3317 The following sections are ordered in decreasing order of importance of 3318 the status-codes. 3320 17.1 client-error-uri-scheme-not-supported (0x040C) 3322 This status code is defined in [ipp-mod]. This document extends its 3323 meaning and allows it to be in a Subscription Attributes Group of a 3324 response. 3326 The scheme of the client-supplied URI in a .notify-recipient-uri. 3327 Subscription Template Attribute in a Subscription Creation Operation is 3328 not supported. See section 5.3.1. 3330 17.2 client-error-too-many-subscriptions (0x0415) 3332 The number of Subscription Objects supported by the Printer would be 3333 exceeded if this Subscription Object were created (see section 5.2). 3335 17.3 successful-ok-too-many-events (0x0005) 3337 The client supplied more Events in the .notify-events. operation 3338 attribute of a Subscription Creation Operation than the Printer 3339 supports, as indicated in its .notify-max-events-supported. Printer 3340 attribute (see section 5.3.2). 3342 17.4 successful-ok-ignored-or-substituted-attributes (0x0001) 3344 This status code is defined in [ipp-mod]. This document extends its 3345 meaning to include unsupported Subscription Template Attributes and it 3346 can appear in a Subscription Attributes Group. 3348 18 Encodings of Additional Attribute Tags 3350 This section assigns values to two attributes tags as extensions to the 3351 encoding defined in [ipp-pro]). 3353 The .subscription-attributes-tag. delimits Subscription Template 3354 Attributes Groups in requests and Subscription Attributes Groups in 3355 responses. 3357 The .event-notification-attributes-tag. delimits Event Notifications in 3358 Delivery Methods that use an IPP-like encoding. 3360 The following table specifies the values for the delimiter tags: 3362 Tag Value (Hex) Meaning 3364 0x06 .subscription-attributes-tag. 3365 0x07 .event-notification-attributes-tag. 3367 19 References 3369 [IANA-CON] 3370 Narte, T. and Alvestrand, H.T.: Guidelines for Writing an IANA 3371 Considerations Section in RFCs, Work in Progress, draft-iesg-iana- 3372 considerations-04.txt, May 21, 1998. 3374 [ipp-mod] 3375 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 3376 .Internet Printing Protocol/1.1: Model and Semantics., , work in progress, May 22, 2000. 3379 [ipp-not-req] 3380 deBry, R., Lewis, H., Hastings, T., .Internet Printing 3381 Protocol/1.1: Requirements for IPP Notifications., , work in progress, August 11, 1999. 3384 [ipp-pro] 3385 Herriot, R., Butler, S., Moore, P., Tuner, R., .Internet Printing 3386 Protocol/1.1: Encoding and Transport., , work in progress, May 30, 2000. 3389 [ipp-prog] 3390 Hastings, T., Bergman, R., Lewis, H., .Proposed Job Progress 3391 Attributes for IPP., work in 3392 progress, February 2, 2000. 3394 [ipp-set] 3395 Kugler, C., , Hastings, T., Herriot, R., Lewis, H, .Internet 3396 Printing Protocol (IPP): Job and Printer Set Operations., , work in progress, March 8, 3398 2000. 3400 [ipp-set2] 3401 Kugler, C., , Hastings, T., Lewis, H, .Internet Printing Protocol 3402 (IPP): Additional Operations, Set 2., , work in progress, February 3, 2000. 3405 [RFC2026] 3406 S. Bradner, "The Internet Standards Process -- Revision 3", RFC 3407 2026, October 1996. 3409 [RFC2119] 3410 S. Bradner, .Key words for use in RFCs to Indicate Requirement 3411 Levels., RFC 2119 , March 1997 3413 [RFC2566] 3414 deBry, R., , Hastings, T., Herriot, R., Isaacson, S., Powell, P., 3415 .Internet Printing Protocol/1.0: Model and Semantics., RFC 2566, 3416 April 1999. 3418 [RFC2567] 3419 Wright, D., .Design Goals for an Internet Printing Protocol., RFC 3420 2567, April 1999. 3422 [RFC2568] 3423 Zilles, S., .Rationale for the Structure and Model and Protocol for 3424 the Internet Printing Protocol., RFC 2568, April 1999. 3426 [RFC2569] 3427 Herriot, R., Hastings, T., Jacobs, N., Martin, J., .Mapping between 3428 LPD and IPP Protocols., RFC 2569, April 1999. 3430 20 Author.s Addresses 3432 Scott A. Isaacson (Editor) 3433 Novell, Inc. 3434 122 E 1700 S 3435 Provo, UT 84606 3437 Phone: 801-861-7366 3438 Fax: 801-861-2517 3439 e-mail: sisaacson@novell.com 3441 Tom Hastings 3442 Xerox Corporation 3443 737 Hawaii St. ESAE 231 3444 El Segundo, CA 90245 3446 Phone: 310-333-6413 3447 Fax: 310-333-5514 3448 e-mail: hastings@cp10.es.xerox.com 3450 Robert Herriot 3451 Xerox Corporation 3452 3400 Hillview Ave., Bldg #1 3453 Palo Alto, CA 94304 3455 Phone: 650-813-7696 3456 Fax: 650-813-6860 3457 Email: robert.herriot@pahv.xerox.com 3459 Roger deBry 3460 Utah Valley State College 3461 Orem, UT 84058 3463 Phone: (801) 222-8000 3464 EMail: debryro@uvsc.edu 3466 Jay Martin 3467 e-mail: jkm@underscore.com 3469 Michael Shepherd 3470 Xerox Corporation 3471 800 Phillips Road MS 128-51E 3472 Webster, NY 14450 3474 Phone: 716-422-2338 3475 Fax: 716-265-8871 3476 e-mail: mshepherd@crt.xerox.com 3478 Ron Bergman (Editor) 3479 Hitachi Koki Imaging Solutions 3480 1757 Tapo Canyon Road 3481 Simi Valley, CA 93063-3394 3483 Phone: 805-578-4421 3484 Fax: 805-578-4001 3485 Email: rbergma@hitachi-hkis.com 3487 A. Appendix - Model for Notification with Cascading Printers 3489 With this model (see Figure 2), there is an intervening Print server 3490 between the human user and the output-device. So the system effectively 3491 has two Printers. There are two cases to consider. 3493 1. When the Printer 1 (in the server) generates Events, the system 3494 behaves like the client and Printer in Figure 1. In this case, 3495 Printer 1 sends Event Notifications that are shown as Event 3496 Notifications (A) of Figure 2,. 3498 2. When the Printer 2 (in the output-device) generates Events, there 3499 are two possible system configurations: 3501 a)Printer 1 forwards the client-supplied Subscription Creation 3502 Operations to the downstream Printer 2 and lets Printer 2 send 3503 the Event Notifications directly to the Notification Recipients 3504 supplied by the Client (Event Notifications(C) in the diagram). 3506 b)Printer 1 performs the client-supplied Subscription Creation 3507 Operations and also forwards the Subscription Creation 3508 Operations to Printer 2 with the Notification Recipient changed 3509 to be the Printer 1. When an Event occurs in Printer 2, Printer 3510 2 sends the Event Notification (B) to Notification Recipient of 3511 Printer 1, which relays the received Event Notification (B) to 3512 the client-supplied Notification Recipient (as Event 3513 Notifications(A) in the diagram). Note, when a client performs a 3514 Subscription Creation Operation, Printer 1 need not forward the 3515 Subscription Creation Operation to Printer 2 if it would create 3516 a duplicate Subscription Object on Printer 2. 3518 Note: when Printer 1 is forwarding Subscription Creation Operations to 3519 Printer 2, it may request Printer 2 to create additional Subscription 3520 Objects (called .piggy-backing.). Piggy-backing is useful when: 3522 Device A is configured to accept (IPP or non-IPP) requests from other 3523 servers. 3525 Server S wants to receive Job Events that the client didn.t request and 3526 Server S wants these Events for jobs it submits and not for other jobs. 3528 server S device A 3529 +------------+ +------------+ 3530 | | | | 3531 +--------+ Subscription | ###########| | ###########| 3532 | client |--Creation ----># Printer #| Subscription | # Printer #| 3533 +--------+ Operation | # Object 1#|---Creation------|># Object 2#| 3534 | ###|#######| Operation | ####|#|####| 3535 +----|---^---+ +-----|-|----+ 3536 +--------+ Event | | | | 3537 |Notific-|<-Notifications(A)-+ +-- Event Notifications(B)--+ | 3538 |ation Re|<-------------Event Notifications(C)-----------------+ 3539 |cipient | 3540 +--------+ 3542 Figure 2 . Model for Notification with Cascading Printers 3544 B. Appendix - Distributed Model for Notification 3546 A Printer implementation could use some other remote notification 3547 service to provide some or most of the service. For example, the remote 3548 notification service could send Event Notifications using Delivery 3549 Methods that are not directly supported by the output device or server. 3551 Or, the remote notification service could store Subscription Objects 3552 (passed to it from the output device in response to Subscription 3553 Creation requests), accept Events, format the Event Notification in the 3554 natural language of the Notification Recipient, and send the Event 3555 Notifications to the Notification Recipient(s). 3557 Figure 3 shows this partitioning. The interface between the output 3558 device (or server) and the remote notification service is outside the 3559 scope of this document and is intended to be transparent to the client 3560 and this document. The combination of the output device (or server) and 3561 the notification service together constitute an IPP Printer conforming 3562 to this Notification document. 3564 output device or server 3565 +---------------+ 3566 PDA, desktop, or server + ########### + 3567 +--------+ | # partial # | 3568 | client |---IPP Subscription--------># Printer # | 3569 +--------+ Creation operation | # Object # | 3570 | #####|##### | 3571 +-------|-------+ 3572 | Subscriptions 3573 *******| OR Event 3574 +------------+ * | Notifications 3575 |Notification| IPP-defined * +------v--------+ 3576 |Recipient |<--Event Notifications---| Notification | 3577 +------------+ * | Service | 3578 * +---------------+ 3579 * 3580 * 3581 *** = Implementation configuration opaque boundary 3583 Figure 3 . Opaque Use of a Notification Service Transparent to the 3584 Client 3586 C. Appendix - Extended Notification Recipient 3588 The model allows for an extended Notification Recipient that is itself a 3589 notification service that forwards each Event Notification to another 3590 recipient (called the Ultimate Notification Recipient in this section). 3591 The Delivery Method to the Ultimate Recipient is probably different from 3592 the Delivery Method used by the Printer to the extended Notification 3593 Recipient. 3595 This extended Notification Recipient is transparent to the Printer but 3596 not to the client. 3598 When a client performs a Subscription Creation Operation, it specifies 3599 the extended Notification Recipient as it would any Notification 3600 Recipient. In addition, the client specifies the Ultimate Notification 3601 Recipient in the Subscription Creation Operation in a manner specified 3602 by the extended Notification Recipient. Typically, it is either some 3603 bytes in the value of .notify-user-data. or some additional parameter in 3604 the value of .notify-recipient-uri.. The client also subscribes directly 3605 with the extended Notification Recipient (by means outside this 3606 document), since it is a notification service in its own right. 3608 The IPP Printer treats the extended Notification Recipient like any 3609 other Notification Recipient and the IPP Printer is not aware of the 3610 forwarding. The Delivery Method that the extended Notification Recipient 3611 uses for delivering the Event Notification to the Ultimate Notification 3612 Recipient is beyond the scope of this document and is transparent to the 3613 IPP Printer. 3615 Examples of this extended Notification Recipient are paging, immediate 3616 messaging services, general notification services, and NOS vendors. 3617 infrastructure. Figure 4 shows this approach. 3619 PDA, desktop, or server server or output device 3620 +---------------+ 3621 +--------+ | ########### | 3622 | client |---Subscription Creation -----------># Printer # | 3623 +--------+ Operation | # Object # | 3624 | #####|##### | 3625 +------------+ +------------+ IPP-defined +-------|-------+ 3626 |Ultimate | any |Notification|<--Event Notifications----+ 3627 |Notification|<----|Recipient | 3628 |Recipient | +------------+ 3629 +------------+ (Notification Service) 3631 Figure 4 . Use of an Extended Notification Recipient transparent to the 3632 Printer 3634 D. Appendix - Details about Conformance Terminology 3636 The following paragraph provide more details about conformance 3637 terminology. 3639 REQUIRED - an adjective used to indicate that a conforming IPP 3640 Printer implementation MUST support the indicated operation, 3641 object, attribute, attribute value, status code, or out-of-band 3642 value in requests and responses. See [ipp-mod] .Appendix A - 3643 Terminology for a definition of .support.. Since support of this 3644 entire Notification specification is OPTIONAL for conformance to 3645 IPP/1.0 or IPP/1.1, the use of the term REQUIRED in this document 3646 means .REQUIRED if this OPTIONAL Notification specification is 3647 implemented.. 3649 RECOMMENDED - an adjective used to indicate that a conforming IPP 3650 Printer implementation is recommended to support the indicated 3651 operation, object, attribute, attribute value, status code, or out- 3652 of-band value in requests and responses. Since support of this 3653 entire Notification specification is OPTIONAL for conformance to 3654 IPP/1.0 or IPP/1.1, the use of the term RECOMMENDED in this 3655 document means .RECOMMENDED if this OPTIONAL Notification 3656 specification is implemented.. 3658 OPTIONAL - an adjective used to indicate that a conforming IPP 3659 Printer implementation MAY, but is NOT REQUIRED to, support the 3660 indicated operation, object, attribute, attribute value, status 3661 code, or out-of-band value in requests and responses. 3663 E. Appendix - Object Model for Notification 3665 This section describes the Notification object model that adds a 3666 Subscription Object which together with the Job and Printer object 3667 provide the complete Notification semantics. 3669 The object relationships can be seen pictorially as: 3671 Subscription Objects (Per-Printer Subscriptions) Printer object 3672 +----+ +------------+ 3673 | s1 |<---------------------------------------------->| | 3674 +----++ | | 3675 | s2 |<--------------------------------------------->| p1 | 3676 +----++ | | 3677 | s3 |<-------------------------------------------->| | 3678 +----+ +------------+ 3679 Job objects 3680 +---------+ 3681 | | 3682 +----+ | j1 | 3683 | s4 |<-------->| | 3684 +----+ | | 3685 | | s4 is a Per-Job Subscription Object 3686 ++--------++ 3687 | | 3688 +----+ | j2 | 3689 | s5 |<------->| | 3690 +----++ | | 3691 | s6 |<------>| | s5 and s6 are Per-Job Subscription 3692 +----+ ++--------++ Objects 3693 | | 3694 | j3 | 3695 | | 3696 | | <----> indicates association 3697 +---------+ 3699 Figure 5 . Object Model for Notification 3701 s1, s2, and s3 are Per-Printer Subscription Objects and can 3702 identify Printer and/or Job Events. 3703 s4, s5, and s6 are Per-Job Subscription Objects and can identify 3704 Printer and/or Job Events. 3706 E.1 Appendix - Object relationships 3708 This sub-section defines the object relationships between the Printer, 3709 Job, and Subscription Objects by example. Whether Per-Printer 3710 Subscription Objects are actually contained in a Printer object or are 3711 just bi-directionally associated with them in some way is IMPLEMENTATION 3712 DEPENDENT and is transparent to the client. Similarly, whether Per-Job 3713 Subscription Objects are actually contained in a Job object or are just 3714 bi-directionally associated with them in some way is IMPLEMENTATION 3715 DEPENDENT and is transparent to the client. The object relationships 3716 are defined as follows: 3718 E.2 Printer Object and Per-Printer Subscription Objects 3720 1. The Printer object contains (is associated with) zero or more Per- 3721 Printer Subscription Objects (p1 contains s1-s3 Per-Printer 3722 Subscription Objects). 3724 2. Each Per-Printer Subscription Object (s1, s2, and s3) is contained 3725 in (or is associated with) exactly one Printer object (p1). 3727 E.3 Job Object and Per-Job Subscription Objects 3729 1. A Job object (j1, j2, j3) is associated with zero or more Per-Job 3730 Subscription Objects (s4-s6). Job j1 is associated with Per-Job 3731 Subscription Object s4, Job j2 is associated with Per-Job 3732 Subscription Objects s5 and s6, and Job j3 is not associated with 3733 any Per-Job Subscription Object. 3735 2. Each Per-Job Subscription Object is associated with exactly one Job 3736 object. 3738 F. Appendix - Per-Job versus Per-Printer Subscription Objects 3740 Per-Job and Per-Printer Subscription Objects are quite similar. Either 3741 type of Subscription Object can subscribe to Job Events, Printer Events, 3742 or both. Both types of Subscription Objects can be queried using the 3743 Get-Subscriptions and Get-Subscription-Attributes operations and 3744 canceled using the Cancel-Subscription operation. Both types of 3745 Subscription Objects create Subscription Objects which have the same 3746 Subscription Object attributes defined. However, there are some 3747 semantic differences between Per-Job Subscription Objects and Per- 3748 Printer Subscription Objects. A Per-Job Subscription Object is 3749 established by the client when submitting a job and after creating the 3750 job using the Create-Job-Subscriptions operation by specifying the .job- 3751 id. of the Job with the .notify-job-id. attribute. A Per-Printer 3752 Subscription Object is established between a client and a Printer using 3753 the Create-Printer-Subscriptions operation. Some specific differences 3754 are: 3756 1.A client usually creates one or more Per-Job Subscription Objects as 3757 part of the Job Creation operations (Create-Job, Print-Job, and 3758 Print-URI), rather than using the OPTIONAL Create-Job-Subscriptions 3759 operation, especially since Printer implementations NEED NOT support 3760 the Create-Job-Subscriptions operation, since it is OPTIONAL. 3762 2.For Per-Job Subscription Objects, the Subscription Object is only 3763 valid while the job is .not-complete. (see sections 5.4.3) while for 3764 the Per-Printer Subscription Objects, the Subscription Object is 3765 valid until the time (in seconds) that the Printer returned in the 3766 .notify-lease-expiration-time. operation attribute. 3768 3.Job Events in a Per-Job Subscription Object apply only to .one job. 3769 (the Job created by the Job Creation operation or references by the 3770 Create-Job-Subscriptions operation) while Job Events in a Per-Printer 3771 Subscription Object apply to ALL jobs contained in the IPP Printer. 3773 G. Appendix: Full Copyright Statement 3775 Copyright (C) The Internet Society (1998,1999,2000). All Rights Reserved 3777 This document and translations of it may be copied and furnished to 3778 others, and derivative works that comment on or otherwise explain it or 3779 assist in its implementation may be prepared, copied, published and 3780 distributed, in whole or in part, without restriction of any kind, 3781 provided that the above copyright notice and this paragraph are included 3782 on all such copies and derivative works. However, this document itself 3783 may not be modified in any way, such as by removing the copyright notice 3784 or references to the Internet Society or other Internet organizations, 3785 except as needed for the purpose of developing Internet standards in 3786 which case the procedures for copyrights defined in the Internet 3787 Standards process must be followed, or as required to translate it into 3788 languages other than English. 3790 The limited permissions granted above are perpetual and will not be 3791 revoked by the Internet Society or its successors or assigns. 3793 This document and the information contained herein is provided on an .AS 3794 IS. basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK 3795 FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT 3796 LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT 3797 INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR 3798 FITNESS FOR A PARTICULAR PURPOSE.