Network Working Group T. Hastings, Editor Request for Comments: 2911 R
Total Page:16
File Type:pdf, Size:1020Kb
Network Working Group T. Hastings, Editor Request for Comments: 2911 R. Herriot Obsoletes: 2566 Xerox Corporation Category: Standards Track R. deBry Utah Valley State College S. Isaacson Novell, Inc. P. Powell Astart Technologies September 2000 Internet Printing Protocol/1.1: Model and Semantics Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (2000). All Rights Reserved. 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.1 semantics allow end-users and operators to query printer capabilities, submit print jobs, inquire about the status of print jobs and printers, cancel, hold, release, and restart print jobs. IPP 1.1 semantics allow operators to pause, resume, and purge (jobs from) Printer objects. This document also addresses security, internationalization, and directory issues. Hastings, et al. Standards Track [Page 1] RFC 2911 IPP/1.1: Model and Semantics September 2000 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.1: Model and Semantics (this document) Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] Internet Printing Protocol/1.1: 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. A few OPTIONAL operator operations have been added to IPP/1.1. 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 specification documents, and gives background and rationale for the IETF working group's major decisions. The "Internet Printing Protocol/1.1: Encoding and Transport" document is a formal mapping of the abstract operations and attributes defined in the model document onto HTTP/1.1 [RFC2616]. It defines the encoding rules for a new Internet MIME media type called "application/ipp". This document also defines the rules for transporting over HTTP a message body whose Content-Type is "application/ipp". This document defines a new scheme named 'ipp' for identifying IPP printers and jobs. The "Internet Printing Protocol/1.1: 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.1 and some of 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. Hastings, et al. Standards Track [Page 2] RFC 2911 IPP/1.1: Model and Semantics September 2000 Table of Contents 1. Introduction 9 1.1 Simplified Printing Model 10 2. IPP Objects 12 2.1 Printer Object 13 2.2 Job Object 15 2.3 Object Relationships 16 2.4 Object Identity 17 3. IPP Operations 20 3.1 Common Semantics 21 3.1.1 Required Parameters 21 3.1.2 Operation IDs and Request IDs 22 3.1.3 Attributes 22 3.1.4 Character Set and Natural Language Operation Attribute 24 3.1.4.1 Request Operation Attributes 25 3.1.4.2 Response Operation Attributes 29 3.1.5 Operation Targets 30 3.1.6 Operation Response Status Codes and Status Messages 32 3.1.6.1 "status-code" (type2 enum) 32 3.1.6.2 "status-message" (text(255)) 33 3.1.6.3 "detailed-status-message" (text(MAX)) 33 3.1.6.4 "document-access-error" (text(MAX)) 34 3.1.7 Unsupported Attributes 34 3.1.8 Versions 36 3.1.9 Job Creation Operations 38 3.2 Printer Operations 41 3.2.1 Print-Job Operation 41 3.2.1.1 Print-Job Request 41 3.2.1.2 Print-Job Response 46 3.2.2 Print-URI Operation 48 3.2.3 Validate-Job Operation 49 3.2.4 Create-Job Operation 49 3.2.5 Get-Printer-Attributes Operation 50 3.2.5.1 Get-Printer-Attributes Request 51 3.2.5.2 Get-Printer-Attributes Response 53 3.2.6 Get-Jobs Operation 54 3.2.6.1 Get-Jobs Request 54 3.2.6.2 Get-Jobs Response 56 3.2.7 Pause-Printer Operation 57 3.2.7.1 Pause-Printer Request 59 3.2.7.2 Pause-Printer Response 60 3.2.8 Resume-Printer Operation 60 3.2.9 Purge-Jobs Operation 61 3.3 Job Operations 62 3.3.1 Send-Document Operation 62 3.3.1.1 Send-Document Request 64 3.3.1.2 Send-Document Response 65 Hastings, et al. Standards Track [Page 3] RFC 2911 IPP/1.1: Model and Semantics September 2000 3.3.2 Send-URI Operation 66 3.3.3 Cancel-Job Operation 66 3.3.3.1 Cancel-Job Request 67 3.3.3.2 Cancel-Job Response 68 3.3.4 Get-Job-Attributes Operation 69 3.3.4.1 Get-Job-Attributes Request 69 3.3.4.2 Get-Job-Attributes Response 70 3.3.5 Hold-Job Operation 71 3.3.5.1 Hold-Job Request 72 3.3.5.2 Hold-Job Response 73 3.3.6 Release-Job Operation 74 3.3.7 Restart-Job Operation 75 3.3.7.1 Restart-Job Request 76 3.3.7.2 Restart-Job Response 78 4. Object Attributes 78 4.1 Attribute Syntaxes 78 4.1.1 'text' 79 4.1.1.1 'textWithoutLanguage' 80 4.1.1.2 'textWithLanguage' 80 4.1.2 'name' 81 4.1.2.1 'nameWithoutLanguage' 82 4.1.2.2 'nameWithLanguage' 82 4.1.2.3 Matching 'name' attribute values 83 4.1.3 'keyword' 84 4.1.4 'enum' 85 4.1.5 'uri' 85 4.1.6 'uriScheme' 86 4.1.7 'charset' 86 4.1.8 'naturalLanguage' 87 4.1.9 'mimeMediaType' 87 4.1.9.1 Application/octet-stream -- Auto-Sensing 88 the document format 4.1.10 'octetString' 89 4.1.11 'boolean' 89 4.1.12 'integer' 89 4.1.13 'rangeOfInteger' 90 4.1.14 'dateTime' 90 4.1.15 'resolution' 90 4.1.16 '1setOf X' 90 4.2 Job Template Attributes 91 4.2.1 job-priority (integer(1:100)) 94 4.2.2 job-hold-until (type3 keyword | name (MAX)) 95 4.2.3 job-sheets (type3 keyword | name(MAX)) 96 4.2.4 multiple-document-handling (type2 keyword) 96 4.2.5 copies (integer(1:MAX)) 98 4.2.6 finishings (1setOf type2 enum) 98 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 101 4.2.8 sides (type2 keyword) 102 Hastings, et al. Standards Track [Page 4] RFC 2911 IPP/1.1: Model and Semantics September 2000 4.2.9 number-up (integer(1:MAX)) 102 4.2.10 orientation-requested (type2 enum) 103 4.2.11 media (type3 keyword | name(MAX)) 104 4.2.12 printer-resolution (resolution) 105 4.2.13 print-quality (type2 enum) 105 4.3 Job Description Attributes 106 4.3.1 job-uri (uri) 107 4.3.2 job-id (integer(1:MAX)) 108 4.3.3 job-printer-uri (uri) 108 4.3.4 job-more-info (uri) 108 4.3.5 job-name (name(MAX)) 108 4.3.6 job-originating-user-name (name(MAX)) 109 4.3.7 job-state (type1 enum) 109 4.3.7.1 Forwarding Servers 112 4.3.7.2 Partitioning of Job States 112 4.3.8 job-state-reasons (1setOf type2 keyword) 113 4.3.9 job-state-message (text(MAX)) 118 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 118 4.3.11 job-document-access-errors (1setOf text(MAX)) 118 4.3.12 number-of-documents (integer(0:MAX)) 119 4.3.13 output-device-assigned (name(127)) 119 4.3.14 Event Time Job Description Attributes 119 4.3.14.1 time-at-creation (integer(MIN:MAX)) 120 4.3.14.2 time-at-processing (integer(MIN:MAX)) 120 4.3.14.3 time-at-completed (integer(MIN:MAX)) 120 4.3.14.4 job-printer-up-time (integer(1:MAX)) 120 4.3.14.5 date-time-at-creation (dateTime) 121 4.3.14.6 date-time-at-processing (dateTime) 121 4.3.14.7 date-time-at-completed (dateTime) 121 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 121 4.3.16 job-message-from-operator (text(127)) 121 4.3.17 Job Size Attributes 121 4.3.17.1 job-k-octets (integer(0:MAX)) 122 4.3.17.2 job-impressions (integer(0:MAX)) 122 4.3.17.3 job-media-sheets (integer(0:MAX)) 123 4.3.18 Job Progress Attributes 123 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 123 4.3.18.2 job-impressions-completed (integer(0:MAX)) 123 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 124 4.3.19 attributes-charset (charset) 124 4.3.20 attributes-natural-language (naturalLanguage) 124 4.4 Printer Description Attributes 124 4.4.1 printer-uri-supported (1setOf uri) 126 4.4.2 uri-authentication-supported (1setOf type2 keyword) 127 4.4.3 uri-security-supported (1setOf type2 keyword) 128 4.4.4 printer-name (name(127)) 129 4.4.5 printer-location (text(127)) 129 4.4.6 printer-info (text(127)) 130 Hastings, et al.