Change History for "Internet Printing Protocol (IPP): IPP Event Notification Specification" File: ftp://ftp.pwg.org/pub/pwg/ipp/new_NOT/ipp-not-change-history.txt This text document summarizes the changes to the "Internet Printing Protocol (IPP): IPP Event Notification Specification". Each sub-section is in reverse chronological order. Brief explanations for each change is often included. Adding or removing ISSUES that don't change the document are not listed here. Table of contents 1 Changes from June 30, 2000 to July 13, 2000.....................2 2 Changes from May 10, 2000 to June 30, 2000......................2 3 Changes from March 8, 2000 to May 10, 2000......................4 4 Changes from March 6, 2000 to March 8, 2000.....................4 5 Changes from February 2, 2000 to March 6, 2000..................4 6 Changes from October 14, 1999 to February 2, 2000...............6 7 Changes from August 17, 1999 to August 22, 1999.................7 8 Changes from August 11, 1999 to August 17, 1999:................8 9 Changes from August 8, 1999 to August 11, 1999.................10 10 Changes from August 2, 1999 to August 7,.......................13 11 Changes from July 22, 1999 to August 2, 1999...................13 12 Changes from July 21, 1999 to July 22, 1999....................14 13 Changes from July 20, 1999 to July 21, 1999....................14 14 Changes from May 18, 1999 to July 20, 1999.....................15 15 Changes from May 17, 1999 to May 18, 1999......................15 16 Changes from January 20, 1999 to May 17, 1999..................16 17 Changes from January 18, 1999 to January 20, 1999..............17 18 Changes from December 10, 1998 to January 18, 1999.............18 19 Changes from July 1, 1998 to December 10, 1998.................19 20 Prior work on Notification.....................................20 Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 1] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 1 Changes from June 30, 2000 to July 13, 2000 The following changes were made to the June 30, 2000 version to create the July 13, 2000 version based on the agreements reached at the July IPP WG meeting: 1. Deleted the "notify-max-job-subscriptions" and "notify-max-printer- subscriptions" Printer Description attributes, since the maximum cannot be guaranteed. 2. Added the "notify-time-interval (integer(0:MAX)) Subscription Template attribute to give Subscribing Client control over moderation of 'job-progress' Event Notifications that MUST be implemented if and only if the 'job-progress' event is implemented. There are no default or supported Printer attributes. 3. Removed the idea that a Delivery Method MAY allow the Printer to moderate certain high frequency events. 4. Clarified that the Printer MUST treat the address part of the "notify-recipient-uri" attribute value as opaque. 5. Added the REQUIRED 'printer-stopped' event and the OPTIONAL 'job- stopped' event. 6. Deleted the 'job-purged' event. 7. Deleted the "notify-persistence" Subscription Template attribute. 8. Clarified the concept of Compound Event Notifications used by both 'mailto' and 'indp'. 9. Clarified that a Printer MUST cancel a Subscription if it gets hard errors when sending that will never change. 10. Clarified the Figure in the Appendix to indicate that the Printer includes the Notification Service. 2 Changes from May 10, 2000 to June 30, 2000 The following changes were made to the May 10, 2000 version to create the June 30, 2000 version based on the agreements reached at the May IPP WG meetings and subsequent teleconferences: 11. Editorially reorganized and revised the document so that information is stated only once. Moved supplementary material to appendices. 12. Cleaned up the terminology so that it is used consistently throughout the document; capitalized such terms. Simplified the descriptions of each term. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 2] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 13. Recast the Subscription attributes to be Subscription Template and Subscription Description attributes following the IPP/1.1 model for Jobs. Therefore, a few attribute names were changed to make them consistent. 14. Reworked the operation descriptions to align with the style in [ipp-mod]. 15. Made the validation and processing of Subscription Template attributes be the same for Job Creation Operations, Create-Job- Subscriptions, and Create-Printer-Subscriptions operations (and defined in one place) and as similar to validation of jobs as possible (though there are some differences since one request can generate multiple Subscription objects. 16. Clarified the error handling for all operations. 17. Removed the "notify-text-format" and "notify-additional-formats" Subscription Template attributes and added the "notify-job-id" Subscription Description attribute. 18. The client can supply one or more Subscription Template Attribute Groups in all Subscription Creation requests and the printer returns Subscription Object Attributes groups for each Subscription object created. Consequently, an "s" was added to Create-Job- Subscriptions and Create-Printer-Subscriptions operations. 19. Reorganized the Events, so that some of the Events represent a group of events and the rest are sub-events. This reduces the number of Subscribed Events that a Printer needs to support in one Subscription from 5 to 2. It also means that the event that is delivered is one of the Subscribed events, not necessarily the trigger event, so "notify-trigger-event" was renames to "notify- subscribed-event" in the Event Notification. 20. Added the 'printer-full' and 'printer-not-almost-idle' Events to go along with the 'printer-no-longer-full' and 'printer-almost-idle' Events. Renamed the 'printer-queue-changed' Event to 'printer- queue-order-changed'. 21. Clarified what MUST be in a Delivery Method Document. 22. Removed "persistent-jobs-supported" Printer Description attribute, since it has nothing to do with Notifications and is not needed to describe Subscription object persistence. 23. Changed notify-max-printer-subscriptions-supported (integer(0:MAX)) and notify-max-job-subscriptions-supported (integer(0:MAX)) so that MAX means no limit and 0 means no subscriptions are (currently) allowed, so as to give a way to turn off accepting new subscriptions. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 3] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 3 Changes from March 8, 2000 to May 10, 2000 The following changes were made to the March 8, 2000 version to create the May 10, 2000 version based on the agreements reached at the April IPP WG meetings and subsequent teleconferences: 24. Change "notify-format" to "notify-text-format" and made it apply only to the format of the "notify-text" (formerly called "human- readable-report") and Human Consumable form. A new attribute "notify-additional-formats" specifies the formats for the Machine Consumable contents of Delivery Methods that support multiple formats. 25. Change the "job-notify" collection attribute in Job Creation operations to be multiple "notify-xxx" attributes. This change eliminates the need for collection values. It also means that a Job Creation operation can create only one Subscription Object. 26. Change the Machine Consumable form to be transport independent. 27. Reduce the set of REQUIRED attributes in the Machine Consumable form and add the OPTIONAL "notify-attributes" attribute that allows a client to request additional attributes. 28. Specify the information that SHOULD be in the Human Consumable form 4 Changes from March 6, 2000 to March 8, 2000 The following changes were made to the March 6, 2000 version to create the March 8, 2000 version based on the agreements reached on the mailing list: 29. Changed the name of the SNMP Delivery Method from 'snmp' to 'snmpnotify', since the Notification Recipient isn't an SNMP agent. 30. Clarified that an implementation with only a single value for persistent-jobs-supported (boolean) or persistent-subscriptions- supported (boolean) MAY make it settable to the single value or make it not-settable. 5 Changes from February 2, 2000 to March 6, 2000 The following changes were made to the February 2, 2000 version to create the March 6, 2000 version based on the agreements reached on the mailing list, at the February IPP WG meetings, and reflected in the minutes: 31. Clarified that this extension is intended as an extension to IPP/1.0, IPP/1.1, and future versions. 32. Allocated the operation-id 0x0016 to 0x001B values for the Notification operations defined in the document. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 4] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 33. Pre-pended the word "subscription-" on the front of the "request- id" Subscription Object attribute to distinguish it from the "request-id" parameter that is sent in every request and response. 34. Added the term "settable" for describing attributes that are not READ-ONLY. 35. Added the term "Subscription Creation Operation" to stand for any operation that can create a Subscription Object: Job Creation operations (Create-Job, Print-Job, and Print-URI), Create-Job- Subscriptions, and Create-Printer-Subscriptions. 36. Changed the "subscriber-user-name" (name(MAX)) Subscription Object attribute from OPTIONAL to REQUIRED. 37. Changed the name and semantics of "notify-printer-up- time(integer(1:MAX)) to notify-server-up-time so that it can be either the Printer's uptime or a Notification Delivery Service uptime. 38. Added the 'ipp:', 'indp:', 'mailto:, and 'snmp:' notification delivery schemes to the definition of the "notify-recipients" to indicate possible schemes. 39. Changed the name and semantics of "notify-text-format" (mimeMediaType) to "notify-format" so that it can be used to specify either Human Consumable or Machine Consumable formats where the implementation supports both. Clarified that this attribute controls whatever variable Notification Content that the implementation supports, which may be an attachment to the fixed content format or the contents of the "human-readable-report" (text(MAX)) attribute. Clarified that an implementation NEED NOT support all of its supported Notification Content formats with all of its supported Delivery Methods. 40. Added 'text/xml', 'application/ipp', 'application/postscript', and 'image/tiff' and additional example MIME media types for "notify- format" (mimeMediaType). 41. Clarified that the recommend way for a client to determine whether or not a Printer supports Per-Job Subscriptions is to query the Printer's "notify-max-job-subscriptions-supported" attribute, since Create-Job-Subscriptions is an OPTIONAL operation. 42. Clarified that the recommend way for a client to determine whether or not a Printer supports Per-Printer Subscriptions is to query the Printer's "operations-supported" attribute to see if the Create- Printer-Subscriptions operations is supported, since this is the usual way to determine a Printer's capabilities. 43. Clarified that if "persistent-jobs-supported" (boolean) and "persistent-subscriptions-supported" (boolean) are settable, then Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 5] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 setting them must affect whether or not jobs and subscriptions are persistent. 44. Allowed Delivery Methods to send operations with or without a response, depending on the definition of the Delivery Method. 45. Indicated that a deliver method definition is free to REQUIRE that the client supply the "notify-user-data" attribute. 46. Required that the Printer support the "job-uri" operation attribute as a target, in addition to "printer-uri" & "job-id", i.e., keep consistent with all Job operations. 47. Changed the 'none' out-of-band value to be a reference to the collection document [ipp-coll], since the use for it in this document is with the 'collection' attribute syntax. 48. Clarified that a conforming implementation MUST support the 'collection' attribute syntax, since that is required in Job Creation operations. 49. Allocated the values to the new status codes defined in this document. 50. Allocated the [ipp-pro] subscription-attributes-tag and notification-attributes-tag delimiter tags to delimit Subscription attributes and Notification Content attributes in requests and responses. 51. Changed the 'server-error-too-many-subscriptions' and 'server- error-too-many-events' to be client errors, i.e., 'client-error- too-many-subscriptions' and 'client-error-too-many-events', since other errors of this type are client errors. 6 Changes from October 14, 1999 to February 2, 2000 The following changes were made to the October 14, 1999 version to create the February 2, 2000 version based on the agreements reached at the October and December IPP WG meetings and reflected in the minutes: 52. Added a Java Listener as an example of a Notification Recipient. 53. Clarified the object relationships. 54. Clarified how job Events differ for Per-Job versus Per-Printer Subscriptions. 55. Added the ability for the Machine Consumable form to contain a Human Readable "human-readable-report" (text) attribute so that both forms could be sent in the same Notification. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 6] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 56. Clarified that the 'none' value for notify-text-format (mimeMediaType) has to be out-of-band, not the text string 'none' as a mimeMediaType. 57. Clarified that 'none' means send the Machine Consumable form without the "human-readable-report" (text) attribute, if it is defined. 58. Clarified that Notification Recipients MUST be able to accept unrecognized attributes. 59. Allowed the notification Delivery Method definition to be modeled as (1) a request with an operation code without a response, (2) a request with a operation code with a response or (3) a response with a status code. 60. Added "notify-text-format" (mimeMediaType) and "human-readable- report" (text(MAX)) to be able to be sent in a Notification content, if the notification Delivery Method Document permits it. 61. Added "job-k-octets" (integer(0:MAX)), "job-impressions" (integer(0:MAX)), and "job-media-sheets" (integer(0:MAX)) as OPTIONAL for Notification content for use in job-progress Events to show the target values so that the Notification Recipient can show a thermometer. 62. Added a Subscription Attributes Group (and subscription-attributes tag) the Create-Job-Subscriptions and Create-Printer-Subscriptions requests and responses. 63. Added the 'none' out-of-band value for use with "notify-text- format" (mimeMediaType) attribute. 64. Changed the job progress attributes from using -2 to mean 'unknown' as in the PWG Job Monitoring MIB, to use the 'unknown' out-of-band value. 7 Changes from August 17, 1999 to August 22, 1999 65. Integrated the Attribute Summary and New Model documents into the Specification. Separated the Change History into this document. Put the attribute summary as an Appendix. Put each Notification Method description into a separate (short) document. 66. Added "notify-content-type" (mimeMediaType) so that the client can specify whether human consumable versus machine consumable. 67. Added "notify-content-type-supported" (1setOf collection) Printer Description attribute to represent which notification format types are supported for each supported delivery scheme. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 7] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 68. Made Per-Printer Subscriptions and the Subscription object REQUIRED if notification is supported. So both Per-Job and Per-Printer subscriptions are REQUIRED. There is no longer any CONDITIONALLY REQUIRED indication in our spec. 69. Added "notify-attributes-charset" to represent "attributes-charset" in subscription requests and objects to distinguish it from the request's "attributes-charset" attribute. 70. Added "notify-attributes-natural-language" to represent "attributes-natural-language" in subscription requests and objects to distinguish it from the request's "attributes-natural-language" attribute. 71. Removed the concept of recording events, since there are no longer any Job or Printer attributes that record the last event, time, or date-time of the event. Only the Printer's "printer-state-change- time" and "printer-state-change-date-time" remain for recording events as the last Printer state change, so that an application starting up can determine how long the device has been in its current state. 72. Deleted notify-content-types-supported (1setOf collection). Require all (1 or 2) content types that are defined for a method to be supported, if the method is supported. 73. Added the 'server-error-too-many-events' status code. 8 Changes from August 11, 1999 to August 17, 1999: 74. Instead of the "notify-exclude-event-mask" (1setOf octetString(8)) attribute, we agreed to use introduce the new 'collection' attribute syntax that we have been talking about for over a year for use in the Job object to specify multiple subscriptions in a Job creation operation. So the "notify" operation attribute for Job creation operations will have the attribute syntax: '1setOf collection'. The member attributes of each collection value for Per-Job subscriptions are the same as the attributes of a Subscription object instance for Per-Printer subscriptions. For terminology a "subscription" is either a collection value of the "notify" operation attribute in a Job Creation operation or is a Subscription object. 75. Each subscription will contain only one multi-valued attribute: "notify-events" (1setOf type2 keyword). The remaining attributes will be single valued: "notify-recipients" (uri) "notify-user-info" (octetString(63)) "attributes-charset" (charset) "attributes-natural-language" (naturalLanguage) "request-id" (integer(0:MAX)) Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 8] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 76. The client supplies an "attributes-natural-language" in a subscription in order to get a different natural language than for the request that creates the subscription. However, the only time that the natural language has any bearing on the Notification content, is when that content is the Human Consumable form. The Machine Consumable form of the Notification content will have no localization in it. 77. The minimum number of notification recipients that are required to support is 1. Hence the minimum number of collection values is 1 and the minimum number of Subscription objects is 1, if Per-Printer subscriptions are supported at all. 78. Instead of inventing a special operation that sets the Job attributes related to notification, we will define a single Set- Job-Attributes operation for changing the values of any Job attribute that is not defined to be READ-ONLY. We will not define the corresponding Set-Printer-Attributes operation at this time, but will lump that operation with the other System Administration operations, since changing Printer attributes is an administrative function. Changing Job attributes is an end-user function for your own jobs, and an operator operation for other's Jobs. 79. A Printer can grant a larger or smaller least to that requested, including granting an infinite lease. 80. Change "persistence (boolean)" operation attribute to "persistence- requested (boolean)" in the Create-Printer-Subscription. Keep it OPTIONAL to support. However, add a REQUIRED "persistence-granted (boolean)" operation attribute that MUST be returned in the response. While implementations are RECOMMENDED to make all Subscriptions persistence, same as for jobs, they MAY have a more limited number that are persistent, including none. 81. Add two Printer Descriptions attributes: "persistent-job- supported" (boolean) and "persistent-subscriptions-supported" (boolean). 82. The Get-Printer-Subscriptions and Get-Printer-Subscription- Attributes will return attributes Subscription attributes group, so there will be a new Subscription attribute tag assigned in the Encoding and Transport. 83. Changed the name of the "notify-lease-time" (integer(0:MAX)) in the Subscription object to "notify-least-expiration-time" (integer(0:MAX)) since it is the time at which the lease expires. 84. Eliminated storing the trigger-event, trigger-time, and trigger- date-time in the subscription and passed them only in the Notification content. 85. Add "printer-state-change-time" (integer(MIN:MAX)) and "printer- state-change-date-time" (dateTime) Printer Description attributes Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 9] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 to record the time that the Printer last changed state. Then an application that come up after that can tell when the printer got into its current state by querying the Printer when the application starts up. Lesson from the Printer MIB alert table. 86. Defined the "subscription-id" attribute for use with Per-Job subscriptions as being the index of the 1setOf collection, starting at '1'. Then a Notification Recipient can have a unique identification for each subscription whether it be Per-Job or Per- Printer, for use in catching duplicate or skipped notifications using the "request-id". 87. Deleted the "delivery-failure-count" (integer(0:MAX)) from the Subscription object as not necessary. 88. Transports that have limited space, like SNMP, can truncate the "job-name" to less than 255 octets, in order to fit. 89. Added the "subscription-printer-uri" (uri) to the Subscription object to go along with the Job's "job-printer-uri" (uri) attribute. 90. Added "job-k-octets-processed" (integer(0:MAX)) to the Job Notification content for 'job-progress' and 'job-completed' events. 91. Added the 'job-progress' attributes to also be in the 'job- completed' Job Notification content. 9 Changes from August 8, 1999 to August 11, 1999 The following changes were made from the 99/08/07 version to make the 99/08/11 version as result of the IPP telecon, 9908/11: 92. Changed the name of the Replace-Job-Subscription operation to Set- Job-Subscription, since it can add, remove or change Job notification attributes, not just replace them. 93. Added the configuration pictures. 94. Reduced the size of "notify-user-data" from 255 octets to 63 octets, since it is also send in the Notification content which has a limit of 480 or so octets on some transports. 95. Changed the conformance requirements for the "notify-exclude-event- masks (1setOf octetString(8))" operation attributes in Job creation and Create-Printer-Subscription operations from OPTIONAL to REQUIRED, since their implementation means that clients can count on it. Also the minimum number of Per-Printer Subscriptions can be less, since a client won't be forced to use multiple subscriptions when recipients have different events. Finally, SNMPv3 has the exclude mask mechanism. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 10] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 96. Added the OPTIONAL "notify-natural-languages" (1setOf naturalLanguage) Job Description attribute so that each Notification Recipient could get a requested natural language, instead of the one in the Job creation request. 97. Deleted the "job-trigger-message" Job Description attribute from Job object attribute. The client can localize the remaining Job attributes on its slow scan in case Notifications are dropped. 98. Added the "notify-request-ids (1setOf integer(0:MAX))" Job Description attribute to the Job object to indicate (and remember) the most recent request-id delivered for each Notification Recipient. 99. Deleted "previous-job-state (type1 enum)" and "job-state-reasons- added (1setOf type2 keyword)" and "job-state-reasons-deleted (1setOf type2 keyword)" from the Job object. The "job-state- reasons" value has enough information about why the Job is in the current state, so that we don't need the previous state and state reasons for the slow scan polling Notification Recipient that is attempting to overcome possible dropped Notifications. 100. Added REQUIRED "max-recipients-supported (integer(0:MAX))" Printer Description attribute to the Printer object to indicate the max number of Per-Job and Per-Printer Notification Recipients supported in each subscription. REQUIRE a minimum of 3 recipients. 101. Added the requirement that at least 8 Per-Printer Subscription object instances MUST be supported, if Per-Printer subscriptions are supported. With the exclude mask, such a low number as 8 isn't too restrictive on clients and isn't too expensive for low end devices. 102. Added the OPTIONAL "persistent-subscriptions-supported" (boolean) Printer Description attribute to the Printer object to indicate whether or not the Printer supports persistent Per-Printer Subscriptions. 103. Changed the Printer support requirements for the "notify-exclude- event-mask" (1setOf octetString(8)) from OPTIONAL to REQUIRED, so that clients can count on it and to reduce the number of Subscription objects that a Printer MUST support. 104. Added the OPTIONAL "notify-natural-languages" (1setOf naturalLanguage) Subscription object attribute so that each Notification Recipient could get a requested natural language, instead of the one in the Create-Printer-Subscription request. 105. Added the "subscription-id" attribute to the Subscription object so that each object instance is identified in a manner analogous to Job objects. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 11] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 106. Changed the name of "most-recent-request-id" to "notify-request- ids" for consistency in naming and to be the same as the corresponding Job Description attribute ("notify-request-ids"). 107. Changed the name of the "notify-lease-time-remaining" Subscription object attribute to "notify-lease-time". Changed the semantics from the lease time interval requested to the "printer-up-time" (time ticks) that the lease expires. The client can subtract the "printer-up-time" from the "notify-lease-time" to find out how much time is left on the lease. This change makes the attribute value be a constant, instead of having to be recomputed on each Get- Printer-Subscription-Attribute request. 108. Changed the name of the "notify-lease-time (integer(0:MAX))" Subscription object attribute to "notify-lease-time-granted (integer(0:MAX))" and indicated that it is set by the Printer not the client. 109. Added 'printer-announce' event, so that the Subscriber can have the Notification Recipient be warned that other Printer events are forth coming. 110. Added 'printer-queue-changed' - so that an application that is monitoring the queue can re-fetch the queue with Get-Jobs. 111. Added "attributes-charset" and "attributes-natural-language" to the Job and Printer Notification content, since the content is an 'application/ipp' MIME type for an IPP response. 112. Added "printer-name (name(127))" and "job-name (name(MAX))" to Job and Printer Notification Content. These are helpful to end users to identify from whence came a notification. 113. Deleted the "job-trigger-message (text(255))" from the Job Notification content since the data is already available in other attributes that the recipient should localize to present to a human. Also the Human Consumable form will have many of the attributes when it is used. 114. Deleted "previous-job-state (type1 enum)" and "job-state-reasons- added (1setOf type2 keyword)" and "job-state-reasons-deleted (1setOf type2 keyword)" from the Job Notification content. The current "job-state-reasons" value has enough information about why the Job is in the current state, so that we don't need the previous state and state reasons. 115. Deleted the "printer-trigger-message (text(255))" from the Printer Notification content, since the data is already available in other attributes that the recipient should localize to present to a human. Also the Human Consumable form will have many of the attributes when it is used. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 12] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 116. Added [job-id (integer(1:MAX))] and [job-name (name(MAX))] to the Printer Notification content for when the event is from a Per-Job subscription. 117. Deleted "previous-printer-state (type1 enum)" and "printer-state- reasons-added (1setOf type2 keyword)" and "printer-state-reasons- deleted (1setOf type2 keyword)" from the Printer Notification content. The current "printer-state-reasons" value has enough information about why the Printer is in the current state, so that we don't need the previous state and state reasons. 118. Added "printer-is-accepting-jobs (boolean)" attribute to the Printer Notification content, since it is a state variable and its change causes the 'printer-state-change' event. 119. Added the definition of the Set-Job-Subscription operation. 120. Changed the name of "notify-lease-time" operation attribute in the Create-Printer-Subscription operation to "notify-lease-time- requested" to distinguish it from the "notify-lease-time" (uptime ticks) and "notify-lease-time-granted" returned in the response. 121. Added the "notify-persistence (boolean)" operation attribute to the Create-Printer-Subscriptions to indicate whether the notification content delivery is to make the Per-Printer Subscription be permanent. 10 Changes from August 2, 1999 to August 7, 122. Changed the Subscription object to be used only with the Per- Printer subscriptions. Per-Job subscriptions are done with Job Creation operation attributes that are copied to the Job object as Job Description attributes. 11 Changes from July 22, 1999 to August 2, 1999 123. Introduced the Subscription object for use with both Job Subscriptions and Printer Subscriptions. A Subscription object is associated with a Printer object, a Job object, or is an unassociated Job Subscription waiting for the Job object to be created and a back association made to it. 124. Add the following operations on the Subscription object: Create-Subscription recipients, [events,] [user-data,] [lease-time,] [job-id or printer-uri] Get-Subscription-Attributes subscription-id, [requested- attributes] Renew-Subscription subscription-id, [lease time] Cancel-Subscription subscription-id Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 13] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 12 Changes from July 21, 1999 to July 22, 1999 125. Added the REQUIRED "initial-sequence-numbers" (1setOf integer(1:MAX)) to the Subscribe-Printer response to indicate the sequence number to be used in the first notification for each event subscribed. 126. Added a number of issues and renumbered. 13 Changes from July 20, 1999 to July 21, 1999 The following changes were made to the July 20, 1999 to make the July 21, 1999 version: 127. Changed the "job-trigger-events (1setOf type2 keyword)" Job Description attribute "job-trigger-event (type2 keyword), since events cannot be batched in a notification. 128. Changed the "printer-trigger-events (1setOf type2 keyword)" Printer Description attribute "printer-trigger-event (type2 keyword), since events cannot be batched in a notification. 129. Changed Subscribe-Job from REQUIRED to OPTIONAL if implementing "Explicit Subscription". 130. Clarified that events are defined to be disjoint, since the job- trigger-event is now single-valued. Thus only the 'job-created' event is generated even if job state reasons are added. Similarly, only the 'job-completed' event is generated even if job state reasons are added or removed. 131. Indicated which Job Description and Printer Description attributes are READ-ONLY, i.e., MUST NOT be settable with Set-Job-Attributes or Set-Printer-Attributes operations. 132. Clarified which Job attributes cause 'job-config-changed' event: "job-message-from-operator" and any non-READ-ONLY Job attributes. 133. Clarified which Printer attributes cause 'printer-config-changed' event: "printer-message-from-operator" and any non-READ-ONLY Printer attributes, except "media-ready" which has its own event. 134. Renamed 'ready-for-job' event to 'printer-is-no-longer-full' and clarified that it is generated only when a previous Print-Job, Print-URI, Create-Job, Send-Document, or Send-URI operation had been rejected due to no more room. 135. Renamed 'ready-for-just-in-time-job' to 'printer-almost-idle', to make it clearer how this event differs from 'printer-is-no-longer- full'. 136. Kept 'printer-shutdown' and 'printer-restarted' as separate and disjoint from 'printer-state-changed' event, so that they can be Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 14] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 subscribed without having to get all state change events. Also parallel with 'job-created', 'job-state-change', and 'job- completed'. Also clarified that shutdown means either using the Shutdown-Printer operation with 'standby' or 'power-down' options or power-down by other means. Same for 'printer-restarted' being with the Restart-Printer operation or a power-up sequence. 14 Changes from May 18, 1999 to July 20, 1999 The following changes were made to the May 18, 1999 to make the July 20, 1999 version: 137. Added new section Conformance Requirements 138. Changed 'event report' to 'notification' 139. Changed 'request-id' to be used as a sequence number inside each notification. 140. Combined job-state-changed and job-state-reason-change into one notification trigger-event. 141. Combined printer-state-changed and printer-state-reason-change into one notification trigger event. 142. Added "job-config-changed" event 143. Moved "device-powering-down" event to be encompassed by "printer- state-change" 144. Combined this spec with the Job Independent Subscriptions spec (which was renamed to Explicit Subscriptions). 145. Added operation Subscribe-Job. 146. Added server-error-too-many-subscriptions to Status Codes. 15 Changes from May 17, 1999 to May 18, 1999 147. Removed concept of event groups. Subscribe to individual events. Much simpler. The event determines what data is sent in the event report. Also allows the client to query the printer to see what events are supported, rather than which groups. 148. Replaced all of the job state transition events with a single 'job- state-changed' event. The report contains the old job state and the new job state. 149. Removed the notification-format attribute to keep the proposal simple. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 15] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 150. Added the 'client-error-notify-uri-scheme-not-supported' status code. 151. Added REQUIRED "previous-job-state", "previous-job-state-reasons", previous-printer-state", and "previous-printer-state-reasons" Job Description attributes. 152. Removed the "job-impressions-completed" from the Basic Job Event Report Content. Bring it back with the "job-progress" events. 153. Removed the "printer-is-accepting-jobs" from the Basic Printer Event Report Content. Its changing is part of the "config-change" event. 154. Changed the 'job-state-changed' event, so that it doesn't include 'job-created', 'job-completed', or 'job-purged' events. 155. Made the event names mostly consistent by being in the past tense to reflect the fact that events reports happen after the internal event has completed. 156. Combined the 'job-state-reasons-added' and 'job-state-reasons- removed' into a single event: 'job-state-reasons-changed'. Same for 'printer-state-reasons-changed'. 157. Changed 'mailto' notification method to REQUIRE 'multipart/report' which all mail agents understand, at least the text part. 158. Deleted the 'job-warning' and 'job-error' events, since they are covered by the 'job-state-reasons-changed, 'job-state-changed' and/or 'job-completed' events. 16 Changes from January 20, 1999 to May 17, 1999 159. Changed references to IPP 1.0 to IPP 1.1 160. Implementing the notification specification is optional. 161. Refined the definition of Event 162. Changed 'notification report' to 'event report' for consistent terminology 163. Changed the terminology of an 'active' job to 'not-complete'. Included the 'pending-held' state in the 'not-complete' super- state. 164. Introduced notify-event-groups-default. 165. Changed job-trigger-message and job-impressions-completed to be CONDITIONAL in the event report, job-trigger-date-time to be RECOMMENDED, and job-state-reasons to be REQUIRED. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 16] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 166. Changed printer-trigger-message to be CONDITIONAL in the event report, and printer-state-reasons to be REQUIRED. 167. Created a table to map job-trigger-events keywords to event-groups and required status. 168. Modified job-continued to be job-resumed-processing, and job- received to be job-created. Added job-purged, job-state-reason- removed, and job-state-reason-added keywords. 169. Modified job-trigger-time and printer-trigger-time to use values less than zero. 170. Created a table to map printer-trigger-events keywords to event- groups and their required status. 171. Added ready-for-job and printer-state-reason-added to printer- trigger-events keywords. 172. Updated References section 173. Added notify-format and notify-format-supported attributes. 174. Added subscription-id to the event report attributes of job and printer. 175. Made job-errors-basic and printer-errors-basic REQUIRED to be supported. 176. Added printer-media-changed, printer-config-changed, and ready-for- just-in-time-job to printer events. 177. Added Author's Addresses. 17 Changes from January 18, 1999 to January 20, 1999 The following changes were made to the January 18, 1999 to make the January 20, 1999 version: 178. Made this an INTERNET-DRAFT. 179. Indicated that a new default port is needed for the delivery methods. 180. Added Appendices in which to put the registration information for the URL schemes for each delivery method. 181. Clarified which parameters, Operation attributes, and Job/Printer attributes are supplied in an event content: the request-id is 0, the status-code is new 'job-event' 0x600 or 'printer-event' 0x601. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 17] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 182. Changed "job-trigger-event" and "printer-trigger-event" to be 1setOf so that multiple events that occur at the same time MAY be send as one event content. 183. Added "job-trigger-time" as a REQUIRED Job Description and event content attribute which is in seconds since power up. 184. Changed "job-trigger-date-time" and "job-state-reasons" to OPTIONAL. 185. Changed "status-message" to be an OPTIONAL "job-trigger-message" event content attribute and also made it a Job Description attribute. 186. Added "printer-trigger-time" as a REQUIRED Printer Description and event content attribute which is in seconds since power up. 187. Changed "printer-trigger-date-time" and "printer-state-reasons" to OPTIONAL. 188. Changed "status-message" to be an OPTIONAL "printer-trigger- message" event content attribute and also made it a Printer Description attribute. 189. Removed the "job-id" attribute from the printer event content. 18 Changes from December 10, 1998 to January 18, 1999 The following changes were made to the December 10, 1998 to make the January 18, 1999 version: 190. Changed the names of the REQUIRED notify-recipient keywords from: 'ipp-tcp-socket' and 'ipp-udp-socket' to 'ipp-tcp-notify' and 'ipp- udp-notify'. 191. Added '-notify' to the OPTIONAL 'snmpv1', 'snmpv2', and 'snmpv3' delivery method names. 192. Changed the OPTIONAL 'sense-datagram' to 'sense-notify' to be consistent. 193. Added 'ndps-notify' as an OPTIONAL keyword. 194. Deleted the 'all-basic', 'all-job-events-basic', and 'all-printer- events-basic'. Clients should be explicit about which groups they want. If new groups are added, the clients won't know what to do with them, if they had subscribed to 'all-xxx' groups. 195. Changed the names of "job-last-event" and "job-last-date-time-of- event" to "job-trigger-event" and "job-trigger-date-time" events, since the events trigger the notification delivery, but the attribute values remain after the event has been delivered. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 18] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 196. Added "status-message" as an OPTIONAL event report content attribute. 197. Changed "job-impressions-completed" to OPTIONAL. 198. Indicated that OPTIONAL attributes are not sent in the event report content if they are not supported. 199. Required that "status-message" and/or "job-impressions-completed" be sent in an event report content if they are supported as an Operation attribute and a Job Description attribute, respectively. 200. Added REQUIRED "printer-trigger-event", REQUIRED "job-id", and OPTIONAL "status-message" to the printer event report content. 201. Specified the "printer-trigger-event" Printer Description attribute, naming each event. 202. Deleted the 'sheet-completed' and 'collated-copy-completed', since these events are not part of any 'xxx-basic' event group. They can be added back when we have an event group that uses them. 19 Changes from July 1, 1998 to December 10, 1998 The following changes made from the July 1, 1998 to make the December 10, 1998 version: 203. Clarified the terminology so that an "event" doesn't necessarily mean that a notification report is delivered. 204. Removed many of the job and printer attributes for being sent in a notification event report, so that we can get agreement on a basic set of event report content. Only attributes really needs are included, including what may be needed for FAX. Changed the names of the event groups by adding the suffix '-basic' to indicate that these event groups return only basic information. Additional event groups can be registered in order to get more attributes as needed for accounting and more detailed job monitoring purposes. 205. Deleted the "job-progress" event group. We can bring it back when we agree to all of the extra attributes. Its not very useful with only the basic attributes. 206. The printer events are indicted using the "printer-state-reasons" values, instead of the Printer MIB alert codes. Since most of the Printer MIB alert codes, except for the generic ones, have equivalent IPP keyword reason values, this should be a problem and makes IPP more readably implemented in a server that doesn't have the Printer MIB. 207. Added the "job-last-event" job description attribute to give the job event some persistence. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 19] Expires February 25, 2000 INTERNET-DRAFTIPP 1.0 & 1.1: Notification Change HistoryAugust 22, 1999 208. Changed the job's "time-at-event (integer)" to "job-last-date-time- of-event (dateTime)" to give an absolute date and time, in case events are being relayed back through multiple servers, such as in FAX. Also made it a Job Description attribute to give it persistence. 209. Changed the printer's "time-at-event(integer)" to "printer-last- date-time-of-event(dateTime)" to give an absolute date and time, in case events are being relayed back through multiple servers, such as in FAX. Also made it a Printer Description attribute to give it persistence. 210. Added the IPP/1.0 "printer-is-accepting-jobs" to the event report, since changes in its value are really printer state changes. 211. Added the complete semantics for each job event under the "last- job-event" Job Description attribute. 20 Prior work on Notification A general notification service and a reference implementation was developed during the 1995 and Spring of 1996. It is entitled: "System Event Notification System Environment (SENSE)". It used the publish and subscribe model with subscribers subscribing to the Notification Service directly, not the Print Service. [sense] Martin, J. et all., "System Event Notification System Environment (SENSE)", ftp://ftp.pwg.org/pub/pwg/sense/, work in progress, Spring 1996. Isaacson, Martin, deBry, Hastings, Shepherd, Bergman [page 20] Expires February 25, 2000