INTERNET-DRAFT K. Swenson Netscape Communications Corp. Expires February, 1999 Tom Hastings Xerox Corp. August 7, 1998 Similarities and Differences between SWAP and IPP This document is an Internet-Draft. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." To view the entire list of current Internet-Drafts, please check the "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). 1.0 Abstract IPP (Internet Printing Protocol) has been compared in conversations to SWAP (Simple Workflow Access Protocol). Both are for starting an asynchronous job, and then being able to check up on it later. The IPP is specifically designed for printers and print jobs. SWAP is more generic, and is generally oriented toward more computational jobs. But many of the problems encountered are the same, and the approach to the solutions can be examined and compared. This document goes through the features point by point and shows in what ways they are similar, and more importantly in what ways their approaches differ. The purpose of this is to guide discussions about the two protocols. 2.0 Comparison SWAP IPP Resources that are named using Resources that are named using URIs. Requests are made using URIs. Requests are made using HTTP. HTTP. A process definition resource, A printer resource, named by a URI, named by a URI, allows cration of allow for creation of instances of process instances. Process jobs. Printer operations (methods) definition methods are are Print-Job, Print-URI, LISTINSTANCES, Validate-Job, Create-Job, CREATEPROCESSINSTANCE, as well at Get-Printer-Attributes, and the standard PROPFIND and Get-Jobs. PROPPATCH. Process instance resource, named by A print job resource, named by a a URI, represents a specific URI, represents a specific print instance of the service. Process job. Job operations (methods) are instance methods are GETHISTORY, Send-Document, Send-URI, TERMINATE, SUBSCRIBE, UNSUBSCRIBE, Get-Job-Attributs, and Cancel-Job. as well as PROPATCH and PROPFIND. No concept of a numeric process IPP has additionally an integer instance ID, no ability to call that represents the job ID. Print instance methods on the process Job request can be made to the definition. Printer, including the job ID. Thus the printer resource acts as a proxy for the printer job resource. Single command to create the "Print-Job" command creates a print instance, give it data and start job, accepts all data, and starts it. the printing. "Print-URI" does the same thing with the document retrieved from a web server. Can start an instance without "Create-Job" creates a print job starting it, buy passing false in but does not cause it to start. the start parameter. Data can be Data can be supplied later using set on the process instance using "Send-Document" or "Send-URI". "propPatch" any number of times. Whenever the data is sent with the Then a transition to the running "last-document" flag set to true it state causes it to start. causes the printing to start. No analog to the "validateJob" "Validate-Job" command on the command printer has all the parameters of a create print job (except the document data), it does not print, but it does return whether the printer is able to handle that particular job request. "listInstances" returns a list of "Get-Jobs" returns a list of the the process instsances from that printer jobs on that printer. process defnition. Attributes: name/value pairs on the Attributes: name/type/value process instance. Can retrieve from triplet. Printer resource will the process definition a list of provide a list of attributes on the names and types for attributes on printer, as well as on the print process instances. No attributes jobs. on the process definition. Data type encodings supplied for There is a fixed set of types date, number, and string. Other available. Support provided for data types are implementation enumerated data types where there dependent. is a specified set of allowed values. New data types can be registered New data types can be registered for use. for use. No standard attributes on the Printer object has standard process definition, which is REQUIRED and OPTIONAL attributes assumed to be configured in a that can be queried. No operation proprietary way. Proprietary at present to set them. process definition attributes can be queried and set with PROPFIND and PROPPATCH. Attribute data is expressed in XML, This protocol invents its own way using the same command (PROPFIND, to encode attribute data. They use PROPPATCH) as WebDAV. The text/xml a mime type to indicate this mime type is used. encoding: application/ipp. Protocol invents new HTTP methods The POST method is used for every as the command on the resources; operation. The actual command is consistent with WebDAV. specified as part of the application/ipp data. Single level of attributes. Each Most attributes are job level named attribute has on value. That attributes, but there can be a value may be arbitrarily complex collection of documents to be XML, but this is implementation printed, and there are a few dependent. No collection attribute document level attributes. Defines type. a datatype "collection" which itself contains a set of named attributes. Attributes have a single (possibly Attributes can be multi valued. A complex) value single value on a multivalued attribute is encoded the same as a single valued attribute. Namespace controlled by XML Global attribute namespace namespace mechanisms capability through use of the company's domain name: e.g. xerox.com-xxx for private use. Also new standard attributes can be registered for use in the global namespace. Makes use of a nested state There are a fixed number of mechanism. A set number of states. Adding a new state required states, but people can requires a new version of the define sub states. Command to specification. There are special change state allows moving to commands to change between states. states not defined by the spec, but There is a "job-state-reasons" nevertheless implemented by the attribute that explains why a vendor. printer job ends up in a certain state. This is an extensible set of keyword values, effectively providing one level of substate capability. Additional keywords can be Additional keywords can be registered in the global namespace registered in the global namespace for standard use. for standard use. Input attributes and output IPP operations have input attributes on the process instance, parameters and response value, but described by the process there is no set of attributes that definition. can be considered the 'result' of print job. Can get a history record of all the No standardized concept of events that occurred on the process history. Can find out the current instance. Can retrieve a status of jobs, and the reason for collection of events across all the current status, including instnces. completed, aborted, and cancelled jobs, but no history. process instances stay around until Completed job are accessible for a released by the originator. while, but jobs disappear at an undefined time. When creating a process instance, When you ask for a print job, there you can supply a URI to receive is a design (near future) for a way responses back to. to register a URI to receive a notification back on that job and/or that printer. Also a client can register a URI directly with the IPP printer object for specified events that happen to any job and/or that printer. If the printer does not implement the notification directly, it will register for you in an external notification service. 3.0 References More information about SWAP can be obtained from: http://www.ics.uci.edu/pub/ietf/swap/ More information about IPP is available at: http://www.ietf.org/html.charters/ipp-charter.html http://www.pwg.org/ipp/ 4.0 Copyright Copyright (C) The Internet Society 1998. All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implmentation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 5.0 Author Contact Information Keith Swenson Netscape Communications Corporation 501 E. Middlefield Rd. San Jose, CA, 94043 kswenson@ms2.com Tom Hastings Xerox Corporation hastings@cp10.es.xerox.com