Network Working Group R. deBry Request for Comments: 2566 Utah Valley State College Category: Experimental T. Hastings Xerox Corporation R. Herriot Xerox Corporation S. Isaacson Novell, Inc. P. Powell Astart Technologies April 1999 Internet Printing Protocol/1.0: Model and Semantics Status of this Memo This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (1999). All Rights Reserved. IESG Note This document defines an Experimental protocol for the Internet community. The IESG expects that a revised version of this protocol will be published as Proposed Standard protocol. The Proposed Standard, when published, is expected to change from the protocol defined in this memo. In particular, it is expected that the standards-track version of the protocol will incorporate strong authentication and privacy features, and that an "ipp:" URL type will be defined which supports those security measures. Other changes to the protocol are also possible. Implementors are warned that future versions of this protocol may not interoperate with the version of IPP defined in this document, or if they do interoperate, that some protocol features may not be available. The IESG encourages experimentation with this protocol, especially in combination with Transport Layer Security (TLS) [RFC 2246], to help determine how TLS may effectively be used as a security layer for IPP. deBry, et al. Experimental [Page 1] RFC 2566 IPP/1.0: Model and Semantics April 1999 Abstract This document is one of a set of documents, which together describe all aspects of a new Internet Printing Protocol (IPP). IPP is an application level protocol that can be used for distributed printing using Internet tools and technologies. This document describes a simplified model consisting of abstract objects, their attributes, and their operations that is independent of encoding and transport. The model consists of a Printer and a Job object. A Job optionally supports multiple documents. IPP 1.0 semantics allow end-users and operators to query printer capabilities, submit print jobs, inquire about the status of print jobs and printers, and cancel print jobs. This document also addresses security, internationalization, and directory issues. The full set of IPP documents includes: Design Goals for an Internet Printing Protocol [RFC2567] Rationale for the Structure and Model and Protocol for the Internet Printing Protocol [RFC2568] Internet Printing Protocol/1.0: Model and Semantics (this document) Internet Printing Protocol/1.0: Encoding and Transport [RFC2565] Internet Printing Protocol/1.0: Implementer's Guide [ipp-iig] Mapping between LPD and IPP Protocols [RFC2569] The "Design Goals for an Internet Printing Protocol" document takes a broad look at distributed printing functionality, and it enumerates real-life scenarios that help to clarify the features that need to be included in a printing protocol for the Internet. It identifies requirements for three types of users: end users, operators, and administrators. It calls out a subset of end user requirements that are satisfied in IPP/1.0. Operator and administrator requirements are out of scope for version 1.0. The "Rationale for the Structure and Model and Protocol for the Internet Printing Protocol" document describes IPP from a high level view, defines a roadmap for the various documents that form the suite of IPP specifications, and gives background and rationale for the IETF working group's major decisions. The "Internet Printing Protocol/1.0: Encoding and Transport" document is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1. It defines the encoding rules for a new Internet media type called "application/ipp". The "Internet Printing Protocol/1.0: Implementer's Guide" document gives insight and advice to implementers of IPP clients and IPP objects. It is intended to help them understand IPP/1.0 and some of deBry, et al. Experimental [Page 2] RFC 2566 IPP/1.0: Model and Semantics April 1999 the considerations that may assist them in the design of their client and/or IPP object implementations. For example, a typical order of processing requests is given, including error checking. Motivation for some of the specification decisions is also included. The "Mapping between LPD and IPP Protocols" document gives some advice to implementers of gateways between IPP and LPD (Line Printer Daemon) implementations. Table of Contents 1. Introduction 8 1.1 Simplified Printing Model 9 2. IPP Objects 11 2.1 Printer Object 12 2.2 Job Object 14 2.3 Object Relationships 14 2.4 Object Identity 15 3. IPP Operations 18 3.1 Common Semantics 19 3.1.1 Required Parameters 19 3.1.2 Operation IDs and Request IDs 20 3.1.3 Attributes 20 3.1.4 Character Set and Natural Language Operation Attributes 22 3.1.4.1 Request Operation Attributes 22 3.1.4.2 Response Operation Attributes 26 3.1.5 Operation Targets 28 3.1.6 Operation Status Codes and Messages 29 3.1.7 Versions 30 3.1.8 Job Creation Operations 32 3.2 Printer Operations 34 3.2.1 Print-Job Operation 34 3.2.1.1 Print-Job Request 34 3.2.1.2 Print-Job Response 38 3.2.2 Print-URI Operation 41 3.2.3 Validate-Job Operation 42 3.2.4 Create-Job Operation 42 3.2.5 Get-Printer-Attributes Operation 43 3.2.5.1 Get-Printer-Attributes Request 44 3.2.5.2 Get-Printer-Attributes Response 46 3.2.6 Get-Jobs Operation 47 3.2.6.1 Get-Jobs Request 47 3.2.6.2 Get-Jobs Response 49 3.3 Job Operations 50 3.3.1 Send-Document Operation 50 3.3.1.1 Send-Document Request 51 3.3.1.2 Send-Document Response 53 3.3.2 Send-URI Operation 54 deBry, et al. Experimental [Page 3] RFC 2566 IPP/1.0: Model and Semantics April 1999 3.3.3 Cancel-Job Operation 54 3.3.3.1 Cancel-Job Request 54 3.3.3.2 Cancel-Job Response 55 3.3.4 Get-Job-Attributes Operation 56 3.3.4.1 Get-Job-Attributes Request 57 3.3.4.2 Get-Job-Attributes Response 57 4. Object Attributes 58 4.1 Attribute Syntaxes 59 4.1.1 'text' 60 4.1.1.1 'textWithoutLanguage' 61 4.1.1.2 'textWithLanguage' 61 4.1.2 'name' 62 4.1.2.1 'nameWithoutLanguage' 62 4.1.2.2 'nameWithLanguage' 63 4.1.2.3 Matching 'name' attribute values 63 4.1.3 'keyword' 64 4.1.4 'enum' 65 4.1.5 'uri' 65 4.1.6 'uriScheme' 65 4.1.7 'charset' 66 4.1.8 'naturalLanguage' 67 4.1.9 'mimeMediaType' 67 4.1.10 'octetString' 69 4.1.11 'boolean' 69 4.1.12 'integer' 69 4.1.13 'rangeOfInteger' 69 4.1.14 'dateTime' 69 4.1.15 'resolution' 69 4.1.16 '1setOf X' 70 4.2 Job Template Attributes 70 4.2.1 job-priority (integer(1:100)) 74 4.2.2 job-hold-until (type3 keyword | name (MAX)) 75 4.2.3 job-sheets (type3 keyword | name(MAX)) 75 4.2.4 multiple-document-handling (type2 keyword) 76 4.2.5 copies (integer(1:MAX)) 77 4.2.6 finishings (1setOf type2 enum) 78 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 79 4.2.8 sides (type2 keyword) 80 4.2.9 number-up (integer(1:MAX)) 80 4.2.10 orientation-requested (type2 enum) 81 4.2.11 media (type3 keyword | name(MAX)) 82 4.2.12 printer-resolution (resolution) 83 4.2.13 print-quality (type2 enum) 83 4.3 Job Description Attributes 84 4.3.1 job-uri (uri) 85 4.3.2 job-id (integer(1:MAX)) 85 4.3.3 job-printer-uri (uri) 86 4.3.4 job-more-info (uri) 86 deBry, et al. Experimental [Page 4] RFC 2566 IPP/1.0: Model and Semantics April 1999 4.3.5 job-name (name(MAX)) 86 4.3.6 job-originating-user-name (name(MAX)) 86 4.3.7 job-state (type1 enum) 87 4.3.8 job-state-reasons (1setOf type2 keyword) 90 4.3.9 job-state-message (text(MAX)) 92 4.3.10 number-of-documents (integer(0:MAX)) 93 4.3.11 output-device-assigned (name(127)) 93 4.3.12 time-at-creation (integer(0:MAX)) 93 4.3.13 time-at-processing (integer(0:MAX)) 93 4.3.14 time-at-completed (integer(0:MAX)) 94 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 94 4.3.16 job-message-from-operator (text(127)) 94 4.3.17 job-k-octets (integer(0:MAX)) 94 4.3.18 job-impressions (integer(0:MAX)) 95 4.3.19 job-media-sheets (integer(0:MAX)) 95 4.3.20 job-k-octets-processed (integer(0:MAX)) 96 4.3.21 job-impressions-completed (integer(0:MAX)) 96 4.3.22 job-media-sheets-completed (integer(0:MAX)) 96 4.3.23 attributes-charset (charset) 97 4.3.24 attributes-natural-language (naturalLanguage) 97 4.4 Printer Description Attributes 97 4.4.1 printer-uri-supported (1setOf uri) 99 4.4.2 uri-security-supported (1setOf type2 keyword) 100 4.4.3 printer-name (name(127)) 101 4.4.4 printer-location (text(127)) 101 4.4.5 printer-info (text(127)) 101 4.4.6 printer-more-info (uri) 101 4.4.7 printer-driver-installer (uri) 102 4.4.8 printer-make-and-model (text(127)) 102 4.4.9 printer-more-info-manufacturer (uri) 102 4.4.10 printer-state (type1 enum) 102 4.4.11 printer-state-reasons (1setOf type2 keyword) 103 4.4.12 printer-state-message (text(MAX)) 106 4.4.13 operations-supported (1setOf type2 enum) 106 4.4.14 charset-configured (charset) 107 4.4.15 charset-supported (1setOf charset) 107 4.4.16 natural-language-configured (naturalLanguage) 107 4.4.17 generated-natural-language-supported(1setOf naturalLanguage108 4.4.18 document-format-default (mimeMediaType) 108 4.4.19 document-format-supported (1setOf mimeMediaType) 108 4.4.20 printer-is-accepting-jobs (boolean) 109 4.4.21 queued-job-count (integer(0:MAX)) 109 4.4.22 printer-message-from-operator (text(127)) 109 4.4.23 color-supported (boolean) 109 4.4.24 reference-uri-schemes-supported (1setOf uriScheme) 109 4.4.25 pdl-override-supported (type2 keyword) 110 4.4.26 printer-up-time (integer(1:MAX)) 110 4.4.27 printer-current-time (dateTime) 111 deBry, et al. Experimental [Page 5] RFC 2566 IPP/1.0: Model and Semantics April 1999 4.4.28 multiple-operation-time-out (integer(1:MAX)) 111 4.4.29 compression-supported (1setOf type3 keyword) 111 4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)) 112 4.4.31 job-impressions-supported (rangeOfInteger(0:MAX)) 112 4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX)) 112 5. Conformance 112 5.1 Client Conformance Requirements 112 5.2 IPP Object Conformance Requirements