Change History for "Internet Printing Protocol (IPP): Job and Printer Administrative Operations" File: ftp://ftp.pwg.org/pub/pwg/ipp/new_OPS/ipp-ops-set2-change- history.txt This text document summarizes the changes to the "Internet Printing Protocol (IPP): Job and Printer Administrative Operations". Each sub- section is in reverse chronological order. Adding or removing ISSUES that don't change the document are not listed here. 1 Changes to the July 6, 2000 version to make the July 17, 2000 version The following changes to the July 6, 2000 version to make the July 17, 2000 version as a result of the July 2000 IPP WG meeting: 1.Removed the Redirect-Job operation and the "redirection-printers- supported" Printer Description attribute, so that they could be further discussed in combination with Move-Job operation. 2.Clarified that Schedule-Job sets the job's "job-priority" to that of the job it is placed behind. If no "predecessor-job-id" is specified, the job is moved to be next and its priority is set to the highest supported by the Printer, i.e., is the same as the Promote- Job operation. 3.Added that if Schedule-Job is implemented, then Promote-Job MUST also be implemented, since it is a subset. 4.Added the operation-id codes for all of the operations as agreed. 5.Moved the Requirements and Use Case section to a separate Informational document. 6.Moved the Printer Fan-Out and Fan-In section to the end and moved the operations and status codes to the front. 7.Moved the change history out of the document to shorten it and make it be the same as when published as an Internet-Draft and/or RFC and last for more than 6 months. Added the following (fixed, i.e., no date, so doesn't change) URL to the References Section: ftp://ftp.pwg.org/pub/pwg/ipp/new_OPS/ipp-ops-set2-change-history.txt 1 2 Changes to the February 3, 2000 version to make the July 6, 2000 version The following changes to the February 3, 2000 version to make the July 6, 2000 version as a result of the February 2000 IPP WG meeting and subsequent email and telecons: 1.Renamed the Pause-Printer-After-All-Current-Jobs operation to Hold- New-Jobs and added a complementary Release-Held-New-Jobs operation. This sets the 'hold-new-jobs' value (instead of the 'moving-to- paused-all' which is gone) in the Printer's "printer-state-reasons" so that new jobs are held. The Printer eventually goes idle when all the current jobs have been processed. 2.Added the Redirect-Job operation to redirect a job from one Printer to another on the same server. It had been previously called Move- Job, but no movement is required. 3.Added the Schedule-Job-After operation to schedule a job immediately a specified job. 4.Added Printer Description attribute: "redirection-printers-supported" for validating the Printers that the Redirect-Job operation supports. 5.Added the 'forwarded-operation-failed' event code. 6.Left IPP/1.1 Pause Printer ambiguous as to whether it pauses immediately or after the current job. So the Pause-Printer-After- Current-Job is the unambiguously after the current job. 7.Capitalized the terms throughout the document. 8.Clarified that either the Printer or the Device operations or both can be supported independently of each other. 9.Clarified that it is the client's responsibility to keep the Printer's subordinate and parent pointers correct, not the Printer's. 10. Clarified that forwarding operations is done on a best efforts basis and not before returning a response. The 'forwarded-operation- failed' event helps indicate such problems. 11. Changed Startup-Printer so that "printer-is-accepting-jobs" is set to 'false'. But SHOULD be true when the Printer is powered up, so that it works out of the box. 2 3 Changes to the December 8, 1999 version to make the February 3, 2000 version The following changes to the December 8, 1999 version to make the February 3, 2000 version as a result of the December 1999 IPP WG meeting: 1.The Set-Printer-Attributes and Set-Job-Attributes operations were moved to a new "Job and Printer Set operations" spec [ipp-set-ops], along with the "printer-message-from-operator" & "job-message-from- operator" operation attributes, the "printer-settable-attributes", "job-settable-attributes", "printer-message-time" (integer), and "printer-message-date-time" (dateTime) Printer Description attributes, the 'client-error-attributes-not-settable' status code, and the 'not-settable' out-of-band value. 2.Deleted the "printer-message-operation: (type2 keyword) altogether. 3.Add a requirement to startup a powered-off device, say, Power-On- Device. 4.Deleted the Interpreter object. Functionality moved to the [ipp-set- ops] spec through the addition of a "document-format-varying- attributes" (1setOf type2 keyword) Printer Description attribute instead. 5.Clarified that, while a Non-Leaf Printer MUST NOT have associated devices, it SHOULD have an "output-devices-supported" (1setOf name(127)) Printer Description attribute which is a roll up of its subordinate "output-devices-supported" attributes. 6.Changed Suspend-Current-Job operation so that the Printer MUST NOT forward it to subordinate Printers. 7.Clarified that as jobs are forwarded, the IPP/1.1 "requesting-user- name" operation attribute is the immediate submitting client while the "job-originating-user-name" Job Description attribute is the authenticated original user. 8.Left IPP/1.1 Pause-Printer operation unchanged with multiple interpretations. The Pause-Printer-After-Current-Job, Pause-Device- Now, Pause-Device-After-Current-Copy, and Pause-Device-After-Current- Job all provide unambiguous interpretations. 9.Clarified that the 'paused' values is REQUIRED if the Pause-Printer or Pause-Printer-After-Current-Job operations are supported, but that 'moving-to-paused' depends on implementation. 3 10. Clarified that the 'paused' and 'moving-to-paused-all' values is REQUIRED if the Pause-Printer-After-All-Jobs operation is supported. 11. Clarified that the Shutdown-Printer operation MUST NOT lose any jobs. 12. Added a Conformance section which as a "Conformance Requirement Dependencies For Operations" table and a "Conformance Requirement Dependencies for State Reasons Values" table. 4 Changes to the November 16, 1999 version to make the December 8, 1999 version The following changes to the November 16, 1999 version to make the December 8, 1999 version as a result of the IPP WG telecons and mailing list discussion: 1.Introduced the separation of Printer operation from Device Operations. Removed the "printer-controls-other-protocols" (boolean) Printer Description attribute. Printer operations affect only IPP jobs and objects, while the Device Operations affect the Output Device. Set2 has the Printer operations and Set3 has the Device Operations. But do both sets of operations with only the Printer object and only the "printer-uri" target. 2.Remove the "when" operation attribute and added distinct Pause operations instead: Pause-Printer-After-Current-Job (IPP/1.1 Pause- Printer clarified), Pause-Printer-After-All-Current-Jobs 3.Added Deactivate-Printer and Activate-Printer which do Disable- Printer, Pause-Printer-After-Current-Job, and only allow query, Send- Document, Send-URI, and Activate-Printer operations. This is a clearer "shutdown" that can be brought back up using the protocol. 4.Clarified that Shutdown-Printer cannot be brought back via the protocol, though added Startup-Printer for hosted implementations to instantiate a fresh copy of the Printer object. 5.Changed the name of Pause-Current-Job to Suspend-Current-Job, since other jobs can be processed on the Printer (unlike Pause-Printer). 6.Added the Terminology section 7.Added the Requirements and Use Cases section 8.Added pictures of chained Printers, Printer fan-out, and Printer fan- in. 4 9.Added the concept of subordinate Printers and the "subordinate- printers-supported" (1setOf uri) Printer Description attribute to describe the configuration. 10. Added the forwarding rules: IPP Printer objects MUST NOT forward Printer operations to subordinate IPP Printer objects, except for the chained Printer configuration. IPP Printer objects MUST forward Job operations to the intended Job object. 11. Removed the "synchronize" operation attribute from all operations. 12. Renamed 'standby' to 'deactivated' Printer state reason. 13. Added 'moving-to-paused-all' Printer state reason for use with Pause-Printer-After-All-Current-Jobs 14. Added 'printer-deactivated' Printer state reason for use with Deactivate-Printer. 15. Renamed job-paused' to 'job-suspended' to go with the rename Suspend-Current-Job operation. 16. Renamed 'server-error-printer-is-in-standby-mode' status code to 'server-error-printer-is-deactivated'. 17. Grouped attributes that come in pairs. 18. Changed Shutdown-Printer so that there is no operation to come back to life, except Startup-Printer which starts a new instance (but there can only be one instance per Printer object). 5 Changes to the November 1, 1999 version to make the November 16, 1999 version 1.Formally defined IPP Printer fan-out, IPP Printer fan-in, and Output Device fan-out. Added figures to show IPP Printer fan-out and IPP Printer fan-in. 2.Added "parent-printers-supported (1setOf uri) Printer Description attribute to point back up the Printer hierarchy. 3.Added the requirements for forwarding operations that affect Jobs and for not forwarding operations that affect Printers. 4.Added "original-requesting-user-name" (name(MAX)) to represent the original end user, not the parent Printer's host. 5 5.Changed the default for "when" for the Pause-Printer operation from 'after-current-job' to 'now', since that is the behavior in IPP/1.1 where the "when" operation attribute is not defined. 6.Allowed a non-leaf Printer to have only one subordinate Printer. 7.Changed most of the "parent" Printer terminology to "non-leaf" Printer to contrast more clearly with "leaf" Printer objects. The term "parent" is only used when talking about a subordinate's immediate parent Printer object. 8.Added "original-requesting-user-name" (name (MAX)) to the list of READ-ONLY Job Description attributes. 6 Changes to the October 22, 1999 version to make the November 1, 1999 version The following changes to the October 22, 1999 version to make the November 1, 1999 version as a result of the IPP WG meeting in Durham, 10/99: 1.Removed the Reset-Printer, Non-Process-Run-Out, and Space-Current-Job operations from this Set2 spec and moved them to a new Set3 spec for use with the new Device object, renaming them appropriately, to Reset-Device, Non-Process-Run-Out-Device, and Space-Device. 2.Added the concept of parent and subordinate Printer objects to formally represent fan-out. Mentioned the Device object that is in a new [ipp-device-ops] spec. 3.Distributed the definition of the "when" operation attribute to the Pause-Printer (IPP/1.1), Shutdown-Printer, and Pause-Current-Job operations and listed the values that are appropriate to that operation only: Pause-Printer: 'now', 'after-current-copy', 'after-current-job' (default), and 'after-all'. Shutdown-Printer: 'now', 'after-current-job' (default), and 'after- all' Pause-Current-Job: 'now', 'after-current-copy' (default) 4.Deleted the "device-name" operation attribute and the "device-names- supported" (1setOf name(127)) Printer Description attribute. The latter will be part of the [ipp-device-ops] document. 5.Kept the "job-settable-attributes" (1setOf type2 keyword) and "printer-settable-attributes" (1setOf type2 keyword), but deleted the 6 "interpreter-settable-attributes (1setOf type2 keyword), since the Interpreter object and its attributes are really a sub-class of the Printer object. 6.Deleted the "when-values-supported" (1setOf type2 keyword) Printer Description attribute. 7.Added the "subordinate-printers-supported" (1setOf uri) Printer Description attribute. 7 Changes to the September 19, 1999 version to make the October 22, 1999 version Adding or removing ISSUES that don't change the document are not listed here. The following changes to the September 19, 1999 version to make the October 22, 1999 version as a result of the IPP WG meeting in Denver, 9/99: 1.Added the Interpreter object. 2.Added the "device-name" operation attribute to handle passing operations through the IPP Printer object to the device. 3.Added the out-of-band 'not-settable' to allow the Set-Job-Attributes and Set-Printer-Attributes response to indicate the difference between an unsupported attribute and a supported, but not settable, attribute in the Unsupported Attributes Group. 4.Removed "when-values-supported" and "job-settable-attributes" and "printer-settable-attributes" and "interpreter-settable-attributes" from the list of attributes that MUST be read-only. So an administrator could sub-set the policy on what when values are supported or which attributes can be set. 8 Changes to the July 19, 1999 version to make the September 19, 1999 version The following changes to the July 19, 1999 version to make the September 19, 1999 version as a result of the IPP WG meeting in Alaska, 8/99: 1.Refer to proposal as "Set2" rather than "Administrative" operations. 2.Revise the emphasis on administrator throughout the document, although the word administrator remains wherever appropriate. 7 3.Convert non-process-run-out from an operations attribute to an operation. 4.Added Issue 21: For all these "access" caveats, why not just say... 'authentication and access control (see ipp-mod sections 1, 8.3 and 8.5) applies to this operation".? 5.Added Issue 22: Why? This is backward, if you ask me (HRL). 6.Per resolution of Issue 2, the "settable-attributes" Printer Description attribute, was replaced with three Printer Description attributes: "printer-settable-attributes", "job-settable- attributes", and "interpreter-settable-attributes". The latter for those implementations that have different values for Printer attributes in the Get-Printer-Attributes and Set-Printer-Attributes operations, depending on the value of the "document-format" operation attribute supplied by the client. If and when we get a Document object, then we can add a "document-settable-attributes" Printer Description attribute. 9 Changes to the June 30, 1999 version to make the July 19, 1999 version The following changes to the June 30, 1999 version to make the July 19, 1999 version as a result of the IPP WG meeting in Copenhagen, 7/7/99- 7/8/99, and the IPP telecon, 7/14/1999: 1.Sections 2.1 and 2.2: Clarified that the way to remove a message from the operator was for the client to supply a zero-length or all white space text string which is copied as usual to the "xxx-message- from-operator" attribute. 2.Section 2.3: Added "factory-settings" (boolean) operation attribute to the Get-Printer-Attributes operation. 3.Section 2.4: Added the "when" operation attribute to the Pause- Current-Job operation. 4.Section 2.4: Made the "when" operation attribute OPTIONAL for use in operations (Pause-Printer, Reset-Printer, Shutdown-Printer, and Pause-Current-Job operations). 5.Sections 2.5: Added table of operation attributes for the Printer operations to make it easy to compare. 8 6.Sections 2.6: Added table of operation attributes for the Job operations to make it easy to compare. 7.Section 3.1: Added "settable-attributes" (1setOf type2 keyword) READ-ONLY Printer Description attribute. 8.Section 3.2: Added "printer-controls-other-protocols" (boolean) Printer Description attribute 9.Section 3.3: Added the READ-ONLY "printer-message-time" (integer(MIN:MAX)) Printer Description attribute to keep time message updated in time ticks. 10. Section 4.2: Deleted the 'process-next' "job-state-reasons" value, so that repeated Promote-Job operations promote each job "to the front of the queue". 11. Sections 6.1.1.1 and 6.2.1.1: Replaced the table that listed all attributes with one that lists only the attributes that MUST be READ- ONLY. 12. Section 6.1.1.1: Indicated that attributes that are not specified as READ-ONLY in this document MAY be settable. If they control behavior, that changing their values MUST change the behavior. 13. Section 6.1.1.2 and 6.2.1.2: Deleted the "ipp-attribute-fidelity" operation attribute from the Set-Printer-Attributes and Set-Job- Attributes operations. All set operations are atomic. 14. Section 6.1.1.2: Add the concept of the Interpreter object to handle attributes whose values vary in the Set-Printer-Attributes and Get-Printer-Attributes, depending on the value of the "document- format" operation attribute. 15. Sections 6.1.1.3 and 6.2.1.2: Changed the "out-of-band" 'not- settable' value back to the existing 'not-supported' value. 16. Section 6.1.2 and 6.1.3: Added "job-type" operation attribute to Disable-Printer and Enable-Printer operations with values: 'network- jobs', 'walk-up-jobs', and 'all-jobs'. 17. Section 6.1.5: Clarified that Restart-Printer brings up the Printer disabled and paused, since that is the eventual state that Shutdown-Printer leaves the printer in. 18. Section 6.1.5: Indicated that if Restart-Printer is supported, then Shutdown-Printer MUST be supported. 9 19. Section 6.1.6: Deleted Space-Printer operation. Keep Space- Current-Job operation only which has a "job-id" operation attribute that a client MAY supply. 20. Section 6.1.6: Clarified that Shutdown-Printer is for a long period of time, not just to reset the device or change attribute values. Also that Shutdown performs an immediate Disable-Printer and an eventual Pause-Printer. 21. Sections 6.2.3, 6.2.4, and 6.2.7 : Added a "job-id" operation attribute to Cancel-Current-Job, Pause-Current-Job, and Space- Current-Job that a client MAY supply to check for race condition where current job changes 22. Section 6.2.4: Combined Pause-Job into Pause-Current-Job operation. 23. Sections 6.2.4 and 6.2.5: Pause-Current-Job puts job in 'processing-stopped' state, not 'pending-held' state. 24. Section 6.2.6: Simplified Promote-Job, so that it behaves as if the job were put at the front of the queue. 10